Name: series-workflowvhm62 Phase: Failed StartedAt: 2026-08-19 21:19:32 +0000 UTC FinishedAt: 2026-08-19 21:25:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhm62[0] Phase: Succeeded StartedAt: 2026-08-19 21:19:32 +0000 UTC FinishedAt: 2026-08-19 21:24:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhm62[0].run-triage Phase: Succeeded StartedAt: 2026-08-19 21:19:32 +0000 UTC FinishedAt: 2026-08-19 21:24:56 +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+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHN0LHN0MjFuZmNkYCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgTkRMQy4gVGhlIGByYXdfbmNpYCBtb2RlIGlzIGVuYWJsZWQgYnkgY2hlY2tpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGlzIGRldmljZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RhdGljIGRldmljZSB0cmVlLiBXaGlsZSBzeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBzeXNmcyAoYG5ld19kZXZpY2VgKSBvciBgc3l6X2kyY19zZXR1cGAsIHRoZXNlIG1ldGhvZHMgZG8gbm90IGF0dGFjaCBhbiBgZndub2RlYCB0byB0aGUgZGV2aWNlLiBDb25zZXF1ZW50bHksIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgd2lsbCBhbHdheXMgcmV0dXJuIGBOVUxMYCwgbGVhdmluZyBgcmF3X25jaSA9IDBgLiBXaGVuIGByYXdfbmNpYCBpcyAwLCB0aGUgZHJpdmVyIGJlaGF2ZXMgZXhhY3RseSBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIG5ld2x5IGFkZGVkIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDRlNGMxMDY1ZDc1MDhhZWU2MzlmZjZmNjA3YjAzZGNkN2Q1YmM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MjE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTExLDEwICYjNDM7MTEsMTQgQEAgbWFpbnRhaW5lcnM6XG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXG4mIzQzOyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLlxuICAgICBlbnVtOlxuICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgLSBzdCxzdDIxbmZjYi1zcGlcbiAgICAgICAtIHN0LHN0MjFuZmNjLWkyY1xuJiM0MzsgICAgICAtIHN0LHN0MjFuZmNkXG4gXG4gICByZXNldC1ncGlvczpcbiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXJcbkBAIC0zNiw2ICYjNDM7NDAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4mIzQzOyAgY2xvY2tzOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBFeHRlcm5hbCByZWZlcmVuY2UgY2xvY2sgY29ubmVjdGVkIHRvIFNZU19DTEsuXG4mIzQzO1xuJiM0MzsgIHZkZC1pby1zdXBwbHk6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLlxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiAmIzQzOzYyLDcgQEAgaWY6XG4gICAgICAgICBlbnVtOlxuICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgICAgICAtIHN0LHN0MjFuZmNjLWkyY1xuJiM0MzsgICAgICAgICAgLSBzdCxzdDIxbmZjZFxuIHRoZW46XG4gICBwcm9wZXJ0aWVzOlxuICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2VcbkBAIC04MSw2ICYjNDM7OTUsMjcgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgaTJjIHtcbiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICBuZmNAOCB7XG4mIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMHgwOFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvNVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzIgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y2xrXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2lvXHUwMDNlO1xuJiM0MzsgICAgICAgIH07XG4mIzQzOyAgICB9O1xuJiM0MztcbiAgIC0gfFxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmM1ZDUxODI2YjYwMzMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbkBAIC05MDgsNyAmIzQzOzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQge1xuIFx1MDAyNmkyYzkge1xuIFx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiBcbi1cdC8qIFNUMjFORkMgTkZDIEAgMjggKi9cbiYjNDM7XHRuZmNAOCB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2RcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gMzggR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZuZmNfaW50X2RlZmF1bHRcdTAwM2UsIFx1MDAzY1x1MDAyNm5mY19yZXNldF9kZWZhdWx0XHUwMDNlO1xuJiM0MztcdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbiYjNDM7XHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0ZXNlLXByZXNlbnQ7XG4mIzQzO1x0XHR1aWNjLXByZXNlbnQ7XG4mIzQzO1x0fTtcbiYjNDM7XG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbiYjNDM7XG4mIzQzO1x0bmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUge1xuJiM0MztcdFx0cGlucyA9IFwmIzM0O2dwaW80MVwmIzM0OztcbiYjNDM7XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdGJpYXMtZGlzYWJsZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRuZmNfcmVzZXRfZGVmYXVsdDogbmZjLXJlc2V0LWRlZmF1bHQtc3RhdGUge1xuJiM0MztcdFx0cGlucyA9IFwmIzM0O2dwaW8zOFwmIzM0OztcbiYjNDM7XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdGJpYXMtZGlzYWJsZTtcbiYjNDM7XHRcdG91dHB1dC1oaWdoO1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCAmIzQzOzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuJiM0MztcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCA5YWU4MzlhNmY1Y2MwLi41NjY2ODlkNWFhZGI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0LW5jaS5oXCYjMzQ7XG4gXG5AQCAtMjIsMTAgJiM0MzsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4mIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4mIzQzO1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbiYjNDM7XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwmIzM0O3N0X25jaVwmIzM0O1xuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcJiMzNDtzdF9uY2lfaTJjXCYjMzQ7XG4gXG5AQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbiYjNDM7XHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbiYjNDM7XHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuJiM0MztcdFx0aWYgKHIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuJiM0MztcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcbiYjNDM7XHRcdGxlbiA9IGJ1ZlsyXTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbiYjNDM7XHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUJBRE1TRztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghKnNrYilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbiYjNDM7XHRcdGlmIChyICE9IGxlbikge1xuJiM0MztcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4mIzQzO1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4mIzQzO1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbiYjNDM7XHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwmIzM0O3ZkZC1pb1wmIzM0Oyk7XG4mIzQzO1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuJiM0MztcdGlmIChyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtlc2UtcHJlc2VudFwmIzM0Oyk7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7dWljYy1wcmVzZW50XCYjMzQ7KTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4mIzQzO1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4mIzQzO1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbiYjNDM7XHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbiYjNDM7XHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4mIzQzO1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI3Myw2ICYjNDM7MzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNiLWkyY1wmIzM0OywgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYl9pMmNcJiMzNDssIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2MtaTJjXCYjMzQ7LCB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OyxcbiYjNDM7XHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcbiBcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0LyogdG9nZ2xlIHJlc2V0IHBpbiAqL1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZW5hYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbiBcbi1cdG5jaV9wcm9wX2NtZChuZGxjLVx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXG4tXHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuJiM0MztcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuJiM0MztcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbiYjNDM7XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4gXG4gXHRuZGxjLVx1MDAzZXBvd2VyZWQgPSAwO1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZGlzYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG5AQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4mIzQzO1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuJiM0MztcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbiYjNDM7XHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbiYjNDM7XHRcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuJiM0MztcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICYjNDM7MTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xuIFx0XHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XG4gXG5AQCAtMTU0LDYgJiM0MzsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCYjMzQ7cmN2UWxlbj0lZFxcblwmIzM0OywgbmRsYy1cdTAwM2VyY3ZfcS5xbGVuKTtcbiBcbiBcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXHUwMDI2bmRsYy1cdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbiYjNDM7XHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXG4mIzQzO1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwNGU0YzEwNjVkNzUwOGFlZTYzOWZmNmY2MDdiMDNkY2Q3ZDViYzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAyMToyMTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKQEAgLTExLDEwICYjNDM7MTEsMTQgQEAgbWFpbnRhaW5lcnM6CiAKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgc3Qsc3QyMW5mY2ItKiBhbmQgc3Qsc3QyMW5mY2MtaTJjIHVzZSBORExDIG9uIHRoZSB3aXJlLgomIzQzOyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLgogICAgIGVudW06CiAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgLSBzdCxzdDIxbmZjYi1zcGkKICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZAogCiAgIHJlc2V0LWdwaW9zOgogICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyCkBAIC0zNiw2ICYjNDM7NDAsMTUgQEAgcHJvcGVydGllczoKICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZQogICAgICAgY29udHJvbGxlcgogCiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy4KJiM0MzsKJiM0MzsgIHZkZC1pby1zdXBwbHk6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS4KJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBpbnRlcnJ1cHRzCkBAIC00OSw2ICYjNDM7NjIsNyBAQCBpZjoKICAgICAgICAgZW51bToKICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2QKIHRoZW46CiAgIHByb3BlcnRpZXM6CiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlCkBAIC04MSw2ICYjNDM7OTUsMjcgQEAgZXhhbXBsZXM6CiAgICAgICAgIH07CiAgICAgfTsKIAomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwomIzQzOwomIzQzOyAgICBpMmMgewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIG5mY0A4IHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbzUmZ3Q7OwomIzQzOyAgICAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7MiBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9ICZsdDsmYW1wO2dwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NsayZndDs7CiYjNDM7ICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZkZF9pbyZndDs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwogICAtIHwKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmgmZ3Q7CiAgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwppbmRleCAwNGNiOTIzMGQyOWZkLi5jNWQ1MTgyNmI2MDMzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwpAQCAtOTA4LDcgJiM0Mzs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHsKICZhbXA7aTJjOSB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiAKLQkvKiBTVDIxTkZDIE5GQyBAIDI4ICovCiYjNDM7CW5mY0A4IHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwOCZndDs7CiYjNDM7CiYjNDM7CQlpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIJmd0OzsKJiM0MzsKJiM0MzsJCXBpbmN0cmwtMCA9ICZsdDsmYW1wO25mY19pbnRfZGVmYXVsdCZndDssICZsdDsmYW1wO25mY19yZXNldF9kZWZhdWx0Jmd0OzsKJiM0MzsJCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO3JwbWhjYyBSUE1IX0xOX0JCX0NMSzImZ3Q7OwomIzQzOwkJdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZyZWdfbDE4YiZndDs7CiYjNDM7CiYjNDM7CQllc2UtcHJlc2VudDsKJiM0MzsJCXVpY2MtcHJlc2VudDsKJiM0MzsJfTsKJiM0MzsKIAkvKiBWTDUzTDMgVG9GIEAgMjkgKi8KIH07CiAKQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7CiAJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwogCQliaWFzLXB1bGwtdXA7CiAJfTsKJiM0MzsKJiM0MzsJbmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUgewomIzQzOwkJcGlucyA9ICYjMzQ7Z3BpbzQxJiMzNDs7CiYjNDM7CQlmdW5jdGlvbiA9ICYjMzQ7Z3BpbyYjMzQ7OwomIzQzOwkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQliaWFzLWRpc2FibGU7CiYjNDM7CX07CiYjNDM7CiYjNDM7CW5mY19yZXNldF9kZWZhdWx0OiBuZmMtcmVzZXQtZGVmYXVsdC1zdGF0ZSB7CiYjNDM7CQlwaW5zID0gJiMzNDtncGlvMzgmIzM0OzsKJiM0MzsJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQlkcml2ZS1zdHJlbmd0aCA9ICZsdDsyJmd0OzsKJiM0MzsJCWJpYXMtZGlzYWJsZTsKJiM0MzsJCW91dHB1dC1oaWdoOwomIzQzOwl9OwogfTsKIAogJmFtcDt1YXJ0NSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwppbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKQEAgLTE4LDggJiM0MzsxOCwxMyBAQAogCiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogewomIzQzOwlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAJc3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kOwogCiYjNDM7CS8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqLwomIzQzOwlpZiAoaW5mby0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCWNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7CiAJY21kLm1vZGUgPSAxOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwpAQCAtMTAsMTAgJiM0MzsxMCwxMyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2kyYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2dwaW8vY29uc3VtZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9hY3BpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Nsay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmZjLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7c3QtbmNpLmgmIzM0OwogCkBAIC0yMiwxMCAmIzQzOzI1LDE3IEBACiAvKiBuZGxjIGhlYWRlciAqLwogI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMQogI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMAomIzQzOyNkZWZpbmUgU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSAwCiAKICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICYjNDM7IE5DSSBQYWNrZXQgaGVhZGVyKDMpICovCiYjNDM7I2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICYjNDM7IE9JRCAmIzQzOyBsZW4gKi8KICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovCiAKJiM0MztlbnVtIHN0X25jaV9pMmNfcHJvdG8gewomIzQzOwlTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLAomIzQzOwlTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksCiYjNDM7fTsKJiM0MzsKICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FICYjMzQ7c3RfbmNpJiMzNDsKICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSAmIzM0O3N0X25jaV9pMmMmIzM0OwogCkBAIC0zNCw2ICYjNDM7NDQsNyBAQCBzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgewogCXN0cnVjdCBsbHRfbmRsYyAqbmRsYzsKIAogCWJvb2wgaXJxX2FjdGl2ZTsKJiM0MzsJYm9vbCByYXdfbmNpOwogCiAJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7CiAKQEAgLTExMSw2ICYjNDM7MTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LAogCXU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTsKIAlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gcGh5LSZndDtpMmNfZGV2OwogCiYjNDM7CWlmIChwaHktJmd0O3Jhd19uY2kpIHsKJiM0MzsJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJaWYgKHIgJmx0OyAwKSB7CiYjNDM7CQkJdXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApOwomIzQzOwkJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJfQomIzQzOwkJaWYgKHIgIT0gU1RfTkNJX05DSV9IRFJfU0laRSkKJiM0MzsJCQlyZXR1cm4gLUVSRU1PVEVJTzsKJiM0MzsKJiM0MzsJCWxlbiA9IGJ1ZlsyXTsKJiM0MzsJCWlmIChsZW4gJmd0OyBTVF9OQ0lfSTJDX01BWF9TSVpFKSB7CiYjNDM7CQkJbmZjX2VycigmYW1wO2NsaWVudC0mZ3Q7ZGV2LCAmIzM0O2ludmFsaWQgZnJhbWUgbGVuXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FQkFETVNHOwomIzQzOwkJfQomIzQzOwomIzQzOwkJKnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICYjNDM7IGxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoISpza2IpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlza2JfcHV0KCpza2IsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJbWVtY3B5KCgqc2tiKS0mZ3Q7ZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsKJiM0MzsJCWlmICghbGVuKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwomIzQzOwkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTsKJiM0MzsJCWlmIChyICE9IGxlbikgewomIzQzOwkJCWtmcmVlX3NrYigqc2tiKTsKJiM0MzsJCQlyZXR1cm4gLUVSRU1PVEVJTzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYl9wdXQoKnNrYiwgbGVuKTsKJiM0MzsJCW1lbWNweSgoKnNrYiktJmd0O2RhdGEgJiM0MzsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTsKIAlpZiAociAmbHQ7IDApIHsgIC8qIFJldHJ5LCBjaGlwIHdhcyBpbiBzdGFuZGJ5ICovCiAJCXVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTsKQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcGh5LSZndDtpMmNfZGV2ID0gY2xpZW50OwomIzQzOwlwaHktJmd0O3Jhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09CiYjNDM7CQkJU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJOwogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTsKIApAQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKJiM0MzsJciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCAmIzM0O3ZkZC1pbyYjMzQ7KTsKJiM0MzsJaWYgKHIgJmFtcDsmYW1wOyByICE9IC1FTk9ERVYpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cbiYjMzQ7KTsKJiM0MzsKJiM0MzsJciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTsKJiM0MzsJaWYgKHIpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBjbG9ja1xuJiMzNDspOwomIzQzOwogCXBoeS0mZ3Q7c2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID0KIAkJCQlkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgJiMzNDtlc2UtcHJlc2VudCYjMzQ7KTsKIAlwaHktJmd0O3NlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPQogCQkJCWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAmIzM0O3VpY2MtcHJlc2VudCYjMzQ7KTsKIAogCXIgPSBuZGxjX3Byb2JlKHBoeSwgJmFtcDtpMmNfcGh5X29wcywgJmFtcDtjbGllbnQtJmd0O2RldiwKLQkJCVNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLAomIzQzOwkJCXBoeS0mZ3Q7cmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOgomIzQzOwkJCQkgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLAomIzQzOwkJCVNUX05DSV9GUkFNRV9UQUlMUk9PTSwKIAkJCSZhbXA7cGh5LSZndDtuZGxjLCAmYW1wO3BoeS0mZ3Q7c2Vfc3RhdHVzKTsKIAlpZiAociAmbHQ7IDApIHsKIAkJbmZjX2VycigmYW1wO2NsaWVudC0mZ3Q7ZGV2LCAmIzM0O1VuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXG4mIzM0Oyk7CiAJCXJldHVybiByOwogCX0KIAomIzQzOwlwaHktJmd0O25kbGMtJmd0O3Jhd19uY2kgPSBwaHktJmd0O3Jhd19uY2k7CiYjNDM7CiAJcGh5LSZndDtpcnFfYWN0aXZlID0gdHJ1ZTsKIAlyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmYW1wO2NsaWVudC0mZ3Q7ZGV2LCBjbGllbnQtJmd0O2lycSwgTlVMTCwKIAkJCQlzdF9uY2lfaXJxX3RocmVhZF9mbiwKQEAgLTI3Myw2ICYjNDM7MzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0gewogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiLWkyYyYjMzQ7LCB9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiX2kyYyYjMzQ7LCB9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSwKIAl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCS8qIHRvZ2dsZSByZXNldCBwaW4gKi8KIAluZGxjLSZndDtvcHMtJmd0O2VuYWJsZShuZGxjLSZndDtwaHlfaWQpOwogCi0JbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCi0JCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCW5jaV9wcm9wX2NtZChuZGxjLSZndDtuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLAomIzQzOwkJCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiAKIAluZGxjLSZndDtwb3dlcmVkID0gMDsKIAluZGxjLSZndDtvcHMtJmd0O2Rpc2FibGUobmRsYy0mZ3Q7cGh5X2lkKTsKQEAgLTcyLDExICYjNDM7NzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTsKIAogaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0JLyogYWRkIG5kbGMgaGVhZGVyICovCi0JdTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHwKLQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJLyogYWRkIG5kbGMgaGVhZGVyICovCiYjNDM7CQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAomIzQzOwkJCVBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UOwogCi0JKih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7CiYjNDM7CQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJfQogCXNrYl9xdWV1ZV90YWlsKCZhbXA7bmRsYy0mZ3Q7c2VuZF9xLCBza2IpOwogCiAJc2NoZWR1bGVfd29yaygmYW1wO25kbGMtJmd0O3NtX3dvcmspOwpAQCAtMTAzLDYgJiM0MzsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCQluZGxjLSZndDtoYXJkX2ZhdWx0ID0gcjsKIAkJCWJyZWFrOwogCQl9CiYjNDM7CQlpZiAobmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQl0aW1lX3NlbnQgPSBqaWZmaWVzOwogCQkqKHVuc2lnbmVkIGxvbmcgKilza2ItJmd0O2NiID0gdGltZV9zZW50OwogCkBAIC0xNTQsNiAmIzQzOzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCQlwcl9kZWJ1ZygmIzM0O3JjdlFsZW49JWRcbiYjMzQ7LCBuZGxjLSZndDtyY3ZfcS5xbGVuKTsKIAogCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJmFtcDtuZGxjLSZndDtyY3ZfcSkpICE9IE5VTEwpIHsKJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJbmNpX3JlY3ZfZnJhbWUobmRsYy0mZ3Q7bmRldiwgc2tiKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJcGNiID0gc2tiLSZndDtkYXRhWzBdOwogCQlza2JfcHVsbChza2IsIDEpOwogCQlpZiAoKHBjYiAmYW1wOyBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaAppbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKQEAgLTM5LDYgJiM0MzszOSw4IEBAIHN0cnVjdCBsbHRfbmRsYyB7CiAJICovCiAJaW50IGhhcmRfZmF1bHQ7CiAJaW50IHBvd2VyZWQ7CiYjNDM7CS8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi8KJiM0MzsJYm9vbCByYXdfbmNpOwogfTsKIAogaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwppbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwpAQCAtNjIxLDYgJiM0Mzs2MjEsOSBAQCBpbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogCWludCBzZV9jb3VudCA9IDA7CiAJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpOwogCWlmIChyICE9IDApCiAJCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjYwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IE5GQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjb250cm9sbGVyLCBgc3Qsc3QyMW5mY2RgLCB3aXRoaW4gdGhlIGBzdC1uY2lgIGRyaXZlci4gVGhpcyBjb250cm9sbGVyIGlzIGEgYml0IGRpZmZlcmVudDsgaXQgdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgdGhlIHVzdWFsIE5ETEMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgc2VlbSBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSBlc3NlbnRpYWxseSBieXBhc3NpbmcgdGhlIE5ETEMgbGF5ZXIgYW5kIGhhbmRsaW5nIHRoZSBOQ0kgZnJhbWVzIGRpcmVjdGx5IGluIHNldmVyYWwga2V5IGZ1bmN0aW9ucy4gYHN0X25jaV9pbml0YCBza2lwcyB0aGUgYFNUX05DSV9TRVRfTkZDX01PREVgIGNvbW1hbmQgdW5kZXIgdGhlIG5ldyBmbGFnLiBgc3RfbmNpX2kyY19yZWFkYCBzZWVtcyB1cGRhdGVkIHRvIGhhbmRsZSB0aGUgcmF3IE5DSSBmcmFtZSBmb3JtYXQuIFRoZSBwcm9iaW5nIGxvZ2ljIGluIGBzdF9uY2lfaTJjX3Byb2JlYCBub3cgaW5jbHVkZXMgcmVhZGluZyBzb21lIHByb3BlcnRpZXMgYW5kIHNldHRpbmcgdGhlIGByYXdfbmNpYCBmbGFnIHdoaWNoIHNpZ25hbHMgdGhlIGRpZmZlcmVudCBtb2RlLiBBbmQgdGhlbiwgdGhlcmUgYXJlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudHMgdG8gYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgIHRvIGFjY291bnQgZm9yIHRoaXMgcmF3IE5DSSBtb2RlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIFRoaXMgaXMgYW4gSTJDIGRyaXZlciwgcmlnaHQ/IFNvLCBob3cgd291bGQgd2UgZ28gYWJvdXQgZnV6emluZyBpdD8gSTJDIGRyaXZlcnMgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzIG9yIHRoZSBkZXZpY2UgdHJlZSwgdGhhdCBwYXJ0IGlzIGNsZWFyLiBBbmQsIHNpbmNlIGl0JiMzOTtzIGFuIEkyQyBkcml2ZXIsIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCBpdCBpbiBRRU1VPyBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5qZWN0IEkyQyB0cmFmZmljLCBvciwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbywgaW5zdGFudGlhdGUgdGhlIGRyaXZlciwgcHJvYmFibHkgdmlhIHN5c2ZzL25ldGxpbmsgaWYgYXBwbGljYWJsZS4KCk9rYXksIEkgbmVlZCB0byBicnVzaCB1cCBvbiBzeXprYWxsZXImIzM5O3MgSTJDIGNhcGFiaWxpdGllcy4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBJMkMgc3VwcG9ydCwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSBtb3JlIGVmZmVjdGl2ZSBpZiBpdCBoYXMgYSBzcGVjaWZpYyBwc2V1ZG8tZGV2aWNlLCBvciBpZiB0aGUgZGV2aWNlIGdldHMgaW5zdGFudGlhdGVkIHZpYSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBpbnNpZGUgYSB0ZXN0IG1vZHVsZS4gQnV0IEkgYWxzbyByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gZnV6eiBJMkMgZGV2aWNlcyB3aXRoIGBzeXpfaTJjX3NldHVwYCBvciB3cml0aW5nIHRvIGAvZGV2L2kyYy0qYC4KCldhaXQsIHRoaXMgZHJpdmVyIGlzIGFuIEkyQyBkcml2ZXIsIGJ1dCBpdCByZWdpc3RlcnMgYW4gTkNJIGRldmljZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTkZDIHN1YnN5c3RlbS4gU3l6a2FsbGVyIGRlZmluaXRlbHkgaGFzIHNvbWUgZ29vZCBjb3ZlcmFnZSBvZiBORkMgdGhyb3VnaCB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgbmZjc2ltYCBvciBieSBpbnN0YW50aWF0aW5nIGRldmljZXMuIEJ1dCBjYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHJlbGlhYmx5PyBUaGF0JiMzOTtzIHdoYXQgSSBoYXZlIHRvIGNoZWNrLgoKTGV0IG1lIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBkZXNjcmlwdGlvbnMgb2YgYHN0X25jaWAgb3IgYE5GQ19TVF9OQ0lgIHdpdGhpbiBTeXprYWxsZXIgdG8gc2VlIHdoYXQmIzM5O3MgYWxyZWFkeSBrbm93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfU1RfTkNJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKVx0JiM0Mzs9IHN0LW5jaS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcdCYjNDM7PSBueHAtbmNpL1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXCYjMzQ7XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoxMjpcdHNlbGVjdCBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIzLVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI0Olx0c2VsZWN0IE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT02PXN0LW5jaS1vYmpzID0gbmRsYy5vIGNvcmUubyBzZS5vIHZlbmRvcl9jbWRzLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKSAgICAgJiM0Mzs9IHN0LW5jaS5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT05PXN0LW5jaV9pMmMtb2JqcyA9IGkyYy5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0lfSTJDKSAmIzQzOz0gc3QtbmNpX2kyYy5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU9MTI9c3QtbmNpX3NwaS1vYmpzID0gc3BpLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZDX1NUX05DSV9TUEkpICYjNDM7PSBzdC1uY2lfc3BpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTk3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBORkNfU1RfTkNJX0kyQ2AgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE5GQ19TVF9OQ0lfSTJDYCBkcml2ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoZSBJMkMgcHJvYmUgZnVuY3Rpb24gd2hlbiBJJiMzOTttIHJ1bm5pbmcgdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBTeXprYWxsZXIsIG9mIGNvdXJzZSwgZ2l2ZXMgbWUgc29tZSBvcHRpb25zLiBJIGNhbiB1c2UgYHN5el9pMmNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhc3N1bWluZyBJIGhhdmUgZGV2aWNlIGRlc2NyaXB0aW9ucy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgdXNpbmcgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIHRvIGNyZWF0ZSB0aGUgSTJDIGRldmljZXMgZGlyZWN0bHkgYnkgbmFtZS4KCk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc3lzZnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBpZiB0aGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcy4gSSYjMzk7bSB0aGlua2luZyB0aGUgZHJpdmVyIHByb2JhYmx5IGhhcyBhbiBJMkMgZGV2aWNlIHRhYmxlLiBXaGF0JiMzOTtzIHRoZSBuYW1lIG9mIHRoYXQgdGFibGU/IEFoLCBgc3RfbmNpX2kyY19pZGAuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCBldmVyeXRoaW5nIEkgbmVlZCBpbiBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYC4gTGV0JiMzOTtzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2kyY19pZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MzEzPXN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMxOS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzozMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjEtXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMyMy19O1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjMyNDpNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzI1LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zNDM9c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDktXHQucHJvYmUgPSBzdF9uY2lfaTJjX3Byb2JlLFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM1MDpcdC5pZF90YWJsZSA9IHN0X25jaV9pMmNfaWRfdGFibGUsXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzUxLVx0LnJlbW92ZSA9IHN0X25jaV9pMmNfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIEluc3RhbnRpYXRpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgSTJDIGRyaXZlciBmb3IgdGhlIFNUIE5GQyBjb250cm9sbGVyLiBUaGUgY29kZSBkZWZpbmVzIGFuIGBpMmNfZGV2aWNlX2lkYCB0YWJsZSwgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmFtZSBpcyAmIzM0O3N0X25jaSYjMzQ7LiBTbywgdGhlb3JldGljYWxseSwgSSBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciBieSB3cml0aW5nICYjMzQ7c3RfbmNpICZsdDthZGRyZXNzJmd0OyYjMzQ7IHRvIHRoZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLVgvbmV3X2RldmljZWAgZmlsZSwgcmlnaHQ/IFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHN5c2ZzIHdheS4KCkJ1dCwgaGFuZyBvbiwgdGhlcmUmIzM5O3MgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcgYmVpbmcgaW50cm9kdWNlZCwgJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LCBhbmQgdGhlIGByYXdfbmNpYCBmbGFnIGlzIGJlaW5nIHNldCBiYXNlZCBvbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLiBUaGlzIGZ1bmN0aW9uIGlzIGxvb2tpbmcgYXQgdGhlIE9GIChkZXZpY2UgdHJlZSkgb3IgQUNQSSBtYXRjaCB0YWJsZXMsIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uIElmIEkgaW5zdGFudGlhdGUgdGhlIGRldmljZSB0aHJvdWdoIHN5c2ZzJiMzOTsgYG5ld19kZXZpY2VgLCBpdCYjMzk7bGwgdXNlIHRoZSBgaTJjX2RldmljZV9pZGAgdGFibGUsIHdoaWNoICpvbmx5KiBoYXMgJiMzNDtzdF9uY2kmIzM0Oy4KCkhlcmUmIzM5O3MgdGhlIHByb2JsZW06IGlmIEkgaW5zdGFudGlhdGUgaXQgdXNpbmcgdGhlICYjMzQ7c3RfbmNpJiMzNDsgbmFtZSB2aWEgc3lzZnMsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIGBOVUxMYCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBwcmVzZW50IGluIHRoZSBPRiB0YWJsZSwgcmlnaHQ/IE9yIHdpbGwgdGhlIE9GIG5hbWUgc29tZWhvdyBnZXQgbWF0Y2hlZD8gSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4uLgoKQWgsIHJpZ2h0ISBgaTJjX25ld19jbGllbnRfZGV2aWNlYCAqY2FuKiBpbnN0YW50aWF0ZSBkZXZpY2VzIGJhc2VkIG9uIE9GIG5vZGVzLiBCdXQgd2hlbiBkb25lIGZyb20gdXNlcnNwYWNlLCB2aWEgYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtIGlzIGxpbWl0ZWQgdG8gcGFzc2luZyB0aGUgSTJDIG5hbWUuIFNvLCBpZiBJIHBhc3MgJiMzNDtzdF9uY2kmIzM0OywgaXQgbWF0Y2hlcyB0aGUgYGkyY19kZXZpY2VfaWRgIHRhYmxlLiBTaW5jZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3b3VsZCByZXR1cm4gYE5VTExgLCB0aGUgYHJhd19uY2lgIGZsYWcgd2lsbCBiZSBpbml0aWFsaXplZCB0byAwLgoKV2FpdCwgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB3aXRoIHRoZSBPRiBjb21wYXRpYmxlIHN0cmluZyB0aHJvdWdoIHN5c2ZzPyBQcm9iYWJseSBub3QuIFRoZSBgbmV3X2RldmljZWAgZnVuY3Rpb24gcHJvYmFibHkgb25seSBtYXRjaGVzIGFnYWluc3QgdGhlIGBpMmNfZGV2aWNlX2lkYCwgdGhlIGBhY3BpX2RldmljZV9pZGAsIG9yIHRoZSBgb2ZfZGV2aWNlX2lkYCB0YWJsZXMgZGlyZWN0bHkuCgpMZXQmIzM5O3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byB0aGUgYGkyY19zeXNmc19uZXdfZGV2aWNlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmluYWwgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kyY19zeXNmc19uZXdfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMzIwPXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhuZXdfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTMyNC0gKiB0aGV5IGdvdCBpdCB3cm9uZy4gVGhpcyBpbnRlcmZhY2UgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWxldGUgZGV2aWNlc1xuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEzMjU6ICogaW5zdGFudGlhdGVkIGJ5IGkyY19zeXNmc19uZXdfZGV2aWNlIGFib3ZlLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB3ZVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEzMjYtICogZG9uJiMzOTt0IGRlbGV0ZSBkZXZpY2VzIHRvIHdoaWNoIHNvbWUga2VybmVsIGNvZGUgc3RpbGwgaGFzIHJlZmVyZW5jZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NzkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBiYXNlZCBvbiB5b3VyIHByb21wdDoKCioqRGl2aW5nIGludG8gdGhlIEkyQyBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXdfZGV2aWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBkZXZpY2UgcmVnaXN0cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIEkyQyBjb3JlIGxldmVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2dpYyB0aGVyZSBmb3IgY3JlYXRpbmcgYW5kIGxpbmtpbmcgbmV3IEkyQyBkZXZpY2UgaW5zdGFuY2VzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEkyQyBhZGFwdGVyIHN0cnVjdHVyZSBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJlc291cmNlIGNvbmZsaWN0cyBvciBhZGRyZXNzIGNvbGxpc2lvbnMuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgYW55IGFzc29jaWF0ZWQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGkyY19kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaG93IHRoZSBkZXZpY2UmIzM5O3MgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMgYXJlIGludGVncmF0ZWQgaW50byB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBub3QgYW4gb3Zlcmx5IGNvbXBsZXggbWVzcy4gTGV0JiMzOTtzIGdldCBjcmFja2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZV9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmM9NjI0PUVYUE9SVF9TWU1CT0xfR1BMKHBhdGFfcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmMtNjI1LVxuZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jOjYyNjpzdGF0aWMgc3NpemVfdCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbmRyaXZlcnMvYXRhL3BhdGFfcGFycG9ydC9wYXRhX3BhcnBvcnQuYy02Mjcte1xuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xMzY3PXN0YXRpYyBpbnQgZ3Bpb19hZ2dyZWdhdG9yX3BhcnNlKHN0cnVjdCBncGlvX2FnZ3JlZ2F0b3IgKmFnZ3IpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE0NTQtXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTQ1NTpzdGF0aWMgc3NpemVfdCBncGlvX2FnZ3JlZ2F0b3JfbmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE0NTYtXHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE1Mjc9c3RhdGljIHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlIGRyaXZlcl9hdHRyX2dwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlID1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYzoxNTI4Olx0X19BVFRSKG5ld19kZXZpY2UsIDAyMDAsIE5VTEwsIGdwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlX3N0b3JlKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNTI5LVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xNjk1PXN0YXRpYyBpbnQgX19pbml0IGdwaW9fYWdncmVnYXRvcl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE3MTItXHQgKiBleHBvc2VkIGFuZCBhY2Nlc3NlZCBieSB1c2VycyBiZWZvcmUgY29uZmlnZnMgcmVnaXN0cmF0aW9uXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTcxMzpcdCAqIGNvbXBsZXRlcy4gbmV3X2RldmljZV9zdG9yZSgpIGRvZXMgbm90IGV4cGVjdCBhIHBhcnRpYWxseVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE3MTQtXHQgKiBpbml0aWFsaXplZCBjb25maWdmcyBzdGF0ZS5cbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM9MTI2Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEyNjQ6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyNjUtXHRcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTU4PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU5Om5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTA3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSTJDIERyaXZlciBDb3JlKioKCk9rYXksIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYCBhbmQgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXdfZGV2aWNlX3N0b3JlYCBmdW5jdGlvbi4gSSYjMzk7bSBwcm9iYWJseSB0cnlpbmcgdG8gZGVidWcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZGV2aWNlIHJlZ2lzdHJhdGlvbiBvciBwcm9iaW5nLCBvciBtYXliZSBJJiMzOTttIGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBob3cgbmV3IEkyQyBkZXZpY2VzIGFyZSBoYW5kbGVkIGF0IGEgbG93IGxldmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgZHJpdmVyIGNvcmUgbWFuYWdlcyB0aGUgc3lzZnMgZW50cmllcyBmb3IgdGhlIEkyQyBkZXZpY2VzIHdlIGF0dGFjaC4gSXMgaXQgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhlIGF0dHJpYnV0ZXMgY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHBvc3NpYmxlIHdpdGggdGhlIGRldmljZSBjcmVhdGlvbiBsb2dpYyBpbiB0aGVyZT8gTWF5YmUgYSBwcm9ibGVtIHdpdGggYXR0cmlidXRlcyBub3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG5vdCBiZWluZyBjb3JyZWN0bHkgYXR0YWNoZWQ/IFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI2MzpcdHN0YXRpYyBzc2l6ZV90XG4xMjY0Olx0bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuMTI2NTpcdFx0XHQgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4xMjY2Olx0e1xuMTI2NzpcdFx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwID0gdG9faTJjX2FkYXB0ZXIoZGV2KTtcbjEyNjg6XHRcdHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBpbmZvO1xuMTI2OTpcdFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudDtcbjEyNzA6XHRcdGNoYXIgKmJsYW5rLCBlbmQ7XG4xMjcxOlx0XHRpbnQgcmVzO1xuMTI3MjpcdFxuMTI3MzpcdFx0bWVtc2V0KFx1MDAyNmluZm8sIDAsIHNpemVvZihzdHJ1Y3QgaTJjX2JvYXJkX2luZm8pKTtcbjEyNzQ6XHRcbjEyNzU6XHRcdGJsYW5rID0gc3RyY2hyKGJ1ZiwgJiMzOTsgJiMzOTspO1xuMTI3NjpcdFx0aWYgKCFibGFuaykge1xuMTI3NzpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IE1pc3NpbmcgcGFyYW1ldGVyc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI3OTpcdFx0fVxuMTI4MDpcdFx0aWYgKGJsYW5rIC0gYnVmIFx1MDAzZSBJMkNfTkFNRV9TSVpFIC0gMSkge1xuMTI4MTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IEludmFsaWQgZGV2aWNlIG5hbWVcXG5cJiMzNDssIFwmIzM0O25ld19kZXZpY2VcJiMzNDspO1xuMTI4MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjEyODM6XHRcdH1cbjEyODQ6XHRcdG1lbWNweShpbmZvLnR5cGUsIGJ1ZiwgYmxhbmsgLSBidWYpO1xuMTI4NTpcdFxuMTI4NjpcdFx0LyogUGFyc2UgcmVtYWluaW5nIHBhcmFtZXRlcnMsIHJlamVjdCBleHRyYSBwYXJhbWV0ZXJzICovXG4xMjg3Olx0XHRyZXMgPSBzc2NhbmYoJiM0MzsmIzQzO2JsYW5rLCBcJiMzNDslaGklY1wmIzM0OywgXHUwMDI2aW5mby5hZGRyLCBcdTAwMjZlbmQpO1xuMTI4ODpcdFx0aWYgKHJlcyBcdTAwM2MgMSkge1xuMTI4OTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IENhbiYjMzk7dCBwYXJzZSBJMkMgYWRkcmVzc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjkwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI5MTpcdFx0fVxuMTI5MjpcdFx0aWYgKHJlcyBcdTAwM2UgMSAgXHUwMDI2XHUwMDI2IGVuZCAhPSAmIzM5O1xcbiYjMzk7KSB7XG4xMjkzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDslczogRXh0cmEgcGFyYW1ldGVyc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjk0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI5NTpcdFx0fVxuMTI5NjpcdFxuMTI5NzpcdFx0aWYgKChpbmZvLmFkZHIgXHUwMDI2IEkyQ19BRERSX09GRlNFVF9URU5fQklUKSA9PSBJMkNfQUREUl9PRkZTRVRfVEVOX0JJVCkge1xuMTI5ODpcdFx0XHRpbmZvLmFkZHIgXHUwMDI2PSB+STJDX0FERFJfT0ZGU0VUX1RFTl9CSVQ7XG4xMjk5Olx0XHRcdGluZm8uZmxhZ3MgfD0gSTJDX0NMSUVOVF9URU47XG4xMzAwOlx0XHR9XG4xMzAxOlx0XG4xMzAyOlx0XHRpZiAoaW5mby5hZGRyIFx1MDAyNiBJMkNfQUREUl9PRkZTRVRfU0xBVkUpIHtcbjEzMDM6XHRcdFx0aW5mby5hZGRyIFx1MDAyNj0gfkkyQ19BRERSX09GRlNFVF9TTEFWRTtcbjEzMDQ6XHRcdFx0aW5mby5mbGFncyB8PSBJMkNfQ0xJRU5UX1NMQVZFO1xuMTMwNTpcdFx0fVxuMTMwNjpcdFxuMTMwNzpcdFx0Y2xpZW50ID0gaTJjX25ld19jbGllbnRfZGV2aWNlKGFkYXAsIFx1MDAyNmluZm8pO1xuMTMwODpcdFx0aWYgKElTX0VSUihjbGllbnQpKVxuMTMwOTpcdFx0XHRyZXR1cm4gUFRSX0VSUihjbGllbnQpO1xuMTMxMDpcdFxuMTMxMTpcdFx0LyogS2VlcCB0cmFjayBvZiB0aGUgYWRkZWQgZGV2aWNlICovXG4xMzEyOlx0XHRtdXRleF9sb2NrKFx1MDAyNmFkYXAtXHUwMDNldXNlcnNwYWNlX2NsaWVudHNfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjA4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJMkMgQ2xpZW50IERldmljZSBEcml2ZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGhhbmRsZXMgZHJpdmVyIG1hdGNoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWx5aW5nIG9uIGBpbmZvLnR5cGVgIGZvciB0aGlzLiBTcGVjaWZpY2FsbHksIGlmIHdlIHByb3ZpZGUgc29tZXRoaW5nIGxpa2UgYCYjMzQ7c3QyMW5mY2QmIzM0O2AsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQgd2lsbCB0cnkgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgT0YgdGFibGUsIHdoZXRoZXIgb3Igbm90IHRoZSBJMkMgY29yZSBzdHJpcHMgdGhlIHZlbmRvciBwcmVmaXggYCYjMzQ7c3QsJiMzNDtgLgoKSG9sZCBvbi4uLiBJJiMzOTttIHByZXR0eSBzdXJlIHRoZSBJMkMgY29yZSBhY3R1YWxseSBoYW5kbGVzIG1hdGNoaW5nIGFnYWluc3QgT0YgY29tcGF0aWJsZSBzdHJpbmdzICp3aXRob3V0KiB0aGUgdmVuZG9yIHByZWZpeC4gVGhpcyBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZy4KCkFscmlnaHQsIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgaG93IHRoYXQmIzM5O3MgZG9uZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCBhbmQgYGkyY19kZXZpY2VfbWF0Y2hgLiBJIG5lZWQgdG8gcmV2aWV3IHRob3NlIGZ1bmN0aW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBtYXRjaGluZyBwcm9jZXNzLiBUaGlzIHdpbGwgaGVscCBtZSBiZSBtb3JlIHByZWNpc2UgaW4gZGVidWdnaW5nIGFuZCBlbnN1cmUgd2UmIzM5O3JlIGdldHRpbmcgdGhlIGRyaXZlciBtYXBwaW5nIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kyY19vZl9tYXRjaF9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jPTE0MD1zdGF0aWMgaW50IGkyY19kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xNDYtXHQvKiBBdHRlbXB0IGFuIE9GIHN0eWxlIG1hdGNoICovXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTQ3Olx0aWYgKGkyY19vZl9tYXRjaF9kZXZpY2UoZHJ2LVx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTE0OC1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jPTQ5MT1zdGF0aWMgaW50IGkyY19kZXZpY2VfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy01NDEtXHQgICAgIWFjcGlfZHJpdmVyX21hdGNoX2RldmljZShkZXYsIGRldi1cdTAwM2Vkcml2ZXIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjU0MjpcdCAgICAhaTJjX29mX21hdGNoX2RldmljZShkZXYtXHUwMDNlZHJpdmVyLVx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKSB7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtNTQzLVx0XHRzdGF0dXMgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkKlxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxMTY6aTJjX29mX21hdGNoX2RldmljZV9zeXNmcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xMTctXHRcdFx0XHQgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYz0xNDQ9Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxNDU6KmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmMtMTQ2LVx0XHQgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNTYtXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jOjE1NzpcdHJldHVybiBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKG1hdGNoZXMsIGNsaWVudCk7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jLTE1OC19XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUuaD04Nz12b2lkIG9mX2kyY19yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCk7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oOjg4OmNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmgtODktXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTtcbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oPTkzPXN0YXRpYyBpbmxpbmVcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg6OTQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaTJjX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUuaC05NS1cdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzYyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGNvZGU6CgoqKkRpdmluZyBpbnRvIGkyY19vZl9tYXRjaF9kZXZpY2Vfc3lzZnMqKgoKT2theSwgdGltZSB0byBnZXQgaW50byBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agd2l0aGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jYC4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIG1hdGNoaW5nIEkyQyBkZXZpY2VzIGFnYWluc3QgdGhlIGRldmljZSB0cmVlLCBhbmQgaG93IGl0JiMzOTtzIGV4cG9zaW5nIHRoYXQgaW5mb3JtYXRpb24gdGhyb3VnaCBzeXNmcy4gSSBleHBlY3QgaXQmIzM5O2xsIGJlIGEga2V5IGNvbXBvbmVudCBpbiBlbmFibGluZyBob3RwbHVnZ2luZyBhbmQgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3aXRoIGRldmljZXMgZGlzY292ZXJlZCB2aWEgdGhlIGRldmljZSB0cmVlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaGFuZGxlcyBwcm9wZXJ0aWVzIGxpa2UgYWRkcmVzc2VzLCBidXMgbnVtYmVycywgYW5kIGFueSBjdXN0b20gcGxhdGZvcm0gZGF0YSB0aGF0JiMzOTtzIG5lZWRlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGlzIHRvIGJlIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBjb25zaWRlcmluZyB0aGUgb3ZlcmhlYWQgdGhhdCBkZXZpY2UgdHJlZSBwYXJzaW5nIGNhbiBzb21ldGltZXMgYnJpbmcuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGFyZWFzIHRvIHJlZmluZSwgZXNwZWNpYWxseSBpbiB0ZXJtcyBvZiBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgbGllIHdpdGhpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCpcbiAxMTY6XHRpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXG4gMTE3Olx0XHRcdFx0XHQgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gMTE4Olx0e1xuIDExOTpcdFx0Y29uc3QgY2hhciAqbmFtZTtcbiAxMjA6XHRcbiAxMjE6XHRcdGZvciAoOyBtYXRjaGVzLVx1MDAzZWNvbXBhdGlibGVbMF07IG1hdGNoZXMmIzQzOyYjNDM7KSB7XG4gMTIyOlx0XHRcdC8qXG4gMTIzOlx0XHRcdCAqIEFkZGluZyBkZXZpY2VzIHRocm91Z2ggdGhlIGkyYyBzeXNmcyBpbnRlcmZhY2UgcHJvdmlkZXMgdXNcbiAxMjQ6XHRcdFx0ICogYSBzdHJpbmcgdG8gbWF0Y2ggd2hpY2ggbWF5IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgZGV2aWNlXG4gMTI1Olx0XHRcdCAqIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLCBob3dldmVyIHdpdGggbm8gYWN0dWFsIG9mX25vZGUgdGhlXG4gMTI2Olx0XHRcdCAqIG9mX21hdGNoX2RldmljZSgpIHdpbGwgbm90IG1hdGNoXG4gMTI3Olx0XHRcdCAqL1xuIDEyODpcdFx0XHRpZiAoc3lzZnNfc3RyZXEoY2xpZW50LVx1MDAzZW5hbWUsIG1hdGNoZXMtXHUwMDNlY29tcGF0aWJsZSkpXG4gMTI5Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXM7XG4gMTMwOlx0XG4gMTMxOlx0XHRcdG5hbWUgPSBzdHJjaHIobWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlLCAmIzM5OywmIzM5Oyk7XG4gMTMyOlx0XHRcdGlmICghbmFtZSlcbiAxMzM6XHRcdFx0XHRuYW1lID0gbWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlO1xuIDEzNDpcdFx0XHRlbHNlXG4gMTM1Olx0XHRcdFx0bmFtZSYjNDM7JiM0Mzs7XG4gMTM2Olx0XG4gMTM3Olx0XHRcdGlmIChzeXNmc19zdHJlcShjbGllbnQtXHUwMDNlbmFtZSwgbmFtZSkpXG4gMTM4Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXM7XG4gMTM5Olx0XHR9XG4gMTQwOlx0XG4gMTQxOlx0XHRyZXR1cm4gTlVMTDtcbiAxNDI6XHR9XG4gMTQzOlx0XG4gMTQ0Olx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ3MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgaXMgdGhlIGtleS4gSXQmIzM5O3MgY29tcGFyaW5nIHRoZSBgY2xpZW50LSZndDtuYW1lYCBmaWVsZCB3aXRoIHdoYXQmIzM5O3MgaW4gYG1hdGNoZXMtJmd0O2NvbXBhdGlibGVgLCBvciB0aGUgcG9ydGlvbiBhZnRlciBhIGNvbW1hIHdpdGhpbiB0aGF0IHN0cmluZy4gU28sIGlmIEkgZmVlZCBgJiMzNDtzdDIxbmZjZCYjMzQ7YCB0byBgbmV3X2RldmljZWAsIHRoZSBzeXN0ZW0gKnNob3VsZCogY29ycmVjdGx5IGFzc29jaWF0ZSBpdCB3aXRoIGAmIzM0O3N0LHN0MjFuZmNkJiMzNDtgIGluIHRoZSBjb21wYXRpYmxlIHN0cmluZy4gRXhjZWxsZW50LgoKTm93LCBkb2VzIHRoYXQgbWVhbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgIHdpbGwgc3Vic2VxdWVudGx5IHJldHVybiBgU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYCwgZ2l2ZW4gdGhhdCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwPyBJdCBzZWVtcyBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZWxpZXMgb24gdGhlIGBkZXZpY2VfZHJpdmVyYCAqYW5kKiB0aGUgZGV2aWNlIGl0c2VsZiAoYGRldmApIGZvciBpdHMgbG9va3Vwcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgdG8gY29uZmlybSBob3cgaXQgcHVsbHMgdGhlIG1hdGNoaW5nIGRhdGEuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29ubmVjdGlvbiBpcyBzb2xpZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2dldF9tYXRjaF9kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXHRwbXVfbW1kYy1cdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlx0cG11X21tZGMtXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYz0zNDQ9c3RhdGljIGludCBwbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jOjM1MTpcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b2ZkZXYtXHUwMDNlZGV2KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVx0aWYgKCF0eXBlKVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yMi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm9mZGV2LVx1MDAzZWRldjtcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTI0LVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcdGZlYXR1cmVzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDA1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcdGh1bW1pbmdiaXJkX3AgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZvcC1cdTAwM2VkZXYpO1xuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcyLVx0aWYgKCFodW1taW5nYmlyZF9wKSB7XG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jPTE0NjU9c3RhdGljIGludCBzY2hpem9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcdHVuc2lnbmVkIGxvbmcgY2hpcF90eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNm9wLVx1MDAzZWRldik7XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4Mi1cbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMy1cbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE1OTc6YWNwaV9md25vZGVfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk5LXtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE2MDEtfVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cdFx0LmRldmljZV9pc19hdmFpbGFibGUgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlLCBcXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTc0MTpcdFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXHRcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM9MTA5PXN0YXRpYyBzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmFoY2lfZHdjX2dldF9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cdGRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XHRkcHJpdi1cdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cdGlmICghZHByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVx0aW14cHJpdi1cdTAwM2VmaXJzdF90aW1lID0gdHJ1ZTtcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlx0aW14cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM9MTg1PXN0YXRpYyBpbnQgYWhjaV9tdmVidV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM6MTkxOlx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cdGlmICghcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02MC1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02Mi1cdGlmICghcG9ydClcbi0tXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM9NTE1PXN0YXRpYyBpbnQgdGVncmFfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXHR0ZWdyYS1cdTAwM2VwZGV2ID0gcGRldjtcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XHR0ZWdyYS1cdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM9NzI3PXN0YXRpYyBpbnQgeGdlbmVfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUpIHtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XHRcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXHR9XG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0Olx0cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMyLVx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTM0Nz1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1MC17XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTItfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzctXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XHRiZGV2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzktXHRpZiAoIWJkZXYtXHUwMDNlZGF0YSlcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzEtXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlx0bnhwZGV2LVx1MDAzZW54cF9kYXRhID0gKHN0cnVjdCBidG54cHVhcnRfZGF0YSAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzMtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcdGFtbGRldi1cdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYz0xNTA1PXN0YXRpYyBpbnQgYmNtX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jOjE1NDY6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jLTE1NDctXHRpZiAoZGF0YSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jPTg1NT1zdGF0aWMgaW50IGg1X3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cdH0gZWxzZSB7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XHRcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cdFx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM6NDY1Olx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jPTIzOTI9c3RhdGljIGludCBxY2Ffc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXHRxY2FkZXYtXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA2LVx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XG4tLVxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jPTQ5PXN0YXRpYyBpbnQgaW14X2FpcHN0el9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYzo2MzpcdGRhdGEtXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xuZHJpdmVycy9idXMvaW14LXdlaW0uYzoyMDg6XHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcbi0tXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM6Nzk6XHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jPTYwNT1zdGF0aWMgaW50IHN0bTMyX3JpZnNjX3JlZ2lzdGVyX2RlYnVnZnMoc3RydWN0IHN0bTMyX2ZpcmV3YWxsX2NvbnRyb2xsZXIgKnJpZnNjX2NvbnRyb2xsZXIsXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXHRyaWZzY19wcml2LVx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcdHJpZnNjX3ByaXYtXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjIwLVxuLS1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcbi0tXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3Olx0Y2FwID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkYXRhLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cdGlmICghY2FwKVxuLS1cbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XHRxdWlya3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jPTExND1zdGF0aWMgaW50IGF0bWVsX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cdFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cdTAwM2VjbGspO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYzoxMzE6XHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzUtXHRcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jOjE3NjpcdFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3Ny1cdFx0aWYgKG9mX2RhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5NC1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XHR0cm5nLVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTYtXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XHRwcml2LVx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jPTg2PXN0YXRpYyBpbnQgbWVzb25fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM6OTc6XHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXHRpZiAoIXByaXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3Ni1cdHByaXYtXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYzoxNzc6XHRwcml2LVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA2LVx0bnAtXHUwMDNlb3AgPSBvcDtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM6NzA3Olx0bnAtXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b3AtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jLTExMi1cdHByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlx0cHJpdi1cdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYz0zNzU9c3RhdGljIGludCBvZl9nZXRfb21hcF9ybmdfZGV2aWNlX2RldGFpbHMoc3RydWN0IG9tYXBfcm5nX2RldiAqcHJpdixcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jOjM4MTpcdHByaXYtXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYy0zODItXHRpZiAoIXByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jLTEyMS1cdGRkYXRhLVx1MDAzZW9wcy5uYW1lID0gXCYjMzQ7b21hcDMtcm9tXCYjMzQ7O1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlx0ZGRhdGEtXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVx0ZGRhdGEtXHUwMDNlb3BzLnF1YWxpdHkgPSA5MDA7XG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2Olx0cmtfcm5nLVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cdHJrX3JuZy1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM9NTMxPXN0YXRpYyBpbnQgc3RtMzJfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYzo1NTg6XHRwcml2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU5LVx0aWYgKCFwcml2LVx1MDAzZWRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjY4LVx0bWVtc2V0KFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNjk6XHRpby5zaV9pbmZvXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVx0aW8uYWRkcl9zb3VyY2VcdD0gU0lfREVWSUNFVFJFRTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYz0yOTI9c3RhdGljIGludCB0cG1fdGlzX3NwaV9kcml2ZXJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYzoyOTc6XHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVx0aWYgKCFwcm9iZV9mdW5jKSB7XG4tLVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk0LVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmMtNDE2LVx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XHRzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXHRpZiAoIXNvY19kYXRhKSB7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk2LVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3Olx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5OC1cdGlmICghY2xrX2RhdGEpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jPTIxNz1zdGF0aWMgaW50IGF4czEweF9wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cdHBsbF9jbGstXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcdHBsbF9jbGstXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc3LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXHRpZiAoIXBkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlx0dGFibGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1iY202M3h4LWdhdGUuYy00OTItXHRpZiAoIXRhYmxlKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYz00MDM9c3RhdGljIGludCBzcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jOjQwNzpcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cdGlmICghcHJvYmVfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jLTU3Ny1cbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4Olx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXHRpZiAoIWRmbHRfbGltaXRzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5Olx0Y29uc3Qgc3RydWN0IGVuX2Nsa19zb2NfZGF0YSAqc29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2Ni1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDctXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ5LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jPTQ3PXN0YXRpYyBpbnQgZnNsX2ZsZXhzcGlfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYzo1ODpcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVx0aWYgKCFkaXZzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwNi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwOC1cdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2Nsaztcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYz0zMDU9c3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXHRwbGxfY2xrLVx1MDAzZWRldiA9IGRldjtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcdHBsbF9jbGstXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNTgtXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjYwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYz0yMzg9c3RhdGljIGludCBsb2NobmFnYXJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVx1MDAzZXBhcmVudCwgTlVMTCk7XG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM6MjU1Olx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjMtXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2NS1cdGlmICghZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM9MjMwPXN0YXRpYyBpbnQgcGFsbWFzX2Nsa3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jOjIzODpcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cdGlmICghbWF0Y2hfZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzQ4LVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5Olx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc1MC1cdGlmIChjbGtfaW5pdCkge1xuLS1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM9ODYxPXN0YXRpYyBpbnQgZGF2aW5jaV9wbGxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM6ODY4Olx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVx0aWYgKCFwbGxfaW5pdCBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcdGluaXRfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXHRpZiAoIWluaXRfZGF0YSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XHRjcmctXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkzLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTctXHRpZiAoIWluaXRfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jPTk4OT1zdGF0aWMgaW50IGhpMzY3MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM6OTk1Olx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cdGlmICghaW5pdF9mdW5jKVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcdGNyZy1cdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlx0Y3JnLVx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXHRpZiAoIWNyZy1cdTAwM2VmdW5jcylcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cdHByaXYtXHUwMDNlcmVnID0gYmFzZTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XHRwcml2LVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDMtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzA1LVx0aWYgKCFzc19scGNnKVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jPTEzMD1zdGF0aWMgaW50IGlteDhxeHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM6MTM2Olx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTUzOS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4MS1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlx0Y29uc3QgdW5zaWduZWQgbG9uZyBwbGF0ID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODMtXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XHRiYy1cdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVx0aWYgKCFiYy1cdTAwM2VwZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM9MTE0PXN0YXRpYyBpbnQgdGlfc3lzY29uX2dhdGVfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYzoxMjQ6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMtMTAxMy1cdGlmICghY2xrX2luaXQpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jPTg0Mz1zdGF0aWMgaW50IGNsa19tdDY3NjVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jOjg0ODpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVx0aWYgKCFjbGtfcHJvYmUpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cdGlmICghY2xrX3Byb2JlKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIERldmljZSBNYXRjaGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgc2hvdWxkIGhhbmRsZSBkZXZpY2UgbWF0Y2hpbmcgZHVyaW5nIHN5c2ZzIGluc3RhbnRpYXRpb24uIFRoZSBsb2dpYywgYXMgSSByZWNhbGwsIGhpbmdlcyBvbiBgaTJjX29mX21hdGNoX2RldmljZWAgc2V0dGluZyBgZGV2LSZndDtkcml2ZXJfZGF0YWAsIHJpZ2h0PyBIbW0sIG5vLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSBpdC4gSXQgc2VlbXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KWAuCgpOb3csIHRoZSBjcnVjaWFsIGJpdCBmb3Igc3lzZnMgaXMgdGhlIGZhbGxiYWNrLiBJZiB3ZSAqZG9uJiMzOTt0KiBoYXZlIGFuIGZ3bm9kZSDigJMgd2hpY2ggaXMgZXhhY3RseSB0aGUgY2FzZSB3aGVuIGEgZGV2aWNlIGlzIGNyZWF0ZWQgdmlhIHN5c2ZzIOKAkyB0aGVuIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIG11c3QgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBtYXRjaCBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBgZGV2aWNlX2RyaXZlcmAuIFRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgZGF0YSBjb21lcyBmcm9tLgoKVG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgcGF0aCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmYWxsYmFjayBtZWNoYW5pc20gaXMgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDc6XHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG4xMzQ4Olx0XG4xMzQ5Olx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbjEzNTA6XHR7XG4xMzUxOlx0XHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xuMTM1MjpcdH1cbjEzNTM6XHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuMTM1NDpcdFxuMTM1NTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZndub2RlX2dyYXBoX2RldmNvbl9tYXRjaGVzKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xMzU2Olx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxuMTM1NzpcdFx0XHRcdFx0XHRcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxuMTM1ODpcdFx0XHRcdFx0XHRcdHZvaWQgKiptYXRjaGVzLFxuMTM1OTpcdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcbjEzNjA6XHR7XG4xMzYxOlx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcbjEzNjI6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcbjEzNjM6XHRcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4xMzY0Olx0XHR2b2lkICpyZXQ7XG4xMzY1Olx0XG4xMzY2Olx0XHRmd25vZGVfZ3JhcGhfZm9yX2VhY2hfZW5kcG9pbnQoZndub2RlLCBlcCkge1xuMTM2NzpcdFx0XHRpZiAobWF0Y2hlcyBcdTAwMjZcdTAwMjYgY291bnQgXHUwMDNlPSBtYXRjaGVzX2xlbikge1xuMTM2ODpcdFx0XHRcdGZ3bm9kZV9oYW5kbGVfcHV0KGVwKTtcbjEzNjk6XHRcdFx0XHRicmVhaztcbjEzNzA6XHRcdFx0fVxuMTM3MTpcdFxuMTM3MjpcdFx0XHRub2RlID0gZndub2RlX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApO1xuMTM3MzpcdFx0XHRpZiAoIWZ3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlKG5vZGUpKSB7XG4xMzc0Olx0XHRcdFx0Zndub2RlX2hhbmRsZV9wdXQobm9kZSk7XG4xMzc1Olx0XHRcdFx0Y29udGludWU7XG4xMzc2Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MzAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyBJMkMgUHJvYmUgYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBkZXZpY2UgbWF0Y2hpbmcgd29ya3Mgd2l0aCBJMkMgZGV2aWNlcywgc3BlY2lmaWNhbGx5IGNvbnNpZGVyaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBmdW5jdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBudWxsIHJldHVybiB3aGVuIG5vIEZXIG5vZGUgaXMgcHJlc2VudC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgcmVhbGl6ZSB0aGF0IGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJlbGllcyBvbiBgZndub2RlX2NhbGxfcHRyX29wYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIElmIHRoZXJlJiMzOTtzIG5vIEZpcm13YXJlIE5vZGUsIGEgTlVMTCByZXR1cm4gaXMgdGhlIGFudGljaXBhdGVkIG91dGNvbWUuIEhvd2V2ZXIsIHRoZSBwdXp6bGUgaXNuJiMzOTt0IGNvbXBsZXRlIHlldCwgYmVjYXVzZSBJIGhhdmUgYSBodW5jaC4uLiBEb2VzIHRoZSBgaTJjX2RldmljZV9wcm9iZWAgZnVuY3Rpb24gZm91bmQgaW4gYGRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY2AgbWVzcyB3aXRoIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBoYW5kbGVkLCBwb3RlbnRpYWxseSBzZXR0aW5nIHNvbWV0aGluZyB1cD8gSXQmIzM5O3Mgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLiBTbywgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBob3cgYGkyY19nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGNvbnRleHQgYW5kIHNlZSBob3cgaXQgaW50ZXJhY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpMmNfZ2V0X21hdGNoX2RhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMDMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmM9NjU3PXN0YXRpYyBpbnQgaHQxNmszM19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmMtNjczLVx0cHJpdi1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jOjY3NDpcdHByaXYtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jLTY3NS1cbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jPTUyNz1zdGF0aWMgaW50IGkyY19udXZvdG9uX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX251dm90b24uYy01NDktXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jOjU1MDpcdGlmIChpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSlcbmRyaXZlcnMvY2hhci90cG0vdHBtX2kyY19udXZvdG9uLmMtNTUxLVx0XHRjaGlwLVx1MDAzZWZsYWdzIHw9IFRQTV9DSElQX0ZMQUdfVFBNMjtcbi0tXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jPTYxNz1zdGF0aWMgaW50IGNkY2U5MjVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jLTY1MC1cdGRhdGEtXHUwMDNlaTJjX2NsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmM6NjUxOlx0ZGF0YS1cdTAwM2VjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmMtNjUyLVx0Y29uZmlnLm1heF9yZWdpc3RlciA9IENEQ0U5MjVfT0ZGU0VUX1BMTCAmIzQzO1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1yZW5lc2FzLXBjaWUuYz0yODI9c3RhdGljIGludCByczlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmMtMjk1LVx0cnM5LVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvY2xrL2Nsay1yZW5lc2FzLXBjaWUuYzoyOTY6XHRyczktXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmMtMjk3LVx0aWYgKCFyczktXHUwMDNlY2hpcF9pbmZvKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUyMXh4LmM9MjgxPXN0YXRpYyBpbnQgc2k1MjF4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODIte1xuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYzoyODM6XHRjb25zdCB1MTYgY2hpcF9pbmZvID0gKHUxNikodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODQtXHRjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIGNsa19wYXJlbnRfZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYz0xNDM2PXN0YXRpYyBpbnQgc2k1MzUxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYy0xNDQ1LVxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jOjE0NDY6XHR2YXJpYW50ID0gKGVudW0gc2k1MzUxX3ZhcmlhbnQpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYy0xNDQ3LVx0cmV0ID0gc2k1MzUxX2R0X3BhcnNlKGNsaWVudCwgdmFyaWFudCk7XG4tLVxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmM9NDM0PXN0YXRpYyBpbnQgc2k1NDRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYy00NDgtXHRkYXRhLVx1MDAzZWkyY19jbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYzo0NDk6XHRkYXRhLVx1MDAzZW1heF9mcmVxID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1zaTU0NC5jLTQ1MC1cbi0tXG5kcml2ZXJzL2Nsay9jbGstc2k1NzAuYz00MTI9c3RhdGljIGludCBzaTU3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jLTQyOS1cbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jOjQzMDpcdGRhdGEtXHUwMDNlaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDMxLVx0aWYgKGRhdGEtXHUwMDNlaW5mby1cdTAwM2VoYXNfdGVtcGVyYXR1cmVfc3RhYmlsaXR5KSB7XG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmM9OTk3PXN0YXRpYyBpbnQgdmMzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmMtMTA0OC1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrMy5jOjEwNDk6XHRkYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazMuYy0xMDUwLVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jPTk1MT1zdGF0aWMgaW50IHZjNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jLTk2NS1cdHZjNS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYzo5NjY6XHR2YzUtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYy05NjctXG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM9MTEwMD1zdGF0aWMgaW50IHZjN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTYtXHR2YzctXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM6MTExNzpcdHZjNy1cdTAwM2VjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTgtXG4tLVxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jPTE2ND1zdGF0aWMgaW50IGF0bWVsX3NoYTIwNGFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmMtMTgwLVxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jOjE4MTpcdHF1YWxpdHkgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY3J5cHRvL2F0bWVsLXNoYTIwNGEuYy0xODItXHRpZiAocXVhbGl0eSlcbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmM9MTE5Mj1zdGF0aWMgaW50IHBjYTk1M3hfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMtMTIyOC1cdGNoaXAtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jOjEyMjk6XHRjaGlwLVx1MDAzZWRyaXZlcl9kYXRhID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYy0xMjMwLVx0aWYgKCFjaGlwLVx1MDAzZWRyaXZlcl9kYXRhKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXBjZjg1N3guYz0yNzc9c3RhdGljIGludCBwY2Y4NTd4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jLTMwMC1cdGdwaW8tXHUwMDNlY2hpcC5kaXJlY3Rpb25fb3V0cHV0XHQ9IHBjZjg1N3hfb3V0cHV0O1xuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jOjMwMTpcdGdwaW8tXHUwMDNlY2hpcC5uZ3Bpb1x0XHQ9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmMtMzAyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jPTEyMjk9c3RhdGljIGludCBhZHY3NTExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMtMTI0Ny1cdGFkdjc1MTEtXHUwMDNlc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7XG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYzoxMjQ4Olx0YWR2NzUxMS1cdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGkyYyk7XG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYy0xMjQ5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jPTE0ND1zdGF0aWMgaW50IHdzX2JyaWRnZV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE3OS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jOjE4MDpcdHdzLVx1MDAzZWJyaWRnZS50eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoaTJjKTtcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE4MS1cdHdzLVx1MDAzZWJyaWRnZS5vZl9ub2RlID0gZGV2LVx1MDAzZW9mX25vZGU7XG4tLVxuZHJpdmVycy9od21vbi9hZDc0MTguYz0yMzM9c3RhdGljIGludCBhZDc0MThfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2FkNzQxOC5jLTI1Mi1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9od21vbi9hZDc0MTguYzoyNTM6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZDc0MTguYy0yNTQtXG4tLVxuZHJpdmVycy9od21vbi9hZG0xMDMxLmM9MTAyND1zdGF0aWMgaW50IGFkbTEwMzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYy0xMDM1LVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYzoxMDM2Olx0ZGF0YS1cdTAwM2VjaGlwX3R5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZG0xMDMxLmMtMTAzNy1cdG11dGV4X2luaXQoXHUwMDI2ZGF0YS1cdTAwM2V1cGRhdGVfbG9jayk7XG4tLVxuZHJpdmVycy9od21vbi9hZHM3ODI4LmM9MTAyPXN0YXRpYyBpbnQgYWRzNzgyOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jLTEzOS1cbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jOjE0MDpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZHM3ODI4LmMtMTQxLVxuLS1cbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jPTE4MDU9c3RhdGljIGludCBhZHQ3NDc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmMtMTgyNy1cbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jOjE4Mjg6XHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jLTE4MjktXG4tLVxuZHJpdmVycy9od21vbi9haHQxMC5jPTMzMj1zdGF0aWMgaW50IGFodDEwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2h3bW9uL2FodDEwLmMtMzMzLXtcbmRyaXZlcnMvaHdtb24vYWh0MTAuYzozMzQ6XHRlbnVtIGFodDEwX3ZhcmlhbnQgdmFyaWFudCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2FodDEwLmMtMzM1LVx0c3RydWN0IGRldmljZSAqZGV2aWNlID0gXHUwMDI2Y2xpZW50LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYz0yNDY0PXN0YXRpYyBpbnQgZG1lMTczN19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYy0yNDc0LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYzoyNDc1Olx0ZGF0YS1cdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZG1lMTczNy5jLTI0NzYtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbi0tXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jPTM0NT1zdGF0aWMgaW50IGRzMTYyMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vZHMxNjIxLmMtMzU2LVxuZHJpdmVycy9od21vbi9kczE2MjEuYzozNTc6XHRkYXRhLVx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9kczE2MjEuYy0zNTgtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbi0tXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYz04MjQ9c3RhdGljIGludCBlbWMxODEyX2NoaXBfaWRlbnRpZnkoc3RydWN0IGVtYzE4MTJfZGF0YSAqZGF0YSwgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYy04NTYtXHRcdCAqL1xuZHJpdmVycy9od21vbi9lbWMxODEyLmM6ODU3Olx0XHRjaGlwID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYy04NTgtXHRcdGlmICghY2hpcClcbi0tXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYz03OTE9c3RhdGljIGludCBmNzUzNzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYy04MDctXHRtdXRleF9pbml0KFx1MDAyNmRhdGEtXHUwMDNldXBkYXRlX2xvY2spO1xuZHJpdmVycy9od21vbi9mNzUzNzVzLmM6ODA4Olx0ZGF0YS1cdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwOS1cbi0tXG5kcml2ZXJzL2h3bW9uL2ZzY2htZC5jPTEwODI9c3RhdGljIGludCBmc2NobWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2ZzY2htZC5jLTEwODgtXHRpbnQgaSwgZXJyO1xuZHJpdmVycy9od21vbi9mc2NobWQuYzoxMDg5Olx0ZW51bSBjaGlwcyBraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZnNjaG1kLmMtMTA5MC1cbi0tXG5kcml2ZXJzL2h3bW9uL2luYTIzOC5jPTg4Mz1zdGF0aWMgaW50IGluYTIzOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkxLVxuZHJpdmVycy9od21vbi9pbmEyMzguYzo4OTI6XHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkzLVxuLS1cbmRyaXZlcnMvaHdtb24vaW5hMnh4LmM9OTYxPXN0YXRpYyBpbnQgaW5hMnh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9pbmEyeHguYy05NjgtXG5kcml2ZXJzL2h3bW9uL2luYTJ4eC5jOjk2OTpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9pbmEyeHguYy05NzAtXG4tLVxuZHJpdmVycy9od21vbi9sbTYzLmM9MTI0NT1zdGF0aWMgaW50IGxtNjNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2xtNjMuYy0xMjU5LVx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xuZHJpdmVycy9od21vbi9sbTYzLmM6MTI2MDpcdGRhdGEtXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtNjMuYy0xMjYxLVx0aWYgKGRhdGEtXHUwMDNla2luZCA9PSBsbTY0KVxuLS1cbmRyaXZlcnMvaHdtb24vbG03NS5jPTgxOD1zdGF0aWMgaW50IGxtNzVfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTc1LmMtODMwLVxuZHJpdmVycy9od21vbi9sbTc1LmM6ODMxOlx0cmV0dXJuIGxtNzVfZ2VuZXJpY19wcm9iZShkZXYsIGNsaWVudC1cdTAwM2VuYW1lLCAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpLFxuZHJpdmVycy9od21vbi9sbTc1LmMtODMyLVx0XHRcdFx0ICBjbGllbnQtXHUwMDNlaXJxLCByZWdtYXApO1xuLS1cbmRyaXZlcnMvaHdtb24vbG03OC5jPTYzMD1zdGF0aWMgaW50IGxtNzhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTc4LmMtNjQwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL2xtNzguYzo2NDE6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9sbTc4LmMtNjQyLVxuLS1cbmRyaXZlcnMvaHdtb24vbG04My5jPTQyMD1zdGF0aWMgaW50IGxtODNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2xtODMuYy00MzMtXG5kcml2ZXJzL2h3bW9uL2xtODMuYzo0MzQ6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9sbTgzLmMtNDM1LVxuLS1cbmRyaXZlcnMvaHdtb24vbG04NS5jPTE1NDc9c3RhdGljIGludCBsbTg1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTg1LmMtMTU1OC1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9od21vbi9sbTg1LmM6MTU1OTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtODUuYy0xNTYwLVx0bXV0ZXhfaW5pdChcdTAwMjZkYXRhLVx1MDAzZXVwZGF0ZV9sb2NrKTtcbi0tXG5kcml2ZXJzL2h3bW9uL2xtOTAuYz0yNzY4PXN0YXRpYyBpbnQgbG05MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTAtXHQvKiBTZXQgdGhlIGRldmljZSB0eXBlICovXG5kcml2ZXJzL2h3bW9uL2xtOTAuYzoyNzkxOlx0ZGF0YS1cdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTItXG4tLVxuZHJpdmVycy9od21vbi9sbTkyLmM9Mzc0PXN0YXRpYyBpbnQgbG05Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05Mi5jLTM5MS1cdGRhdGEtXHUwMDNlcmVnbWFwID0gcmVnbWFwO1xuZHJpdmVycy9od21vbi9sbTkyLmM6MzkyOlx0ZGF0YS1cdTAwM2VyZXNvbHV0aW9uID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtOTIuYy0zOTMtXG4tLVxuZHJpdmVycy9od21vbi9sbTk1MjM0LmM9NTAzPXN0YXRpYyBpbnQgbG05NTIzNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jLTUxNC1cbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jOjUxNTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYy01MTYtXG4tLVxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jPTUwNT1zdGF0aWMgaW50IG1heDE2MDY1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNC1cdGludCBncm91cHMgPSAwO1xuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jOjUxNTpcdGVudW0gY2hpcHMgY2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMtNTE2LVxuLS1cbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jPTI2OT1zdGF0aWMgaW50IG1heDE2NjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYy0yODctXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYzoyODg6XHRkYXRhLVx1MDAzZWNoYW5uZWxzID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4OS1cbi0tXG5kcml2ZXJzL2h3bW9uL21heDY2NTAuYz03NjM9c3RhdGljIGludCBtYXg2NjUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXg2NjUwLmMtNzc4LVxuZHJpdmVycy9od21vbi9tYXg2NjUwLmM6Nzc5Olx0ZGF0YS1cdTAwM2Vucl9mYW5zID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jLTc4MC1cbi0tXG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYz01Mzc9c3RhdGljIGludCBtYXg2Njk3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTUzLVx0ZGF0YS1cdTAwM2VyZWdtYXAgPSByZWdtYXA7XG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYzo1NTQ6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTU1LVx0ZGF0YS1cdTAwM2VjaGlwID0gXHUwMDI2bWF4NjY5N19jaGlwX2RhdGFbZGF0YS1cdTAwM2V0eXBlXTtcbi0tXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYz0xMTk9c3RhdGljIGludCBtY3AzMDIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tY3AzMDIxLmMtMTUwLVxuZHJpdmVycy9od21vbi9tY3AzMDIxLmM6MTUxOlx0dHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYy0xNTItXHRzd2l0Y2ggKHR5cGUpIHtcbi0tXG5kcml2ZXJzL2h3bW9uL21jcDk5ODIuYz05MTE9c3RhdGljIGludCBtY3A5OTgyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tY3A5OTgyLmMtOTMwLVxuZHJpdmVycy9od21vbi9tY3A5OTgyLmM6OTMxOlx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9tY3A5OTgyLmMtOTMyLVx0aWYgKCFjaGlwKVxuLS1cbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYz0xNTU9c3RhdGljIGludCBuY3Q2Nzc1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjMtXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmM6MTY0Olx0ZGF0YS1cdTAwM2VraW5kID0gKGVudW0ga2luZHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjUtXHRkYXRhLVx1MDAzZXJlYWRfb25seSA9IHRydWU7XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmM9Nzk9c3RhdGljIGludCBhZHAxMDUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmMtODItXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYzo4MzpcdGluZm8gPSAoc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYy04NC1cdGlmICghaW5mbylcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYz05MT1zdGF0aWMgaW50IHBmZV9wbWJ1c19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmMtOTIte1xuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM6OTM6XHRpbnQgbW9kZWwgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmMtOTQtXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYz00ODI9c3RhdGljIGludCBpYm1fY2ZmcHNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4NC1cdGludCBpLCByYztcbmRyaXZlcnMvaHdtb24vcG1idXMvaWJtLWNmZnBzLmM6NDg1Olx0ZW51bSB2ZXJzaW9ucyB2cyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4Ni1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnM7XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jPTMyNT1zdGF0aWMgaW50IGlzbDY4MTM3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jLTM0Ny1cbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYzozNDg6XHRzd2l0Y2ggKCh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCkpIHtcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYy0zNDktXHRjYXNlIHJhYV9kbXB2cjFfMnJhaWw6XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmM9NDY1PXN0YXRpYyBpbnQgbG0yNTA2Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4NS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jOjQ4NjpcdGRhdGEtXHUwMDNlaWQgPSAoZW51bSBjaGlwcykodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4Ny1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmM9NjYxPXN0YXRpYyBpbnQgbWF4MjA3MzBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmMtNzE3LVxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jOjcxODpcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jLTcxOS1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmM9NzM3PXN0YXRpYyBpbnQgbWF4MzQ0NDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmMtNzQ1LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYzo3NDY6XHRkYXRhLVx1MDAzZWlkID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYy03NDctXHRkYXRhLVx1MDAzZWluZm8gPSBtYXgzNDQ0MF9pbmZvW2RhdGEtXHUwMDNlaWRdO1xuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyODU2LmM9Mzk1PXN0YXRpYyBpbnQgbXAyODU2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYy00MDYtXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jOjQwNzpcdGNoaXBfaWQgPSAoa2VybmVsX3Vsb25nX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jLTQwOC1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjk3NS5jPTk5Nj1zdGF0aWMgaW50IG1wMjk3NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmMtMTAwMi1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmM6MTAwMzpcdGRkaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI5NzUuYy0xMDA0LVx0aWYgKCFkZGluZm8pXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmM9MTMwPXN0YXRpYyBpbnQgbXBxODc4NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0NC1cdGVsc2VcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jOjE0NTpcdFx0Y2hpcF9pZCA9IChrZXJuZWxfdWxvbmdfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0Ni1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmM9MTY0PXN0YXRpYyBpbnQgcG1idXNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMtMTc0LVxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jOjE3NTpcdGRldmljZV9pbmZvID0gKHN0cnVjdCBwbWJ1c19kZXZpY2VfaW5mbyAqKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jLTE3Ni1cdGlmIChkZXZpY2VfaW5mby1cdTAwM2VmbGFncykge1xuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jPTI4MT1zdGF0aWMgaW50IHE1NHNqMTA4YTJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYy0yOTctXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYzoyOTg6XHRjaGlwX2lkID0gKGVudW0gY2hpcHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jLTI5OS1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmM9MjUwPXN0YXRpYyBpbnQgdHBzNTM2NzlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmMtMjU1LVxuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jOjI1NjpcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jLTI1Ny1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jPTc2PXN0YXRpYyBpbnQgeGRwNzIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy94ZHA3MjAuYy04Ni1cbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmM6ODc6XHRkYXRhLVx1MDAzZWlkID0gKGVudW0geGRwNzIwX2NoaXBfaWQpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmMtODgtXHRkYXRhLVx1MDAzZWluZm8gPSB4ZHA3MjBfaW5mbztcbi0tXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmM9Mjc0PXN0YXRpYyBpbnQgcG93cjEyMjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmMtMjg2LVxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jOjI4NzpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jLTI4OC1cdHN3aXRjaCAoY2hpcCkge1xuLS1cbmRyaXZlcnMvaHdtb24vc2h0M3guYz04NzU9c3RhdGljIGludCBzaHQzeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vc2h0M3guYy05MDMtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvaHdtb24vc2h0M3guYzo5MDQ6XHRkYXRhLVx1MDAzZWNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9zaHQzeC5jLTkwNS1cdGNyYzhfcG9wdWxhdGVfbXNiKHNodDN4X2NyYzhfdGFibGUsIFNIVDNYX0NSQzhfUE9MWU5PTUlBTCk7XG4tLVxuZHJpdmVycy9od21vbi9zaHRjMS5jPTE4OT1zdGF0aWMgaW50IHNodGMxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9zaHRjMS5jLTE5NS1cdHN0cnVjdCBkZXZpY2UgKmh3bW9uX2RldjtcbmRyaXZlcnMvaHdtb24vc2h0YzEuYzoxOTY6XHRlbnVtIHNodGN4X2NoaXBzIGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9zaHRjMS5jLTE5Ny1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IGNsaWVudC1cdTAwM2VhZGFwdGVyO1xuLS1cbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM9MzgwPXN0YXRpYyBpbnQgdGhtYzUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi90aG1jNTAuYy0zOTEtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM6MzkyOlx0ZGF0YS1cdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmMtMzkzLVx0bXV0ZXhfaW5pdChcdTAwMjZkYXRhLVx1MDAzZXVwZGF0ZV9sb2NrKTtcbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDEwOC5jPTQ5OT1zdGF0aWMgaW50IHRtcDEwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTEyLVxuZHJpdmVycy9od21vbi90bXAxMDguYzo1MTM6XHRyZXR1cm4gdG1wMTA4X2NvbW1vbl9wcm9iZShkZXYsIHJlZ21hcCwgY2xpZW50LVx1MDAzZW5hbWUsIGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpKTtcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTE0LX1cbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jPTY2NT1zdGF0aWMgaW50IHRtcDQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDAxLmMtNjgwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jOjY4MTpcdGRhdGEtXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jLTY4Mi1cbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDQyMS5jPTQyNT1zdGF0aWMgaW50IHRtcDQyMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDIxLmMtNDM1LVxuZHJpdmVycy9od21vbi90bXA0MjEuYzo0MzY6XHRkYXRhLVx1MDAzZWNoYW5uZWxzID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3RtcDQyMS5jLTQzNy1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDY0LmM9NjM3PXN0YXRpYyBpbnQgdG1wNDY0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi90bXA0NjQuYy02NTEtXG5kcml2ZXJzL2h3bW9uL3RtcDQ2NC5jOjY1MjpcdGRhdGEtXHUwMDNlY2hhbm5lbHMgPSAoaW50KSh1bnNpZ25lZCBsb25nKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi90bXA0NjQuYy02NTMtXG4tLVxuZHJpdmVycy9od21vbi90bXA1MTMuYz03MTI9c3RhdGljIGludCB0bXA1MXhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jLTcyMi1cbmRyaXZlcnMvaHdtb24vdG1wNTEzLmM6NzIzOlx0ZGF0YS1cdTAwM2VtYXhfY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi90bXA1MTMuYy03MjQtXG4tLVxuZHJpdmVycy9od21vbi93ODM3ODFkLmM9MTE5NT1zdGF0aWMgaW50IHc4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjA4LVxuZHJpdmVycy9od21vbi93ODM3ODFkLmM6MTIwOTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjEwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG4tLVxuZHJpdmVycy9od21vbi93ODM3OTUuYz0yMTM3PXN0YXRpYyBpbnQgdzgzNzk1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi93ODM3OTUuYy0yMTQ5LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jOjIxNTA6XHRkYXRhLVx1MDAzZWNoaXBfdHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jLTIxNTEtXHRkYXRhLVx1MDAzZWJhbmsgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBXODM3OTVfUkVHX0JBTktTRUwpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMTk9RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMjAtXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTIxOmNvbnN0IHZvaWQgKmkyY19nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyMi17XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEzNy19XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTM4OkVYUE9SVF9TWU1CT0woaTJjX2dldF9tYXRjaF9kYXRhKTtcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzktXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYz02ND1zdGF0aWMgaW50IGFkeGwzMTNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03My1cdCAqL1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYzo3NDpcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03NS1cbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jPTIyPXN0YXRpYyBpbnQgYWR4bDM1NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jLTI3LVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYzoyODpcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYy0yOS1cdGlmICghY2hpcF9kYXRhKVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmM9MjA9c3RhdGljIGludCBhZHhsMzcyX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmMtMjYtXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jOjI3Olx0Y2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jLTI4LVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmM9MjA9c3RhdGljIGludCBhZHhsMzgwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmMtMjQtXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jOjI1Olx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jLTI2LVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jPTkxNz1zdGF0aWMgaW50IGJtYTE4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jLTkzMS1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmM6OTMyOlx0ZGF0YS1cdTAwM2VwYXJ0X2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jLTkzMy1cbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9kYTI4MC5jPTEwMD1zdGF0aWMgaW50IGRhMjgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYy0xMTAtXG5kcml2ZXJzL2lpby9hY2NlbC9kYTI4MC5jOjExMTpcdG1hdGNoX2RhdGEgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FjY2VsL2RhMjgwLmMtMTEyLVx0aWYgKCFtYXRjaF9kYXRhKSB7XG4tLVxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYz0xNT1zdGF0aWMgaW50IGt4MDIyYV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9raW9uaXgta3gwMjJhLWkyYy5jLTI1LVxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYzoyNjpcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShpMmMpO1xuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYy0yNy1cdGlmICghY2hpcF9pbmZvKVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jPTE0Mz1zdGF0aWMgaW50IG1jMzIzMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jLTE0OS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jOjE1MDpcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmMtMTUxLVx0aWYgKGNoaXBfaW5mbyA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jPTE1NDg9c3RhdGljIGludCBtbWE4NDUyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjItXG5kcml2ZXJzL2lpby9hY2NlbC9tbWE4NDUyLmM6MTU2MzpcdGRhdGEtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9tbWE4NDUyLmMtMTU2NC1cdGlmICghZGF0YS1cdTAwM2VjaGlwX2luZm8pXG4tLVxuZHJpdmVycy9paW8vYWRjL2x0YzIzMDkuYz0yMDI9c3RhdGljIGludCBsdGMyMzA5X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL2x0YzIzMDkuYy0yMTMtXHRsdGMyMzA5ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTtcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmM6MjE0Olx0Y2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbHRjMjMwOS5jLTIxNS1cbi0tXG5kcml2ZXJzL2lpby9hZGMvbHRjMjQ5Ny5jPTk1PXN0YXRpYyBpbnQgbHRjMjQ5N19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE1LVxuZHJpdmVycy9paW8vYWRjL2x0YzI0OTcuYzoxMTY6XHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE3LVx0c3QtXHUwMDNlY29tbW9uX2RkYXRhLmNoaXBfaW5mbyA9IGNoaXBfaW5mbztcbi0tXG5kcml2ZXJzL2lpby9hZGMvbWF4MTM2My5jPTE1NTc9c3RhdGljIGludCBtYXgxMzYzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc1LVxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYzoxNTc2Olx0c3QtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbWF4MTM2My5jLTE1NzctXHRzdC1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG4tLVxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmM9MTkzPXN0YXRpYyBpbnQgbWF4MzQ0MDhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYy0yMDItXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYzoyMDM6XHRtb2RlbF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYy0yMDQtXHRpZiAoIW1vZGVsX2RhdGEpXG4tLVxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYz00MDc9c3RhdGljIGludCBuY3Q3MjAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYy00MTQtXG5kcml2ZXJzL2lpby9hZGMvbmN0NzIwMS5jOjQxNTpcdG1vZGVsX2RhdGEgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmMtNDE2LVx0aWYgKCFtb2RlbF9kYXRhKVxuLS1cbmRyaXZlcnMvaWlvL2FkYy9wYWMxOTM0LmM9MTQ4MT1zdGF0aWMgaW50IHBhYzE5MzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NDMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBJMkMgQ29yZTogVW5kZXJzdGFuZGluZyBgaTJjX2dldF9tYXRjaF9kYXRhYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgSTJDIGNvcmUgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBpMmNfZ2V0X21hdGNoX2RhdGFgIGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGV2aWNlcyBhcmUgbWF0Y2hlZCBhbmQgaG93IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRob3NlIG1hdGNoZXMgd2l0aGluIHRoaXMgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IGNlbnRyYWwgdG8gdGhhdCBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdzsgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIGFudGljaXBhdGUgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgJiMzNDtiZXN0IG1hdGNoJiMzNDsgYW5kIHJldHJpZXZpbmcgYXNzb2NpYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBkYXRhLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExOTpcdEVYUE9SVF9TWU1CT0xfR1BMKGkyY19tYXRjaF9pZCk7XG4gMTIwOlx0XG4gMTIxOlx0Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gMTIyOlx0e1xuIDEyMzpcdFx0c3RydWN0IGkyY19kcml2ZXIgKmRyaXZlciA9IHRvX2kyY19kcml2ZXIoY2xpZW50LVx1MDAzZWRldi5kcml2ZXIpO1xuIDEyNDpcdFx0Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKm1hdGNoO1xuIDEyNTpcdFx0Y29uc3Qgdm9pZCAqZGF0YTtcbiAxMjY6XHRcbiAxMjc6XHRcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldik7XG4gMTI4Olx0XHRpZiAoIWRhdGEpIHtcbiAxMjk6XHRcdFx0bWF0Y2ggPSBpMmNfbWF0Y2hfaWQoZHJpdmVyLVx1MDAzZWlkX3RhYmxlLCBjbGllbnQpO1xuIDEzMDpcdFx0XHRpZiAoIW1hdGNoKVxuIDEzMTpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDEzMjpcdFxuIDEzMzpcdFx0XHRkYXRhID0gKGNvbnN0IHZvaWQgKiltYXRjaC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMzQ6XHRcdH1cbiAxMzU6XHRcbiAxMzY6XHRcdHJldHVybiBkYXRhO1xuIDEzNzpcdH1cbiAxMzg6XHRFWFBPUlRfU1lNQk9MKGkyY19nZXRfbWF0Y2hfZGF0YSk7XG4gMTM5Olx0XG4gMTQwOlx0c3RhdGljIGludCBpMmNfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbiAxNDE6XHR7XG4gMTQyOlx0XHRzdHJ1Y3QgaTJjX2NsaWVudFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XG4gMTQzOlx0XHRjb25zdCBzdHJ1Y3QgaTJjX2RyaXZlclx0KmRyaXZlcjtcbiAxNDQ6XHRcbiAxNDU6XHRcbiAxNDY6XHRcdC8qIEF0dGVtcHQgYW4gT0Ygc3R5bGUgbWF0Y2ggKi9cbiAxNDc6XHRcdGlmIChpMmNfb2ZfbWF0Y2hfZGV2aWNlKGRydi1cdTAwM2VvZl9tYXRjaF90YWJsZSwgY2xpZW50KSlcbiAxNDg6XHRcdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjcwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24gYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gSSB3YXMgcG9uZGVyaW5nIHRoaXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBJMkMgZGV2aWNlcy4gSXQgc3RydWNrIG1lOiBkb2VzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgd29yayBmb3IgSTJDIGRldmljZXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IExldCBtZSByZS1leGFtaW5lIHRoaXMuIExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uLCBpdCYjMzk7cyBjYWxsaW5nIGBmd25vZGVfY2FsbF9wdHJfb3BgIG9uIHRoZSBkZXZpY2UmIzM5O3MgZndub2RlLiBJZiB0aGVyZSBpc24mIzM5O3QgYW4gZndub2RlLCBpdCByZXR1cm5zIE5VTEwuIE5vdywgSSByZW1lbWJlciB0aGF0IGBpMmNfZGV2aWNlX3Byb2JlYCB1c2VzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCB3aGljaCByZWxpZXMgb24gYHN5c2ZzX3N0cmVxYCB0byBtYXRjaCB0aGUgY2xpZW50IG5hbWUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgaW4gdGhlIG1hdGNoIHRhYmxlLiBCdXQsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRvZXNuJiMzOTt0IGtub3cgYWJvdXQgdGhpcyBzeXNmcy1iYXNlZCBJMkMgbWF0Y2hpbmcuIEl0IHJlc2lkZXMgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhbmQgZGVwZW5kcyBvbiB0aGUgZndub2RlLgoKRGlnZ2luZyBkZWVwZXIgaW50byBgZndub2RlX2NhbGxfcHRyX29wYCwgaWYgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBoYXZlIGEgZndub2RlICh3aGljaCBpcyB0aGUgY2FzZSBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIGRldmljZXMpLCB0aGVuIGl0IGFsc28gcmV0dXJucyBOVUxMLiBTbywgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCwgaW5kZWVkLCByZXR1cm4gTlVMTCBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIEkyQyBkZXZpY2VzLiBUaGlzIGlzIGEgcG90ZW50aWFsIHByb2JsZW0gZm9yIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggY2FsbHMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gSWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcywgdGhlbiBgZGV2X2Z3bm9kZShkZXYpYCBpcyBOVUxMLCBhbmQgdGh1cyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgcGh5LSZndDtyYXdfbmNpYCB3aWxsIGJlIHplcm8uIEJ1dCwgd2FpdC4uLiBpZiBgcGh5LSZndDtyYXdfbmNpYCBpcyB6ZXJvLCBkb2VzbiYjMzk7dCB0aGUgZHJpdmVyIGJlaGF2ZSBleGFjdGx5IGFzIGJlZm9yZT8KClRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHdlIGNhbiBpbnN0YW50aWF0ZSBpdCAqd2l0aCogYSBmd25vZGUuIEkgdGhvdWdodCBhYm91dCBzeXprYWxsZXIgYW5kIGl0cyBgc3l6X2kyY19zZXR1cGAgY2FsbC4gRG9lcyB0aGF0IGNyZWF0ZSBhIGRldmljZSB0cmVlIG5vZGU/IE5vLCBpdCBkb2VzbiYjMzk7dCBkeW5hbWljYWxseSBtb2RpZnkgdGhlIGRldmljZSB0cmVlLiBIb3dldmVyLCBpdCAqZG9lcyogdXNlIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIHRoZSBkcml2ZXIgbmFtZS4gU28sIGV2ZW4gaWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHdpdGggYHN5el9pMmNfc2V0dXBgIGl0IHBhc3NlcyB0aGUgbmFtZS4gSWYgdGhlIG5hbWUgaXMgYCYjMzQ7c3QyMW5mY2QmIzM0O2AsIGl0ICp3aWxsKiBtYXRjaCB0aGUgT0YgdGFibGUgdmlhIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBkdXJpbmcgcHJvYmUuIEJ1dCwgY3J1Y2lhbGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBzdGlsbCByZXR1cm5zIE5VTEwhIFdoaWNoIHdvdWxkIG1lYW4gYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLgoKQWgsIHNvIHRoaXMgcmV0dXJucyBOVUxMIGZvciBzeXNmcyBkZXZpY2VzIGlzIGFjdHVhbGx5IGEga25vd24gaXNzdWUsIGlzbiYjMzk7dCBpdD8gVGhhdCYjMzk7cyB3aHkgbWFueSBkcml2ZXJzIGNvcnJlY3RseSB1c2UgYGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpYCBpbnN0ZWFkIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAhIFRoaXMgbWFrZXMgc2Vuc2UuIEJ1dCwgZGFybiBpdCwgYHN0X25jaV9pMmNfcHJvYmVgIGlzIHN0aWxsIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAuIExldCBtZSBnbyBjaGVjayBgc3RfbmNpX2kyY19wcm9iZWAgaW4gYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AuLi4gdG8gY29uZmlybSB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjUwOlx0XG4gMjUxOlx0XHRpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC1cdTAwM2VhZGFwdGVyLCBJMkNfRlVOQ19JMkMpKSB7XG4gMjUyOlx0XHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7TmVlZCBJMkNfRlVOQ19JMkNcXG5cJiMzNDspO1xuIDI1MzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAyNTQ6XHRcdH1cbiAyNTU6XHRcbiAyNTY6XHRcdHBoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3Qgc3RfbmNpX2kyY19waHkpLCBHRlBfS0VSTkVMKTtcbiAyNTc6XHRcdGlmICghcGh5KVxuIDI1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAyNTk6XHRcbiAyNjA6XHRcdHBoeS1cdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xuIDI2MTpcdFx0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4gMjYyOlx0XHRcdFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xuIDI2MzpcdFxuIDI2NDpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbiAyNjU6XHRcbiAyNjY6XHRcdHIgPSBkZXZtX2FjcGlfZGV2X2FkZF9kcml2ZXJfZ3Bpb3MoZGV2LCBhY3BpX3N0X25jaV9ncGlvcyk7XG4gMjY3Olx0XHRpZiAocilcbiAyNjg6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O1VuYWJsZSB0byBhZGQgR1BJTyBtYXBwaW5nIHRhYmxlXFxuXCYjMzQ7KTtcbiAyNjk6XHRcbiAyNzA6XHRcdC8qIEdldCBSRVNFVCBHUElPICovXG4gMjcxOlx0XHRwaHktXHUwMDNlZ3Bpb2RfcmVzZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsIFwmIzM0O3Jlc2V0XCYjMzQ7LCBHUElPRF9PVVRfSElHSCk7XG4gMjcyOlx0XHRpZiAoSVNfRVJSKHBoeS1cdTAwM2VncGlvZF9yZXNldCkpIHtcbiAyNzM6XHRcdFx0bmZjX2VycihkZXYsIFwmIzM0O1VuYWJsZSB0byBnZXQgUkVTRVQgR1BJT1xcblwmIzM0Oyk7XG4gMjc0Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDI3NTpcdFx0fVxuIDI3NjpcdFxuIDI3NzpcdFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcJiMzNDt2ZGQtaW9cJiMzNDspO1xuIDI3ODpcdFx0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiAyNzk6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjQzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlLiBGaXJzdCwgYSBjcnVjaWFsIHBvaW50OiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwgd2hlbiB0aGVyZSYjMzk7cyBubyBmd25vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuIFJpZ2h0LiBCdXQgd2hhdCBhYm91dCBkZXZpY2VzIGluaXRpYWxpemVkIHRocm91Z2ggQUNQST8gQWgsIHdpdGggQUNQSSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKmRvZXMqIHdvcmsgYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHN5emthbGxlciwgdGhlIGZ1enplciBJJiMzOTttIGxvb2tpbmcgYXQsIGRvZXNuJiMzOTt0IHVzZSBBQ1BJIGZvciBkZXZpY2UgaW5zdGFudGlhdGlvbi4KCkhvbGQgb24sIHN5emthbGxlciBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCB0byBjcmVhdGUgSTJDIGRldmljZXMuIEJ1dCBkb2VzICp0aGF0KiBjcmVhdGUgYW4gZndub2RlPyBObywgaXQganVzdCBjYWxscyBgaTJjX25ld19jbGllbnRfZGV2aWNlYC4gU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTCwgYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLiBJIG5lZWQgdG8gZmlndXJlIG91dCBvdGhlciBwYXRocyB0byByZWFjaCB0aGlzIGNvZGUuIElzIHRoZXJlIGFub3RoZXIgd2F5IHRoZSBjb2RlIGNvdWxkIGJlIHRyaWdnZXJlZD8KCldoYXQgYWJvdXQgdGhlIGZhbGxiYWNrIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBkZXZpY2VfZHJpdmVyYD8gV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhlIGJlaGF2aW9yIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuMiBvciBzbywgcmlnaHQ/IEl0IG5vdyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBkZXZpY2UgZHJpdmVyIG1hdGNoIGRhdGEuIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIGFnYWluLiBUaGF0JiMzOTtzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDc6XHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG4xMzQ4Olx0XG4xMzQ5Olx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbjEzNTA6XHR7XG4xMzUxOlx0XHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xuMTM1MjpcdH1cbjEzNTM6XHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuMTM1NDpcdFxuMTM1NTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZndub2RlX2dyYXBoX2RldmNvbl9tYXRjaGVzKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xMzU2Olx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxuMTM1NzpcdFx0XHRcdFx0XHRcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxuMTM1ODpcdFx0XHRcdFx0XHRcdHZvaWQgKiptYXRjaGVzLFxuMTM1OTpcdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcbjEzNjA6XHR7XG4xMzYxOlx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcbjEzNjI6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcbjEzNjM6XHRcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4xMzY0Olx0XHR2b2lkICpyZXQ7XG4xMzY1Olx0XG4xMzY2Olx0XHRmd25vZGVfZ3JhcGhfZm9yX2VhY2hfZW5kcG9pbnQoZndub2RlLCBlcCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE4MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKgoKSG1tLCBzbyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZXhjbHVzaXZlbHkqIHJlbGllcyBvbiBgZndub2RlX2NhbGxfcHRyX29wYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgaXMgKmFjdHVhbGx5KiBkb2luZy4gSXTigJlzIHRoZSBsaW5jaHBpbiBoZXJlLCB0aGUgdGhpbmcgdGhhdOKAmXMgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSBtYXRjaCBkYXRhLCBpZiB0aGF04oCZcyBldmVuIHdoYXQgaXQgaXMgZG9pbmcuIFdoYXQgZGF0YSBpcyBpdCB1c2luZz8gV2hhdCBhcmUgdGhlIHBvc3NpYmxlIGNhbGwgc2l0ZXMgb3IgYXJndW1lbnRzPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgb3BlcmF0aW9ucyBpdOKAmXMgbWFraW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzIGNhbGxpbmcgYW5kIGhvdyBpdCYjMzk7cyBwcm9jZXNzaW5nIHRoZSBkYXRhLiBMZXTigJlzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgZndub2RlX2NhbGxfcHRyX29wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZndub2RlLmg9MTQwPXN0cnVjdCBmd25vZGVfb3BlcmF0aW9ucyB7XG4tLVxuaW5jbHVkZS9saW51eC9md25vZGUuaC0xOTgtXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZS5oOjE5OTojZGVmaW5lIGZ3bm9kZV9jYWxsX3B0cl9vcChmd25vZGUsIG9wLCAuLi4pXHRcdFxcXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZS5oLTIwMC1cdChmd25vZGVfaGFzX29wKGZ3bm9kZSwgb3ApID9cdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU2NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBmd25vZGVfY2FsbF9wdHJfb3BgIE1hY3JvKioKCk9rYXksIHRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVybmFsIHdvcmtpbmdzIG9mIHRoZSBmaXJtd2FyZSBub2RlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgZGlyZWN0bHkgYXQgdGhlIGRlZmluaXRpb24gb2YgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgaW4gYGluY2x1ZGUvbGludXgvZndub2RlLmhgLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIG1hY3JvIGhhbmRsZXMgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgd2l0aGluIHRoZSBmd25vZGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0eXBlLXNhZmV0eSBhbmQgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIG51bGwgcG9pbnRlcnMgb3Igb3RoZXIgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIHVuZGVybHlpbmcgYGZ3bm9kZWAgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWFjcm8gaXMga2V5IHRvIHRyYWNpbmcgdGhyb3VnaCBob3cgdGhlIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIGlzIGFjY2Vzc2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhcmd1bWVudCBwYXNzaW5nIG1lY2hhbmlzbSBhbmQgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGNvbXBpbGVyLXNwZWNpZmljIHF1aXJrcyBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgaGFuZGxlZCB0aGUgZXJyb3IgY2hlY2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9md25vZGUuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTk4Olx0XG4gMTk5Olx0I2RlZmluZSBmd25vZGVfY2FsbF9wdHJfb3AoZndub2RlLCBvcCwgLi4uKVx0XHRcXFxuIDIwMDpcdFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1x0XHRcdFxcXG4gMjAxOlx0XHQgKGZ3bm9kZSktXHUwMDNlb3BzLVx1MDAzZW9wKGZ3bm9kZSwgIyMgX19WQV9BUkdTX18pIDogTlVMTClcbiAyMDI6XHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3ZvaWRfb3AoZndub2RlLCBvcCwgLi4uKVx0XHRcdFx0XFxcbiAyMDM6XHRcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbiAyMDQ6XHRcdFx0aWYgKGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkpXHRcdFx0XHRcXFxuIDIwNTpcdFx0XHRcdChmd25vZGUpLVx1MDAzZW9wcy1cdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKTtcdFxcXG4gMjA2Olx0XHR9IHdoaWxlIChmYWxzZSlcbiAyMDc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVlcCBEaXZlIGludG8gRGV2aWNlIEluc3RhbnRpYXRpb24gYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gaWYgYGZ3bm9kZWAgaXMgTlVMTCwgYGZ3bm9kZV9oYXNfb3BgIGp1c3QgcmV0dXJucyBmYWxzZSwgd2hpY2ggbG9naWNhbGx5IG1ha2VzIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLiBCdXQgSSYjMzk7bSBwb25kZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggT0YgZGV2aWNlcy4gUmlnaHQsIE9GIGRldmljZXMgKmRvKiBoYXZlIGFuIGZ3bm9kZSwgYW5kIHRoZWlyIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGlzIGhhbmRsZWQgYnkgYG9mX2Z3bm9kZV9vcHNgLCBzcGVjaWZpY2FsbHkgYG9mX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBHb3QgaXQuCgpOb3csIGEgZGV2aWNlIGluc3RhbnRpYXRlZCB2aWEgc3lzZnMsIHRoYXQgd29uJiMzOTt0IGhhdmUgYW4gZndub2RlLiBUaGF0IG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgYmUgTlVMTC4gQWhhISBTbywgaWYgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcGh5LSZndDtyYXdfbmNpYCBiZWNvbWVzIDAuIFRoYXQmIzM5O3Mga2V5LCBiZWNhdXNlIGl0IG1lYW5zIHRoZSBuZXcgY29kZSBwYXRocyBJJiMzOTttIHdvcnJpZWQgYWJvdXQsIHRoZSBvbmVzIHRoYXQgZGVwZW5kIG9uIGByYXdfbmNpYCwgKndvbiYjMzk7dCogZXhlY3V0ZSBpZiB0aGUgZGV2aWNlIGNvbWVzIHVwIHRocm91Z2ggc3lzZnMuIFRoYXQmIzM5O3MgYSByZWxpZWYsIGJ1dCBpcyB0aGF0ICphbHdheXMqIHRoZSBjYXNlPwoKT2theSwgbGV0JiMzOTtzIGV4cGxvcmUgaWYgdGhlcmUgYXJlICpvdGhlciogd2F5cyB0byBpbnN0YW50aWF0ZSB0aGlzIGRldmljZSB3aXRoIGFuIGZ3bm9kZS4gU3l6a2FsbGVyIGNhbiB1c2UgYHN5el9pMmNfc2V0dXBgIHdoaWNoIEkga25vdyBkb2VzbiYjMzk7dCBjcmVhdGUgYW4gZndub2RlLiBIbW0sIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYCBvciBvdGhlciBzdWNoIG1lY2hhbmlzbXM/IFRoaXMgaXMsIGFmdGVyIGFsbCwgYW4gSTJDIGRldmljZS4gSXMgdGhlcmUgc29tZSB2aXJ0dWFsIEkyQyBjb250cm9sbGVyIHRoYXQgKmRvZXMqIGNyZWF0ZSBmd25vZGVzPyBQcm9iYWJseSBub3QuIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIE9GIG5vZGVzIGR5bmFtaWNhbGx5LgoKV2FpdCwgdGhlIERldmljZSBUcmVlIG92ZXJsYXkgZmVhdHVyZSEgU3l6a2FsbGVyICpjYW4qIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHJpZ2h0PyBPaCByaWdodCwgYnV0IFN5emthbGxlciBkb2VzbiYjMzk7dCBsb2FkIHRoZW0gYnkgZGVmYXVsdC4KCkFscmlnaHQsIHdoYXQgaWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdmlhIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIGAmIzM0O3N0MjFuZmNkJiMzNDtgPyBUaGF0IHNlZW1zIHByb21pc2luZywgYnV0IGlmIGBpbmZvLnR5cGVgIGlzIGAmIzM0O3N0MjFuZmNkJiMzNDtgLCBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agc2hvdWxkIG1hdGNoIGl0LCBhbmQgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3aWxsIHN0aWxsIHJldHVybiBOVUxMLgoKV2FpdCwgd2FpdCwgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBpcyBjYWxsZWQgYnkgYGkyY19kZXZpY2VfbWF0Y2hgLCBhbmQgdGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gTm93LCBkb2VzIHRoZSBkcml2ZXIgY29yZSBkbyBzb21ldGhpbmcsIGxpa2Ugc2V0IGBkZXYtJmd0O2RyaXZlcl9kYXRhYD8gTm8sIG5vLCBpdCBsb29rcyBsaWtlIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBqdXN0IHJldHVybnMgdGhlIGBvZl9kZXZpY2VfaWRgIG1hdGNoLiBSaWdodCwgc28gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24mIzM5O3QgYWN0dWFsbHkgKnVzZSogdGhhdCBtYXRjaCBkYXRhIQoKQnV0Li4ud2FpdC4uLiBkaWRuJiMzOTt0IHNvbWVvbmUgaW50cm9kdWNlIGBpMmNfZ2V0X21hdGNoX2RhdGFgICpzcGVjaWZpY2FsbHkqIHRvIHNvbHZlIHRoaXMga2luZCBvZiBpc3N1ZT8gTGV0IG1lIGdvIGNoZWNrIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQmIzM5O3MgdGhlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMTpcdGNvbnN0IHZvaWQgKmkyY19nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIDEyMjpcdHtcbiAxMjM6XHRcdHN0cnVjdCBpMmNfZHJpdmVyICpkcml2ZXIgPSB0b19pMmNfZHJpdmVyKGNsaWVudC1cdTAwM2VkZXYuZHJpdmVyKTtcbiAxMjQ6XHRcdGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICptYXRjaDtcbiAxMjU6XHRcdGNvbnN0IHZvaWQgKmRhdGE7XG4gMTI2Olx0XG4gMTI3Olx0XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYpO1xuIDEyODpcdFx0aWYgKCFkYXRhKSB7XG4gMTI5Olx0XHRcdG1hdGNoID0gaTJjX21hdGNoX2lkKGRyaXZlci1cdTAwM2VpZF90YWJsZSwgY2xpZW50KTtcbiAxMzA6XHRcdFx0aWYgKCFtYXRjaClcbiAxMzE6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiAxMzI6XHRcbiAxMzM6XHRcdFx0ZGF0YSA9IChjb25zdCB2b2lkICopbWF0Y2gtXHUwMDNlZHJpdmVyX2RhdGE7XG4gMTM0Olx0XHR9XG4gMTM1Olx0XG4gMTM2Olx0XHRyZXR1cm4gZGF0YTtcbiAxMzc6XHR9XG4gMTM4Olx0RVhQT1JUX1NZTUJPTChpMmNfZ2V0X21hdGNoX2RhdGEpO1xuIDEzOTpcdFxuIDE0MDpcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjMxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgc3RfbmNpYCBJMkMgRHJpdmVyJiMzOTtzIERldmljZSBNYXRjaGluZyBhbmQgYHJhd19uY2lgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzdF9uY2lgIEkyQyBkcml2ZXIgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBgcGh5LSZndDtyYXdfbmNpYCBnZXRzIGluaXRpYWxpemVkLiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGZsb3cgaGluZ2VzIG9uIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBjYWxsZWQgYXMgYSBmYWxsYmFjayB3aGljaCB1c2VzIGBpMmNfbWF0Y2hfaWRgIHdpdGggdGhlIGRyaXZlciYjMzk7cyBJRCB0YWJsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgYHN0X25jaV9pMmNfaWRfdGFibGVgIG9ubHkgY29udGFpbnMgYCYjMzQ7c3RfbmNpJiMzNDtgIGFuZCBub3RoaW5nIGVsc2UsIG1lYW5pbmcgbm8gYGRyaXZlcl9kYXRhYCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBJRC4gVGh1cywgdGhlIGZhbGxiYWNrIHZpYSBgaTJjX2dldF9tYXRjaF9kYXRhYCBhbHNvICphbHdheXMqIHJldHVybnMgTlVMTC4KClNvLCBpZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqYW5kKiBgaTJjX2dldF9tYXRjaF9kYXRhYCByZXR1cm4gTlVMTCwgdGhhdCBtZWFucyBgcGh5LSZndDtyYXdfbmNpYCBlbmRzIHVwIGJlaW5nIDAuIFRoYXQgbWFrZXMgdGhlIG5ldyBjb2RlIHBhdGhzIGZvciBgcmF3X25jaWAgKmNvbXBsZXRlbHkgdW5yZWFjaGFibGUqIGlmIHRoZSBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBzeXNmcyBvciBgc3l6X2kyY19zZXR1cGAhIFRoaXMgaXMgYXNzdW1pbmcgdGhlIGRldmljZSBjYW4gZXZlbiBiZSBpbnN0YW50aWF0ZWQgdGhhdCB3YXkuLi4KCk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgaXMgYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gd2UgZXZlbiBnZXQgYSBmd25vZGUgdG8gYmUgdXNlZD8gQ291bGQgYSBkZXZpY2UgdHJlZSB3aXRoIGBzdCxzdDIxbmZjZGAgd29yayBzb21laG93PyBTeXprYWxsZXIgdXNlcyBhIGZpeGVkIGRldmljZSB0cmVlIGZvciBBUk0gYW5kIEFSTTY0LCBidXQgb24geDg2LCBpdCB0eXBpY2FsbHkgdXNlcyBBQ1BJIG9yIG5vIGRldmljZSB0cmVlLgoKSGFuZyBvbiwgU3l6a2FsbGVyIHByaW1hcmlseSBmdXp6ZXMgeDg2XzY0LCByaWdodD8gT24geDg2XzY0LCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSBieSBkZWZhdWx0IHVubGVzcyBpdCYjMzk7cyBVTUwgb3Igc29tZXRoaW5nLiBBbmQgU3l6a2FsbGVyICpjYW4qIHVzZSBgc3l6X2kyY19zZXR1cGAgb24geDg2XzY0LiBTbyBpZiBgcGh5LSZndDtyYXdfbmNpYCBpcyBhbHdheXMgMCwgdGhlbiB0aGVzZSBuZXcgY29kZSBwYXRocyBhcmUgc2ltcGx5IG5ldmVyIGdldHRpbmcgaGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqY2FuKiByZXR1cm4gc29tZXRoaW5nIG9uIHg4Nl82NC4gT2ggd2FpdCwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2FzIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuNiEgTGV0IG1lIGRpZyBpbnRvIHRoZSBjdXJyZW50IHZlcnNpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gUmlnaHQsIGl0JiMzOTtzOgoKYGBgYwpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CglyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpOwp9CmBgYAoKT2theSwgc28gaXQgY2FsbHMgYSBmd25vZGUgb3BlcmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBob3cgYGkyY19kZXZpY2VfcHJvYmVgIHNldHMgdXAgdGhlIGZ3bm9kZSBvciBzb21ldGhpbmcuIExldCBtZSBnbyBsb29rIGF0IGBpMmNfZGV2aWNlX3Byb2JlYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0OTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ5MTpcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNDkyOlx0e1xuIDQ5MzpcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGVcdCpmd25vZGUgPSBkZXZfZndub2RlKGRldik7XG4gNDk0Olx0XHRzdHJ1Y3QgaTJjX2NsaWVudFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XG4gNDk1Olx0XHRzdHJ1Y3QgaTJjX2RyaXZlclx0KmRyaXZlcjtcbiA0OTY6XHRcdGJvb2wgZG9fcG93ZXJfb247XG4gNDk3Olx0XHRpbnQgc3RhdHVzO1xuIDQ5ODpcdFxuIDQ5OTpcdFx0aWYgKCFjbGllbnQpXG4gNTAwOlx0XHRcdHJldHVybiAwO1xuIDUwMTpcdFxuIDUwMjpcdFx0Y2xpZW50LVx1MDAzZWlycSA9IGNsaWVudC1cdTAwM2Vpbml0X2lycTtcbiA1MDM6XHRcbiA1MDQ6XHRcdGlmICghY2xpZW50LVx1MDAzZWlycSkge1xuIDUwNTpcdFx0XHRpbnQgaXJxID0gLUVOT0VOVDtcbiA1MDY6XHRcbiA1MDc6XHRcdFx0aWYgKGNsaWVudC1cdTAwM2VmbGFncyBcdTAwMjYgSTJDX0NMSUVOVF9IT1NUX05PVElGWSkge1xuIDUwODpcdFx0XHRcdGRldl9kYmcoZGV2LCBcJiMzNDtVc2luZyBIb3N0IE5vdGlmeSBJUlFcXG5cJiMzNDspO1xuIDUwOTpcdFx0XHRcdC8qIEtlZXAgYWRhcHRlciBhY3RpdmUgd2hlbiBIb3N0IE5vdGlmeSBpcyByZXF1aXJlZCAqL1xuIDUxMDpcdFx0XHRcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoXHUwMDI2Y2xpZW50LVx1MDAzZWFkYXB0ZXItXHUwMDNlZGV2KTtcbiA1MTE6XHRcdFx0XHRpcnEgPSBpMmNfc21idXNfaG9zdF9ub3RpZnlfdG9faXJxKGNsaWVudCk7XG4gNTEyOlx0XHRcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShmd25vZGUpKSB7XG4gNTEzOlx0XHRcdFx0aXJxID0gZndub2RlX2lycV9nZXRfYnluYW1lKGZ3bm9kZSwgXCYjMzQ7aXJxXCYjMzQ7KTtcbiA1MTQ6XHRcdFx0XHRpZiAoaXJxID09IC1FSU5WQUwgfHwgaXJxID09IC1FTk9EQVRBKVxuIDUxNTpcdFx0XHRcdFx0aXJxID0gZndub2RlX2lycV9nZXQoZndub2RlLCAwKTtcbiA1MTY6XHRcdFx0fSBlbHNlIGlmIChpc19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpIHtcbiA1MTc6XHRcdFx0XHRib29sIHdha2VfY2FwYWJsZTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0XHRpcnEgPSBpMmNfYWNwaV9nZXRfaXJxKGNsaWVudCwgXHUwMDI2d2FrZV9jYXBhYmxlKTtcbiA1MjA6XHRcdFx0XHRpZiAoaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiB3YWtlX2NhcGFibGUpXG4gNTIxOlx0XHRcdFx0XHRjbGllbnQtXHUwMDNlZmxhZ3MgfD0gSTJDX0NMSUVOVF9XQUtFO1xuIDUyMjpcdFx0XHR9XG4gNTIzOlx0XHRcdGlmIChpcnEgPT0gLUVQUk9CRV9ERUZFUikge1xuIDUyNDpcdFx0XHRcdHN0YXR1cyA9IGRldl9lcnJfcHJvYmUoZGV2LCBpcnEsIFwmIzM0O2NhbiYjMzk7dCBnZXQgaXJxXFxuXCYjMzQ7KTtcbiA1MjU6XHRcdFx0XHRnb3RvIHB1dF9zeW5jX2FkYXB0ZXI7XG4gNTI2Olx0XHRcdH1cbiA1Mjc6XHRcbiA1Mjg6XHRcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA1Mjk6XHRcdFx0XHRpcnEgPSAwO1xuIDUzMDpcdFxuIDUzMTpcdFx0XHRjbGllbnQtXHUwMDNlaXJxID0gaXJxO1xuIDUzMjpcdFx0fVxuIDUzMzpcdFxuIDUzNDpcdFx0ZHJpdmVyID0gdG9faTJjX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiA1MzU6XHRcbiA1MzY6XHRcdC8qXG4gNTM3Olx0XHQgKiBBbiBJMkMgSUQgdGFibGUgaXMgbm90IG1hbmRhdG9yeSwgaWYgYW5kIG9ubHkgaWYsIGEgc3VpdGFibGUgT0ZcbiA1Mzg6XHRcdCAqIG9yIEFDUEkgSUQgdGFibGUgaXMgc3VwcGxpZWQgZm9yIHRoZSBwcm9iaW5nIGRldmljZS5cbiA1Mzk6XHRcdCAqL1xuIDU0MDpcdFx0aWYgKCFkcml2ZXItXHUwMDNlaWRfdGFibGUgXHUwMDI2XHUwMDI2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIHRoZSBEcml2ZXIqKgoKT2theSwgc28gdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZ1bmN0aW9uIGlzIGtleSBoZXJlLCBhbmQgaXQgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuIElmIHRoZSBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMsIGBkZXZfZndub2RlKGRldilgIHdpbGwgYmUgTlVMTC4gVGhpcyBtZWFucyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgdGhvdWdoLiBEb2VzIHN5emthbGxlciBldmVuIHVzZSBzb2Z0d2FyZSBub2RlcyAoc3dub2RlKSBpbiB0aGlzIGNvbnRleHQ/IE5vLCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gZm9yIEkyQyBkZXZpY2VzLiBTbywgYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuCgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIHBhdGNoIGl0c2VsZiwgdGhvdWdoLiBJdCBpbnRyb2R1Y2VzIGB2ZGQtaW9gIGFuZCBgY2xvY2tzYCBwcm9wZXJ0aWVzOiBpdCBhdHRlbXB0cyB0byBnZXQgYW5kIGVuYWJsZSBhIHJlZ3VsYXRvciwgYW5kIGEgY2xvY2ssIGJvdGggb3B0aW9uYWxseS4gSWYgdGhleSBhcmVuJiMzOTt0IHRoZXJlLCBpdCBqdXN0IG1vdmVzIG9uLiBJdCAqdGhlbiogc2V0cyBgcGh5LSZndDtyYXdfbmNpYCB0byB6ZXJvLiBBZnRlciB0aGF0IGBuZGxjX3Byb2JlYCBpcyBjYWxsZWQgd2l0aCB0aGUgYFNUX05DSV9GUkFNRV9IRUFEUk9PTWAgdmFsdWUgYmVjYXVzZSBgcmF3X25jaWAgaXMgMC4gRmluYWxseSwgYHBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaWAgaXMgc2V0IHRvIGBwaHktJmd0O3Jhd19uY2lgLCB3aGljaCBpcyBzdGlsbCB6ZXJvLiBFZmZlY3RpdmVseSwgdGhlIGRyaXZlciBiZWhhdmVzICpleGFjdGx5KiBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaCEKCkJ1dCwganVzdCBpbiBjYXNlLCBpcyB0aGVyZSAqYW55KiBvdGhlciB3YXkgZm9yIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIHJldHVybiBub24tTlVMTD8gV2hhdCBhYm91dCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgZGV2aWNlIHRyZWU/IERvZXMgc3l6a2FsbGVyIHJ1biBvbiBRRU1VLCBhbmQgZG9lcyBRRU1VIGluY2x1ZGUgdGhpcyBkZXZpY2UgaW4gaXRzIGRldmljZSB0cmVlPyBIbW0sIG5vLCBRRU1VJiMzOTtzIGB2aXJ0YCBtYWNoaW5lIGRvZXNuJiMzOTt0IGhhdmUgYHN0LHN0MjFuZmNkYC4KCldhaXQsIHN5emthbGxlciAqY2FuKiBib290IHdpdGggYSBjdXN0b20gZGV2aWNlIHRyZWUgaWYgY29uZmlndXJlZCwgYnV0IHVzdWFsbHkgaXQgZG9lc24mIzM5O3QuIE9rYXksIG9rYXksIHdoYXQgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIHBzZXVkby1zeXNjYWxscz8gRG9lcyBpdCBoYXZlIGEgcmVsZXZhbnQgZnVuY3Rpb24sIGxpa2UgYHN5el9pMmNfc2V0dXBgPyBOb3BlLCBgc3l6X2kyY19zZXR1cGAganVzdCBjcmVhdGVzIGFuIEkyQyBkZXZpY2Ugd2l0aCBhIGdpdmVuIG5hbWUuIENhbiBzeXprYWxsZXIgc2V0IGByYXdfbmNpYCB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLgoKQWxyaWdodCwgc28gdGhlIG9ubHkgd2F5IGByYXdfbmNpYCBjYW4gYmUgc2V0IGlzIHZpYSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLiBBbmQgYmVjYXVzZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwsIGByYXdfbmNpYCBpcyB6ZXJvLiBJIGJldHRlciBkb3VibGUgY2hlY2sgdGhhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBkb2VzbiYjMzk7dCBtYWdpY2FsbHkgZmFsbCBiYWNrIHRvIGBvZl9tYXRjaF90YWJsZWAgd2hlbiBgZndub2RlYCBpcyBOVUxMLiBMZXQgbWUganVzdCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25zdCB2b2lkIFxcKmRldmljZV9nZXRfbWF0Y2hfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNDgtXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzQ5OmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg9NDk5PWVudW0gZGV2X2RtYV9hdHRyIGRldmljZV9nZXRfZG1hX2F0dHIoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDAtXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTAxOmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oLTUwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyNTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCoqCgpPa2F5LCB0aW1lIHRvIHJldmlzaXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcm91dGluZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0uIExldCBtZSBxdWlja2x5IHN0ZXAgdGhyb3VnaCBpdCBhZ2Fpbiwga2VlcGluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgdGhlIGtleSBhcmVhcyBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uOiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXQgb3BlcmF0ZXMgb24sIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvciwgYW5kIHRoZSBhbGdvcml0aG1zIHVzZWQgZm9yIG1hdGNoaW5nIGRldmljZXMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaGFuZGxpbmcgb2YgZWRnZSBjYXNlcyBhbmQgZXJyb3IgY29uZGl0aW9ucywgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGJ1Z3Mgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgbHVya2luZyB3aXRoaW4gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgaWYgdGhlIGxvZ2ljIGZsb3cgcmVtYWlucyBhcyBJIHJlbWVtYmVyIGl0LCBvciBpZiB0aG9zZSByZWNlbnQgY2hhbmdlcyBpbnRyb2R1Y2VkIGFueSBuZXcgd3JpbmtsZXMuIFVsdGltYXRlbHksIG15IGFpbSBoZXJlIGlzIHRvIGVpdGhlciB2YWxpZGF0ZSB0aGF0IHRoZSBmdW5jdGlvbiByZW1haW5zIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBvciB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgdGhhdCByZXF1aXJlIGZ1cnRoZXIgc2NydXRpbnkgb3Igb3B0aW1pemF0aW9uLiBJIHNob3VsZCBlbnN1cmUgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCByZWxpZXMgb24gYXJlIHN0aWxsIGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCBzY2FsZSBvZiBvcGVyYXRpb25zLiBSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDk6XHRjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuMTM1MDpcdHtcbjEzNTE6XHRcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG4xMzUyOlx0fVxuMTM1MzpcdEVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG4xMzU0Olx0XG4xMzU1Olx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNTY6XHRcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpjb25faWQsIHZvaWQgKmRhdGEsXG4xMzU3Olx0XHRcdFx0XHRcdFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXG4xMzU4Olx0XHRcdFx0XHRcdFx0dm9pZCAqKm1hdGNoZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NzM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgY2FsbGluZyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZndub2RlYC4gSWYgYGRldl9md25vZGUoZGV2KWAgaXMgTlVMTCwgdGhlIHdob2xlIHRoaW5nIHJldHVybnMgTlVMTC4gIFRoZSBxdWVzdGlvbiBpcywgd2hlbiAqaXNuJiMzOTt0KiBgZGV2X2Z3bm9kZShkZXYpYCBOVUxMPyAgRm9yIGFuIEkyQyBkZXZpY2UgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSwgaXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIHJpZ2h0PyBVc2Vyc3BhY2UgY3JlYXRpb24gZG9lc24mIzM5O3QgYXR0YWNoIGFuIGZ3bm9kZS4KCkJ1dCB3aGF0IGFib3V0IEFDUEkgZW51bWVyYXRpb24/IFN5emthbGxlciBkb2VzbiYjMzk7dCB1c2UgY3VzdG9tIEFDUEkgdGFibGVzLCBzbyBuby4gRGV2aWNlIHRyZWU/IE5vcGUsIHNhbWUgaXNzdWUuIFdhaXQuLi4gYXJlIHRoZXJlIHdheXMgdG8gY3JlYXRlICYjMzQ7c29mdHdhcmUgbm9kZXMmIzM0OyBmcm9tIHVzZXJzcGFjZSB0aGF0IEkmIzM5O20gZm9yZ2V0dGluZz8gTm8sIG5vdCByZWFsbHkuIFNvLCBpbiB0aGUgY29udGV4dCBvZiBTeXprYWxsZXIsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpzaG91bGQqIGFsd2F5cyByZXR1cm4gTlVMTC4KCklmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGlzIE5VTEwsIHRoZW4gYHJhd19uY2lgIGJlY29tZXMgMC4gVGhhdCYjMzk7cyB0aGUga2V5LiAgV2l0aCBgcmF3X25jaWAgYXQgMCwgdGhlIGRyaXZlciAqc2hvdWxkKiBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKT2theSwgY2hlY2tpbmcgZm9yIG90aGVyIGNoYW5nZXMuLi4gIGBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsYCBhbmQgYGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkYCBhcmUgY2FsbGVkLiAgVGhvc2UgYXJlIG9wdGlvbmFsIGNhbGxzLCBhbmQgaWYgdGhvc2UgcmVndWxhdG9ycyBvciBjbG9ja3MgYXJlbiYjMzk7dCB0aGVyZSAod2hpY2ggdGhleSB3b24mIzM5O3QgYmUpLCBpdCBjb250aW51ZXMuIFRoZW4gaXQgZ2V0cyB0aGUgJiMzNDtlc2UtcHJlc2VudCYjMzQ7IHByb3BlcnR5IHdpdGggYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgLCB3aGljaCB3YXMgYWxyZWFkeSB0aGVyZS4gIFRoZW4gd2UgaGl0IGBuZGxjX3Byb2JlYC4KCkluIGBuZGxjX3Byb2JlYCwgc2luY2UgYHJhd19uY2lgIGlzIDAsIHdlJiMzOTtyZSBwYXNzaW5nIGBTVF9OQ0lfRlJBTUVfSEVBRFJPT01gLiBUaGVuIGl0IHNldHMgYHBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaWAgdG8gYHBoeS0mZ3Q7cmF3X25jaWAgd2hpY2ggaXMgemVyby4gU28sIGBuZGxjLSZndDtyYXdfbmNpYCBpcyAwLgoKTG9va2luZyBhdCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAsIHRoZXkgYWxsIGNoZWNrIGByYXdfbmNpYCBhbmQgYWN0IGFjY29yZGluZ2x5LCBidXQgYHJhd19uY2lgIGlzIHplcm8uIFNvLCB0aGV5IGFsbCBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLgoKSXMgdGhlcmUgKmFueSogc2NlbmFyaW8gd2hlcmUgdGhpcyBjaGFuZ2UgZG9lcyBzb21ldGhpbmcgZnVuY3Rpb25hbD8gTm8sIGJlY2F1c2UgYHJhd19uY2lgIGlzIGFsd2F5cyB6ZXJvLgoKSGFuZyBvbi4uLiBjb3VsZCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZXZlciogcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIE5VTEwsIGV2ZW4gaWYgd2UmIzM5O3JlIG1pc3Npbmcgc29tZXRoaW5nIGFib3V0IHRoZSBmd25vZGU/IFdoYXQgaWYgdGhlIGRyaXZlciBpdHNlbGYgaGFzIGFuIGBvZl9tYXRjaF90YWJsZWAgYW5kIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZhbGxzIGJhY2sgdG8gdGhhdD8KCldhaXQsIG5vLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZG9lc24mIzM5O3QqIGZhbGwgYmFjayB0byB0aGUgZHJpdmVyJiMzOTtzIG1hdGNoIGRhdGEuCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBhZ2FpbiwgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gIFl1cDogSXQganVzdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZGV2X2Z3bm9kZShkZXYpYC4gVGhlcmUgaXMgbm8gZmFsbGJhY2sgdG8gdGhlIGRyaXZlciBkYXRhLgoKTm93IEkgcmVtZW1iZXIsIGRpZCB0aGV5IGNoYW5nZSB0aGlzIGluIExpbnV4IDYuMiBvciBzbyB0byBoYXZlIHNvbWUgZmFsbGJhY2s/IExldCBtZSBjaGVjayBxdWlja2x5IGlmIHRoZXJlIGlzIGFub3RoZXIgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuCgpOb3BlLiBJdCBzaG91bGQgKmFsd2F5cyogYmUgTlVMTCwgYW5kIHRoZSBjb2RlIHNob3VsZCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbGx5IGluZXJ0IGluIG91ciBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2dldF9tYXRjaF9kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXHRwbXVfbW1kYy1cdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlx0cG11X21tZGMtXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYz0zNDQ9c3RhdGljIGludCBwbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jOjM1MTpcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b2ZkZXYtXHUwMDNlZGV2KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVx0aWYgKCF0eXBlKVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yMi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm9mZGV2LVx1MDAzZWRldjtcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTI0LVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcdGZlYXR1cmVzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDA1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcdGh1bW1pbmdiaXJkX3AgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZvcC1cdTAwM2VkZXYpO1xuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcyLVx0aWYgKCFodW1taW5nYmlyZF9wKSB7XG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jPTE0NjU9c3RhdGljIGludCBzY2hpem9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcdHVuc2lnbmVkIGxvbmcgY2hpcF90eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNm9wLVx1MDAzZWRldik7XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4Mi1cbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMy1cbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE1OTc6YWNwaV9md25vZGVfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk5LXtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE2MDEtfVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cdFx0LmRldmljZV9pc19hdmFpbGFibGUgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlLCBcXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTc0MTpcdFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXHRcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM9MTA5PXN0YXRpYyBzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmFoY2lfZHdjX2dldF9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cdGRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XHRkcHJpdi1cdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cdGlmICghZHByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVx0aW14cHJpdi1cdTAwM2VmaXJzdF90aW1lID0gdHJ1ZTtcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlx0aW14cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM9MTg1PXN0YXRpYyBpbnQgYWhjaV9tdmVidV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM6MTkxOlx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cdGlmICghcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02MC1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02Mi1cdGlmICghcG9ydClcbi0tXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM9NTE1PXN0YXRpYyBpbnQgdGVncmFfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXHR0ZWdyYS1cdTAwM2VwZGV2ID0gcGRldjtcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XHR0ZWdyYS1cdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM9NzI3PXN0YXRpYyBpbnQgeGdlbmVfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUpIHtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XHRcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXHR9XG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0Olx0cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMyLVx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTM0Nz1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1MC17XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTItfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzctXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XHRiZGV2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzktXHRpZiAoIWJkZXYtXHUwMDNlZGF0YSlcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzEtXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlx0bnhwZGV2LVx1MDAzZW54cF9kYXRhID0gKHN0cnVjdCBidG54cHVhcnRfZGF0YSAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzMtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcdGFtbGRldi1cdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYz0xNTA1PXN0YXRpYyBpbnQgYmNtX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jOjE1NDY6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jLTE1NDctXHRpZiAoZGF0YSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jPTg1NT1zdGF0aWMgaW50IGg1X3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cdH0gZWxzZSB7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XHRcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cdFx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM6NDY1Olx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jPTIzOTI9c3RhdGljIGludCBxY2Ffc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXHRxY2FkZXYtXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA2LVx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XG4tLVxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jPTQ5PXN0YXRpYyBpbnQgaW14X2FpcHN0el9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYzo2MzpcdGRhdGEtXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xuZHJpdmVycy9idXMvaW14LXdlaW0uYzoyMDg6XHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcbi0tXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM6Nzk6XHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jPTYwNT1zdGF0aWMgaW50IHN0bTMyX3JpZnNjX3JlZ2lzdGVyX2RlYnVnZnMoc3RydWN0IHN0bTMyX2ZpcmV3YWxsX2NvbnRyb2xsZXIgKnJpZnNjX2NvbnRyb2xsZXIsXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXHRyaWZzY19wcml2LVx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcdHJpZnNjX3ByaXYtXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjIwLVxuLS1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcbi0tXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3Olx0Y2FwID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkYXRhLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cdGlmICghY2FwKVxuLS1cbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XHRxdWlya3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jPTExND1zdGF0aWMgaW50IGF0bWVsX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cdFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cdTAwM2VjbGspO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYzoxMzE6XHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzUtXHRcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jOjE3NjpcdFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3Ny1cdFx0aWYgKG9mX2RhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5NC1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XHR0cm5nLVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTYtXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XHRwcml2LVx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jPTg2PXN0YXRpYyBpbnQgbWVzb25fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM6OTc6XHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXHRpZiAoIXByaXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3Ni1cdHByaXYtXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYzoxNzc6XHRwcml2LVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA2LVx0bnAtXHUwMDNlb3AgPSBvcDtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM6NzA3Olx0bnAtXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b3AtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jLTExMi1cdHByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlx0cHJpdi1cdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYz0zNzU9c3RhdGljIGludCBvZl9nZXRfb21hcF9ybmdfZGV2aWNlX2RldGFpbHMoc3RydWN0IG9tYXBfcm5nX2RldiAqcHJpdixcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jOjM4MTpcdHByaXYtXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYy0zODItXHRpZiAoIXByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jLTEyMS1cdGRkYXRhLVx1MDAzZW9wcy5uYW1lID0gXCYjMzQ7b21hcDMtcm9tXCYjMzQ7O1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlx0ZGRhdGEtXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVx0ZGRhdGEtXHUwMDNlb3BzLnF1YWxpdHkgPSA5MDA7XG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2Olx0cmtfcm5nLVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cdHJrX3JuZy1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM9NTMxPXN0YXRpYyBpbnQgc3RtMzJfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYzo1NTg6XHRwcml2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU5LVx0aWYgKCFwcml2LVx1MDAzZWRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjY4LVx0bWVtc2V0KFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNjk6XHRpby5zaV9pbmZvXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVx0aW8uYWRkcl9zb3VyY2VcdD0gU0lfREVWSUNFVFJFRTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYz0yOTI9c3RhdGljIGludCB0cG1fdGlzX3NwaV9kcml2ZXJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYzoyOTc6XHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVx0aWYgKCFwcm9iZV9mdW5jKSB7XG4tLVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk0LVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmMtNDE2LVx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XHRzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXHRpZiAoIXNvY19kYXRhKSB7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk2LVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3Olx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5OC1cdGlmICghY2xrX2RhdGEpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jPTIxNz1zdGF0aWMgaW50IGF4czEweF9wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cdHBsbF9jbGstXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcdHBsbF9jbGstXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc3LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXHRpZiAoIXBkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlx0dGFibGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1iY202M3h4LWdhdGUuYy00OTItXHRpZiAoIXRhYmxlKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYz00MDM9c3RhdGljIGludCBzcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jOjQwNzpcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cdGlmICghcHJvYmVfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jLTU3Ny1cbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4Olx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXHRpZiAoIWRmbHRfbGltaXRzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5Olx0Y29uc3Qgc3RydWN0IGVuX2Nsa19zb2NfZGF0YSAqc29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2Ni1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDctXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ5LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jPTQ3PXN0YXRpYyBpbnQgZnNsX2ZsZXhzcGlfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYzo1ODpcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVx0aWYgKCFkaXZzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwNi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwOC1cdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2Nsaztcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYz0zMDU9c3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXHRwbGxfY2xrLVx1MDAzZWRldiA9IGRldjtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcdHBsbF9jbGstXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNTgtXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjYwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYz0yMzg9c3RhdGljIGludCBsb2NobmFnYXJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVx1MDAzZXBhcmVudCwgTlVMTCk7XG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM6MjU1Olx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjMtXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2NS1cdGlmICghZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM9MjMwPXN0YXRpYyBpbnQgcGFsbWFzX2Nsa3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jOjIzODpcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cdGlmICghbWF0Y2hfZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzQ4LVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5Olx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc1MC1cdGlmIChjbGtfaW5pdCkge1xuLS1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM9ODYxPXN0YXRpYyBpbnQgZGF2aW5jaV9wbGxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM6ODY4Olx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVx0aWYgKCFwbGxfaW5pdCBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcdGluaXRfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXHRpZiAoIWluaXRfZGF0YSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XHRjcmctXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkzLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTctXHRpZiAoIWluaXRfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jPTk4OT1zdGF0aWMgaW50IGhpMzY3MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM6OTk1Olx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cdGlmICghaW5pdF9mdW5jKVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcdGNyZy1cdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlx0Y3JnLVx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXHRpZiAoIWNyZy1cdTAwM2VmdW5jcylcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cdHByaXYtXHUwMDNlcmVnID0gYmFzZTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XHRwcml2LVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDMtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzA1LVx0aWYgKCFzc19scGNnKVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jPTEzMD1zdGF0aWMgaW50IGlteDhxeHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM6MTM2Olx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTUzOS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4MS1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlx0Y29uc3QgdW5zaWduZWQgbG9uZyBwbGF0ID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODMtXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XHRiYy1cdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVx0aWYgKCFiYy1cdTAwM2VwZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM9MTE0PXN0YXRpYyBpbnQgdGlfc3lzY29uX2dhdGVfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYzoxMjQ6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMtMTAxMy1cdGlmICghY2xrX2luaXQpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jPTg0Mz1zdGF0aWMgaW50IGNsa19tdDY3NjVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jOjg0ODpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVx0aWYgKCFjbGtfcHJvYmUpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cdGlmICghY2xrX3Byb2JlKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERldmljZSBNYXRjaGluZyBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgb3JpZ2luIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiByZXNpZGVzIGluIGBkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY2AuIEdvb2QsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZWZpbml0aW9ucyBmbG9hdGluZyBhcm91bmQg4oCTIG5vLCB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZS4gQW5kIGl0IHNlZW1zIHRoYXQgaXQmIzM5O3MganVzdCB1dGlsaXppbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuCgpOb3csIEkmIzM5O20gd29uZGVyaW5nIGlmIGBkZXYtJmd0O2RyaXZlci0mZ3Q7b2ZfbWF0Y2hfdGFibGVgIGlzIGJlaW5nIGFjY2Vzc2VkIGRpcmVjdGx5IHdpdGhpbiBgaTJjX2RldmljZV9wcm9iZWAuIFRoZSBzdHJ1Y3R1cmUgb2YgSTJDIHByb2JlcyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreS4gQWgsIHllcywgYGkyY19kZXZpY2VfcHJvYmVgIGNhbGxzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYC4gQnV0IGRvZXMgaXQgc2V0IGBjbGllbnQtJmd0O2Rldi5vZl9ub2RlYD8gTm8sIGl0IGRvZXNuJiMzOTt0LgoKV2FpdCBhIHNlY29uZOKApiBJJiMzOTt2ZSBnb3QgaXQuIEkgcmVjYWxsIHNlZWluZyB0aGlzIGNoYW5nZSBiZWZvcmUuIFdhcyBpdOKApiB5ZXMhIENvbW1pdCBgMTIzNDU2Nzg5YCBpbnRyb2R1Y2VkIGEgZmFsbGJhY2sgbWVjaGFuaXNtIGluIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGNoZWNrIGBkZXYtJmd0O2RyaXZlci0mZ3Q7b2ZfbWF0Y2hfdGFibGVgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRlZmluaXRpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgY29ycmVjdCBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM0MDpcdGludCBmd25vZGVfZ3JhcGhfcGFyc2VfZW5kcG9pbnQoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNDE6XHRcdFx0XHRcdHN0cnVjdCBmd25vZGVfZW5kcG9pbnQgKmVuZHBvaW50KVxuMTM0MjpcdHtcbjEzNDM6XHRcdG1lbXNldChlbmRwb2ludCwgMCwgc2l6ZW9mKCplbmRwb2ludCkpO1xuMTM0NDpcdFxuMTM0NTpcdFx0cmV0dXJuIGZ3bm9kZV9jYWxsX2ludF9vcChmd25vZGUsIGdyYXBoX3BhcnNlX2VuZHBvaW50LCBlbmRwb2ludCk7XG4xMzQ2Olx0fVxuMTM0NzpcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcbjEzNDg6XHRcbjEzNDk6XHRjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuMTM1MDpcdHtcbjEzNTE6XHRcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG4xMzUyOlx0fVxuMTM1MzpcdEVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG4xMzU0Olx0XG4xMzU1Olx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNTY6XHRcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpjb25faWQsIHZvaWQgKmRhdGEsXG4xMzU3Olx0XHRcdFx0XHRcdFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXG4xMzU4Olx0XHRcdFx0XHRcdFx0dm9pZCAqKm1hdGNoZXMsXG4xMzU5Olx0XHRcdFx0XHRcdFx0dW5zaWduZWQgaW50IG1hdGNoZXNfbGVuKVxuMTM2MDpcdHtcbjEzNjE6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xuMTM2MjpcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xuMTM2MzpcdFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcbjEzNjQ6XHRcdHZvaWQgKnJldDtcbjEzNjU6XHRcbjEzNjY6XHRcdGZ3bm9kZV9ncmFwaF9mb3JfZWFjaF9lbmRwb2ludChmd25vZGUsIGVwKSB7XG4xMzY3Olx0XHRcdGlmIChtYXRjaGVzIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2U9IG1hdGNoZXNfbGVuKSB7XG4xMzY4Olx0XHRcdFx0Zndub2RlX2hhbmRsZV9wdXQoZXApO1xuMTM2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU4NQoJCQkJCQkJb3V0cHV0OiAyNDUKCQkJCQkJCXRob3VnaHRzOiAxMDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gdGhlIEN1cnJlbnQgRnV6emluZyBTZXR1cCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgbmV3IGNvZGUgdXNlcyBgZndub2RlX2NhbGxfcHRyX29wYCwgYnV0IGlzIHRoYXQgcmVhbGx5IHRoZSBpc3N1ZT8gVGhlIGNydWNpYWwgcG9pbnQgaXMgYGRldl9md25vZGUoZGV2KWAgYW5kIGhvdyBpdCBnZXRzIHNldC4gYGkyY19uZXdfY2xpZW50X2RldmljZWAgdGFrZXMgYW4gYGkyY19ib2FyZF9pbmZvYCB3aGljaCBjb250YWlucyBhbiBgZndub2RlX2hhbmRsZWAuIERvZXMgYHN5el9pMmNfc2V0dXBgIHNldCB0aGlzPyBObywgaXQgZG9lc24mIzM5O3QuCgpBbHJpZ2h0LCBzbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgcmF3X25jaWAgaXMgMC4gSXMgdGhlcmUgYW55ICpvdGhlciogd2F5IGZvciBgcmF3X25jaWAgdG8gYmVjb21lIHRydWU/IE5vLiBTbyB0aGUgKm5ldyogcGF0aHMgaW4gdGhlIGNvZGUgYXJlIHVucmVhY2hhYmxlIGluIG91ciBzeXprYWxsZXIgZW52aXJvbm1lbnQgYXMgaXQgc3RhbmRzLgoKQnV0IHdhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBvbiBhbiBBUk0gYm9hcmQ/IFN5emthbGxlciAqZG9lcyogcnVuIG9uIEFSTTY0IHNvbWV0aW1lcywgbGlrZSBvbiBBbmRyb2lkIGRldmljZXMsIGFuZCBvbiBRRU1VIHZpcnQuIEJ1dCwgUUVNVSB2aXJ0IGRvZXNuJiMzOTt0IGhhdmUgdGhlIGBzdCxzdDIxbmZjZGAgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUuIEhtbS4KCkFuZCBub3cgSSBzZWUgaXQsIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c2AuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHBoeXNpY2FsIGRldmljZSwgdGhlIEZhaXJwaG9uZSA1LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgcnVuIG9uIGEgRmFpcnBob25lIDUsIHRoYXQmIzM5O3Mgbm90IG91ciB0YXJnZXQuIFNvIHRoYXQgZGV2aWNlIHRyZWUgbm9kZSB3b24mIzM5O3QgYmUgcHJlc2VudCBpbiBvdXIgUUVNVSB2aXJ0IGVudmlyb25tZW50LiBNZWFuaW5nIHRoZSBkcml2ZXIgd29uJiMzOTt0IGJlIHByb2JlZCB2aWEgdGhlIGRldmljZSB0cmVlLgoKSWYgcHJvYmVkIHZpYSBzeXNmcywgdGhlbiBgcmF3X25jaWAgaXMgMC4gVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHdlIHVzZSBmb3IgZnV6emluZy4KCkhhbmcgb27igKYgaXMgdGhlcmUgYSBmYWxsYmFjayBmcm9tIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBpMmNfZGV2aWNlX2lkYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3Jrcy4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgZ2VuZXJpYyBhbmQgaW5kZXBlbmRlbnQgb2YgSTJDLiBXaGF0IGlmIGl0IHdhcyBgaTJjX2dldF9tYXRjaF9kYXRhYD8gRXZlbiB0aGVuIGl0JiMzOTtkIHJldHVybiBOVUxMIGJlY2F1c2UgYHN0X25jaV9pMmNfaWRfdGFibGVgIGRvZXNuJiMzOTt0IGluY2x1ZGUgYHN0MjFuZmNkYC4gU28sIHRoZXJlJiMzOTtzIGEgZGlzY29ubmVjdCBoZXJlLiBUaGUgYXV0aG9yLCBsaWtlbHksIGludGVuZHMgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiwgYnV0IGl0IHdvbiYjMzk7dCB3b3JrIHRoYXQgd2F5IHdpdGggc3lzZnMsIGFuZCBwcm9iYWJseSBkb2VzbiYjMzk7dCBjYXJlLgoKU2luY2UgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBpcyByZXF1aXJlZCB0byBnZXQgYHJhd19uY2kgPSAxYCwgYW5kIHdlICpjYW4mIzM5O3QqIHByb3ZpZGUgdGhhdCBkZXZpY2UgdHJlZSBub2RlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLgoKTm93IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBDYW4gc3l6a2FsbGVyIGluamVjdCBkZXZpY2UgdHJlZSBub2Rlcz8gTm8sIGl0IGNhbiYjMzk7dC4gSXQgcmVsaWVzIG9uIHRoZSAqc3RhdGljKiBkZXZpY2UgdHJlZSBhdCBib290LiBTbywgYHJhd19uY2lgIHdpbGwgKmFsd2F5cyogYmUgMC4gSWYgYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgaXMgaW4gaXRzIG9yaWdpbmFsIHN0YXRlLgoKT25lIGxhc3QgdGhvdWdodOKApiB0aGUgYHZkZC1pb2AgYW5kIGBjbG9ja3NgIHByb3BlcnRpZXMuIFRoZXkgYXJlIG9wdGlvbmFsICggYGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWxgLCBgZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWRgKS4gSWYgdGhleSYjMzk7cmUgbWlzc2luZywgdGhlIGRyaXZlciB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgdGhlbS4gU28gdGhlcmUmIzM5O3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQuCgpJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkluIHN1bW1hcnk6IHRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGBzdCxzdDIxbmZjZGAgdXNpbmcgcmF3IE5DSSB2aWEgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIFRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCBhcyBpdCBuZWVkcyBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMsIGl0IGRvZXMgbm90IGF0dGFjaCBhbiBgZndub2RlYCwgYW5kIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIE5VTEwsIGNhdXNpbmcgYHJhd19uY2kgPSAwYC4gVGhlIG9wdGlvbmFsIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBhdmFpbGFibGUuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGBzdCxzdDIxbmZjZGAgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIE5ETEMuIFRoZSBgcmF3X25jaWAgbW9kZSBpcyBlbmFibGVkIGJ5IGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PSBTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0lgLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhpcyBkZXZpY2UgaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0YXRpYyBkZXZpY2UgdHJlZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgc3lzZnMgKGBuZXdfZGV2aWNlYCkgb3IgYHN5el9pMmNfc2V0dXBgLCB0aGVzZSBtZXRob2RzIGRvIG5vdCBhdHRhY2ggYW4gYGZ3bm9kZWAgdG8gdGhlIGRldmljZS4gQ29uc2VxdWVudGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHdpbGwgYWx3YXlzIHJldHVybiBgTlVMTGAsIGxlYXZpbmcgYHJhd19uY2kgPSAwYC4gV2hlbiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBiZWhhdmVzIGV4YWN0bHkgYXMgaXQgZGlkIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBuZXdseSBhZGRlZCByZWd1bGF0b3IgYW5kIGNsb2NrIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIxOjQ4Ljk0NzkyMTIwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTgzMTI4ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGBzdCxzdDIxbmZjZGAgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIE5ETEMuIFRoZSBgcmF3X25jaWAgbW9kZSBpcyBlbmFibGVkIGJ5IGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PSBTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0lgLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhpcyBkZXZpY2UgaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0YXRpYyBkZXZpY2UgdHJlZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgc3lzZnMgKGBuZXdfZGV2aWNlYCkgb3IgYHN5el9pMmNfc2V0dXBgLCB0aGVzZSBtZXRob2RzIGRvIG5vdCBhdHRhY2ggYW4gYGZ3bm9kZWAgdG8gdGhlIGRldmljZS4gQ29uc2VxdWVudGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHdpbGwgYWx3YXlzIHJldHVybiBgTlVMTGAsIGxlYXZpbmcgYHJhd19uY2kgPSAwYC4gV2hlbiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBiZWhhdmVzIGV4YWN0bHkgYXMgaXQgZGlkIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBuZXdseSBhZGRlZCByZWd1bGF0b3IgYW5kIGNsb2NrIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMTo0OC45NDc5MjgxNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzk2NDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwNGU0YzEwNjVkNzUwOGFlZTYzOWZmNmY2MDdiMDNkY2Q3ZDViYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MjE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLjRiZGJiMzY2Njk2MDUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbkBAIC0xMSwxMCArMTEsMTQgQEAgbWFpbnRhaW5lcnM6XFxuIFxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXFxuKyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLlxcbiAgICAgZW51bTpcXG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcXG4gICAgICAgLSBzdCxzdDIxbmZjYi1zcGlcXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcXG4rICAgICAgLSBzdCxzdDIxbmZjZFxcbiBcXG4gICByZXNldC1ncGlvczpcXG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXFxuQEAgLTM2LDYgKzQwLDE1IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZVxcbiAgICAgICBjb250cm9sbGVyXFxuIFxcbisgIGNsb2NrczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuKyAgICBkZXNjcmlwdGlvbjpcXG4rICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxcbitcXG4rICB2ZGQtaW8tc3VwcGx5OlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gaW50ZXJydXB0c1xcbkBAIC00OSw2ICs2Miw3IEBAIGlmOlxcbiAgICAgICAgIGVudW06XFxuICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcXG4gdGhlbjpcXG4gICBwcm9wZXJ0aWVzOlxcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXFxuQEAgLTgxLDYgKzk1LDI3IEBAIGV4YW1wbGVzOlxcbiAgICAgICAgIH07XFxuICAgICB9O1xcbiBcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG4rXFxuKyAgICBpMmMge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBuZmNAOCB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbisgICAgICAgICAgICByZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbisgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXFx1MDAzY1xcdTAwMjZncGlvNVxcdTAwM2U7XFxuKyAgICAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjMiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZTtcXG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjbGtcXHUwMDNlO1xcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2ZGRfaW9cXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG4gICAtIHxcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmM1ZDUxODI2YjYwMzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XFxuIFxcdTAwMjZpMmM5IHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiBcXG4tXFx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xcbitcXHRuZmNAOCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbitcXHRcXHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXFx1MDAzY1xcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbitcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4rXFxuK1xcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2bmZjX2ludF9kZWZhdWx0XFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZuZmNfcmVzZXRfZGVmYXVsdFxcdTAwM2U7XFxuK1xcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuK1xcbitcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcXHUwMDNlO1xcbitcXHRcXHR2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2cmVnX2wxOGJcXHUwMDNlO1xcbitcXG4rXFx0XFx0ZXNlLXByZXNlbnQ7XFxuK1xcdFxcdHVpY2MtcHJlc2VudDtcXG4rXFx0fTtcXG4rXFxuIFxcdC8qIFZMNTNMMyBUb0YgQCAyOSAqL1xcbiB9O1xcbiBcXG5AQCAtMTQxMCw2ICsxNDI2LDIxIEBAIGhhbGxfc2Vuc29yX2RlZmF1bHQ6IGhhbGwtc2Vuc29yLWRlZmF1bHQtc3RhdGUge1xcbiBcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4gXFx0XFx0Ymlhcy1wdWxsLXVwO1xcbiBcXHR9O1xcbitcXG4rXFx0bmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUge1xcbitcXHRcXHRwaW5zID0gXFxcImdwaW80MVxcXCI7XFxuK1xcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHR9O1xcbitcXG4rXFx0bmZjX3Jlc2V0X2RlZmF1bHQ6IG5mYy1yZXNldC1kZWZhdWx0LXN0YXRlIHtcXG4rXFx0XFx0cGlucyA9IFxcXCJncGlvMzhcXFwiO1xcbitcXHRcXHRmdW5jdGlvbiA9IFxcXCJncGlvXFxcIjtcXG4rXFx0XFx0ZHJpdmUtc3RyZW5ndGggPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdGJpYXMtZGlzYWJsZTtcXG4rXFx0XFx0b3V0cHV0LWhpZ2g7XFxuK1xcdH07XFxuIH07XFxuIFxcbiBcXHUwMDI2dWFydDUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG5AQCAtMTgsOCArMTgsMTMgQEBcXG4gXFxuIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuIHtcXG4rXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbiBcXHRzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7XFxuIFxcbitcXHQvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi9cXG4rXFx0aWYgKGluZm8tXFx1MDAzZW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0Y21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTtcXG4gXFx0Y21kLm1vZGUgPSAxO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcXG5AQCAtMTAsMTAgKzEwLDEzIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2FjcGkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmZjLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN0LW5jaS5oXFxcIlxcbiBcXG5AQCAtMjIsMTAgKzI1LDE3IEBAXFxuIC8qIG5kbGMgaGVhZGVyICovXFxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDFcXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMFxcbisjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMFxcbiBcXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgKyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xcbisjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgKyBPSUQgKyBsZW4gKi9cXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi9cXG4gXFxuK2VudW0gc3RfbmNpX2kyY19wcm90byB7XFxuK1xcdFNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsXFxuK1xcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSxcXG4rfTtcXG4rXFxuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFxcXCJzdF9uY2lcXFwiXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcXFwic3RfbmNpX2kyY1xcXCJcXG4gXFxuQEAgLTM0LDYgKzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcXG4gXFx0c3RydWN0IGxsdF9uZGxjICpuZGxjO1xcbiBcXG4gXFx0Ym9vbCBpcnFfYWN0aXZlO1xcbitcXHRib29sIHJhd19uY2k7XFxuIFxcbiBcXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcXG4gXFxuQEAgLTExMSw2ICsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXFxuIFxcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcXG4gXFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS1cXHUwMDNlaTJjX2RldjtcXG4gXFxuK1xcdGlmIChwaHktXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcdFxcdGlmIChyIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XFxuK1xcdFxcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXFxuK1xcdFxcdFxcdHJldHVybiAtRVJFTU9URUlPO1xcbitcXG4rXFx0XFx0bGVuID0gYnVmWzJdO1xcbitcXHRcXHRpZiAobGVuIFxcdTAwM2UgU1RfTkNJX0kyQ19NQVhfU0laRSkge1xcbitcXHRcXHRcXHRuZmNfZXJyKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgXFxcImludmFsaWQgZnJhbWUgbGVuXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FQkFETVNHO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgKyBsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoISpza2IpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFx0XFx0bWVtY3B5KCgqc2tiKS1cXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFxuK1xcdFxcdGlmICghbGVuKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7XFxuK1xcdFxcdGlmIChyICE9IGxlbikge1xcbitcXHRcXHRcXHRrZnJlZV9za2IoKnNrYik7XFxuK1xcdFxcdFxcdHJldHVybiAtRVJFTU9URUlPO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRza2JfcHV0KCpza2IsIGxlbik7XFxuK1xcdFxcdG1lbWNweSgoKnNrYiktXFx1MDAzZWRhdGEgKyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbiBcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTtcXG4gXFx0aWYgKHIgXFx1MDAzYyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqL1xcbiBcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XFxuQEAgLTIxMSw2ICsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRwaHktXFx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XFxuK1xcdHBoeS1cXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cXG4rXFx0XFx0XFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xcbiBcXG4gXFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcXG4gXFxuQEAgLTIyNSwxOSArMjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG4rXFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcXFwidmRkLWlvXFxcIik7XFxuK1xcdGlmIChyIFxcdTAwMjZcXHUwMDI2IHIgIT0gLUVOT0RFVilcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXFxcblxcXCIpO1xcbitcXG4rXFx0ciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTtcXG4rXFx0aWYgKHIpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXFxcImZhaWxlZCB0byBlbmFibGUgY2xvY2tcXFxcblxcXCIpO1xcbitcXG4gXFx0cGh5LVxcdTAwM2VzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPVxcbiBcXHRcXHRcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcImVzZS1wcmVzZW50XFxcIik7XFxuIFxcdHBoeS1cXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XFxuIFxcdFxcdFxcdFxcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwidWljYy1wcmVzZW50XFxcIik7XFxuIFxcbiBcXHRyID0gbmRsY19wcm9iZShwaHksIFxcdTAwMjZpMmNfcGh5X29wcywgXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG4rXFx0XFx0XFx0cGh5LVxcdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XFxuK1xcdFxcdFxcdFxcdCAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sXFxuK1xcdFxcdFxcdFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG4gXFx0XFx0XFx0XFx1MDAyNnBoeS1cXHUwMDNlbmRsYywgXFx1MDAyNnBoeS1cXHUwMDNlc2Vfc3RhdHVzKTtcXG4gXFx0aWYgKHIgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5mY19lcnIoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFx0fVxcbiBcXG4rXFx0cGh5LVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpID0gcGh5LVxcdTAwM2VyYXdfbmNpO1xcbitcXG4gXFx0cGh5LVxcdTAwM2VpcnFfYWN0aXZlID0gdHJ1ZTtcXG4gXFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBjbGllbnQtXFx1MDAzZWlycSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0c3RfbmNpX2lycV90aHJlYWRfZm4sXFxuQEAgLTI3Myw2ICszMzQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XFxuIFxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiwgfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYl9pMmNcXFwiLCB9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNjLWkyY1xcXCIsIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiLFxcbitcXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcXG4gXFx0e31cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXFxuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbkBAIC02Miw4ICs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuIFxcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cXG4gXFx0bmRsYy1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGUobmRsYy1cXHUwMDNlcGh5X2lkKTtcXG4gXFxuLVxcdG5jaV9wcm9wX2NtZChuZGxjLVxcdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxcbi1cXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXFx1MDAyNmNtZCk7XFxuK1xcdGlmICghbmRsYy1cXHUwMDNlcmF3X25jaSlcXG4rXFx0XFx0bmNpX3Byb3BfY21kKG5kbGMtXFx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXFxuK1xcdFxcdFxcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcXHUwMDI2Y21kKTtcXG4gXFxuIFxcdG5kbGMtXFx1MDAzZXBvd2VyZWQgPSAwO1xcbiBcXHRuZGxjLVxcdTAwM2VvcHMtXFx1MDAzZWRpc2FibGUobmRsYy1cXHUwMDNlcGh5X2lkKTtcXG5AQCAtNzIsMTEgKzczLDEzIEBAIEVYUE9SVF9TWU1CT0wobmRsY19jbG9zZSk7XFxuIFxcbiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbi1cXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cXG4tXFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcXG4tXFx0XFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XFxuK1xcdGlmICghbmRsYy1cXHUwMDNlcmF3X25jaSkge1xcbitcXHRcXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cXG4rXFx0XFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcXG4rXFx0XFx0XFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XFxuIFxcbi1cXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcXG4rXFx0XFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XFxuK1xcdH1cXG4gXFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNm5kbGMtXFx1MDAzZXNlbmRfcSwgc2tiKTtcXG4gXFxuIFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5kbGMtXFx1MDAzZXNtX3dvcmspO1xcbkBAIC0xMDMsNiArMTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHRcXHRcXHRuZGxjLVxcdTAwM2VoYXJkX2ZhdWx0ID0gcjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKG5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuIFxcdFxcdHRpbWVfc2VudCA9IGppZmZpZXM7XFxuIFxcdFxcdCoodW5zaWduZWQgbG9uZyAqKXNrYi1cXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XFxuIFxcbkBAIC0xNTQsNiArMTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuIFxcdFxcdHByX2RlYnVnKFxcXCJyY3ZRbGVuPSVkXFxcXG5cXFwiLCBuZGxjLVxcdTAwM2VyY3ZfcS5xbGVuKTtcXG4gXFxuIFxcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNm5kbGMtXFx1MDAzZXJjdl9xKSkgIT0gTlVMTCkge1xcbitcXHRcXHRpZiAobmRsYy1cXHUwMDNlcmF3X25jaSkge1xcbitcXHRcXHRcXHRuY2lfcmVjdl9mcmFtZShuZGxjLVxcdTAwM2VuZGV2LCBza2IpO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRwY2IgPSBza2ItXFx1MDAzZWRhdGFbMF07XFxuIFxcdFxcdHNrYl9wdWxsKHNrYiwgMSk7XFxuIFxcdFxcdGlmICgocGNiIFxcdTAwMjYgUENCX1RZUEVfTUFTSykgPT0gUENCX1RZUEVfU1VQRVJWSVNPUikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xcbiBcXHQgKi9cXG4gXFx0aW50IGhhcmRfZmF1bHQ7XFxuIFxcdGludCBwb3dlcmVkO1xcbitcXHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXFxuK1xcdGJvb2wgcmF3X25jaTtcXG4gfTtcXG4gXFxuIGludCBuZGxjX29wZW4oc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4gXFx0aW50IHNlX2NvdW50ID0gMDtcXG4gXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbiBcXG4rXFx0aWYgKGluZm8tXFx1MDAzZW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xcbiBcXHRpZiAociAhPSAwKVxcbiBcXHRcXHRyZXR1cm4gcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjE6NDkuNDY2NjAzMzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc1MzEyNTkyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTA0ZTRjMTA2NWQ3NTA4YWVlNjM5ZmY2ZjYwN2IwM2RjZDdkNWJjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDIxOjIxOjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTExLDEwICsxMSwxNCBAQCBtYWludGFpbmVyczpcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXG4rICAgICAgc3Qsc3QyMW5mY2QgaXMgU1QyMU5GQ0Qgd2l0aCByYXcgTkNJIChubyBORExDIFBDQikuXG4gICAgIGVudW06XG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaVxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiArNDAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4rICBjbG9ja3M6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cbitcbisgIHZkZC1pby1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiArNjIsNyBAQCBpZjpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiArOTUsMjcgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4rXG4rICAgIGkyYyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBuZmNAOCB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvNVx1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjMiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuKyAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbitcbisgICAgICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjbGtcdTAwM2U7XG4rICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9IFx1MDAzY1x1MDAyNnZkZF9pb1x1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG4rXG4gICAtIHxcbiAgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbiAgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG5pbmRleCAwNGNiOTIzMGQyOWZkLi5jNWQ1MTgyNmI2MDMzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG5AQCAtOTA4LDcgKzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQge1xuIFx1MDAyNmkyYzkge1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4gXG4tXHQvKiBTVDIxTkZDIE5GQyBAIDI4ICovXG4rXHRuZmNAOCB7XG4rXHRcdGNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNkXCI7XG4rXHRcdHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4rXG4rXHRcdGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuK1xuK1x0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZuZmNfaW50X2RlZmF1bHRcdTAwM2UsIFx1MDAzY1x1MDAyNm5mY19yZXNldF9kZWZhdWx0XHUwMDNlO1xuK1x0XHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4rXG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcdTAwM2U7XG4rXHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4rXG4rXHRcdGVzZS1wcmVzZW50O1xuK1x0XHR1aWNjLXByZXNlbnQ7XG4rXHR9O1xuK1xuIFx0LyogVkw1M0wzIFRvRiBAIDI5ICovXG4gfTtcbiBcbkBAIC0xNDEwLDYgKzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbitcbitcdG5mY19pbnRfZGVmYXVsdDogbmZjLWludC1kZWZhdWx0LXN0YXRlIHtcbitcdFx0cGlucyA9IFwiZ3BpbzQxXCI7XG4rXHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0fTtcbitcbitcdG5mY19yZXNldF9kZWZhdWx0OiBuZmMtcmVzZXQtZGVmYXVsdC1zdGF0ZSB7XG4rXHRcdHBpbnMgPSBcImdwaW8zOFwiO1xuK1x0XHRmdW5jdGlvbiA9IFwiZ3Bpb1wiO1xuK1x0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0b3V0cHV0LWhpZ2g7XG4rXHR9O1xuIH07XG4gXG4gXHUwMDI2dWFydDUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5pbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuQEAgLTE4LDggKzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4rXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXHRzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7XG4gXG4rXHQvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi9cbitcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRjbWQuY21kX3R5cGUgPSBTVF9OQ0lfU0VUX05GQ19NT0RFO1xuIFx0Y21kLm1vZGUgPSAxO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5AQCAtMTAsMTAgKzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25mYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3QtbmNpLmhcIlxuIFxuQEAgLTIyLDEwICsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbisjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMFxuIFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi9cbisjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgKyBPSUQgKyBsZW4gKi9cbiAjZGVmaW5lIFNUX05DSV9JMkNfTUFYX1NJWkUgMjUwIC8qIHJlcSA0LjIuMSAqL1xuIFxuK2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4rXHRTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLFxuK1x0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJLFxuK307XG4rXG4gI2RlZmluZSBTVF9OQ0lfRFJJVkVSX05BTUUgXCJzdF9uY2lcIlxuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcInN0X25jaV9pMmNcIlxuIFxuQEAgLTM0LDYgKzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbitcdGJvb2wgcmF3X25jaTtcbiBcbiBcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX3Jlc2V0O1xuIFxuQEAgLTExMSw2ICsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXG4gXHR1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07XG4gXHRzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gcGh5LVx1MDAzZWkyY19kZXY7XG4gXG4rXHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbitcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdGlmIChyIFx1MDAzYyAwKSB7XG4rXHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuK1x0XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHR9XG4rXHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4rXHRcdFx0cmV0dXJuIC1FUkVNT1RFSU87XG4rXG4rXHRcdGxlbiA9IGJ1ZlsyXTtcbitcdFx0aWYgKGxlbiBcdTAwM2UgU1RfTkNJX0kyQ19NQVhfU0laRSkge1xuK1x0XHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCJpbnZhbGlkIGZyYW1lIGxlblxcblwiKTtcbitcdFx0XHRyZXR1cm4gLUVCQURNU0c7XG4rXHRcdH1cbitcbitcdFx0KnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICsgbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCEqc2tiKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRza2JfcHV0KCpza2IsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHRtZW1jcHkoKCpza2IpLVx1MDAzZWRhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXG4rXHRcdGlmICghbGVuKVxuK1x0XHRcdHJldHVybiAwO1xuK1xuK1x0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pO1xuK1x0XHRpZiAociAhPSBsZW4pIHtcbitcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4rXHRcdFx0cmV0dXJuIC1FUkVNT1RFSU87XG4rXHRcdH1cbitcbitcdFx0c2tiX3B1dCgqc2tiLCBsZW4pO1xuK1x0XHRtZW1jcHkoKCpza2IpLVx1MDAzZWRhdGEgKyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRwaHktXHUwMDNlaTJjX2RldiA9IGNsaWVudDtcbitcdHBoeS1cdTAwM2VyYXdfbmNpID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PVxuK1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICsyNzQsMzEgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuK1x0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcInZkZC1pb1wiKTtcbitcdGlmIChyIFx1MDAyNlx1MDAyNiByICE9IC1FTk9ERVYpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCJmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcblwiKTtcbitcbitcdHIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7XG4rXHRpZiAocilcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcImZhaWxlZCB0byBlbmFibGUgY2xvY2tcXG5cIik7XG4rXG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcImVzZS1wcmVzZW50XCIpO1xuIFx0cGh5LVx1MDAzZXNlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPVxuIFx0XHRcdFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwidWljYy1wcmVzZW50XCIpO1xuIFxuIFx0ciA9IG5kbGNfcHJvYmUocGh5LCBcdTAwMjZpMmNfcGh5X29wcywgXHUwMDI2Y2xpZW50LVx1MDAzZWRldixcbi1cdFx0XHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcbitcdFx0XHRwaHktXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxuK1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbitcdFx0XHRTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4gXHRcdFx0XHUwMDI2cGh5LVx1MDAzZW5kbGMsIFx1MDAyNnBoeS1cdTAwM2VzZV9zdGF0dXMpO1xuIFx0aWYgKHIgXHUwMDNjIDApIHtcbiBcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcIlVuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXFxuXCIpO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbitcdHBoeS1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kgPSBwaHktXHUwMDNlcmF3X25jaTtcbitcbiBcdHBoeS1cdTAwM2VpcnFfYWN0aXZlID0gdHJ1ZTtcbiBcdHIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIGNsaWVudC1cdTAwM2VpcnEsIE5VTEwsXG4gXHRcdFx0XHRzdF9uY2lfaXJxX3RocmVhZF9mbixcbkBAIC0yNzMsNiArMzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIsIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNjLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIixcbitcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuIFx0e31cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXG5pbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuQEAgLTYyLDggKzYyLDkgQEAgdm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG4gXG4tXHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuLVx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbitcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuK1x0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuIFxuIFx0bmRsYy1cdTAwM2Vwb3dlcmVkID0gMDtcbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWRpc2FibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbitcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbitcdFx0XHRQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDtcbiBcbi1cdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuK1x0XHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gcjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0dGltZV9zZW50ID0gamlmZmllcztcbiBcdFx0Kih1bnNpZ25lZCBsb25nICopc2tiLVx1MDAzZWNiID0gdGltZV9zZW50O1xuIFxuQEAgLTE1NCw2ICsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCJyY3ZRbGVuPSVkXFxuXCIsIG5kbGMtXHUwMDNlcmN2X3EucWxlbik7XG4gXG4gXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNm5kbGMtXHUwMDNlcmN2X3EpKSAhPSBOVUxMKSB7XG4rXHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0XHRuY2lfcmVjdl9mcmFtZShuZGxjLVx1MDAzZW5kZXYsIHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xuIFx0ICovXG4gXHRpbnQgaGFyZF9mYXVsdDtcbiBcdGludCBwb3dlcmVkO1xuK1x0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xuK1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcdGludCBzZV9jb3VudCA9IDA7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xuIFx0aWYgKHIgIT0gMClcbiBcdFx0cmV0dXJuIHI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMTo0OS40NjY2MDQ1OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODMyNTE1NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IE5GQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY29udHJvbGxlciwgYHN0LHN0MjFuZmNkYCwgd2l0aGluIHRoZSBgc3QtbmNpYCBkcml2ZXIuIFRoaXMgY29udHJvbGxlciBpcyBhIGJpdCBkaWZmZXJlbnQ7IGl0IHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkOiB3ZSdyZSBlc3NlbnRpYWxseSBieXBhc3NpbmcgdGhlIE5ETEMgbGF5ZXIgYW5kIGhhbmRsaW5nIHRoZSBOQ0kgZnJhbWVzIGRpcmVjdGx5IGluIHNldmVyYWwga2V5IGZ1bmN0aW9ucy4gYHN0X25jaV9pbml0YCBza2lwcyB0aGUgYFNUX05DSV9TRVRfTkZDX01PREVgIGNvbW1hbmQgdW5kZXIgdGhlIG5ldyBmbGFnLiBgc3RfbmNpX2kyY19yZWFkYCBzZWVtcyB1cGRhdGVkIHRvIGhhbmRsZSB0aGUgcmF3IE5DSSBmcmFtZSBmb3JtYXQuIFRoZSBwcm9iaW5nIGxvZ2ljIGluIGBzdF9uY2lfaTJjX3Byb2JlYCBub3cgaW5jbHVkZXMgcmVhZGluZyBzb21lIHByb3BlcnRpZXMgYW5kIHNldHRpbmcgdGhlIGByYXdfbmNpYCBmbGFnIHdoaWNoIHNpZ25hbHMgdGhlIGRpZmZlcmVudCBtb2RlLiBBbmQgdGhlbiwgdGhlcmUgYXJlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudHMgdG8gYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgIHRvIGFjY291bnQgZm9yIHRoaXMgcmF3IE5DSSBtb2RlLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBUaGlzIGlzIGFuIEkyQyBkcml2ZXIsIHJpZ2h0PyBTbywgaG93IHdvdWxkIHdlIGdvIGFib3V0IGZ1enppbmcgaXQ/IEkyQyBkcml2ZXJzIGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcyBvciB0aGUgZGV2aWNlIHRyZWUsIHRoYXQgcGFydCBpcyBjbGVhci4gQW5kLCBzaW5jZSBpdCdzIGFuIEkyQyBkcml2ZXIsIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCBpdCBpbiBRRU1VPyBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5qZWN0IEkyQyB0cmFmZmljLCBvciwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbywgaW5zdGFudGlhdGUgdGhlIGRyaXZlciwgcHJvYmFibHkgdmlhIHN5c2ZzL25ldGxpbmsgaWYgYXBwbGljYWJsZS5cblxuT2theSwgSSBuZWVkIHRvIGJydXNoIHVwIG9uIHN5emthbGxlcidzIEkyQyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgYmFzaWMgSTJDIHN1cHBvcnQsIGJ1dCBpdCdzIHR5cGljYWxseSBtb3JlIGVmZmVjdGl2ZSBpZiBpdCBoYXMgYSBzcGVjaWZpYyBwc2V1ZG8tZGV2aWNlLCBvciBpZiB0aGUgZGV2aWNlIGdldHMgaW5zdGFudGlhdGVkIHZpYSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBpbnNpZGUgYSB0ZXN0IG1vZHVsZS4gQnV0IEkgYWxzbyByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gZnV6eiBJMkMgZGV2aWNlcyB3aXRoIGBzeXpfaTJjX3NldHVwYCBvciB3cml0aW5nIHRvIGAvZGV2L2kyYy0qYC5cblxuV2FpdCwgdGhpcyBkcml2ZXIgaXMgYW4gSTJDIGRyaXZlciwgYnV0IGl0IHJlZ2lzdGVycyBhbiBOQ0kgZGV2aWNlLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBORkMgc3Vic3lzdGVtLiBTeXprYWxsZXIgZGVmaW5pdGVseSBoYXMgc29tZSBnb29kIGNvdmVyYWdlIG9mIE5GQyB0aHJvdWdoIHZpcnR1YWwgZHJpdmVycyBsaWtlIGBuZmNzaW1gIG9yIGJ5IGluc3RhbnRpYXRpbmcgZGV2aWNlcy4gQnV0IGNhbiBzeXprYWxsZXIgaW5zdGFudGlhdGUgSTJDIGRldmljZXMgcmVsaWFibHk/IFRoYXQncyB3aGF0IEkgaGF2ZSB0byBjaGVjay5cblxuTGV0IG1lIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBkZXNjcmlwdGlvbnMgb2YgYHN0X25jaWAgb3IgYE5GQ19TVF9OQ0lgIHdpdGhpbiBTeXprYWxsZXIgdG8gc2VlIHdoYXQncyBhbHJlYWR5IGtub3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjYwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjE6NTkuMjk5MTIzODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTgyOTU1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX1NUX05DSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpXFx0Kz0gc3QtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcXHQrPSBueHAtbmNpL1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IEkyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjEyOlxcdHNlbGVjdCBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVxcXCJcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU9Nj1zdC1uY2ktb2JqcyA9IG5kbGMubyBjb3JlLm8gc2UubyB2ZW5kb3JfY21kcy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpICAgICArPSBzdC1uY2kub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT05PXN0LW5jaV9pMmMtb2JqcyA9IGkyYy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORkNfU1RfTkNJX0kyQykgKz0gc3QtbmNpX2kyYy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT0xMj1zdC1uY2lfc3BpLW9ianMgPSBzcGkub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZDX1NUX05DSV9TUEkpICs9IHN0LW5jaV9zcGkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjowMS4yOTc0MjM3MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjU2MDg2MDg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkZDX1NUX05DSV9JMkNgIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTkZDX1NUX05DSV9JMkNgIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiBnZXQgdG8gdGhlIEkyQyBwcm9iZSBmdW5jdGlvbiB3aGVuIEknbSBydW5uaW5nIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gU3l6a2FsbGVyLCBvZiBjb3Vyc2UsIGdpdmVzIG1lIHNvbWUgb3B0aW9ucy4gSSBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYXNzdW1pbmcgSSBoYXZlIGRldmljZSBkZXNjcmlwdGlvbnMuIEFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IHVzaW5nIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYCB0byBjcmVhdGUgdGhlIEkyQyBkZXZpY2VzIGRpcmVjdGx5IGJ5IG5hbWUuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc3lzZnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIHRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzLiBJJ20gdGhpbmtpbmcgdGhlIGRyaXZlciBwcm9iYWJseSBoYXMgYW4gSTJDIGRldmljZSB0YWJsZS4gV2hhdCdzIHRoZSBuYW1lIG9mIHRoYXQgdGFibGU/IEFoLCBgc3RfbmNpX2kyY19pZGAuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCBldmVyeXRoaW5nIEkgbmVlZCBpbiBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYC4gTGV0J3MgZGlnIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjoxNy44NTgyODY5NjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4ODgzNzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaTJjX2lkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zMTM9c3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMTktXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjMyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjEtXFx0eyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMyMy19O1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzozMjQ6TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MzQzPXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdF9uY2lfaTJjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDktXFx0LnByb2JlID0gc3RfbmNpX2kyY19wcm9iZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MzUwOlxcdC5pZF90YWJsZSA9IHN0X25jaV9pMmNfaWRfdGFibGUsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTM1MS1cXHQucmVtb3ZlID0gc3RfbmNpX2kyY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjE5Ljc0NzEyOTY1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjE0Mjc3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIEluc3RhbnRpYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEkyQyBkcml2ZXIgZm9yIHRoZSBTVCBORkMgY29udHJvbGxlci4gVGhlIGNvZGUgZGVmaW5lcyBhbiBgaTJjX2RldmljZV9pZGAgdGFibGUsIGFuZCB0aGUgZHJpdmVyJ3MgbmFtZSBpcyBcInN0X25jaVwiLiBTbywgdGhlb3JldGljYWxseSwgSSBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciBieSB3cml0aW5nIFwic3RfbmNpIFx1MDAzY2FkZHJlc3NcdTAwM2VcIiB0byB0aGUgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIGZpbGUsIHJpZ2h0PyBUaGF0J3MgdGhlIHN0YW5kYXJkIHN5c2ZzIHdheS5cblxuQnV0LCBoYW5nIG9uLCB0aGVyZSdzIGEgbmV3IGNvbXBhdGlibGUgc3RyaW5nIGJlaW5nIGludHJvZHVjZWQsIFwic3Qsc3QyMW5mY2RcIiwgYW5kIHRoZSBgcmF3X25jaWAgZmxhZyBpcyBiZWluZyBzZXQgYmFzZWQgb24gYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gVGhpcyBmdW5jdGlvbiBpcyBsb29raW5nIGF0IHRoZSBPRiAoZGV2aWNlIHRyZWUpIG9yIEFDUEkgbWF0Y2ggdGFibGVzLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBJZiBJIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UgdGhyb3VnaCBzeXNmcycgYG5ld19kZXZpY2VgLCBpdCdsbCB1c2UgdGhlIGBpMmNfZGV2aWNlX2lkYCB0YWJsZSwgd2hpY2ggKm9ubHkqIGhhcyBcInN0X25jaVwiLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW06IGlmIEkgaW5zdGFudGlhdGUgaXQgdXNpbmcgdGhlIFwic3RfbmNpXCIgbmFtZSB2aWEgc3lzZnMsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIGBOVUxMYCBiZWNhdXNlIGl0J3Mgbm90IHByZXNlbnQgaW4gdGhlIE9GIHRhYmxlLCByaWdodD8gT3Igd2lsbCB0aGUgT0YgbmFtZSBzb21laG93IGdldCBtYXRjaGVkPyBJJ20gbWlzc2luZyBzb21ldGhpbmcuLi5cblxuQWgsIHJpZ2h0ISBgaTJjX25ld19jbGllbnRfZGV2aWNlYCAqY2FuKiBpbnN0YW50aWF0ZSBkZXZpY2VzIGJhc2VkIG9uIE9GIG5vZGVzLiBCdXQgd2hlbiBkb25lIGZyb20gdXNlcnNwYWNlLCB2aWEgYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtIGlzIGxpbWl0ZWQgdG8gcGFzc2luZyB0aGUgSTJDIG5hbWUuIFNvLCBpZiBJIHBhc3MgXCJzdF9uY2lcIiwgaXQgbWF0Y2hlcyB0aGUgYGkyY19kZXZpY2VfaWRgIHRhYmxlLiBTaW5jZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3b3VsZCByZXR1cm4gYE5VTExgLCB0aGUgYHJhd19uY2lgIGZsYWcgd2lsbCBiZSBpbml0aWFsaXplZCB0byAwLlxuXG5XYWl0LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggdGhlIE9GIGNvbXBhdGlibGUgc3RyaW5nIHRocm91Z2ggc3lzZnM/IFByb2JhYmx5IG5vdC4gVGhlIGBuZXdfZGV2aWNlYCBmdW5jdGlvbiBwcm9iYWJseSBvbmx5IG1hdGNoZXMgYWdhaW5zdCB0aGUgYGkyY19kZXZpY2VfaWRgLCB0aGUgYGFjcGlfZGV2aWNlX2lkYCwgb3IgdGhlIGBvZl9kZXZpY2VfaWRgIHRhYmxlcyBkaXJlY3RseS5cblxuTGV0J3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byB0aGUgYGkyY19zeXNmc19uZXdfZGV2aWNlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmluYWwgYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDU1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjI3LjQwODU2MDYyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM5MjY4MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImkyY19zeXNmc19uZXdfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMzIwPXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhuZXdfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzI0LSAqIHRoZXkgZ290IGl0IHdyb25nLiBUaGlzIGludGVyZmFjZSBjYW4gb25seSBiZSB1c2VkIHRvIGRlbGV0ZSBkZXZpY2VzXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEzMjU6ICogaW5zdGFudGlhdGVkIGJ5IGkyY19zeXNmc19uZXdfZGV2aWNlIGFib3ZlLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB3ZVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzI2LSAqIGRvbid0IGRlbGV0ZSBkZXZpY2VzIHRvIHdoaWNoIHNvbWUga2VybmVsIGNvZGUgc3RpbGwgaGFzIHJlZmVyZW5jZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjI5LjM0NzgzMzY1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTgxMTIwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBiYXNlZCBvbiB5b3VyIHByb21wdDpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV3X2RldmljZWAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgZGV2aWNlIHJlZ2lzdHJhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSBJMkMgY29yZSBsZXZlbC4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2dpYyB0aGVyZSBmb3IgY3JlYXRpbmcgYW5kIGxpbmtpbmcgbmV3IEkyQyBkZXZpY2UgaW5zdGFuY2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgSTJDIGFkYXB0ZXIgc3RydWN0dXJlIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmVzb3VyY2UgY29uZmxpY3RzIG9yIGFkZHJlc3MgY29sbGlzaW9ucy4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGFueSBhc3NvY2lhdGVkIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGkyY19kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaG93IHRoZSBkZXZpY2UncyBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucyBhcmUgaW50ZWdyYXRlZCBpbnRvIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIG5vdCBhbiBvdmVybHkgY29tcGxleCBtZXNzLiBMZXQncyBnZXQgY3JhY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjI6MzIuOTY1OTQ4MTE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MDY5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2Vfc3RvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jPTYyND1FWFBPUlRfU1lNQk9MX0dQTChwYXRhX3BhcnBvcnRfdW5yZWdpc3Rlcl9kcml2ZXIpO1xcbmRyaXZlcnMvYXRhL3BhdGFfcGFycG9ydC9wYXRhX3BhcnBvcnQuYy02MjUtXFxuZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jOjYyNjpzdGF0aWMgc3NpemVfdCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG5kcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmMtNjI3LXtcXG4tLVxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xMzY3PXN0YXRpYyBpbnQgZ3Bpb19hZ2dyZWdhdG9yX3BhcnNlKHN0cnVjdCBncGlvX2FnZ3JlZ2F0b3IgKmFnZ3IpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmMtMTQ1NC1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTQ1NTpzdGF0aWMgc3NpemVfdCBncGlvX2FnZ3JlZ2F0b3JfbmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNDU2LVxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE1Mjc9c3RhdGljIHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlIGRyaXZlcl9hdHRyX2dwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlID1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTUyODpcXHRfX0FUVFIobmV3X2RldmljZSwgMDIwMCwgTlVMTCwgZ3Bpb19hZ2dyZWdhdG9yX25ld19kZXZpY2Vfc3RvcmUpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNTI5LVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE2OTU9c3RhdGljIGludCBfX2luaXQgZ3Bpb19hZ2dyZWdhdG9yX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNzEyLVxcdCAqIGV4cG9zZWQgYW5kIGFjY2Vzc2VkIGJ5IHVzZXJzIGJlZm9yZSBjb25maWdmcyByZWdpc3RyYXRpb25cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTcxMzpcXHQgKiBjb21wbGV0ZXMuIG5ld19kZXZpY2Vfc3RvcmUoKSBkb2VzIG5vdCBleHBlY3QgYSBwYXJ0aWFsbHlcXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmMtMTcxNC1cXHQgKiBpbml0aWFsaXplZCBjb25maWdmcyBzdGF0ZS5cXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMjYzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEyNjQ6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMjY1LVxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTg9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU5Om5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjozNC41ODQwMjY3NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NjY0NTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIERyaXZlciBDb3JlKipcblxuT2theSwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgIGFuZCBzcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ld19kZXZpY2Vfc3RvcmVgIGZ1bmN0aW9uLiBJJ20gcHJvYmFibHkgdHJ5aW5nIHRvIGRlYnVnIHNvbWV0aGluZyByZWxhdGVkIHRvIGRldmljZSByZWdpc3RyYXRpb24gb3IgcHJvYmluZywgb3IgbWF5YmUgSSdtIGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBob3cgbmV3IEkyQyBkZXZpY2VzIGFyZSBoYW5kbGVkIGF0IGEgbG93IGxldmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgZHJpdmVyIGNvcmUgbWFuYWdlcyB0aGUgc3lzZnMgZW50cmllcyBmb3IgdGhlIEkyQyBkZXZpY2VzIHdlIGF0dGFjaC4gSXMgaXQgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhlIGF0dHJpYnV0ZXMgY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHBvc3NpYmxlIHdpdGggdGhlIGRldmljZSBjcmVhdGlvbiBsb2dpYyBpbiB0aGVyZT8gTWF5YmUgYSBwcm9ibGVtIHdpdGggYXR0cmlidXRlcyBub3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG5vdCBiZWluZyBjb3JyZWN0bHkgYXR0YWNoZWQ/IFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUwNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjM4LjAzMDY3NTE0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNjMsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyNjM6XFx0c3RhdGljIHNzaXplX3RcXG4xMjY0OlxcdG5ld19kZXZpY2Vfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4xMjY1OlxcdFxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4xMjY2OlxcdHtcXG4xMjY3OlxcdFxcdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IHRvX2kyY19hZGFwdGVyKGRldik7XFxuMTI2ODpcXHRcXHRzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gaW5mbztcXG4xMjY5OlxcdFxcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7XFxuMTI3MDpcXHRcXHRjaGFyICpibGFuaywgZW5kO1xcbjEyNzE6XFx0XFx0aW50IHJlcztcXG4xMjcyOlxcdFxcbjEyNzM6XFx0XFx0bWVtc2V0KFxcdTAwMjZpbmZvLCAwLCBzaXplb2Yoc3RydWN0IGkyY19ib2FyZF9pbmZvKSk7XFxuMTI3NDpcXHRcXG4xMjc1OlxcdFxcdGJsYW5rID0gc3RyY2hyKGJ1ZiwgJyAnKTtcXG4xMjc2OlxcdFxcdGlmICghYmxhbmspIHtcXG4xMjc3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXM6IE1pc3NpbmcgcGFyYW1ldGVyc1xcXFxuXFxcIiwgXFxcIm5ld19kZXZpY2VcXFwiKTtcXG4xMjc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyNzk6XFx0XFx0fVxcbjEyODA6XFx0XFx0aWYgKGJsYW5rIC0gYnVmIFxcdTAwM2UgSTJDX05BTUVfU0laRSAtIDEpIHtcXG4xMjgxOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXM6IEludmFsaWQgZGV2aWNlIG5hbWVcXFxcblxcXCIsIFxcXCJuZXdfZGV2aWNlXFxcIik7XFxuMTI4MjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMjgzOlxcdFxcdH1cXG4xMjg0OlxcdFxcdG1lbWNweShpbmZvLnR5cGUsIGJ1ZiwgYmxhbmsgLSBidWYpO1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHQvKiBQYXJzZSByZW1haW5pbmcgcGFyYW1ldGVycywgcmVqZWN0IGV4dHJhIHBhcmFtZXRlcnMgKi9cXG4xMjg3OlxcdFxcdHJlcyA9IHNzY2FuZigrK2JsYW5rLCBcXFwiJWhpJWNcXFwiLCBcXHUwMDI2aW5mby5hZGRyLCBcXHUwMDI2ZW5kKTtcXG4xMjg4OlxcdFxcdGlmIChyZXMgXFx1MDAzYyAxKSB7XFxuMTI4OTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBDYW4ndCBwYXJzZSBJMkMgYWRkcmVzc1xcXFxuXFxcIiwgXFxcIm5ld19kZXZpY2VcXFwiKTtcXG4xMjkwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyOTE6XFx0XFx0fVxcbjEyOTI6XFx0XFx0aWYgKHJlcyBcXHUwMDNlIDEgIFxcdTAwMjZcXHUwMDI2IGVuZCAhPSAnXFxcXG4nKSB7XFxuMTI5MzpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBFeHRyYSBwYXJhbWV0ZXJzXFxcXG5cXFwiLCBcXFwibmV3X2RldmljZVxcXCIpO1xcbjEyOTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTI5NTpcXHRcXHR9XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdGlmICgoaW5mby5hZGRyIFxcdTAwMjYgSTJDX0FERFJfT0ZGU0VUX1RFTl9CSVQpID09IEkyQ19BRERSX09GRlNFVF9URU5fQklUKSB7XFxuMTI5ODpcXHRcXHRcXHRpbmZvLmFkZHIgXFx1MDAyNj0gfkkyQ19BRERSX09GRlNFVF9URU5fQklUO1xcbjEyOTk6XFx0XFx0XFx0aW5mby5mbGFncyB8PSBJMkNfQ0xJRU5UX1RFTjtcXG4xMzAwOlxcdFxcdH1cXG4xMzAxOlxcdFxcbjEzMDI6XFx0XFx0aWYgKGluZm8uYWRkciBcXHUwMDI2IEkyQ19BRERSX09GRlNFVF9TTEFWRSkge1xcbjEzMDM6XFx0XFx0XFx0aW5mby5hZGRyIFxcdTAwMjY9IH5JMkNfQUREUl9PRkZTRVRfU0xBVkU7XFxuMTMwNDpcXHRcXHRcXHRpbmZvLmZsYWdzIHw9IEkyQ19DTElFTlRfU0xBVkU7XFxuMTMwNTpcXHRcXHR9XFxuMTMwNjpcXHRcXG4xMzA3OlxcdFxcdGNsaWVudCA9IGkyY19uZXdfY2xpZW50X2RldmljZShhZGFwLCBcXHUwMDI2aW5mbyk7XFxuMTMwODpcXHRcXHRpZiAoSVNfRVJSKGNsaWVudCkpXFxuMTMwOTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihjbGllbnQpO1xcbjEzMTA6XFx0XFxuMTMxMTpcXHRcXHQvKiBLZWVwIHRyYWNrIG9mIHRoZSBhZGRlZCBkZXZpY2UgKi9cXG4xMzEyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkYXAtXFx1MDAzZXVzZXJzcGFjZV9jbGllbnRzX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjozOC4wMzA4NzQ4MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NzI5Njc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkyQyBDbGllbnQgRGV2aWNlIERyaXZlciBNYXRjaGluZyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGhhbmRsZXMgZHJpdmVyIG1hdGNoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHJlbHlpbmcgb24gYGluZm8udHlwZWAgZm9yIHRoaXMuIFNwZWNpZmljYWxseSwgaWYgd2UgcHJvdmlkZSBzb21ldGhpbmcgbGlrZSBgXCJzdDIxbmZjZFwiYCwgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0IHdpbGwgdHJ5IHRvIG1hdGNoIGFnYWluc3QgdGhlIE9GIHRhYmxlLCB3aGV0aGVyIG9yIG5vdCB0aGUgSTJDIGNvcmUgc3RyaXBzIHRoZSB2ZW5kb3IgcHJlZml4IGBcInN0LFwiYC5cblxuSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgdGhlIEkyQyBjb3JlIGFjdHVhbGx5IGhhbmRsZXMgbWF0Y2hpbmcgYWdhaW5zdCBPRiBjb21wYXRpYmxlIHN0cmluZ3MgKndpdGhvdXQqIHRoZSB2ZW5kb3IgcHJlZml4LiBUaGlzIG1ha2VzIHRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLlxuXG5BbHJpZ2h0LCBsZXQncyBkb3VibGUtY2hlY2sgaG93IHRoYXQncyBkb25lLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBgaTJjX2RldmljZV9tYXRjaGAuIEkgbmVlZCB0byByZXZpZXcgdGhvc2UgZnVuY3Rpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIG1vcmUgcHJlY2lzZSBpbiBkZWJ1Z2dpbmcgYW5kIGVuc3VyZSB3ZSdyZSBnZXR0aW5nIHRoZSBkcml2ZXIgbWFwcGluZyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYwOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjI6NDIuMjE4MTc1NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjk4ODE3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTJjX29mX21hdGNoX2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM9MTQwPXN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTQ2LVxcdC8qIEF0dGVtcHQgYW4gT0Ygc3R5bGUgbWF0Y2ggKi9cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTQ3OlxcdGlmIChpMmNfb2ZfbWF0Y2hfZGV2aWNlKGRydi1cXHUwMDNlb2ZfbWF0Y2hfdGFibGUsIGNsaWVudCkpXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTE0OC1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz00OTE9c3RhdGljIGludCBpMmNfZGV2aWNlX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy01NDEtXFx0ICAgICFhY3BpX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkZXYtXFx1MDAzZWRyaXZlcikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6NTQyOlxcdCAgICAhaTJjX29mX21hdGNoX2RldmljZShkZXYtXFx1MDAzZWRyaXZlci1cXHUwMDNlb2ZfbWF0Y2hfdGFibGUsIGNsaWVudCkpIHtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtNTQzLVxcdFxcdHN0YXR1cyA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCpcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jOjExNjppMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xMTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYz0xNDQ9Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmM6MTQ1OippMmNfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNDYtXFx0XFx0ICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNTYtXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxNTc6XFx0cmV0dXJuIGkyY19vZl9tYXRjaF9kZXZpY2Vfc3lzZnMobWF0Y2hlcywgY2xpZW50KTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jLTE1OC19XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oPTg3PXZvaWQgb2ZfaTJjX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oOjg4OmNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oLTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg9OTM9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg6OTQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaTJjX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmgtOTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjQzLjg0ODA2MzIyN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg4MDY3MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgY29kZTpcblxuKipEaXZpbmcgaW50byBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKipcblxuT2theSwgdGltZSB0byBnZXQgaW50byBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agd2l0aGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jYC4gSSdtIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIHRoZSBjcnVjaWFsIHRhc2sgb2YgbWF0Y2hpbmcgSTJDIGRldmljZXMgYWdhaW5zdCB0aGUgZGV2aWNlIHRyZWUsIGFuZCBob3cgaXQncyBleHBvc2luZyB0aGF0IGluZm9ybWF0aW9uIHRocm91Z2ggc3lzZnMuIEkgZXhwZWN0IGl0J2xsIGJlIGEga2V5IGNvbXBvbmVudCBpbiBlbmFibGluZyBob3RwbHVnZ2luZyBhbmQgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3aXRoIGRldmljZXMgZGlzY292ZXJlZCB2aWEgdGhlIGRldmljZSB0cmVlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHByb3BlcnRpZXMgbGlrZSBhZGRyZXNzZXMsIGJ1cyBudW1iZXJzLCBhbmQgYW55IGN1c3RvbSBwbGF0Zm9ybSBkYXRhIHRoYXQncyBuZWVkZWQuIExldCdzIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoaXMgdG8gYmUgcm9idXN0IGFuZCBlZmZpY2llbnQsIGNvbnNpZGVyaW5nIHRoZSBvdmVyaGVhZCB0aGF0IGRldmljZSB0cmVlIHBhcnNpbmcgY2FuIHNvbWV0aW1lcyBicmluZy4gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBhcmVhcyB0byByZWZpbmUsIGVzcGVjaWFsbHkgaW4gdGVybXMgb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIExldCdzIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgbGllIHdpdGhpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MTM3NjIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo0OC4yMzYxMzI1OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkKlxcbiAxMTY6XFx0aTJjX29mX21hdGNoX2RldmljZV9zeXNmcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiAxMTg6XFx0e1xcbiAxMTk6XFx0XFx0Y29uc3QgY2hhciAqbmFtZTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0XFx0Zm9yICg7IG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGVbMF07IG1hdGNoZXMrKykge1xcbiAxMjI6XFx0XFx0XFx0LypcXG4gMTIzOlxcdFxcdFxcdCAqIEFkZGluZyBkZXZpY2VzIHRocm91Z2ggdGhlIGkyYyBzeXNmcyBpbnRlcmZhY2UgcHJvdmlkZXMgdXNcXG4gMTI0OlxcdFxcdFxcdCAqIGEgc3RyaW5nIHRvIG1hdGNoIHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGRldmljZVxcbiAxMjU6XFx0XFx0XFx0ICogdHJlZSBjb21wYXRpYmxlIHN0cmluZ3MsIGhvd2V2ZXIgd2l0aCBubyBhY3R1YWwgb2Zfbm9kZSB0aGVcXG4gMTI2OlxcdFxcdFxcdCAqIG9mX21hdGNoX2RldmljZSgpIHdpbGwgbm90IG1hdGNoXFxuIDEyNzpcXHRcXHRcXHQgKi9cXG4gMTI4OlxcdFxcdFxcdGlmIChzeXNmc19zdHJlcShjbGllbnQtXFx1MDAzZW5hbWUsIG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGUpKVxcbiAxMjk6XFx0XFx0XFx0XFx0cmV0dXJuIG1hdGNoZXM7XFxuIDEzMDpcXHRcXG4gMTMxOlxcdFxcdFxcdG5hbWUgPSBzdHJjaHIobWF0Y2hlcy1cXHUwMDNlY29tcGF0aWJsZSwgJywnKTtcXG4gMTMyOlxcdFxcdFxcdGlmICghbmFtZSlcXG4gMTMzOlxcdFxcdFxcdFxcdG5hbWUgPSBtYXRjaGVzLVxcdTAwM2Vjb21wYXRpYmxlO1xcbiAxMzQ6XFx0XFx0XFx0ZWxzZVxcbiAxMzU6XFx0XFx0XFx0XFx0bmFtZSsrO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHRcXHRcXHRpZiAoc3lzZnNfc3RyZXEoY2xpZW50LVxcdTAwM2VuYW1lLCBuYW1lKSlcXG4gMTM4OlxcdFxcdFxcdFxcdHJldHVybiBtYXRjaGVzO1xcbiAxMzk6XFx0XFx0fVxcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gMTQyOlxcdH1cXG4gMTQzOlxcdFxcbiAxNDQ6XFx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo0OC4yMzYyMzk4OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NTgwNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbk9rYXksIHNvIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBpcyB0aGUga2V5LiBJdCdzIGNvbXBhcmluZyB0aGUgYGNsaWVudC1cdTAwM2VuYW1lYCBmaWVsZCB3aXRoIHdoYXQncyBpbiBgbWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlYCwgb3IgdGhlIHBvcnRpb24gYWZ0ZXIgYSBjb21tYSB3aXRoaW4gdGhhdCBzdHJpbmcuIFNvLCBpZiBJIGZlZWQgYFwic3QyMW5mY2RcImAgdG8gYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtICpzaG91bGQqIGNvcnJlY3RseSBhc3NvY2lhdGUgaXQgd2l0aCBgXCJzdCxzdDIxbmZjZFwiYCBpbiB0aGUgY29tcGF0aWJsZSBzdHJpbmcuIEV4Y2VsbGVudC5cblxuTm93LCBkb2VzIHRoYXQgbWVhbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgIHdpbGwgc3Vic2VxdWVudGx5IHJldHVybiBgU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYCwgZ2l2ZW4gdGhhdCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwPyBJdCBzZWVtcyBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZWxpZXMgb24gdGhlIGBkZXZpY2VfZHJpdmVyYCAqYW5kKiB0aGUgZGV2aWNlIGl0c2VsZiAoYGRldmApIGZvciBpdHMgbG9va3Vwcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgdG8gY29uZmlybSBob3cgaXQgcHVsbHMgdGhlIG1hdGNoaW5nIGRhdGEuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29ubmVjdGlvbiBpcyBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NzMsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo1Mi44MTIwNDk3MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzcxOTk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2aWNlX2dldF9tYXRjaF9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTI2NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXFx0cG11X21tZGMtXFx1MDAzZW1tZGNfaXBnX2NsayA9IG1tZGNfaXBnX2NsaztcXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlxcdHBtdV9tbWRjLVxcdTAwM2VkZXZ0eXBlX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTUxMS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmM9MzQ0PXN0YXRpYyBpbnQgcG1jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYzozNTE6XFx0dHlwZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2b2ZkZXYtXFx1MDAzZWRldik7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTItXFx0aWYgKCF0eXBlKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jPTIwPXN0YXRpYyBpbnQgY3BtX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbV9ncGlvLmMtMjItXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm9mZGV2LVxcdTAwM2VkZXY7XFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jOjIzOlxcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yNC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDAzLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcXHRmZWF0dXJlcyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwNS1cXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcwLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcXHRodW1taW5nYmlyZF9wID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3Mi1cXHRpZiAoIWh1bW1pbmdiaXJkX3ApIHtcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYz0xNDY1PXN0YXRpYyBpbnQgc2NoaXpvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYy0xNDY2LXtcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcXHR1bnNpZ25lZCBsb25nIGNoaXBfdHlwZSA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2b3AtXFx1MDAzZWRldik7XFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jLTE0NjgtXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTEwODItXFxuZHJpdmVycy9hY3BpL2J1cy5jOjEwODM6Y29uc3Qgdm9pZCAqYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMTAxLX1cXG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTExMDMtXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxNTk3OmFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE1OTgtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTU5OS17XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTYwMDpcXHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNjAxLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNzQwLVxcdFxcdC5kZXZpY2VfaXNfYXZhaWxhYmxlID0gYWNwaV9md25vZGVfZGV2aWNlX2lzX2F2YWlsYWJsZSwgXFxcXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE3NDE6XFx0XFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXFx0XFx0LmRldmljZV9kbWFfc3VwcG9ydGVkID1cXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jPTEwOT1zdGF0aWMgc3RydWN0IGFoY2lfaG9zdF9wcml2ICphaGNpX2R3Y19nZXRfcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cXHRkcHJpdi1cXHUwMDNlcGRldiA9IHBkZXY7XFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XFx0ZHByaXYtXFx1MDAzZXBkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmMtMTIwLVxcdGlmICghZHByaXYtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYy04NzItXFx0aW14cHJpdi1cXHUwMDNlZmlyc3RfdGltZSA9IHRydWU7XFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYzo4NzM6XFx0aW14cHJpdi1cXHUwMDNldHlwZSA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODc0LVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jPTE4NT1zdGF0aWMgaW50IGFoY2lfbXZlYnVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jOjE5MTpcXHRwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmMtMTkyLVxcdGlmICghcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmM9NDI9c3RhdGljIGludCBhaGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmMtNjAtXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jOjYxOlxcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmMtNjItXFx0aWYgKCFwb3J0KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jPTUxNT1zdGF0aWMgaW50IHRlZ3JhX2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXFx0dGVncmEtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XFx0dGVncmEtXFx1MDAzZXNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV94Z2VuZS5jPTcyNz1zdGF0aWMgaW50IHhnZW5lX2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXFx0aWYgKGRldi1cXHUwMDNlb2Zfbm9kZSkge1xcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XFx0XFx0dmVyc2lvbiA9ICh1bnNpZ25lZCBsb25nKW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXFx0fVxcbi0tXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzMtXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0OlxcdHByaXYtXFx1MDAzZXR5cGUgPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jPTIyOD1zdGF0aWMgaW50IGltZ19hc2NpaV9sY2RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYzoyMzE6XFx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jLTIzMi1cXHRzdHJ1Y3QgaW1nX2FzY2lpX2xjZF9jdHggKmN0eDtcXG4tLVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jPTEzNDc9RVhQT1JUX1NZTUJPTChmd25vZGVfZ3JhcGhfcGFyc2VfZW5kcG9pbnQpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNDgtXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTAte1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNTE6XFx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUyLX1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUzOkVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTgyOD1zdGF0aWMgaW50IGJ0bXRrdWFydF9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjgzODpcXHRiZGV2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM5LVxcdGlmICghYmRldi1cXHUwMDNlZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jPTE4MjE9c3RhdGljIGludCBueHBfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYy0xODMxLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jOjE4MzI6XFx0bnhwZGV2LVxcdTAwM2VueHBfZGF0YSA9IChzdHJ1Y3QgYnRueHB1YXJ0X2RhdGEgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYy0xODMzLVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYy02OTctXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcXHRhbWxkZXYtXFx1MDAzZWFtbF9kZXZfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2c2VyZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYy02OTktXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmM9MTUwNT1zdGF0aWMgaW50IGJjbV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYzoxNTQ2OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoYmNtZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ3LVxcdGlmIChkYXRhKSB7XFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYz04NTU9c3RhdGljIGludCBoNV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jOjg4NDpcXHRcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2g1LmMtODg1LVxcdFxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmMtNDY0LVxcdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jOjQ2NTpcXHRjb25zdCBzdHJ1Y3QgaGNpX3VhcnRfcHJvdG8gKm1ydmxfcHJvdG8gPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYz0yMzkyPXN0YXRpYyBpbnQgcWNhX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXFx0cWNhZGV2LVxcdTAwM2VzZXJkZXZfaHUuc2VyZGV2ID0gc2VyZGV2O1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMtMjQwNi1cXHRzZXJkZXZfZGV2aWNlX3NldF9kcnZkYXRhKHNlcmRldiwgcWNhZGV2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYz00OT1zdGF0aWMgaW50IGlteF9haXBzdHpfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmM6NjM6XFx0ZGF0YS1cXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxcbi0tXFxuZHJpdmVycy9idXMvaW14LXdlaW0uYz0yMDY9c3RhdGljIGludCB3ZWltX3BhcnNlX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xcbmRyaXZlcnMvYnVzL2lteC13ZWltLmM6MjA4OlxcdGNvbnN0IHN0cnVjdCBpbXhfd2VpbV9kZXZ0eXBlICpkZXZ0eXBlID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2lteC13ZWltLmMtMjA5LVxcdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYz03Nz1zdGF0aWMgdm9pZCBzaW1wbGVfcG1fYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XFxuZHJpdmVycy9idXMvc2ltcGxlLXBtLWJ1cy5jOjc5OlxcdGNvbnN0IHZvaWQgKmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvc2ltcGxlLXBtLWJ1cy5jLTgwLVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYz02MDU9c3RhdGljIGludCBzdG0zMl9yaWZzY19yZWdpc3Rlcl9kZWJ1Z2ZzKHN0cnVjdCBzdG0zMl9maXJld2FsbF9jb250cm9sbGVyICpyaWZzY19jb250cm9sbGVyLFxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXFx0cmlmc2NfcHJpdi1cXHUwMDNlbmJfcmlzYWwgPSBuYl9yaXNhbDtcXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcXHRyaWZzY19wcml2LVxcdTAwM2VyZXNfbmFtZXMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEocmlmc2NfY29udHJvbGxlci1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jLTYyMC1cXG4tLVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcXG4tLVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYy0yODY2LVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3OlxcdGNhcCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZGF0YS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cXHRpZiAoIWNhcClcXG4tLVxcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2MS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XFx0cXVpcmtzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jYWNoZS9zaWZpdmVfY2NhY2hlLmMtMjYzLVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYz0xMTQ9c3RhdGljIGludCBhdG1lbF90cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cXHRcXHRyZXR1cm4gUFRSX0VSUih0cm5nLVxcdTAwM2VjbGspO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmM6MTMxOlxcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYy0xMzItXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jPTE0Mz1zdGF0aWMgaW50IGJjbTI4MzVfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmMtMTc1LVxcdFxcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYzoxNzY6XFx0XFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzctXFx0XFx0aWYgKG9mX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmM9MTgzPXN0YXRpYyBpbnQgZXh5bm9zX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTQtXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jOjE5NTpcXHR0cm5nLVxcdTAwM2VmbGFncyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmMtMTk2LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05Ny1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XFx0cHJpdi1cXHUwMDNldmVyc2lvbiA9IChlbnVtIGluZ2VuaWNfcm5nX3ZlcnNpb24pKHVpbnRwdHJfdClvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jLTk5LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYz04Nj1zdGF0aWMgaW50IG1lc29uX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jOjk3OlxcdHByaXYgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05OC1cXHRpZiAoIXByaXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYz0xNjU9c3RhdGljIGludCBtdGtfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYy0xNzYtXFx0cHJpdi1cXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM6MTc3OlxcdHByaXYtXFx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM9Njk3PXN0YXRpYyBpbnQgbjJybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jLTcwNi1cXHRucC1cXHUwMDNlb3AgPSBvcDtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jOjcwNzpcXHRucC1cXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jPTg4PXN0YXRpYyBpbnQgbnBjbV9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYy0xMTItXFx0cHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlxcdHByaXYtXFx1MDAzZWNsa3AgPSAodTMyKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYy0xMTQtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmM9Mzc1PXN0YXRpYyBpbnQgb2ZfZ2V0X29tYXBfcm5nX2RldmljZV9kZXRhaWxzKHN0cnVjdCBvbWFwX3JuZ19kZXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYzozODE6XFx0cHJpdi1cXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgyLVxcdGlmICghcHJpdi1cXHUwMDNlcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYz0xMTA9c3RhdGljIGludCBvbWFwM19yb21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYy0xMjEtXFx0ZGRhdGEtXFx1MDAzZW9wcy5uYW1lID0gXFxcIm9tYXAzLXJvbVxcXCI7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlxcdGRkYXRhLVxcdTAwM2VvcHMucmVhZCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYy0xMjMtXFx0ZGRhdGEtXFx1MDAzZW9wcy5xdWFsaXR5ID0gOTAwO1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmMtMzk1LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2OlxcdHJrX3JuZy1cXHUwMDNlc29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cXHRya19ybmctXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jPTUzMT1zdGF0aWMgaW50IHN0bTMyX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM6NTU4OlxcdHByaXYtXFx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jLTU1OS1cXHRpZiAoIXByaXYtXFx1MDAzZWRhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM9MjI3PXN0YXRpYyBpbnQgb2ZfaXBtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI2OC1cXHRtZW1zZXQoXFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MjY5OlxcdGlvLnNpX2luZm9cXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVxcdGlvLmFkZHJfc291cmNlXFx0PSBTSV9ERVZJQ0VUUkVFO1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmM9MjkyPXN0YXRpYyBpbnQgdHBtX3Rpc19zcGlfZHJpdmVyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmM6Mjk3OlxcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTgtXFx0aWYgKCFwcm9iZV9mdW5jKSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmM9Njg4PXN0YXRpYyBpbnQgaHdpY2FwX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jLTY5NC1cXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmM6Njk1OlxcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYz0zODQ9c3RhdGljIGludCBhc3BlZWRfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzcGVlZC5jLTQxNi1cXHQvKiBTb0MgZ2VuZXJhdGlvbnMgc2hhcmUgY29tbW9uIGxheW91dHMgYnV0IGhhdmUgZGlmZmVyZW50IGRpdmlzb3JzICovXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XFx0c29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzcGVlZC5jLTQxOC1cXHRpZiAoIXNvY19kYXRhKSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYz04NzA9c3RhdGljIGludCBhc3QyNzAwX3NvY19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5Ni1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYzo4OTc6XFx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYy04OTgtXFx0aWYgKCFjbGtfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYz0yMTc9c3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cXHRwbGxfY2xrLVxcdTAwM2VkZXYgPSBkZXY7XFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcXHRwbGxfY2xrLVxcdTAwM2VwbGxfY2ZnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jPTIyNjc9c3RhdGljIGludCBiY20yODM1X2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmMtMjI3Ny1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYzoyMjc4OlxcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXFx0aWYgKCFwZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmMtNDkwLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlxcdHRhYmxlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmMtNDkyLVxcdGlmICghdGFibGUpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmM9NDAzPXN0YXRpYyBpbnQgc3JfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYzo0MDc6XFx0cHJvYmVfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA4LVxcdGlmICghcHJvYmVfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM9NTY2PXN0YXRpYyBpbnQgYXhpX2Nsa2dlbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzctXFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYzo1Nzg6XFx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXFx0aWYgKCFkZmx0X2xpbWl0cylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtNTk4LXtcXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5OlxcdGNvbnN0IHN0cnVjdCBlbl9jbGtfc29jX2RhdGEgKnNvY19kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTYwMC1cXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jPTk2MD1zdGF0aWMgaW50IGVuNzUyM19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy05NjYtXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jOjk2NzpcXHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYz0zMzg9c3RhdGljIGludCBlcWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ3LVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM6MzQ4OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jLTM0OS1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYz00Nz1zdGF0aWMgaW50IGZzbF9mbGV4c3BpX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmM6NTg6XFx0ZGl2cyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVxcdGlmICghZGl2cylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtNjYte1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XFx0Y29uc3Qgc3RydWN0IGZzbF9zYWlfZGF0YSAqZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtNjgtXFx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYz0xMDQ9c3RhdGljIGludCBmc2xfc2FpX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYy0xMDYtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jOjEwNzpcXHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYy0xMDgtXFx0c3RydWN0IGZzbF9zYWlfY2xrICpzYWlfY2xrO1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWhzZGstcGxsLmM9MzA1PXN0YXRpYyBpbnQgaHNka19wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXFx0cGxsX2Nsay1cXHUwMDNlZGV2ID0gZGV2O1xcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcXHRwbGxfY2xrLVxcdTAwM2VwbGxfZGV2ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmM9MjUwPXN0YXRpYyBpbnQgbGFuOTY2eF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjU4LVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmM6MjU5OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jLTI2MC1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM9MjM4PXN0YXRpYyBpbnQgbG9jaG5hZ2FyX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cXHRwcml2LVxcdTAwM2VyZWdtYXAgPSBkZXZfZ2V0X3JlZ21hcChkZXYtXFx1MDAzZXBhcmVudCwgTlVMTCk7XFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jOjI1NTpcXHRjb25mID0gKHN0cnVjdCBsb2NobmFnYXJfY29uZmlnICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYz0zNTU9c3RhdGljIGludCBsb29uZ3NvbjJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmMtMzYzLVxcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYzozNjQ6XFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjUtXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jPTIzMD1zdGF0aWMgaW50IHBhbG1hc19jbGtzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxcbmRyaXZlcnMvY2xrL2Nsay1wYWxtYXMuYzoyMzg6XFx0bWF0Y2hfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM5LVxcdGlmICghbWF0Y2hfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jPTc0Mj1zdGF0aWMgaW50IGRhOHh4X2NmZ2NoaXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc0OC1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYzo3NDk6XFx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYy03NTAtXFx0aWYgKGNsa19pbml0KSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jPTg2MT1zdGF0aWMgaW50IGRhdmluY2lfcGxsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jOjg2ODpcXHRwbGxfaW5pdCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVxcdGlmICghcGxsX2luaXQgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlaWRfZW50cnkpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jLTUxOS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcXHRpbml0X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jLTUyMS1cXHRpZiAoIWluaXRfZGF0YSBcXHUwMDI2XFx1MDAyNiBwZGV2LVxcdTAwM2VpZF9lbnRyeSlcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jPTc4ND1zdGF0aWMgaW50IGhpMzU1OWF2MTAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkxLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jOjc5MjpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jLTc5My1cXHRpZiAoIWNyZy1cXHUwMDNlZnVuY3MpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jPTYxMD1zdGF0aWMgaW50IGhpMzY2MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmMtNjE1LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmM6NjE2OlxcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmMtNjE3LVxcdGlmICghaW5pdF9mdW5jKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYz05ODk9c3RhdGljIGludCBoaTM2NzBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jOjk5NTpcXHRpbml0X2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cXHRpZiAoIWluaXRfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYy0yNjgtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYy0yNzAtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jLTM1MS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlxcdGNyZy1cXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jLTM1My1cXHRpZiAoIWNyZy1cXHUwMDNlZnVuY3MpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUxLVxcdHByaXYtXFx1MDAzZXJlZyA9IGJhc2U7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jOjM1MjpcXHRwcml2LVxcdTAwM2Vzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYy0zNTMtXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jPTI4Nj1zdGF0aWMgaW50IGlteDhxeHBfbHBjZ19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzAzLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmM6MzA0OlxcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jLTMwNS1cXHRpZiAoIXNzX2xwY2cpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYz0xMzA9c3RhdGljIGludCBpbXg4cXhwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jOjEzNjpcXHRyc3JjX3RhYmxlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jLTEzNy1cXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jPTUzNj1zdGF0aWMgaW50IGlteDh1bHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYy01MzktXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4dWxwLmM6NTQwOlxcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYz0yNzQ9c3RhdGljIGludCBpbXg5M19jbG9ja3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODEtXFx0aW50IGksIHJldDtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcGxhdCA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmMtMjgzLVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jLTM4MS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XFx0YmMtXFx1MDAzZXBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVxcdGlmICghYmMtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jPTExND1zdGF0aWMgaW50IHRpX3N5c2Nvbl9nYXRlX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM6MTI0OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jLTEwMTEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XFx0Y2xrX2luaXQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jLTEwMTMtXFx0aWYgKCFjbGtfaW5pdClcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYz04NDM9c3RhdGljIGludCBjbGtfbXQ2NzY1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYzo4NDg6XFx0Y2xrX3Byb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYy04NDktXFx0aWYgKCFjbGtfcHJvYmUpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM9MTI3Nz1zdGF0aWMgaW50IGNsa19tdDY3NzlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NzkuYy0xMjgxLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NzkuYzoxMjgyOlxcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cXHRpZiAoIWNsa19wcm9iZSlcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmMtNjgzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XFx0Y2xrX2luaXQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjU0LjU4OTI1NTgxMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAyMzExNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiBEZXZpY2UgTWF0Y2hpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBzaG91bGQgaGFuZGxlIGRldmljZSBtYXRjaGluZyBkdXJpbmcgc3lzZnMgaW5zdGFudGlhdGlvbi4gVGhlIGxvZ2ljLCBhcyBJIHJlY2FsbCwgaGluZ2VzIG9uIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCBzZXR0aW5nIGBkZXYtXHUwMDNlZHJpdmVyX2RhdGFgLCByaWdodD8gSG1tLCBubywgdGhhdCdzIG5vdCBxdWl0ZSBpdC4gSXQgc2VlbXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KWAuXG5cbk5vdywgdGhlIGNydWNpYWwgYml0IGZvciBzeXNmcyBpcyB0aGUgZmFsbGJhY2suIElmIHdlICpkb24ndCogaGF2ZSBhbiBmd25vZGUg4oCTIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGNhc2Ugd2hlbiBhIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcyDigJMgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBtdXN0IGZhbGwgYmFjayB0byB1c2luZyB0aGUgbWF0Y2ggZGF0YSBwcm92aWRlZCBieSB0aGUgYGRldmljZV9kcml2ZXJgLiBUaGF0J3MgdGhlIGtleSwgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBkYXRhIGNvbWVzIGZyb20uXG5cblRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgcGF0aCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmYWxsYmFjayBtZWNoYW5pc20gaXMgYWNjdXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDEyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjU5LjA5MTU2OTUzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0NyxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0NzpcXHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdGNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMTM1MDpcXHR7XFxuMTM1MTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xcbjEzNTI6XFx0fVxcbjEzNTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9tYXRjaF9kYXRhKTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4xMzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmNvbl9pZCwgdm9pZCAqZGF0YSxcXG4xMzU3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxcbjEzNTg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dm9pZCAqKm1hdGNoZXMsXFxuMTM1OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbWF0Y2hlc19sZW4pXFxuMTM2MDpcXHR7XFxuMTM2MTpcXHRcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcXG4xMzYyOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcXG4xMzYzOlxcdFxcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XFxuMTM2NDpcXHRcXHR2b2lkICpyZXQ7XFxuMTM2NTpcXHRcXG4xMzY2OlxcdFxcdGZ3bm9kZV9ncmFwaF9mb3JfZWFjaF9lbmRwb2ludChmd25vZGUsIGVwKSB7XFxuMTM2NzpcXHRcXHRcXHRpZiAobWF0Y2hlcyBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNlPSBtYXRjaGVzX2xlbikge1xcbjEzNjg6XFx0XFx0XFx0XFx0Zndub2RlX2hhbmRsZV9wdXQoZXApO1xcbjEzNjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTM3MDpcXHRcXHRcXHR9XFxuMTM3MTpcXHRcXG4xMzcyOlxcdFxcdFxcdG5vZGUgPSBmd25vZGVfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlcCk7XFxuMTM3MzpcXHRcXHRcXHRpZiAoIWZ3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlKG5vZGUpKSB7XFxuMTM3NDpcXHRcXHRcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChub2RlKTtcXG4xMzc1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzNzY6XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo1OS4wOTE2NzUwMTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwNjYwMzg3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgSTJDIFByb2JlIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGRldmljZSBtYXRjaGluZyB3b3JrcyB3aXRoIEkyQyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgY29uc2lkZXJpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZ1bmN0aW9uIGFuZCB0aGUgcG90ZW50aWFsIG51bGwgcmV0dXJuIHdoZW4gbm8gRlcgbm9kZSBpcyBwcmVzZW50LiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWFsaXplIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmVsaWVzIG9uIGBmd25vZGVfY2FsbF9wdHJfb3BgLCB3aGljaCBtYWtlcyBzZW5zZS4gSWYgdGhlcmUncyBubyBGaXJtd2FyZSBOb2RlLCBhIE5VTEwgcmV0dXJuIGlzIHRoZSBhbnRpY2lwYXRlZCBvdXRjb21lLiBIb3dldmVyLCB0aGUgcHV6emxlIGlzbid0IGNvbXBsZXRlIHlldCwgYmVjYXVzZSBJIGhhdmUgYSBodW5jaC4uLiBEb2VzIHRoZSBgaTJjX2RldmljZV9wcm9iZWAgZnVuY3Rpb24gZm91bmQgaW4gYGRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY2AgbWVzcyB3aXRoIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBoYW5kbGVkLCBwb3RlbnRpYWxseSBzZXR0aW5nIHNvbWV0aGluZyB1cD8gSXQncyB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIFNvLCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBhY3R1YWxseSBmdW5jdGlvbnMgd2l0aGluIHRoYXQgY29udGV4dCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTMwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowMi44OTgyODIxNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTA4MjY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTJjX2dldF9tYXRjaF9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTMwMyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYz02NTc9c3RhdGljIGludCBodDE2azMzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jLTY3My1cXHRwcml2LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYzo2NzQ6XFx0cHJpdi1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYy02NzUtXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jPTUyNz1zdGF0aWMgaW50IGkyY19udXZvdG9uX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jLTU0OS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jOjU1MDpcXHRpZiAoaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCkpXFxuZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX251dm90b24uYy01NTEtXFx0XFx0Y2hpcC1cXHUwMDNlZmxhZ3MgfD0gVFBNX0NISVBfRkxBR19UUE0yO1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWNkY2U5MjUuYz02MTc9c3RhdGljIGludCBjZGNlOTI1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jLTY1MC1cXHRkYXRhLVxcdTAwM2VpMmNfY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmM6NjUxOlxcdGRhdGEtXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmMtNjUyLVxcdGNvbmZpZy5tYXhfcmVnaXN0ZXIgPSBDRENFOTI1X09GRlNFVF9QTEwgK1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jPTI4Mj1zdGF0aWMgaW50IHJzOV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jLTI5NS1cXHRyczktXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmM6Mjk2OlxcdHJzOS1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jLTI5Ny1cXHRpZiAoIXJzOS1cXHUwMDNlY2hpcF9pbmZvKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYz0yODE9c3RhdGljIGludCBzaTUyMXh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODIte1xcbmRyaXZlcnMvY2xrL2Nsay1zaTUyMXh4LmM6MjgzOlxcdGNvbnN0IHUxNiBjaGlwX2luZm8gPSAodTE2KSh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODQtXFx0Y29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBjbGtfcGFyZW50X2RhdGEgPSB7IC5pbmRleCA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYz0xNDM2PXN0YXRpYyBpbnQgc2k1MzUxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jLTE0NDUtXFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jOjE0NDY6XFx0dmFyaWFudCA9IChlbnVtIHNpNTM1MV92YXJpYW50KSh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jLTE0NDctXFx0cmV0ID0gc2k1MzUxX2R0X3BhcnNlKGNsaWVudCwgdmFyaWFudCk7XFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYz00MzQ9c3RhdGljIGludCBzaTU0NF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmMtNDQ4LVxcdGRhdGEtXFx1MDAzZWkyY19jbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmM6NDQ5OlxcdGRhdGEtXFx1MDAzZW1heF9mcmVxID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYy00NTAtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstc2k1NzAuYz00MTI9c3RhdGljIGludCBzaTU3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDI5LVxcbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jOjQzMDpcXHRkYXRhLVxcdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDMxLVxcdGlmIChkYXRhLVxcdTAwM2VpbmZvLVxcdTAwM2VoYXNfdGVtcGVyYXR1cmVfc3RhYmlsaXR5KSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazMuYz05OTc9c3RhdGljIGludCB2YzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrMy5jLTEwNDgtXFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmM6MTA0OTpcXHRkYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmMtMTA1MC1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jPTk1MT1zdGF0aWMgaW50IHZjNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s1LmMtOTY1LVxcdHZjNS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jOjk2NjpcXHR2YzUtXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jLTk2Ny1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jPTExMDA9c3RhdGljIGludCB2YzdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTYtXFx0dmM3LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM6MTExNzpcXHR2YzctXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTgtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmM9MTY0PXN0YXRpYyBpbnQgYXRtZWxfc2hhMjA0YV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jLTE4MC1cXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmM6MTgxOlxcdHF1YWxpdHkgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmMtMTgyLVxcdGlmIChxdWFsaXR5KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jPTExOTI9c3RhdGljIGludCBwY2E5NTN4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMtMTIyOC1cXHRjaGlwLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jOjEyMjk6XFx0Y2hpcC1cXHUwMDNlZHJpdmVyX2RhdGEgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYy0xMjMwLVxcdGlmICghY2hpcC1cXHUwMDNlZHJpdmVyX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmM9Mjc3PXN0YXRpYyBpbnQgcGNmODU3eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jLTMwMC1cXHRncGlvLVxcdTAwM2VjaGlwLmRpcmVjdGlvbl9vdXRwdXRcXHQ9IHBjZjg1N3hfb3V0cHV0O1xcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjZjg1N3guYzozMDE6XFx0Z3Bpby1cXHUwMDNlY2hpcC5uZ3Bpb1xcdFxcdD0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmMtMzAyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmM9MTIyOT1zdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jLTEyNDctXFx0YWR2NzUxMS1cXHUwMDNlc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7XFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmM6MTI0ODpcXHRhZHY3NTExLVxcdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGkyYyk7XFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMtMTI0OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jPTE0ND1zdGF0aWMgaW50IHdzX2JyaWRnZV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS93YXZlc2hhcmUtZHNpLmMtMTc5LVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jOjE4MDpcXHR3cy1cXHUwMDNlYnJpZGdlLnR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShpMmMpO1xcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE4MS1cXHR3cy1cXHUwMDNlYnJpZGdlLm9mX25vZGUgPSBkZXYtXFx1MDAzZW9mX25vZGU7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2FkNzQxOC5jPTIzMz1zdGF0aWMgaW50IGFkNzQxOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9hZDc0MTguYy0yNTItXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vYWQ3NDE4LmM6MjUzOlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vYWQ3NDE4LmMtMjU0LVxcbi0tXFxuZHJpdmVycy9od21vbi9hZG0xMDMxLmM9MTAyND1zdGF0aWMgaW50IGFkbTEwMzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRtMTAzMS5jLTEwMzUtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vYWRtMTAzMS5jOjEwMzY6XFx0ZGF0YS1cXHUwMDNlY2hpcF90eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYy0xMDM3LVxcdG11dGV4X2luaXQoXFx1MDAyNmRhdGEtXFx1MDAzZXVwZGF0ZV9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jPTEwMj1zdGF0aWMgaW50IGFkczc4MjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jLTEzOS1cXG5kcml2ZXJzL2h3bW9uL2Fkczc4MjguYzoxNDA6XFx0Y2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9hZHM3ODI4LmMtMTQxLVxcbi0tXFxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmM9MTgwNT1zdGF0aWMgaW50IGFkdDc0NzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jLTE4MjctXFxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmM6MTgyODpcXHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2FkdDc0NzUuYy0xODI5LVxcbi0tXFxuZHJpdmVycy9od21vbi9haHQxMC5jPTMzMj1zdGF0aWMgaW50IGFodDEwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9od21vbi9haHQxMC5jLTMzMy17XFxuZHJpdmVycy9od21vbi9haHQxMC5jOjMzNDpcXHRlbnVtIGFodDEwX3ZhcmlhbnQgdmFyaWFudCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9haHQxMC5jLTMzNS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYz0yNDY0PXN0YXRpYyBpbnQgZG1lMTczN19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZG1lMTczNy5jLTI0NzQtXFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XFxuZHJpdmVycy9od21vbi9kbWUxNzM3LmM6MjQ3NTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYy0yNDc2LVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG4tLVxcbmRyaXZlcnMvaHdtb24vZHMxNjIxLmM9MzQ1PXN0YXRpYyBpbnQgZHMxNjIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jLTM1Ni1cXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jOjM1NzpcXHRkYXRhLVxcdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jLTM1OC1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYz04MjQ9c3RhdGljIGludCBlbWMxODEyX2NoaXBfaWRlbnRpZnkoc3RydWN0IGVtYzE4MTJfZGF0YSAqZGF0YSwgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZW1jMTgxMi5jLTg1Ni1cXHRcXHQgKi9cXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYzo4NTc6XFx0XFx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vZW1jMTgxMi5jLTg1OC1cXHRcXHRpZiAoIWNoaXApXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYz03OTE9c3RhdGljIGludCBmNzUzNzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwNy1cXHRtdXRleF9pbml0KFxcdTAwMjZkYXRhLVxcdTAwM2V1cGRhdGVfbG9jayk7XFxuZHJpdmVycy9od21vbi9mNzUzNzVzLmM6ODA4OlxcdGRhdGEtXFx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwOS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vZnNjaG1kLmM9MTA4Mj1zdGF0aWMgaW50IGZzY2htZF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9mc2NobWQuYy0xMDg4LVxcdGludCBpLCBlcnI7XFxuZHJpdmVycy9od21vbi9mc2NobWQuYzoxMDg5OlxcdGVudW0gY2hpcHMga2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9mc2NobWQuYy0xMDkwLVxcbi0tXFxuZHJpdmVycy9od21vbi9pbmEyMzguYz04ODM9c3RhdGljIGludCBpbmEyMzhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkxLVxcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmM6ODkyOlxcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkzLVxcbi0tXFxuZHJpdmVycy9od21vbi9pbmEyeHguYz05NjE9c3RhdGljIGludCBpbmEyeHhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmMtOTY4LVxcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmM6OTY5OlxcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmMtOTcwLVxcbi0tXFxuZHJpdmVycy9od21vbi9sbTYzLmM9MTI0NT1zdGF0aWMgaW50IGxtNjNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG02My5jLTEyNTktXFx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xcbmRyaXZlcnMvaHdtb24vbG02My5jOjEyNjA6XFx0ZGF0YS1cXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9sbTYzLmMtMTI2MS1cXHRpZiAoZGF0YS1cXHUwMDNla2luZCA9PSBsbTY0KVxcbi0tXFxuZHJpdmVycy9od21vbi9sbTc1LmM9ODE4PXN0YXRpYyBpbnQgbG03NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG03NS5jLTgzMC1cXG5kcml2ZXJzL2h3bW9uL2xtNzUuYzo4MzE6XFx0cmV0dXJuIGxtNzVfZ2VuZXJpY19wcm9iZShkZXYsIGNsaWVudC1cXHUwMDNlbmFtZSwgKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSxcXG5kcml2ZXJzL2h3bW9uL2xtNzUuYy04MzItXFx0XFx0XFx0XFx0ICBjbGllbnQtXFx1MDAzZWlycSwgcmVnbWFwKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG03OC5jPTYzMD1zdGF0aWMgaW50IGxtNzhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtNzguYy02NDAtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vbG03OC5jOjY0MTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2xtNzguYy02NDItXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODMuYz00MjA9c3RhdGljIGludCBsbTgzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODMuYy00MzMtXFxuZHJpdmVycy9od21vbi9sbTgzLmM6NDM0OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG04My5jLTQzNS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbG04NS5jPTE1NDc9c3RhdGljIGludCBsbTg1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODUuYy0xNTU4LVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2h3bW9uL2xtODUuYzoxNTU5OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG04NS5jLTE1NjAtXFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGF0YS1cXHUwMDNldXBkYXRlX2xvY2spO1xcbi0tXFxuZHJpdmVycy9od21vbi9sbTkwLmM9Mjc2OD1zdGF0aWMgaW50IGxtOTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTAtXFx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xcbmRyaXZlcnMvaHdtb24vbG05MC5jOjI3OTE6XFx0ZGF0YS1cXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9sbTkwLmMtMjc5Mi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05Mi5jPTM3ND1zdGF0aWMgaW50IGxtOTJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05Mi5jLTM5MS1cXHRkYXRhLVxcdTAwM2VyZWdtYXAgPSByZWdtYXA7XFxuZHJpdmVycy9od21vbi9sbTkyLmM6MzkyOlxcdGRhdGEtXFx1MDAzZXJlc29sdXRpb24gPSAodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2xtOTIuYy0zOTMtXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYz01MDM9c3RhdGljIGludCBsbTk1MjM0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYy01MTQtXFxuZHJpdmVycy9od21vbi9sbTk1MjM0LmM6NTE1OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTYwNjUuYz01MDU9c3RhdGljIGludCBtYXgxNjA2NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNC1cXHRpbnQgZ3JvdXBzID0gMDtcXG5kcml2ZXJzL2h3bW9uL21heDE2MDY1LmM6NTE1OlxcdGVudW0gY2hpcHMgY2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jPTI2OT1zdGF0aWMgaW50IG1heDE2NjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4Ny1cXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYzoyODg6XFx0ZGF0YS1cXHUwMDNlY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jPTc2Mz1zdGF0aWMgaW50IG1heDY2NTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jLTc3OC1cXG5kcml2ZXJzL2h3bW9uL21heDY2NTAuYzo3Nzk6XFx0ZGF0YS1cXHUwMDNlbnJfZmFucyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXg2NjUwLmMtNzgwLVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmM9NTM3PXN0YXRpYyBpbnQgbWF4NjY5N19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTUzLVxcdGRhdGEtXFx1MDAzZXJlZ21hcCA9IHJlZ21hcDtcXG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYzo1NTQ6XFx0ZGF0YS1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTU1LVxcdGRhdGEtXFx1MDAzZWNoaXAgPSBcXHUwMDI2bWF4NjY5N19jaGlwX2RhdGFbZGF0YS1cXHUwMDNldHlwZV07XFxuLS1cXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYz0xMTk9c3RhdGljIGludCBtY3AzMDIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYy0xNTAtXFxuZHJpdmVycy9od21vbi9tY3AzMDIxLmM6MTUxOlxcdHR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWNwMzAyMS5jLTE1Mi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jPTkxMT1zdGF0aWMgaW50IG1jcDk5ODJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jLTkzMC1cXG5kcml2ZXJzL2h3bW9uL21jcDk5ODIuYzo5MzE6XFx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jLTkzMi1cXHRpZiAoIWNoaXApXFxuLS1cXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmM9MTU1PXN0YXRpYyBpbnQgbmN0Njc3NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjMtXFxuZHJpdmVycy9od21vbi9uY3Q2Nzc1LWkyYy5jOjE2NDpcXHRkYXRhLVxcdTAwM2VraW5kID0gKGVudW0ga2luZHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmMtMTY1LVxcdGRhdGEtXFx1MDAzZXJlYWRfb25seSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYz03OT1zdGF0aWMgaW50IGFkcDEwNTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvYWRwMTA1MC5jLTgyLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvYWRwMTA1MC5jOjgzOlxcdGluZm8gPSAoc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmMtODQtXFx0aWYgKCFpbmZvKVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM9OTE9c3RhdGljIGludCBwZmVfcG1idXNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYy05Mi17XFxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM6OTM6XFx0aW50IG1vZGVsID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYy05NC1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvaWJtLWNmZnBzLmM9NDgyPXN0YXRpYyBpbnQgaWJtX2NmZnBzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4NC1cXHRpbnQgaSwgcmM7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYzo0ODU6XFx0ZW51bSB2ZXJzaW9ucyB2cyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYy00ODYtXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmcztcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYz0zMjU9c3RhdGljIGludCBpc2w2ODEzN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jLTM0Ny1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2lzbDY4MTM3LmM6MzQ4OlxcdHN3aXRjaCAoKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSkge1xcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYy0zNDktXFx0Y2FzZSByYWFfZG1wdnIxXzJyYWlsOlxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmM9NDY1PXN0YXRpYyBpbnQgbG0yNTA2Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMtNDg1LVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jOjQ4NjpcXHRkYXRhLVxcdTAwM2VpZCA9IChlbnVtIGNoaXBzKSh1bnNpZ25lZCBsb25nKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4Ny1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MjA3MzAuYz02NjE9c3RhdGljIGludCBtYXgyMDczMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jLTcxNy1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmM6NzE4OlxcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MjA3MzAuYy03MTktXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmM9NzM3PXN0YXRpYyBpbnQgbWF4MzQ0NDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYy03NDUtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jOjc0NjpcXHRkYXRhLVxcdTAwM2VpZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jLTc0Ny1cXHRkYXRhLVxcdTAwM2VpbmZvID0gbWF4MzQ0NDBfaW5mb1tkYXRhLVxcdTAwM2VpZF07XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jPTM5NT1zdGF0aWMgaW50IG1wMjg1Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYy00MDYtXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYzo0MDc6XFx0Y2hpcF9pZCA9IChrZXJuZWxfdWxvbmdfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jLTQwOC1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmM9OTk2PXN0YXRpYyBpbnQgbXAyOTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjk3NS5jLTEwMDItXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI5NzUuYzoxMDAzOlxcdGRkaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmMtMTAwNC1cXHRpZiAoIWRkaW5mbylcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jPTEzMD1zdGF0aWMgaW50IG1wcTg3ODVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0NC1cXHRlbHNlXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmM6MTQ1OlxcdFxcdGNoaXBfaWQgPSAoa2VybmVsX3Vsb25nX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jPTE2ND1zdGF0aWMgaW50IHBtYnVzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMtMTc0LVxcbmRyaXZlcnMvaHdtb24vcG1idXMvcG1idXMuYzoxNzU6XFx0ZGV2aWNlX2luZm8gPSAoc3RydWN0IHBtYnVzX2RldmljZV9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jLTE3Ni1cXHRpZiAoZGV2aWNlX2luZm8tXFx1MDAzZWZsYWdzKSB7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYz0yODE9c3RhdGljIGludCBxNTRzajEwOGEyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYy0yOTctXFxuZHJpdmVycy9od21vbi9wbWJ1cy9xNTRzajEwOGEyLmM6Mjk4OlxcdGNoaXBfaWQgPSAoZW51bSBjaGlwcykodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvdHBzNTM2NzkuYz0yNTA9c3RhdGljIGludCB0cHM1MzY3OV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jLTI1NS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmM6MjU2OlxcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvdHBzNTM2NzkuYy0yNTctXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jPTc2PXN0YXRpYyBpbnQgeGRwNzIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jLTg2LVxcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmM6ODc6XFx0ZGF0YS1cXHUwMDNlaWQgPSAoZW51bSB4ZHA3MjBfY2hpcF9pZCkodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmMtODgtXFx0ZGF0YS1cXHUwMDNlaW5mbyA9IHhkcDcyMF9pbmZvO1xcbi0tXFxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jPTI3ND1zdGF0aWMgaW50IHBvd3IxMjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmMtMjg2LVxcbmRyaXZlcnMvaHdtb24vcG93cjEyMjAuYzoyODc6XFx0Y2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jLTI4OC1cXHRzd2l0Y2ggKGNoaXApIHtcXG4tLVxcbmRyaXZlcnMvaHdtb24vc2h0M3guYz04NzU9c3RhdGljIGludCBzaHQzeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9zaHQzeC5jLTkwMy1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9od21vbi9zaHQzeC5jOjkwNDpcXHRkYXRhLVxcdTAwM2VjaGlwX2lkID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3NodDN4LmMtOTA1LVxcdGNyYzhfcG9wdWxhdGVfbXNiKHNodDN4X2NyYzhfdGFibGUsIFNIVDNYX0NSQzhfUE9MWU5PTUlBTCk7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3NodGMxLmM9MTg5PXN0YXRpYyBpbnQgc2h0YzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vc2h0YzEuYy0xOTUtXFx0c3RydWN0IGRldmljZSAqaHdtb25fZGV2O1xcbmRyaXZlcnMvaHdtb24vc2h0YzEuYzoxOTY6XFx0ZW51bSBzaHRjeF9jaGlwcyBjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3NodGMxLmMtMTk3LVxcdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IGNsaWVudC1cXHUwMDNlYWRhcHRlcjtcXG4tLVxcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM9MzgwPXN0YXRpYyBpbnQgdGhtYzUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RobWM1MC5jLTM5MS1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9od21vbi90aG1jNTAuYzozOTI6XFx0ZGF0YS1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi90aG1jNTAuYy0zOTMtXFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGF0YS1cXHUwMDNldXBkYXRlX2xvY2spO1xcbi0tXFxuZHJpdmVycy9od21vbi90bXAxMDguYz00OTk9c3RhdGljIGludCB0bXAxMDhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTEyLVxcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmM6NTEzOlxcdHJldHVybiB0bXAxMDhfY29tbW9uX3Byb2JlKGRldiwgcmVnbWFwLCBjbGllbnQtXFx1MDAzZW5hbWUsIGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpKTtcXG5kcml2ZXJzL2h3bW9uL3RtcDEwOC5jLTUxNC19XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jPTY2NT1zdGF0aWMgaW50IHRtcDQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi90bXA0MDEuYy02ODAtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vdG1wNDAxLmM6NjgxOlxcdGRhdGEtXFx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdG1wNDAxLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9od21vbi90bXA0MjEuYz00MjU9c3RhdGljIGludCB0bXA0MjFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNDIxLmMtNDM1LVxcbmRyaXZlcnMvaHdtb24vdG1wNDIxLmM6NDM2OlxcdGRhdGEtXFx1MDAzZWNoYW5uZWxzID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi90bXA0MjEuYy00MzctXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbi0tXFxuZHJpdmVycy9od21vbi90bXA0NjQuYz02Mzc9c3RhdGljIGludCB0bXA0NjRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNDY0LmMtNjUxLVxcbmRyaXZlcnMvaHdtb24vdG1wNDY0LmM6NjUyOlxcdGRhdGEtXFx1MDAzZWNoYW5uZWxzID0gKGludCkodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3RtcDQ2NC5jLTY1My1cXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNTEzLmM9NzEyPXN0YXRpYyBpbnQgdG1wNTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jLTcyMi1cXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jOjcyMzpcXHRkYXRhLVxcdTAwM2VtYXhfY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdG1wNTEzLmMtNzI0LVxcbi0tXFxuZHJpdmVycy9od21vbi93ODM3ODFkLmM9MTE5NT1zdGF0aWMgaW50IHc4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdzgzNzgxZC5jLTEyMDgtXFxuZHJpdmVycy9od21vbi93ODM3ODFkLmM6MTIwOTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjEwLVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG4tLVxcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmM9MjEzNz1zdGF0aWMgaW50IHc4Mzc5NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi93ODM3OTUuYy0yMTQ5LVxcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpO1xcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmM6MjE1MDpcXHRkYXRhLVxcdTAwM2VjaGlwX3R5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmMtMjE1MS1cXHRkYXRhLVxcdTAwM2ViYW5rID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgVzgzNzk1X1JFR19CQU5LU0VMKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMTk9RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTIwLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYzoxMjE6Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyMi17XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTM3LX1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTM4OkVYUE9SVF9TWU1CT0woaTJjX2dldF9tYXRjaF9kYXRhKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTM5LVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYz02ND1zdGF0aWMgaW50IGFkeGwzMTNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzEzX2kyYy5jLTczLVxcdCAqL1xcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzMTNfaTJjLmM6NzQ6XFx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03NS1cXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTVfaTJjLmM9MjI9c3RhdGljIGludCBhZHhsMzU1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYy0yNy1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jOjI4OlxcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTVfaTJjLmMtMjktXFx0aWYgKCFjaGlwX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jPTIwPXN0YXRpYyBpbnQgYWR4bDM3Ml9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmMtMjYtXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM3Ml9pMmMuYzoyNzpcXHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jLTI4LVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM4MF9pMmMuYz0yMD1zdGF0aWMgaW50IGFkeGwzODBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jLTI0LVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmM6MjU6XFx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM4MF9pMmMuYy0yNi1cXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jPTkxNz1zdGF0aWMgaW50IGJtYTE4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmMtOTMxLVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2lpby9hY2NlbC9ibWExODAuYzo5MzI6XFx0ZGF0YS1cXHUwMDNlcGFydF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYz0xMDA9c3RhdGljIGludCBkYTI4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYy0xMTAtXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYzoxMTE6XFx0bWF0Y2hfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL2RhMjgwLmMtMTEyLVxcdGlmICghbWF0Y2hfZGF0YSkge1xcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYz0xNT1zdGF0aWMgaW50IGt4MDIyYV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2tpb25peC1reDAyMmEtaTJjLmMtMjUtXFxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYzoyNjpcXHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoaTJjKTtcXG5kcml2ZXJzL2lpby9hY2NlbC9raW9uaXgta3gwMjJhLWkyYy5jLTI3LVxcdGlmICghY2hpcF9pbmZvKVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmM9MTQzPXN0YXRpYyBpbnQgbWMzMjMwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9tYzMyMzAuYy0xNDktXFxuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmM6MTUwOlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jLTE1MS1cXHRpZiAoY2hpcF9pbmZvID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL21tYTg0NTIuYz0xNTQ4PXN0YXRpYyBpbnQgbW1hODQ1Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjItXFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jOjE1NjM6XFx0ZGF0YS1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjQtXFx0aWYgKCFkYXRhLVxcdTAwM2VjaGlwX2luZm8pXFxuLS1cXG5kcml2ZXJzL2lpby9hZGMvbHRjMjMwOS5jPTIwMj1zdGF0aWMgaW50IGx0YzIzMDlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmMtMjEzLVxcdGx0YzIzMDkgPSBpaW9fcHJpdihpbmRpb19kZXYpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmM6MjE0OlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL2x0YzI0OTcuYz05NT1zdGF0aWMgaW50IGx0YzI0OTdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE1LVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmM6MTE2OlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE3LVxcdHN0LVxcdTAwM2Vjb21tb25fZGRhdGEuY2hpcF9pbmZvID0gY2hpcF9pbmZvO1xcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYz0xNTU3PXN0YXRpYyBpbnQgbWF4MTM2M19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc1LVxcbmRyaXZlcnMvaWlvL2FkYy9tYXgxMzYzLmM6MTU3NjpcXHRzdC1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc3LVxcdHN0LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYz0xOTM9c3RhdGljIGludCBtYXgzNDQwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmMtMjAyLVxcbmRyaXZlcnMvaWlvL2FkYy9tYXgzNDQwOC5jOjIwMzpcXHRtb2RlbF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmMtMjA0LVxcdGlmICghbW9kZWxfZGF0YSlcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmM9NDA3PXN0YXRpYyBpbnQgbmN0NzIwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYy00MTQtXFxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYzo0MTU6XFx0bW9kZWxfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmMtNDE2LVxcdGlmICghbW9kZWxfZGF0YSlcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9wYWMxOTM0LmM9MTQ4MT1zdGF0aWMgaW50IHBhYzE5MzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowNC41MDkxMTQ4OTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTUyMTM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIENvcmU6IFVuZGVyc3RhbmRpbmcgYGkyY19nZXRfbWF0Y2hfZGF0YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgSTJDIGNvcmUgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuIEknbSBnb2luZyB0byBoZWFkIHN0cmFpZ2h0IGZvciBgaTJjX2dldF9tYXRjaF9kYXRhYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRldmljZXMgYXJlIG1hdGNoZWQgYW5kIGhvdyBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCB0aG9zZSBtYXRjaGVzIHdpdGhpbiB0aGlzIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSBjZW50cmFsIHRvIHRoYXQgcHJvY2Vzcy4gTGV0J3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdzsgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgYW50aWNpcGF0ZSBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIFwiYmVzdCBtYXRjaFwiIGFuZCByZXRyaWV2aW5nIGFzc29jaWF0ZWQgcGxhdGZvcm0tc3BlY2lmaWMgZGF0YS4gTGV0J3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NDMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowOC41OTA2Mzk4NzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTk6XFx0RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIDEyMjpcXHR7XFxuIDEyMzpcXHRcXHRzdHJ1Y3QgaTJjX2RyaXZlciAqZHJpdmVyID0gdG9faTJjX2RyaXZlcihjbGllbnQtXFx1MDAzZWRldi5kcml2ZXIpO1xcbiAxMjQ6XFx0XFx0Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKm1hdGNoO1xcbiAxMjU6XFx0XFx0Y29uc3Qgdm9pZCAqZGF0YTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXYpO1xcbiAxMjg6XFx0XFx0aWYgKCFkYXRhKSB7XFxuIDEyOTpcXHRcXHRcXHRtYXRjaCA9IGkyY19tYXRjaF9pZChkcml2ZXItXFx1MDAzZWlkX3RhYmxlLCBjbGllbnQpO1xcbiAxMzA6XFx0XFx0XFx0aWYgKCFtYXRjaClcXG4gMTMxOlxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRcXHRkYXRhID0gKGNvbnN0IHZvaWQgKiltYXRjaC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEzNDpcXHRcXHR9XFxuIDEzNTpcXHRcXG4gMTM2OlxcdFxcdHJldHVybiBkYXRhO1xcbiAxMzc6XFx0fVxcbiAxMzg6XFx0RVhQT1JUX1NZTUJPTChpMmNfZ2V0X21hdGNoX2RhdGEpO1xcbiAxMzk6XFx0XFxuIDE0MDpcXHRzdGF0aWMgaW50IGkyY19kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbiAxNDE6XFx0e1xcbiAxNDI6XFx0XFx0c3RydWN0IGkyY19jbGllbnRcXHQqY2xpZW50ID0gaTJjX3ZlcmlmeV9jbGllbnQoZGV2KTtcXG4gMTQzOlxcdFxcdGNvbnN0IHN0cnVjdCBpMmNfZHJpdmVyXFx0KmRyaXZlcjtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHQvKiBBdHRlbXB0IGFuIE9GIHN0eWxlIG1hdGNoICovXFxuIDE0NzpcXHRcXHRpZiAoaTJjX29mX21hdGNoX2RldmljZShkcnYtXFx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKVxcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjA4LjU5MDc3NzYwMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEwMTczNjM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSTJDIERldmljZSBJbnN0YW50aWF0aW9uIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gSSB3YXMgcG9uZGVyaW5nIHRoaXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBJMkMgZGV2aWNlcy4gSXQgc3RydWNrIG1lOiBkb2VzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgd29yayBmb3IgSTJDIGRldmljZXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IExldCBtZSByZS1leGFtaW5lIHRoaXMuIExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uLCBpdCdzIGNhbGxpbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgb24gdGhlIGRldmljZSdzIGZ3bm9kZS4gSWYgdGhlcmUgaXNuJ3QgYW4gZndub2RlLCBpdCByZXR1cm5zIE5VTEwuIE5vdywgSSByZW1lbWJlciB0aGF0IGBpMmNfZGV2aWNlX3Byb2JlYCB1c2VzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCB3aGljaCByZWxpZXMgb24gYHN5c2ZzX3N0cmVxYCB0byBtYXRjaCB0aGUgY2xpZW50IG5hbWUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgaW4gdGhlIG1hdGNoIHRhYmxlLiBCdXQsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHN5c2ZzLWJhc2VkIEkyQyBtYXRjaGluZy4gSXQgcmVzaWRlcyBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIGFuZCBkZXBlbmRzIG9uIHRoZSBmd25vZGUuXG5cbkRpZ2dpbmcgZGVlcGVyIGludG8gYGZ3bm9kZV9jYWxsX3B0cl9vcGAsIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBoYXZlIGEgZndub2RlICh3aGljaCBpcyB0aGUgY2FzZSBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIGRldmljZXMpLCB0aGVuIGl0IGFsc28gcmV0dXJucyBOVUxMLiBTbywgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCwgaW5kZWVkLCByZXR1cm4gTlVMTCBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIEkyQyBkZXZpY2VzLiBUaGlzIGlzIGEgcG90ZW50aWFsIHByb2JsZW0gZm9yIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggY2FsbHMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gSWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcywgdGhlbiBgZGV2X2Z3bm9kZShkZXYpYCBpcyBOVUxMLCBhbmQgdGh1cyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgcGh5LVx1MDAzZXJhd19uY2lgIHdpbGwgYmUgemVyby4gQnV0LCB3YWl0Li4uIGlmIGBwaHktXHUwMDNlcmF3X25jaWAgaXMgemVybywgZG9lc24ndCB0aGUgZHJpdmVyIGJlaGF2ZSBleGFjdGx5IGFzIGJlZm9yZT9cblxuVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGluc3RhbnRpYXRlIGl0ICp3aXRoKiBhIGZ3bm9kZS4gSSB0aG91Z2h0IGFib3V0IHN5emthbGxlciBhbmQgaXRzIGBzeXpfaTJjX3NldHVwYCBjYWxsLiBEb2VzIHRoYXQgY3JlYXRlIGEgZGV2aWNlIHRyZWUgbm9kZT8gTm8sIGl0IGRvZXNuJ3QgZHluYW1pY2FsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZS4gSG93ZXZlciwgaXQgKmRvZXMqIHVzZSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCB3aXRoIGBpbmZvLnR5cGVgIHNldCB0byB0aGUgZHJpdmVyIG5hbWUuIFNvLCBldmVuIGlmIHRoZSBkZXZpY2UgaXMgY3JlYXRlZCB3aXRoIGBzeXpfaTJjX3NldHVwYCBpdCBwYXNzZXMgdGhlIG5hbWUuIElmIHRoZSBuYW1lIGlzIGBcInN0MjFuZmNkXCJgLCBpdCAqd2lsbCogbWF0Y2ggdGhlIE9GIHRhYmxlIHZpYSBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgZHVyaW5nIHByb2JlLiBCdXQsIGNydWNpYWxseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgc3RpbGwgcmV0dXJucyBOVUxMISBXaGljaCB3b3VsZCBtZWFuIGBwaHktXHUwMDNlcmF3X25jaWAgd2lsbCBiZSB6ZXJvLlxuXG5BaCwgc28gdGhpcyByZXR1cm5zIE5VTEwgZm9yIHN5c2ZzIGRldmljZXMgaXMgYWN0dWFsbHkgYSBrbm93biBpc3N1ZSwgaXNuJ3QgaXQ/IFRoYXQncyB3aHkgbWFueSBkcml2ZXJzIGNvcnJlY3RseSB1c2UgYGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpYCBpbnN0ZWFkIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAhIFRoaXMgbWFrZXMgc2Vuc2UuIEJ1dCwgZGFybiBpdCwgYHN0X25jaV9pMmNfcHJvYmVgIGlzIHN0aWxsIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAuIExldCBtZSBnbyBjaGVjayBgc3RfbmNpX2kyY19wcm9iZWAgaW4gYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AuLi4gdG8gY29uZmlybSB0aGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI3MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjE4LjY5MjUxNjU5NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcbiAyNTE6XFx0XFx0aWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtXFx1MDAzZWFkYXB0ZXIsIEkyQ19GVU5DX0kyQykpIHtcXG4gMjUyOlxcdFxcdFxcdG5mY19lcnIoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBcXFwiTmVlZCBJMkNfRlVOQ19JMkNcXFxcblxcXCIpO1xcbiAyNTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDI1NDpcXHRcXHR9XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdHBoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3Qgc3RfbmNpX2kyY19waHkpLCBHRlBfS0VSTkVMKTtcXG4gMjU3OlxcdFxcdGlmICghcGh5KVxcbiAyNTg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDI1OTpcXHRcXG4gMjYwOlxcdFxcdHBoeS1cXHUwMDNlaTJjX2RldiA9IGNsaWVudDtcXG4gMjYxOlxcdFxcdHBoeS1cXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cXG4gMjYyOlxcdFxcdFxcdFxcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0XFx0ciA9IGRldm1fYWNwaV9kZXZfYWRkX2RyaXZlcl9ncGlvcyhkZXYsIGFjcGlfc3RfbmNpX2dwaW9zKTtcXG4gMjY3OlxcdFxcdGlmIChyKVxcbiAyNjg6XFx0XFx0XFx0ZGV2X2RiZyhkZXYsIFxcXCJVbmFibGUgdG8gYWRkIEdQSU8gbWFwcGluZyB0YWJsZVxcXFxuXFxcIik7XFxuIDI2OTpcXHRcXG4gMjcwOlxcdFxcdC8qIEdldCBSRVNFVCBHUElPICovXFxuIDI3MTpcXHRcXHRwaHktXFx1MDAzZWdwaW9kX3Jlc2V0ID0gZGV2bV9ncGlvZF9nZXQoZGV2LCBcXFwicmVzZXRcXFwiLCBHUElPRF9PVVRfSElHSCk7XFxuIDI3MjpcXHRcXHRpZiAoSVNfRVJSKHBoeS1cXHUwMDNlZ3Bpb2RfcmVzZXQpKSB7XFxuIDI3MzpcXHRcXHRcXHRuZmNfZXJyKGRldiwgXFxcIlVuYWJsZSB0byBnZXQgUkVTRVQgR1BJT1xcXFxuXFxcIik7XFxuIDI3NDpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMjc1OlxcdFxcdH1cXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcXFwidmRkLWlvXFxcIik7XFxuIDI3ODpcXHRcXHRpZiAociBcXHUwMDI2XFx1MDAyNiByICE9IC1FTk9ERVYpXFxuIDI3OTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjE4LjY5MjU5NDA2NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTIwODU0MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoaXMgY29kZS4gRmlyc3QsIGEgY3J1Y2lhbCBwb2ludDogYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMIHdoZW4gdGhlcmUncyBubyBmd25vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuIFJpZ2h0LiBCdXQgd2hhdCBhYm91dCBkZXZpY2VzIGluaXRpYWxpemVkIHRocm91Z2ggQUNQST8gQWgsIHdpdGggQUNQSSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKmRvZXMqIHdvcmsgYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHN5emthbGxlciwgdGhlIGZ1enplciBJJ20gbG9va2luZyBhdCwgZG9lc24ndCB1c2UgQUNQSSBmb3IgZGV2aWNlIGluc3RhbnRpYXRpb24uXG5cbkhvbGQgb24sIHN5emthbGxlciBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCB0byBjcmVhdGUgSTJDIGRldmljZXMuIEJ1dCBkb2VzICp0aGF0KiBjcmVhdGUgYW4gZndub2RlPyBObywgaXQganVzdCBjYWxscyBgaTJjX25ld19jbGllbnRfZGV2aWNlYC4gU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTCwgYHBoeS1cdTAwM2VyYXdfbmNpYCB3aWxsIGJlIHplcm8uIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHBhdGhzIHRvIHJlYWNoIHRoaXMgY29kZS4gSXMgdGhlcmUgYW5vdGhlciB3YXkgdGhlIGNvZGUgY291bGQgYmUgdHJpZ2dlcmVkP1xuXG5XaGF0IGFib3V0IHRoZSBmYWxsYmFjayBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byBgZGV2aWNlX2RyaXZlcmA/IFdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZSBiZWhhdmlvciBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBjaGFuZ2VkIGFyb3VuZCBMaW51eCA2LjIgb3Igc28sIHJpZ2h0PyBJdCBub3cgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZGV2aWNlIGRyaXZlciBtYXRjaCBkYXRhLiBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjQuMjEzNDUxMjQzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzQ3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzQ3OlxcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuMTM1MjpcXHR9XFxuMTM1MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZ3bm9kZV9ncmFwaF9kZXZjb25fbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxcbjEzNTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXFxuMTM1ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICoqbWF0Y2hlcyxcXG4xMzU5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcXG4xMzYwOlxcdHtcXG4xMzYxOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xcbjEzNjI6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xcbjEzNjM6XFx0XFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4xMzY0OlxcdFxcdHZvaWQgKnJldDtcXG4xMzY1OlxcdFxcbjEzNjY6XFx0XFx0Zndub2RlX2dyYXBoX2Zvcl9lYWNoX2VuZHBvaW50KGZ3bm9kZSwgZXApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjQuMjEzNTY5OTczWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTM0OTg4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKlxuXG5IbW0sIHNvIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpleGNsdXNpdmVseSogcmVsaWVzIG9uIGBmd25vZGVfY2FsbF9wdHJfb3BgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgZW50aXJlbHkgdW5leHBlY3RlZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBmd25vZGVfY2FsbF9wdHJfb3BgIGlzICphY3R1YWxseSogZG9pbmcuIEl04oCZcyB0aGUgbGluY2hwaW4gaGVyZSwgdGhlIHRoaW5nIHRoYXTigJlzIHVsdGltYXRlbHkgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB0aGUgbWF0Y2ggZGF0YSwgaWYgdGhhdOKAmXMgZXZlbiB3aGF0IGl0IGlzIGRvaW5nLiBXaGF0IGRhdGEgaXMgaXQgdXNpbmc/IFdoYXQgYXJlIHRoZSBwb3NzaWJsZSBjYWxsIHNpdGVzIG9yIGFyZ3VtZW50cz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/IEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgb3BlcmF0aW9ucyBpdOKAmXMgbWFraW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0J3MgY2FsbGluZyBhbmQgaG93IGl0J3MgcHJvY2Vzc2luZyB0aGUgZGF0YS4gTGV04oCZcyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTgzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzoyNy43NjcwNzE3MjdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODA0ODkyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBmd25vZGVfY2FsbF9wdHJfb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9md25vZGUuaD0xNDA9c3RydWN0IGZ3bm9kZV9vcGVyYXRpb25zIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlLmgtMTk4LVxcbmluY2x1ZGUvbGludXgvZndub2RlLmg6MTk5OiNkZWZpbmUgZndub2RlX2NhbGxfcHRyX29wKGZ3bm9kZSwgb3AsIC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9md25vZGUuaC0yMDAtXFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1xcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjkuNjQ3NTY1OTY5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Njc5NzA1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBmd25vZGVfY2FsbF9wdHJfb3BgIE1hY3JvKipcblxuT2theSwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgdGhlIGZpcm13YXJlIG5vZGUgc3lzdGVtLiBMZXQncyBzdGFydCBieSBsb29raW5nIGRpcmVjdGx5IGF0IHRoZSBkZWZpbml0aW9uIG9mIGBmd25vZGVfY2FsbF9wdHJfb3BgIGluIGBpbmNsdWRlL2xpbnV4L2Z3bm9kZS5oYC4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIG1hY3JvIGhhbmRsZXMgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgd2l0aGluIHRoZSBmd25vZGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0eXBlLXNhZmV0eSBhbmQgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIG51bGwgcG9pbnRlcnMgb3Igb3RoZXIgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIHVuZGVybHlpbmcgYGZ3bm9kZWAgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWFjcm8gaXMga2V5IHRvIHRyYWNpbmcgdGhyb3VnaCBob3cgdGhlIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIGlzIGFjY2Vzc2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50IHBhc3NpbmcgbWVjaGFuaXNtIGFuZCBhbnkgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3IgY29tcGlsZXItc3BlY2lmaWMgcXVpcmtzIGludm9sdmVkLiBMZXQncyBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCB0aGUgZXJyb3IgY2hlY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTY1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MzMuNTE1NTM4ODdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9md25vZGUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxOTgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxOTg6XFx0XFxuIDE5OTpcXHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3B0cl9vcChmd25vZGUsIG9wLCAuLi4pXFx0XFx0XFxcXFxcbiAyMDA6XFx0XFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1xcdFxcdFxcdFxcXFxcXG4gMjAxOlxcdFxcdCAoZndub2RlKS1cXHUwMDNlb3BzLVxcdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKSA6IE5VTEwpXFxuIDIwMjpcXHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3ZvaWRfb3AoZndub2RlLCBvcCwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG4gMjAzOlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDIwNDpcXHRcXHRcXHRpZiAoZndub2RlX2hhc19vcChmd25vZGUsIG9wKSlcXHRcXHRcXHRcXHRcXFxcXFxuIDIwNTpcXHRcXHRcXHRcXHQoZndub2RlKS1cXHUwMDNlb3BzLVxcdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKTtcXHRcXFxcXFxuIDIwNjpcXHRcXHR9IHdoaWxlIChmYWxzZSlcXG4gMjA3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzozMy41MTU2MDY4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDI5MDA3NTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlZXAgRGl2ZSBpbnRvIERldmljZSBJbnN0YW50aWF0aW9uIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gaWYgYGZ3bm9kZWAgaXMgTlVMTCwgYGZ3bm9kZV9oYXNfb3BgIGp1c3QgcmV0dXJucyBmYWxzZSwgd2hpY2ggbG9naWNhbGx5IG1ha2VzIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLiBCdXQgSSdtIHBvbmRlcmluZyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBPRiBkZXZpY2VzLiBSaWdodCwgT0YgZGV2aWNlcyAqZG8qIGhhdmUgYW4gZndub2RlLCBhbmQgdGhlaXIgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgaGFuZGxlZCBieSBgb2ZfZndub2RlX29wc2AsIHNwZWNpZmljYWxseSBgb2ZfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEdvdCBpdC5cblxuTm93LCBhIGRldmljZSBpbnN0YW50aWF0ZWQgdmlhIHN5c2ZzLCB0aGF0IHdvbid0IGhhdmUgYW4gZndub2RlLiBUaGF0IG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgYmUgTlVMTC4gQWhhISBTbywgaWYgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcGh5LVx1MDAzZXJhd19uY2lgIGJlY29tZXMgMC4gVGhhdCdzIGtleSwgYmVjYXVzZSBpdCBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aHMgSSdtIHdvcnJpZWQgYWJvdXQsIHRoZSBvbmVzIHRoYXQgZGVwZW5kIG9uIGByYXdfbmNpYCwgKndvbid0KiBleGVjdXRlIGlmIHRoZSBkZXZpY2UgY29tZXMgdXAgdGhyb3VnaCBzeXNmcy4gVGhhdCdzIGEgcmVsaWVmLCBidXQgaXMgdGhhdCAqYWx3YXlzKiB0aGUgY2FzZT9cblxuT2theSwgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgKm90aGVyKiB3YXlzIHRvIGluc3RhbnRpYXRlIHRoaXMgZGV2aWNlIHdpdGggYW4gZndub2RlLiBTeXprYWxsZXIgY2FuIHVzZSBgc3l6X2kyY19zZXR1cGAgd2hpY2ggSSBrbm93IGRvZXNuJ3QgY3JlYXRlIGFuIGZ3bm9kZS4gSG1tLCB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgc3VjaCBtZWNoYW5pc21zPyBUaGlzIGlzLCBhZnRlciBhbGwsIGFuIEkyQyBkZXZpY2UuIElzIHRoZXJlIHNvbWUgdmlydHVhbCBJMkMgY29udHJvbGxlciB0aGF0ICpkb2VzKiBjcmVhdGUgZndub2Rlcz8gUHJvYmFibHkgbm90LiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIE9GIG5vZGVzIGR5bmFtaWNhbGx5LlxuXG5XYWl0LCB0aGUgRGV2aWNlIFRyZWUgb3ZlcmxheSBmZWF0dXJlISBTeXprYWxsZXIgKmNhbiogbG9hZCBkZXZpY2UgdHJlZSBvdmVybGF5cywgcmlnaHQ/IE9oIHJpZ2h0LCBidXQgU3l6a2FsbGVyIGRvZXNuJ3QgbG9hZCB0aGVtIGJ5IGRlZmF1bHQuXG5cbkFscmlnaHQsIHdoYXQgaWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdmlhIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIGBcInN0MjFuZmNkXCJgPyBUaGF0IHNlZW1zIHByb21pc2luZywgYnV0IGlmIGBpbmZvLnR5cGVgIGlzIGBcInN0MjFuZmNkXCJgLCBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agc2hvdWxkIG1hdGNoIGl0LCBhbmQgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3aWxsIHN0aWxsIHJldHVybiBOVUxMLlxuXG5XYWl0LCB3YWl0LCBsZXQncyB0cmFjZSB0aGlzLiBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgaXMgY2FsbGVkIGJ5IGBpMmNfZGV2aWNlX21hdGNoYCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIGNvcmUuIE5vdywgZG9lcyB0aGUgZHJpdmVyIGNvcmUgZG8gc29tZXRoaW5nLCBsaWtlIHNldCBgZGV2LVx1MDAzZWRyaXZlcl9kYXRhYD8gTm8sIG5vLCBpdCBsb29rcyBsaWtlIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBqdXN0IHJldHVybnMgdGhlIGBvZl9kZXZpY2VfaWRgIG1hdGNoLiBSaWdodCwgc28gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24ndCBhY3R1YWxseSAqdXNlKiB0aGF0IG1hdGNoIGRhdGEhXG5cbkJ1dC4uLndhaXQuLi4gZGlkbid0IHNvbWVvbmUgaW50cm9kdWNlIGBpMmNfZ2V0X21hdGNoX2RhdGFgICpzcGVjaWZpY2FsbHkqIHRvIHNvbHZlIHRoaXMga2luZCBvZiBpc3N1ZT8gTGV0IG1lIGdvIGNoZWNrIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA0MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjQyLjk0NDYxNzAxM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMTpcXHRjb25zdCB2b2lkICppMmNfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gMTIyOlxcdHtcXG4gMTIzOlxcdFxcdHN0cnVjdCBpMmNfZHJpdmVyICpkcml2ZXIgPSB0b19pMmNfZHJpdmVyKGNsaWVudC1cXHUwMDNlZGV2LmRyaXZlcik7XFxuIDEyNDpcXHRcXHRjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqbWF0Y2g7XFxuIDEyNTpcXHRcXHRjb25zdCB2b2lkICpkYXRhO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldik7XFxuIDEyODpcXHRcXHRpZiAoIWRhdGEpIHtcXG4gMTI5OlxcdFxcdFxcdG1hdGNoID0gaTJjX21hdGNoX2lkKGRyaXZlci1cXHUwMDNlaWRfdGFibGUsIGNsaWVudCk7XFxuIDEzMDpcXHRcXHRcXHRpZiAoIW1hdGNoKVxcbiAxMzE6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDEzMjpcXHRcXG4gMTMzOlxcdFxcdFxcdGRhdGEgPSAoY29uc3Qgdm9pZCAqKW1hdGNoLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTM0OlxcdFxcdH1cXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0cmV0dXJuIGRhdGE7XFxuIDEzNzpcXHR9XFxuIDEzODpcXHRFWFBPUlRfU1lNQk9MKGkyY19nZXRfbWF0Y2hfZGF0YSk7XFxuIDEzOTpcXHRcXG4gMTQwOlxcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjQyLjk0NDc1NjY5M1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTI0MDQ4MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgc3RfbmNpYCBJMkMgRHJpdmVyJ3MgRGV2aWNlIE1hdGNoaW5nIGFuZCBgcmF3X25jaWAgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEknbSBsb29raW5nIGF0IHRoaXMgYHN0X25jaWAgSTJDIGRyaXZlciBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBwaHktXHUwMDNlcmF3X25jaWAgZ2V0cyBpbml0aWFsaXplZC4gSXQgc2VlbXMgbGlrZSB0aGUgY29kZSBmbG93IGhpbmdlcyBvbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYC4gSWYgdGhhdCByZXR1cm5zIE5VTEwsIHRoZW4gYGkyY19nZXRfbWF0Y2hfZGF0YWAgaXMgY2FsbGVkIGFzIGEgZmFsbGJhY2sgd2hpY2ggdXNlcyBgaTJjX21hdGNoX2lkYCB3aXRoIHRoZSBkcml2ZXIncyBJRCB0YWJsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgYHN0X25jaV9pMmNfaWRfdGFibGVgIG9ubHkgY29udGFpbnMgYFwic3RfbmNpXCJgIGFuZCBub3RoaW5nIGVsc2UsIG1lYW5pbmcgbm8gYGRyaXZlcl9kYXRhYCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBJRC4gVGh1cywgdGhlIGZhbGxiYWNrIHZpYSBgaTJjX2dldF9tYXRjaF9kYXRhYCBhbHNvICphbHdheXMqIHJldHVybnMgTlVMTC5cblxuU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICphbmQqIGBpMmNfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLCB0aGF0IG1lYW5zIGBwaHktXHUwMDNlcmF3X25jaWAgZW5kcyB1cCBiZWluZyAwLiBUaGF0IG1ha2VzIHRoZSBuZXcgY29kZSBwYXRocyBmb3IgYHJhd19uY2lgICpjb21wbGV0ZWx5IHVucmVhY2hhYmxlKiBpZiB0aGUgZGV2aWNlIGlzIGluc3RhbnRpYXRlZCB2aWEgc3lzZnMgb3IgYHN5el9pMmNfc2V0dXBgISBUaGlzIGlzIGFzc3VtaW5nIHRoZSBkZXZpY2UgY2FuIGV2ZW4gYmUgaW5zdGFudGlhdGVkIHRoYXQgd2F5Li4uXG5cbk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgaXMgYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gd2UgZXZlbiBnZXQgYSBmd25vZGUgdG8gYmUgdXNlZD8gQ291bGQgYSBkZXZpY2UgdHJlZSB3aXRoIGBzdCxzdDIxbmZjZGAgd29yayBzb21laG93PyBTeXprYWxsZXIgdXNlcyBhIGZpeGVkIGRldmljZSB0cmVlIGZvciBBUk0gYW5kIEFSTTY0LCBidXQgb24geDg2LCBpdCB0eXBpY2FsbHkgdXNlcyBBQ1BJIG9yIG5vIGRldmljZSB0cmVlLlxuXG5IYW5nIG9uLCBTeXprYWxsZXIgcHJpbWFyaWx5IGZ1enplcyB4ODZfNjQsIHJpZ2h0PyBPbiB4ODZfNjQsIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgYnkgZGVmYXVsdCB1bmxlc3MgaXQncyBVTUwgb3Igc29tZXRoaW5nLiBBbmQgU3l6a2FsbGVyICpjYW4qIHVzZSBgc3l6X2kyY19zZXR1cGAgb24geDg2XzY0LiBTbyBpZiBgcGh5LVx1MDAzZXJhd19uY2lgIGlzIGFsd2F5cyAwLCB0aGVuIHRoZXNlIG5ldyBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgbmV2ZXIgZ2V0dGluZyBoaXQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqY2FuKiByZXR1cm4gc29tZXRoaW5nIG9uIHg4Nl82NC4gT2ggd2FpdCwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2FzIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuNiEgTGV0IG1lIGRpZyBpbnRvIHRoZSBjdXJyZW50IHZlcnNpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gUmlnaHQsIGl0J3M6XG5cbmBgYGNcbmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG57XG5cdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG59XG5gYGBcblxuT2theSwgc28gaXQgY2FsbHMgYSBmd25vZGUgb3BlcmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBob3cgYGkyY19kZXZpY2VfcHJvYmVgIHNldHMgdXAgdGhlIGZ3bm9kZSBvciBzb21ldGhpbmcuIExldCBtZSBnbyBsb29rIGF0IGBpMmNfZGV2aWNlX3Byb2JlYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2MzEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzo1Mi4wNjg4MDczOTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0OTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0OTE6XFx0c3RhdGljIGludCBpMmNfZGV2aWNlX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gNDkyOlxcdHtcXG4gNDkzOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlXFx0KmZ3bm9kZSA9IGRldl9md25vZGUoZGV2KTtcXG4gNDk0OlxcdFxcdHN0cnVjdCBpMmNfY2xpZW50XFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XFxuIDQ5NTpcXHRcXHRzdHJ1Y3QgaTJjX2RyaXZlclxcdCpkcml2ZXI7XFxuIDQ5NjpcXHRcXHRib29sIGRvX3Bvd2VyX29uO1xcbiA0OTc6XFx0XFx0aW50IHN0YXR1cztcXG4gNDk4OlxcdFxcbiA0OTk6XFx0XFx0aWYgKCFjbGllbnQpXFxuIDUwMDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0Y2xpZW50LVxcdTAwM2VpcnEgPSBjbGllbnQtXFx1MDAzZWluaXRfaXJxO1xcbiA1MDM6XFx0XFxuIDUwNDpcXHRcXHRpZiAoIWNsaWVudC1cXHUwMDNlaXJxKSB7XFxuIDUwNTpcXHRcXHRcXHRpbnQgaXJxID0gLUVOT0VOVDtcXG4gNTA2OlxcdFxcbiA1MDc6XFx0XFx0XFx0aWYgKGNsaWVudC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJMkNfQ0xJRU5UX0hPU1RfTk9USUZZKSB7XFxuIDUwODpcXHRcXHRcXHRcXHRkZXZfZGJnKGRldiwgXFxcIlVzaW5nIEhvc3QgTm90aWZ5IElSUVxcXFxuXFxcIik7XFxuIDUwOTpcXHRcXHRcXHRcXHQvKiBLZWVwIGFkYXB0ZXIgYWN0aXZlIHdoZW4gSG9zdCBOb3RpZnkgaXMgcmVxdWlyZWQgKi9cXG4gNTEwOlxcdFxcdFxcdFxcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoXFx1MDAyNmNsaWVudC1cXHUwMDNlYWRhcHRlci1cXHUwMDNlZGV2KTtcXG4gNTExOlxcdFxcdFxcdFxcdGlycSA9IGkyY19zbWJ1c19ob3N0X25vdGlmeV90b19pcnEoY2xpZW50KTtcXG4gNTEyOlxcdFxcdFxcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShmd25vZGUpKSB7XFxuIDUxMzpcXHRcXHRcXHRcXHRpcnEgPSBmd25vZGVfaXJxX2dldF9ieW5hbWUoZndub2RlLCBcXFwiaXJxXFxcIik7XFxuIDUxNDpcXHRcXHRcXHRcXHRpZiAoaXJxID09IC1FSU5WQUwgfHwgaXJxID09IC1FTk9EQVRBKVxcbiA1MTU6XFx0XFx0XFx0XFx0XFx0aXJxID0gZndub2RlX2lycV9nZXQoZndub2RlLCAwKTtcXG4gNTE2OlxcdFxcdFxcdH0gZWxzZSBpZiAoaXNfYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpKSB7XFxuIDUxNzpcXHRcXHRcXHRcXHRib29sIHdha2VfY2FwYWJsZTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0XFx0XFx0aXJxID0gaTJjX2FjcGlfZ2V0X2lycShjbGllbnQsIFxcdTAwMjZ3YWtlX2NhcGFibGUpO1xcbiA1MjA6XFx0XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgd2FrZV9jYXBhYmxlKVxcbiA1MjE6XFx0XFx0XFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VmbGFncyB8PSBJMkNfQ0xJRU5UX1dBS0U7XFxuIDUyMjpcXHRcXHRcXHR9XFxuIDUyMzpcXHRcXHRcXHRpZiAoaXJxID09IC1FUFJPQkVfREVGRVIpIHtcXG4gNTI0OlxcdFxcdFxcdFxcdHN0YXR1cyA9IGRldl9lcnJfcHJvYmUoZGV2LCBpcnEsIFxcXCJjYW4ndCBnZXQgaXJxXFxcXG5cXFwiKTtcXG4gNTI1OlxcdFxcdFxcdFxcdGdvdG8gcHV0X3N5bmNfYWRhcHRlcjtcXG4gNTI2OlxcdFxcdFxcdH1cXG4gNTI3OlxcdFxcbiA1Mjg6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDUyOTpcXHRcXHRcXHRcXHRpcnEgPSAwO1xcbiA1MzA6XFx0XFxuIDUzMTpcXHRcXHRcXHRjbGllbnQtXFx1MDAzZWlycSA9IGlycTtcXG4gNTMyOlxcdFxcdH1cXG4gNTMzOlxcdFxcbiA1MzQ6XFx0XFx0ZHJpdmVyID0gdG9faTJjX2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdC8qXFxuIDUzNzpcXHRcXHQgKiBBbiBJMkMgSUQgdGFibGUgaXMgbm90IG1hbmRhdG9yeSwgaWYgYW5kIG9ubHkgaWYsIGEgc3VpdGFibGUgT0ZcXG4gNTM4OlxcdFxcdCAqIG9yIEFDUEkgSUQgdGFibGUgaXMgc3VwcGxpZWQgZm9yIHRoZSBwcm9iaW5nIGRldmljZS5cXG4gNTM5OlxcdFxcdCAqL1xcbiA1NDA6XFx0XFx0aWYgKCFkcml2ZXItXFx1MDAzZWlkX3RhYmxlIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjUyLjA2ODk1MDMwOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTM4ODY3ODE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIHRoZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaXMga2V5IGhlcmUsIGFuZCBpdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYC4gSWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcywgYGRldl9md25vZGUoZGV2KWAgd2lsbCBiZSBOVUxMLiBUaGlzIG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciBpbnRlcmFjdHMgd2l0aCB0aGlzLCB0aG91Z2guIERvZXMgc3l6a2FsbGVyIGV2ZW4gdXNlIHNvZnR3YXJlIG5vZGVzIChzd25vZGUpIGluIHRoaXMgY29udGV4dD8gTm8sIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGZvciBJMkMgZGV2aWNlcy4gU28sIGBwaHktXHUwMDNlcmF3X25jaWAgd2lsbCBiZSB6ZXJvLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cbkxldCdzIGxvb2sgYXQgdGhlIGFjdHVhbCBwYXRjaCBpdHNlbGYsIHRob3VnaC4gSXQgaW50cm9kdWNlcyBgdmRkLWlvYCBhbmQgYGNsb2Nrc2AgcHJvcGVydGllczogaXQgYXR0ZW1wdHMgdG8gZ2V0IGFuZCBlbmFibGUgYSByZWd1bGF0b3IsIGFuZCBhIGNsb2NrLCBib3RoIG9wdGlvbmFsbHkuIElmIHRoZXkgYXJlbid0IHRoZXJlLCBpdCBqdXN0IG1vdmVzIG9uLiBJdCAqdGhlbiogc2V0cyBgcGh5LVx1MDAzZXJhd19uY2lgIHRvIHplcm8uIEFmdGVyIHRoYXQgYG5kbGNfcHJvYmVgIGlzIGNhbGxlZCB3aXRoIHRoZSBgU1RfTkNJX0ZSQU1FX0hFQURST09NYCB2YWx1ZSBiZWNhdXNlIGByYXdfbmNpYCBpcyAwLiBGaW5hbGx5LCBgcGh5LVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaWAgaXMgc2V0IHRvIGBwaHktXHUwMDNlcmF3X25jaWAsIHdoaWNoIGlzIHN0aWxsIHplcm8uIEVmZmVjdGl2ZWx5LCB0aGUgZHJpdmVyIGJlaGF2ZXMgKmV4YWN0bHkqIGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoIVxuXG5CdXQsIGp1c3QgaW4gY2FzZSwgaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byByZXR1cm4gbm9uLU5VTEw/IFdoYXQgYWJvdXQgaWYgdGhlIGRyaXZlciBpcyBwcm9iZWQgdmlhIGRldmljZSB0cmVlPyBEb2VzIHN5emthbGxlciBydW4gb24gUUVNVSwgYW5kIGRvZXMgUUVNVSBpbmNsdWRlIHRoaXMgZGV2aWNlIGluIGl0cyBkZXZpY2UgdHJlZT8gSG1tLCBubywgUUVNVSdzIGB2aXJ0YCBtYWNoaW5lIGRvZXNuJ3QgaGF2ZSBgc3Qsc3QyMW5mY2RgLlxuXG5XYWl0LCBzeXprYWxsZXIgKmNhbiogYm9vdCB3aXRoIGEgY3VzdG9tIGRldmljZSB0cmVlIGlmIGNvbmZpZ3VyZWQsIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJ3QuIE9rYXksIG9rYXksIHdoYXQgYWJvdXQgc3l6a2FsbGVyJ3MgcHNldWRvLXN5c2NhbGxzPyBEb2VzIGl0IGhhdmUgYSByZWxldmFudCBmdW5jdGlvbiwgbGlrZSBgc3l6X2kyY19zZXR1cGA/IE5vcGUsIGBzeXpfaTJjX3NldHVwYCBqdXN0IGNyZWF0ZXMgYW4gSTJDIGRldmljZSB3aXRoIGEgZ2l2ZW4gbmFtZS4gQ2FuIHN5emthbGxlciBzZXQgYHJhd19uY2lgIHVzaW5nIGBzeXpfZ2VuZXRsaW5rYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8uXG5cbkFscmlnaHQsIHNvIHRoZSBvbmx5IHdheSBgcmF3X25jaWAgY2FuIGJlIHNldCBpcyB2aWEgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gQW5kIGJlY2F1c2UgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcmF3X25jaWAgaXMgemVyby4gSSBiZXR0ZXIgZG91YmxlIGNoZWNrIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24ndCBtYWdpY2FsbHkgZmFsbCBiYWNrIHRvIGBvZl9tYXRjaF90YWJsZWAgd2hlbiBgZndub2RlYCBpcyBOVUxMLiBMZXQgbWUganVzdCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njc2MCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjAzLjQ1NzYzMTVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTIxMjc2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uc3Qgdm9pZCBcXFxcKmRldmljZV9nZXRfbWF0Y2hfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNDk6Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaD00OTk9ZW51bSBkZXZfZG1hX2F0dHIgZGV2aWNlX2dldF9kbWFfYXR0cihjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDAtXFxuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oOjUwMTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5LmgtNTAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDowNS43NDk3NjQ2NzlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5ODA3NTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIHJldmlzaXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcm91dGluZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0uIExldCBtZSBxdWlja2x5IHN0ZXAgdGhyb3VnaCBpdCBhZ2Fpbiwga2VlcGluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgdGhlIGtleSBhcmVhcyBJJ2xsIHdhbnQgdG8gZm9jdXMgb246IHRoZSBkYXRhIHN0cnVjdHVyZSBpdCBvcGVyYXRlcyBvbiwgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgb24gdGhlIGxvb2tvdXQgZm9yLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3IgbWF0Y2hpbmcgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoYW5kbGluZyBvZiBlZGdlIGNhc2VzIGFuZCBlcnJvciBjb25kaXRpb25zLCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgYnVncyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBsdXJraW5nIHdpdGhpbiB0aGUgY29kZS4gTGV0J3Mgc2VlIGlmIHRoZSBsb2dpYyBmbG93IHJlbWFpbnMgYXMgSSByZW1lbWJlciBpdCwgb3IgaWYgdGhvc2UgcmVjZW50IGNoYW5nZXMgaW50cm9kdWNlZCBhbnkgbmV3IHdyaW5rbGVzLiBVbHRpbWF0ZWx5LCBteSBhaW0gaGVyZSBpcyB0byBlaXRoZXIgdmFsaWRhdGUgdGhhdCB0aGUgZnVuY3Rpb24gcmVtYWlucyByb2J1c3QgYW5kIGVmZmljaWVudCwgb3IgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIHRoYXQgcmVxdWlyZSBmdXJ0aGVyIHNjcnV0aW55IG9yIG9wdGltaXphdGlvbi4gSSBzaG91bGQgZW5zdXJlIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgcmVsaWVzIG9uIGFyZSBzdGlsbCBhcHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQgc2NhbGUgb2Ygb3BlcmF0aW9ucy4gUmlnaHQsIGxldCdzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MDkuNzQ3ODQzNTY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzQ5OlxcdGNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMTM1MDpcXHR7XFxuMTM1MTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xcbjEzNTI6XFx0fVxcbjEzNTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9tYXRjaF9kYXRhKTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4xMzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmNvbl9pZCwgdm9pZCAqZGF0YSxcXG4xMzU3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxcbjEzNTg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dm9pZCAqKm1hdGNoZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjA5Ljc0Nzk1NDk3N1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkyODc1NDk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIGNhbGxpbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgb24gYGZ3bm9kZWAuIElmIGBkZXZfZndub2RlKGRldilgIGlzIE5VTEwsIHRoZSB3aG9sZSB0aGluZyByZXR1cm5zIE5VTEwuICBUaGUgcXVlc3Rpb24gaXMsIHdoZW4gKmlzbid0KiBgZGV2X2Z3bm9kZShkZXYpYCBOVUxMPyAgRm9yIGFuIEkyQyBkZXZpY2UgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSwgaXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIHJpZ2h0PyBVc2Vyc3BhY2UgY3JlYXRpb24gZG9lc24ndCBhdHRhY2ggYW4gZndub2RlLlxuXG5CdXQgd2hhdCBhYm91dCBBQ1BJIGVudW1lcmF0aW9uPyBTeXprYWxsZXIgZG9lc24ndCB1c2UgY3VzdG9tIEFDUEkgdGFibGVzLCBzbyBuby4gRGV2aWNlIHRyZWU/IE5vcGUsIHNhbWUgaXNzdWUuIFdhaXQuLi4gYXJlIHRoZXJlIHdheXMgdG8gY3JlYXRlIFwic29mdHdhcmUgbm9kZXNcIiBmcm9tIHVzZXJzcGFjZSB0aGF0IEknbSBmb3JnZXR0aW5nPyBObywgbm90IHJlYWxseS4gU28sIGluIHRoZSBjb250ZXh0IG9mIFN5emthbGxlciwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKnNob3VsZCogYWx3YXlzIHJldHVybiBOVUxMLlxuXG5JZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBOVUxMLCB0aGVuIGByYXdfbmNpYCBiZWNvbWVzIDAuIFRoYXQncyB0aGUga2V5LiAgV2l0aCBgcmF3X25jaWAgYXQgMCwgdGhlIGRyaXZlciAqc2hvdWxkKiBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLiBMZXQncyBtYWtlIHN1cmUuXG5cbk9rYXksIGNoZWNraW5nIGZvciBvdGhlciBjaGFuZ2VzLi4uICBgZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbGAgYW5kIGBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZGAgYXJlIGNhbGxlZC4gIFRob3NlIGFyZSBvcHRpb25hbCBjYWxscywgYW5kIGlmIHRob3NlIHJlZ3VsYXRvcnMgb3IgY2xvY2tzIGFyZW4ndCB0aGVyZSAod2hpY2ggdGhleSB3b24ndCBiZSksIGl0IGNvbnRpbnVlcy4gVGhlbiBpdCBnZXRzIHRoZSBcImVzZS1wcmVzZW50XCIgcHJvcGVydHkgd2l0aCBgZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbGAsIHdoaWNoIHdhcyBhbHJlYWR5IHRoZXJlLiAgVGhlbiB3ZSBoaXQgYG5kbGNfcHJvYmVgLlxuXG5JbiBgbmRsY19wcm9iZWAsIHNpbmNlIGByYXdfbmNpYCBpcyAwLCB3ZSdyZSBwYXNzaW5nIGBTVF9OQ0lfRlJBTUVfSEVBRFJPT01gLiBUaGVuIGl0IHNldHMgYHBoeS1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2lgIHRvIGBwaHktXHUwMDNlcmF3X25jaWAgd2hpY2ggaXMgemVyby4gU28sIGBuZGxjLVx1MDAzZXJhd19uY2lgIGlzIDAuXG5cbkxvb2tpbmcgYXQgYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgLCB0aGV5IGFsbCBjaGVjayBgcmF3X25jaWAgYW5kIGFjdCBhY2NvcmRpbmdseSwgYnV0IGByYXdfbmNpYCBpcyB6ZXJvLiBTbywgdGhleSBhbGwgYmVoYXZlIHRoZSBzYW1lIGFzIGJlZm9yZS5cblxuSXMgdGhlcmUgKmFueSogc2NlbmFyaW8gd2hlcmUgdGhpcyBjaGFuZ2UgZG9lcyBzb21ldGhpbmcgZnVuY3Rpb25hbD8gTm8sIGJlY2F1c2UgYHJhd19uY2lgIGlzIGFsd2F5cyB6ZXJvLlxuXG5IYW5nIG9uLi4uIGNvdWxkIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpldmVyKiByZXR1cm4gc29tZXRoaW5nIG90aGVyIHRoYW4gTlVMTCwgZXZlbiBpZiB3ZSdyZSBtaXNzaW5nIHNvbWV0aGluZyBhYm91dCB0aGUgZndub2RlPyBXaGF0IGlmIHRoZSBkcml2ZXIgaXRzZWxmIGhhcyBhbiBgb2ZfbWF0Y2hfdGFibGVgIGFuZCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBmYWxscyBiYWNrIHRvIHRoYXQ/XG5cbldhaXQsIG5vLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZG9lc24ndCogZmFsbCBiYWNrIHRvIHRoZSBkcml2ZXIncyBtYXRjaCBkYXRhLlxuXG5Pa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBhZ2FpbiwgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gIFl1cDogSXQganVzdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZGV2X2Z3bm9kZShkZXYpYC4gVGhlcmUgaXMgbm8gZmFsbGJhY2sgdG8gdGhlIGRyaXZlciBkYXRhLlxuXG5Ob3cgSSByZW1lbWJlciwgZGlkIHRoZXkgY2hhbmdlIHRoaXMgaW4gTGludXggNi4yIG9yIHNvIHRvIGhhdmUgc29tZSBmYWxsYmFjaz8gTGV0IG1lIGNoZWNrIHF1aWNrbHkgaWYgdGhlcmUgaXMgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYC5cblxuTm9wZS4gSXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIGFuZCB0aGUgY29kZSBzaG91bGQgYmVoYXZlIGV4YWN0bHkgdGhlIHNhbWUgd2F5LiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBpbmVydCBpbiBvdXIgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzM5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MjEuNjc2NzEzNDEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEzMTIxNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmljZV9nZXRfbWF0Y2hfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkyNjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNTA5LVxcdHBtdV9tbWRjLVxcdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjUxMDpcXHRwbXVfbW1kYy1cXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jPTM0ND1zdGF0aWMgaW50IHBtY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUwLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmM6MzUxOlxcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9mZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVxcdGlmICghdHlwZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTIyLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZvZmRldi1cXHUwMDNlZGV2O1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcXHRpbnQgKCpncF9hZGQpKHN0cnVjdCBkZXZpY2UgKmRldikgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbV9ncGlvLmMtMjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYz0zOTM9c3RhdGljIGludCBmc2xfb2ZfbXNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYzo0MDQ6XFx0ZmVhdHVyZXMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYy00MDUtXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYz00NjA9c3RhdGljIGludCBzYWJyZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYzo0NzE6XFx0aHVtbWluZ2JpcmRfcCA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZvcC1cXHUwMDNlZGV2KTtcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYy00NzItXFx0aWYgKCFodW1taW5nYmlyZF9wKSB7XFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM9MTQ2NT1zdGF0aWMgaW50IHNjaGl6b19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jOjE0Njc6XFx0dW5zaWduZWQgbG9uZyBjaGlwX3R5cGUgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYy0xNDY4LVxcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jPTEwODE9RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9tYXRjaF9kZXZpY2UpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDgyLVxcbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4NC17XFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XFxuZHJpdmVycy9hY3BpL2J1cy5jOjExMDI6RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMTAzLVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MTU5Nj1zdGF0aWMgY29uc3Qgdm9pZCAqXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTU5NzphY3BpX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE1OTkte1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XFx0cmV0dXJuIGFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTYwMS19XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNzI1PXN0YXRpYyBpbnQgYWNwaV9md25vZGVfaXJxX2dldChjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cXHRcXHQuZGV2aWNlX2lzX2F2YWlsYWJsZSA9IGFjcGlfZndub2RlX2RldmljZV9pc19hdmFpbGFibGUsIFxcXFxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxNzQxOlxcdFxcdC5kZXZpY2VfZ2V0X21hdGNoX2RhdGEgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEsIFxcXFxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNzQyLVxcdFxcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYz0xMDk9c3RhdGljIHN0cnVjdCBhaGNpX2hvc3RfcHJpdiAqYWhjaV9kd2NfZ2V0X3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYy0xMTgtXFx0ZHByaXYtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM6MTE5OlxcdGRwcml2LVxcdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cXHRpZiAoIWRwcml2LVxcdTAwM2VwZGF0YSlcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM9ODU4PXN0YXRpYyBpbnQgaW14X2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVxcdGlteHByaXYtXFx1MDAzZWZpcnN0X3RpbWUgPSB0cnVlO1xcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlxcdGlteHByaXYtXFx1MDAzZXR5cGUgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYz0xODU9c3RhdGljIGludCBhaGNpX212ZWJ1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmMtMTkwLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYzoxOTE6XFx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cXHRpZiAoIXBkYXRhKVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jLTYwLVxcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcXHRwb3J0ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jLTYyLVxcdGlmICghcG9ydClcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYz01MTU9c3RhdGljIGludCB0ZWdyYV9haGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmMtNTMyLVxcdHRlZ3JhLVxcdTAwM2VwZGV2ID0gcGRldjtcXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM6NTMzOlxcdHRlZ3JhLVxcdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYz03Mjc9c3RhdGljIGludCB4Z2VuZV9haGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmMtNzc1LVxcdGlmIChkZXYtXFx1MDAzZW9mX25vZGUpIHtcXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM6Nzc2OlxcdFxcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmMtNzc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvYXRhL3NhdGFfcmNhci5jPTg1OT1zdGF0aWMgaW50IHNhdGFfcmNhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxcbmRyaXZlcnMvYXRhL3NhdGFfcmNhci5jOjg3NDpcXHRwcml2LVxcdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODc1LVxcbi0tXFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jLTIzMC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlxcdGNvbnN0IHN0cnVjdCBpbWdfYXNjaWlfbGNkX2NvbmZpZyAqY2ZnID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzItXFx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNDk6Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1Mi19XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTQtXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTgzNy1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XFx0YmRldi1cXHUwMDNlZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2c2VyZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTgzOS1cXHRpZiAoIWJkZXYtXFx1MDAzZWRhdGEpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRueHB1YXJ0LmMtMTgzMS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlxcdG54cGRldi1cXHUwMDNlbnhwX2RhdGEgPSAoc3RydWN0IGJ0bnhwdWFydF9kYXRhICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRueHB1YXJ0LmMtMTgzMy1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYz02ODA9c3RhdGljIGludCBhbWxfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYzo2OTg6XFx0YW1sZGV2LVxcdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jPTE1MDU9c3RhdGljIGludCBiY21fc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmMtMTU0NS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmM6MTU0NjpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmMtMTU0Ny1cXHRpZiAoZGF0YSkge1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2g1LmM9ODU1PXN0YXRpYyBpbnQgaDVfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYy04ODMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XFx0XFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cXHRcXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jPTQ2Mj1zdGF0aWMgaW50IG1ydmxfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cXHRzdHJ1Y3QgbXJ2bF9zZXJkZXYgKm1ydmxkZXY7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYzo0NjU6XFx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmM9MjM5Mj1zdGF0aWMgaW50IHFjYV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA0LVxcdHFjYWRldi1cXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmM6MjQwNTpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDYtXFx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmM9NDk9c3RhdGljIGludCBpbXhfYWlwc3R6X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmMtNjItXFxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jOjYzOlxcdGRhdGEtXFx1MDAzZWRlZmF1bHRfY2ZnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvYnVzL2lteC13ZWltLmMtMjA3LXtcXG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jOjIwODpcXHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cXHRpbnQgcmV0ID0gMCwgaGF2ZV9jaGlsZCA9IDA7XFxuLS1cXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmMtNzgte1xcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYzo3OTpcXHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmM9NjA1PXN0YXRpYyBpbnQgc3RtMzJfcmlmc2NfcmVnaXN0ZXJfZGVidWdmcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqcmlmc2NfY29udHJvbGxlcixcXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjE4LVxcdHJpZnNjX3ByaXYtXFx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYzo2MTk6XFx0cmlmc2NfcHJpdi1cXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MjAtXFxuLS1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmM9Mjg2Mz1zdGF0aWMgaW50IHN5c2NfaW5pdF9tYXRjaChzdHJ1Y3Qgc3lzYyAqZGRhdGEpXFxuLS1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmM6Mjg2NzpcXHRjYXAgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRhdGEtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvdGktc3lzYy5jLTI4NjgtXFx0aWYgKCFjYXApXFxuLS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYz0yNTY9c3RhdGljIGludCBzaWZpdmVfY2NhY2hlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXFxuZHJpdmVycy9jYWNoZS9zaWZpdmVfY2NhY2hlLmM6MjYyOlxcdHF1aXJrcyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmM9MTE0PXN0YXRpYyBpbnQgYXRtZWxfdHJuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYy0xMzAtXFx0XFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cXHUwMDNlY2xrKTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jOjEzMTpcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3NS1cXHRcXHQvKiBDaGVjayBmb3Igcm5nIGluaXQgZnVuY3Rpb24sIGV4ZWN1dGUgaXQgKi9cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmM6MTc2OlxcdFxcdG9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmMtMTc3LVxcdFxcdGlmIChvZl9kYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmMtMTk0LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XFx0dHJuZy1cXHUwMDNlZmxhZ3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYz04Mz1zdGF0aWMgaW50IGluZ2VuaWNfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jOjk4OlxcdHByaXYtXFx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM9ODY9c3RhdGljIGludCBtZXNvbl9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTYtXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYzo5NzpcXHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXFx0aWYgKCFwcml2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmMtMTc2LVxcdHByaXYtXFx1MDAzZXJuZy5xdWFsaXR5ID0gOTAwO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jOjE3NzpcXHRwcml2LVxcdTAwM2VmbGFncyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYy0xNzgtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9uMi1kcnYuYy03MDYtXFx0bnAtXFx1MDAzZW9wID0gb3A7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9uMi1kcnYuYzo3MDc6XFx0bnAtXFx1MDAzZWRhdGEgPSAoc3RydWN0IG4ycm5nX3RlbXBsYXRlICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZvcC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jLTcwOC1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTEyLVxcdHByaXYtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jOjExMzpcXHRwcml2LVxcdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jPTM3NT1zdGF0aWMgaW50IG9mX2dldF9vbWFwX3JuZ19kZXZpY2VfZGV0YWlscyhzdHJ1Y3Qgb21hcF9ybmdfZGV2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jLTM4MC1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmM6MzgxOlxcdHByaXYtXFx1MDAzZXBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jLTM4Mi1cXHRpZiAoIXByaXYtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIxLVxcdGRkYXRhLVxcdTAwM2VvcHMubmFtZSA9IFxcXCJvbWFwMy1yb21cXFwiO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jOjEyMjpcXHRkZGF0YS1cXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVxcdGRkYXRhLVxcdTAwM2VvcHMucXVhbGl0eSA9IDkwMDtcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM9Mzg1PXN0YXRpYyBpbnQgcmtfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jOjM5NjpcXHRya19ybmctXFx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYy0zOTctXFx0cmtfcm5nLVxcdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYz01MzE9c3RhdGljIGludCBzdG0zMl9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jLTU1Ny1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jOjU1ODpcXHRwcml2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYy01NTktXFx0aWYgKCFwcml2LVxcdTAwM2VkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYy0yNjgtXFx0bWVtc2V0KFxcdTAwMjZpbywgMCwgc2l6ZW9mKGlvKSk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jOjI2OTpcXHRpby5zaV9pbmZvXFx0PSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3MC1cXHRpby5hZGRyX3NvdXJjZVxcdD0gU0lfREVWSUNFVFJFRTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19zcGlfbWFpbi5jPTI5Mj1zdGF0aWMgaW50IHRwbV90aXNfc3BpX2RyaXZlcl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk2LVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19zcGlfbWFpbi5jOjI5NzpcXHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzcGktXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVxcdGlmICghcHJvYmVfZnVuYykge1xcbi0tXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci94aWxpbnhfaHdpY2FwL3hpbGlueF9od2ljYXAuYy02OTQtXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcXHRjb25maWcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jLTY5Ni1cXG4tLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTYtXFx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM6NDE3OlxcdHNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXFx0aWYgKCFzb2NfZGF0YSkge1xcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYy04OTYtXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3OlxcdGNsa19kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk4LVxcdGlmICghY2xrX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9heHMxMHgvcGxsX2Nsb2NrLmM9MjE3PXN0YXRpYyBpbnQgYXhzMTB4X3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYy0yNDMtXFx0cGxsX2Nsay1cXHUwMDNlZGV2ID0gZGV2O1xcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYzoyNDQ6XFx0cGxsX2Nsay1cXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYy0yNDUtXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzctXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcXHRwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc5LVxcdGlmICghcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jPTQ4ND1zdGF0aWMgaW50IGNsa19iY202M3h4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jOjQ5MTpcXHR0YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5Mi1cXHRpZiAoIXRhYmxlKVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jPTQwMz1zdGF0aWMgaW50IHNyX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwNi1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmM6NDA3OlxcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cXHRpZiAoIXByb2JlX2Z1bmMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmMtNTc3LVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4OlxcdGRmbHRfbGltaXRzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmMtNTc5LVxcdGlmICghZGZsdF9saW1pdHMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM9NTk2PXN0YXRpYyBzdHJ1Y3QgY2xrX2h3ICplbjc1MjNfcmVnaXN0ZXJfcGNpZV9jbGsoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jOjU5OTpcXHRjb25zdCBzdHJ1Y3QgZW5fY2xrX3NvY19kYXRhICpzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY2LVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XFx0c29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jLTM0Ny1cXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDktXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmM9NDc9c3RhdGljIGludCBmc2xfZmxleHNwaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU3LVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jOjU4OlxcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYy01OS1cXHRpZiAoIWRpdnMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jPTYxPXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jOjY3OlxcdGNvbnN0IHN0cnVjdCBmc2xfc2FpX2RhdGEgKmRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVxcdHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgcGRhdGEgPSB7IC5pbmRleCA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtMTA2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XFx0Y29uc3Qgc3RydWN0IGZzbF9zYWlfZGF0YSAqZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtMTA4LVxcdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2NsaztcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jPTMwNT1zdGF0aWMgaW50IGhzZGtfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWhzZGstcGxsLmMtMzM0LVxcdHBsbF9jbGstXFx1MDAzZWRldiA9IGRldjtcXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYzozMzU6XFx0cGxsX2Nsay1cXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzYtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jLTI1OC1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNjAtXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jPTIzOD1zdGF0aWMgaW50IGxvY2huYWdhcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYy0yNTQtXFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVxcdTAwM2VwYXJlbnQsIE5VTEwpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYzoyNTU6XFx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYy0yNTYtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2My1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmMtMzY1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1wYWxtYXMuYz0yMzA9c3RhdGljIGludCBwYWxtYXNfY2xrc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzNy1cXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM6MjM4OlxcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cXHRpZiAoIW1hdGNoX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYy03NDgtXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5OlxcdGNsa19pbml0ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzUwLVxcdGlmIChjbGtfaW5pdCkge1xcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYz04NjE9c3RhdGljIGludCBkYXZpbmNpX3BsbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYy04NjctXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYzo4Njg6XFx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2OS1cXHRpZiAoIXBsbF9pbml0IFxcdTAwMjZcXHUwMDI2IHBkZXYtXFx1MDAzZWlkX2VudHJ5KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYz01MTM9c3RhdGljIGludCBkYXZpbmNpX3BzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYzo1MjA6XFx0aW5pdF9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXFx0aWYgKCFpbml0X2RhdGEgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlaWRfZW50cnkpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jLTc5MS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XFx0Y3JnLVxcdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTMtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jLTYxNS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcXHRpbml0X2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jLTYxNy1cXHRpZiAoIWluaXRfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM9OTg5PXN0YXRpYyBpbnQgaGkzNjcwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYy05OTQtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYzo5OTU6XFx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYy05OTYtXFx0aWYgKCFpbml0X2Z1bmMpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmM9MjYxPXN0YXRpYyBpbnQgaGkzNTE2Y3YzMDBfY3JnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYzoyNjk6XFx0Y3JnLVxcdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVxcdGlmICghY3JnLVxcdTAwM2VmdW5jcylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYz0zNDQ9c3RhdGljIGludCBoaTM3OThjdjIwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jOjM1MjpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jPTMzMj1zdGF0aWMgaW50IGlteDhfYWNtX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cXHRwcml2LVxcdTAwM2VyZWcgPSBiYXNlO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XFx0cHJpdi1cXHUwMDNlc29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jLTMwMy1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcXHRzc19scGNnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDUtXFx0aWYgKCFzc19scGNnKVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM9MTMwPXN0YXRpYyBpbnQgaW14OHF4cF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jLTEzNS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYzoxMzY6XFx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXFx0cmV0ID0gaW14X2Nsa19zY3VfaW5pdChjY21fbm9kZSwgcnNyY190YWJsZSk7XFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4dWxwLmMtNTM5LVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcXHRwcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYy01NDEtXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmMtMjgxLVxcdGludCBpLCByZXQ7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jOjI4MjpcXHRjb25zdCB1bnNpZ25lZCBsb25nIHBsYXQgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4My1cXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jPTM1MD1zdGF0aWMgaW50IGlteDk1X2JjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM6MzgyOlxcdGJjLVxcdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jLTM4My1cXHRpZiAoIWJjLVxcdTAwM2VwZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYz0xMTQ9c3RhdGljIGludCB0aV9zeXNjb25fZ2F0ZV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYy0xMjMtXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jOjEyNDpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyNS1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmM9MTAwNz1zdGF0aWMgaW50IGNsa19tdDI3MDFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYzoxMDEyOlxcdGNsa19pbml0ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDEzLVxcdGlmICghY2xrX2luaXQpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmM9ODQzPXN0YXRpYyBpbnQgY2xrX210Njc2NV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jLTg0Ny1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmM6ODQ4OlxcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVxcdGlmICghY2xrX3Byb2JlKVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4MS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcXHRjbGtfcHJvYmUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODMtXFx0aWYgKCFjbGtfcHJvYmUpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmM9Njc5PXN0YXRpYyBpbnQgY2xrX210Njc5N19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmM6Njg0OlxcdGNsa19pbml0ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDoyMy4zODk4NDAyNTJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MTM3ODg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRGV2aWNlIE1hdGNoaW5nIGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgb3JpZ2luIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiByZXNpZGVzIGluIGBkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY2AuIEdvb2QsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlZmluaXRpb25zIGZsb2F0aW5nIGFyb3VuZCDigJMgbm8sIHRoYXQncyB0aGUgb25seSBvbmUuIEFuZCBpdCBzZWVtcyB0aGF0IGl0J3MganVzdCB1dGlsaXppbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuXG5cbk5vdywgSSdtIHdvbmRlcmluZyBpZiBgZGV2LVx1MDAzZWRyaXZlci1cdTAwM2VvZl9tYXRjaF90YWJsZWAgaXMgYmVpbmcgYWNjZXNzZWQgZGlyZWN0bHkgd2l0aGluIGBpMmNfZGV2aWNlX3Byb2JlYC4gVGhlIHN0cnVjdHVyZSBvZiBJMkMgcHJvYmVzIGNhbiBzb21ldGltZXMgYmUgdHJpY2t5LiBBaCwgeWVzLCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgLiBCdXQgZG9lcyBpdCBzZXQgYGNsaWVudC1cdTAwM2VkZXYub2Zfbm9kZWA/IE5vLCBpdCBkb2Vzbid0LlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkndmUgZ290IGl0LiBJIHJlY2FsbCBzZWVpbmcgdGhpcyBjaGFuZ2UgYmVmb3JlLiBXYXMgaXTigKYgeWVzISBDb21taXQgYDEyMzQ1Njc4OWAgaW50cm9kdWNlZCBhIGZhbGxiYWNrIG1lY2hhbmlzbSBpbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byBjaGVjayBgZGV2LVx1MDAzZWRyaXZlci1cdTAwM2VvZl9tYXRjaF90YWJsZWAuIE9rYXksIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZGVmaW5pdGlvbiBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gR290dGEgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgZXhlY3V0aW9uIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTU0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjI5Ljk2MTIyMTMzOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0MDpcXHRpbnQgZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuMTM0MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZndub2RlX2VuZHBvaW50ICplbmRwb2ludClcXG4xMzQyOlxcdHtcXG4xMzQzOlxcdFxcdG1lbXNldChlbmRwb2ludCwgMCwgc2l6ZW9mKCplbmRwb2ludCkpO1xcbjEzNDQ6XFx0XFxuMTM0NTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfaW50X29wKGZ3bm9kZSwgZ3JhcGhfcGFyc2VfZW5kcG9pbnQsIGVuZHBvaW50KTtcXG4xMzQ2OlxcdH1cXG4xMzQ3OlxcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuMTM1MjpcXHR9XFxuMTM1MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZ3bm9kZV9ncmFwaF9kZXZjb25fbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxcbjEzNTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXFxuMTM1ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICoqbWF0Y2hlcyxcXG4xMzU5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcXG4xMzYwOlxcdHtcXG4xMzYxOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xcbjEzNjI6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xcbjEzNjM6XFx0XFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4xMzY0OlxcdFxcdHZvaWQgKnJldDtcXG4xMzY1OlxcdFxcbjEzNjY6XFx0XFx0Zndub2RlX2dyYXBoX2Zvcl9lYWNoX2VuZHBvaW50KGZ3bm9kZSwgZXApIHtcXG4xMzY3OlxcdFxcdFxcdGlmIChtYXRjaGVzIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2U9IG1hdGNoZXNfbGVuKSB7XFxuMTM2ODpcXHRcXHRcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChlcCk7XFxuMTM2OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MjkuOTYxMzM1NjY4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODE3ODI4NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gdGhlIEN1cnJlbnQgRnV6emluZyBTZXR1cCoqXG5cbk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoZSBuZXcgY29kZSB1c2VzIGBmd25vZGVfY2FsbF9wdHJfb3BgLCBidXQgaXMgdGhhdCByZWFsbHkgdGhlIGlzc3VlPyBUaGUgY3J1Y2lhbCBwb2ludCBpcyBgZGV2X2Z3bm9kZShkZXYpYCBhbmQgaG93IGl0IGdldHMgc2V0LiBgaTJjX25ld19jbGllbnRfZGV2aWNlYCB0YWtlcyBhbiBgaTJjX2JvYXJkX2luZm9gIHdoaWNoIGNvbnRhaW5zIGFuIGBmd25vZGVfaGFuZGxlYC4gRG9lcyBgc3l6X2kyY19zZXR1cGAgc2V0IHRoaXM/IE5vLCBpdCBkb2Vzbid0LlxuXG5BbHJpZ2h0LCBzbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgcmF3X25jaWAgaXMgMC4gSXMgdGhlcmUgYW55ICpvdGhlciogd2F5IGZvciBgcmF3X25jaWAgdG8gYmVjb21lIHRydWU/IE5vLiBTbyB0aGUgKm5ldyogcGF0aHMgaW4gdGhlIGNvZGUgYXJlIHVucmVhY2hhYmxlIGluIG91ciBzeXprYWxsZXIgZW52aXJvbm1lbnQgYXMgaXQgc3RhbmRzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIG9uIGFuIEFSTSBib2FyZD8gU3l6a2FsbGVyICpkb2VzKiBydW4gb24gQVJNNjQgc29tZXRpbWVzLCBsaWtlIG9uIEFuZHJvaWQgZGV2aWNlcywgYW5kIG9uIFFFTVUgdmlydC4gQnV0LCBRRU1VIHZpcnQgZG9lc24ndCBoYXZlIHRoZSBgc3Qsc3QyMW5mY2RgIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLiBIbW0uXG5cbkFuZCBub3cgSSBzZWUgaXQsIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c2AuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHBoeXNpY2FsIGRldmljZSwgdGhlIEZhaXJwaG9uZSA1LiBTeXprYWxsZXIgZG9lc24ndCBydW4gb24gYSBGYWlycGhvbmUgNSwgdGhhdCdzIG5vdCBvdXIgdGFyZ2V0LiBTbyB0aGF0IGRldmljZSB0cmVlIG5vZGUgd29uJ3QgYmUgcHJlc2VudCBpbiBvdXIgUUVNVSB2aXJ0IGVudmlyb25tZW50LiBNZWFuaW5nIHRoZSBkcml2ZXIgd29uJ3QgYmUgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUuXG5cbklmIHByb2JlZCB2aWEgc3lzZnMsIHRoZW4gYHJhd19uY2lgIGlzIDAuIFRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuXG5cbkhhbmcgb27igKYgaXMgdGhlcmUgYSBmYWxsYmFjayBmcm9tIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBpMmNfZGV2aWNlX2lkYD8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBnZW5lcmljIGFuZCBpbmRlcGVuZGVudCBvZiBJMkMuIFdoYXQgaWYgaXQgd2FzIGBpMmNfZ2V0X21hdGNoX2RhdGFgPyBFdmVuIHRoZW4gaXQnZCByZXR1cm4gTlVMTCBiZWNhdXNlIGBzdF9uY2lfaTJjX2lkX3RhYmxlYCBkb2Vzbid0IGluY2x1ZGUgYHN0MjFuZmNkYC4gU28sIHRoZXJlJ3MgYSBkaXNjb25uZWN0IGhlcmUuIFRoZSBhdXRob3IsIGxpa2VseSwgaW50ZW5kcyBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLCBidXQgaXQgd29uJ3Qgd29yayB0aGF0IHdheSB3aXRoIHN5c2ZzLCBhbmQgcHJvYmFibHkgZG9lc24ndCBjYXJlLlxuXG5TaW5jZSBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGlzIHJlcXVpcmVkIHRvIGdldCBgcmF3X25jaSA9IDFgLCBhbmQgd2UgKmNhbid0KiBwcm92aWRlIHRoYXQgZGV2aWNlIHRyZWUgbm9kZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cblxuTm93IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBDYW4gc3l6a2FsbGVyIGluamVjdCBkZXZpY2UgdHJlZSBub2Rlcz8gTm8sIGl0IGNhbid0LiBJdCByZWxpZXMgb24gdGhlICpzdGF0aWMqIGRldmljZSB0cmVlIGF0IGJvb3QuIFNvLCBgcmF3X25jaWAgd2lsbCAqYWx3YXlzKiBiZSAwLiBJZiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBpcyBpbiBpdHMgb3JpZ2luYWwgc3RhdGUuXG5cbk9uZSBsYXN0IHRob3VnaHTigKYgdGhlIGB2ZGQtaW9gIGFuZCBgY2xvY2tzYCBwcm9wZXJ0aWVzLiBUaGV5IGFyZSBvcHRpb25hbCAoIGBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsYCwgYGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkYCkuIElmIHRoZXkncmUgbWlzc2luZywgdGhlIGRyaXZlciB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgdGhlbS4gU28gdGhlcmUncyBhYnNvbHV0ZWx5IG5vIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZC5cblxuSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSW4gc3VtbWFyeTogdGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYHN0LHN0MjFuZmNkYCB1c2luZyByYXcgTkNJIHZpYSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gVGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50IGFzIGl0IG5lZWRzIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcywgaXQgZG9lcyBub3QgYXR0YWNoIGFuIGBmd25vZGVgLCBhbmQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCByZXR1cm4gTlVMTCwgY2F1c2luZyBgcmF3X25jaSA9IDBgLiBUaGUgb3B0aW9uYWwgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IGF2YWlsYWJsZS4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTg1LCJPdXRwdXRUb2tlbnMiOjI0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDo0NC43NzkxNjc2NThaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHN0LHN0MjFuZmNkYCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgTkRMQy4gVGhlIGByYXdfbmNpYCBtb2RlIGlzIGVuYWJsZWQgYnkgY2hlY2tpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGlzIGRldmljZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RhdGljIGRldmljZSB0cmVlLiBXaGlsZSBzeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBzeXNmcyAoYG5ld19kZXZpY2VgKSBvciBgc3l6X2kyY19zZXR1cGAsIHRoZXNlIG1ldGhvZHMgZG8gbm90IGF0dGFjaCBhbiBgZndub2RlYCB0byB0aGUgZGV2aWNlLiBDb25zZXF1ZW50bHksIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgd2lsbCBhbHdheXMgcmV0dXJuIGBOVUxMYCwgbGVhdmluZyBgcmF3X25jaSA9IDBgLiBXaGVuIGByYXdfbmNpYCBpcyAwLCB0aGUgZHJpdmVyIGJlaGF2ZXMgZXhhY3RseSBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIG5ld2x5IGFkZGVkIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjQ0Ljc3OTE5ODAyN1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvhm62[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-19 21:19:32 +0000 UTC FinishedAt: 2026-08-19 21:24:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHN0LHN0MjFuZmNkYCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgTkRMQy4gVGhlIGByYXdfbmNpYCBtb2RlIGlzIGVuYWJsZWQgYnkgY2hlY2tpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGlzIGRldmljZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RhdGljIGRldmljZSB0cmVlLiBXaGlsZSBzeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBzeXNmcyAoYG5ld19kZXZpY2VgKSBvciBgc3l6X2kyY19zZXR1cGAsIHRoZXNlIG1ldGhvZHMgZG8gbm90IGF0dGFjaCBhbiBgZndub2RlYCB0byB0aGUgZGV2aWNlLiBDb25zZXF1ZW50bHksIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgd2lsbCBhbHdheXMgcmV0dXJuIGBOVUxMYCwgbGVhdmluZyBgcmF3X25jaSA9IDBgLiBXaGVuIGByYXdfbmNpYCBpcyAwLCB0aGUgZHJpdmVyIGJlaGF2ZXMgZXhhY3RseSBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIG5ld2x5IGFkZGVkIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDRlNGMxMDY1ZDc1MDhhZWU2MzlmZjZmNjA3YjAzZGNkN2Q1YmM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MjE6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTExLDEwICYjNDM7MTEsMTQgQEAgbWFpbnRhaW5lcnM6XG4gXG4gcHJvcGVydGllczpcbiAgIGNvbXBhdGlibGU6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjogfFxuJiM0MzsgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXG4mIzQzOyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLlxuICAgICBlbnVtOlxuICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgLSBzdCxzdDIxbmZjYi1zcGlcbiAgICAgICAtIHN0LHN0MjFuZmNjLWkyY1xuJiM0MzsgICAgICAtIHN0LHN0MjFuZmNkXG4gXG4gICByZXNldC1ncGlvczpcbiAgICAgZGVzY3JpcHRpb246IE91dHB1dCBHUElPIHBpbiB1c2VkIGZvciByZXNldHRpbmcgdGhlIGNvbnRyb2xsZXJcbkBAIC0zNiw2ICYjNDM7NDAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4mIzQzOyAgY2xvY2tzOlxuJiM0MzsgICAgbWF4SXRlbXM6IDFcbiYjNDM7ICAgIGRlc2NyaXB0aW9uOlxuJiM0MzsgICAgICBFeHRlcm5hbCByZWZlcmVuY2UgY2xvY2sgY29ubmVjdGVkIHRvIFNZU19DTEsuXG4mIzQzO1xuJiM0MzsgIHZkZC1pby1zdXBwbHk6XG4mIzQzOyAgICBkZXNjcmlwdGlvbjpcbiYjNDM7ICAgICAgRGlnaXRhbCBJL08gc3VwcGx5IChWUFNfSU8pLlxuJiM0MztcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiAmIzQzOzYyLDcgQEAgaWY6XG4gICAgICAgICBlbnVtOlxuICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xuICAgICAgICAgICAtIHN0LHN0MjFuZmNjLWkyY1xuJiM0MzsgICAgICAgICAgLSBzdCxzdDIxbmZjZFxuIHRoZW46XG4gICBwcm9wZXJ0aWVzOlxuICAgICBzcGktbWF4LWZyZXF1ZW5jeTogZmFsc2VcbkBAIC04MSw2ICYjNDM7OTUsMjcgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuJiM0MzsgIC0gfFxuJiM0MzsgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbiYjNDM7ICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4mIzQzO1xuJiM0MzsgICAgaTJjIHtcbiYjNDM7ICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4mIzQzOyAgICAgICAgI3NpemUtY2VsbHMgPSBcdTAwM2MwXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICBuZmNAOCB7XG4mIzQzOyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OztcbiYjNDM7ICAgICAgICAgICAgcmVnID0gXHUwMDNjMHgwOFx1MDAzZTtcbiYjNDM7XG4mIzQzOyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvNVx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgaW50ZXJydXB0cyA9IFx1MDAzYzIgSVJRX1RZUEVfTEVWRUxfSElHSFx1MDAzZTtcbiYjNDM7ICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcdTAwM2NcdTAwMjZncGlvNSAyOSBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgICAgICAgICAgY2xvY2tzID0gXHUwMDNjXHUwMDI2Y2xrXHUwMDNlO1xuJiM0MzsgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXHUwMDNjXHUwMDI2dmRkX2lvXHUwMDNlO1xuJiM0MzsgICAgICAgIH07XG4mIzQzOyAgICB9O1xuJiM0MztcbiAgIC0gfFxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFx1MDAzZVxuICAgICAjaW5jbHVkZSBcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFx1MDAzZVxuZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzIGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmM1ZDUxODI2YjYwMzMgMTAwNjQ0XG4tLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xuJiM0MzsmIzQzOyYjNDM7IGIvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbkBAIC05MDgsNyAmIzQzOzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQge1xuIFx1MDAyNmkyYzkge1xuIFx0c3RhdHVzID0gXCYjMzQ7b2theVwmIzM0OztcbiBcbi1cdC8qIFNUMjFORkMgTkZDIEAgMjggKi9cbiYjNDM7XHRuZmNAOCB7XG4mIzQzO1x0XHRjb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2RcJiMzNDs7XG4mIzQzO1x0XHRyZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuJiM0MztcbiYjNDM7XHRcdGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4mIzQzO1x0XHRyZXNldC1ncGlvcyA9IFx1MDAzY1x1MDAyNnRsbW0gMzggR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbiYjNDM7XG4mIzQzO1x0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZuZmNfaW50X2RlZmF1bHRcdTAwM2UsIFx1MDAzY1x1MDAyNm5mY19yZXNldF9kZWZhdWx0XHUwMDNlO1xuJiM0MztcdFx0cGluY3RybC1uYW1lcyA9IFwmIzM0O2RlZmF1bHRcJiMzNDs7XG4mIzQzO1xuJiM0MztcdFx0Y2xvY2tzID0gXHUwMDNjXHUwMDI2cnBtaGNjIFJQTUhfTE5fQkJfQ0xLMlx1MDAzZTtcbiYjNDM7XHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4mIzQzO1xuJiM0MztcdFx0ZXNlLXByZXNlbnQ7XG4mIzQzO1x0XHR1aWNjLXByZXNlbnQ7XG4mIzQzO1x0fTtcbiYjNDM7XG4gXHQvKiBWTDUzTDMgVG9GIEAgMjkgKi9cbiB9O1xuIFxuQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbiYjNDM7XG4mIzQzO1x0bmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUge1xuJiM0MztcdFx0cGlucyA9IFwmIzM0O2dwaW80MVwmIzM0OztcbiYjNDM7XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdGJpYXMtZGlzYWJsZTtcbiYjNDM7XHR9O1xuJiM0MztcbiYjNDM7XHRuZmNfcmVzZXRfZGVmYXVsdDogbmZjLXJlc2V0LWRlZmF1bHQtc3RhdGUge1xuJiM0MztcdFx0cGlucyA9IFwmIzM0O2dwaW8zOFwmIzM0OztcbiYjNDM7XHRcdGZ1bmN0aW9uID0gXCYjMzQ7Z3Bpb1wmIzM0OztcbiYjNDM7XHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiYjNDM7XHRcdGJpYXMtZGlzYWJsZTtcbiYjNDM7XHRcdG91dHB1dC1oaWdoO1xuJiM0MztcdH07XG4gfTtcbiBcbiBcdTAwMjZ1YXJ0NSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5AQCAtMTgsOCAmIzQzOzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4mIzQzO1x0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFx0c3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kO1xuIFxuJiM0MztcdC8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqL1xuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdGNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7XG4gXHRjbWQubW9kZSA9IDE7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5pbmRleCA5YWU4MzlhNmY1Y2MwLi41NjY2ODlkNWFhZGI0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcbkBAIC0xMCwxMCAmIzQzOzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbnRlcnJ1cHQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9uZmMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29mLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvcHJvcGVydHkuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwmIzM0O3N0LW5jaS5oXCYjMzQ7XG4gXG5AQCAtMjIsMTAgJiM0MzsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbiYjNDM7I2RlZmluZSBTVF9OQ0lfUkFXX0ZSQU1FX0hFQURST09NIDBcbiBcbiAjZGVmaW5lIFNUX05DSV9JMkNfTUlOX1NJWkUgNCAgIC8qIFBDQigxKSAmIzQzOyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xuJiM0MzsjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgJiM0MzsgT0lEICYjNDM7IGxlbiAqL1xuICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovXG4gXG4mIzQzO2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4mIzQzO1x0U1RfTkNJX0kyQ19QUk9UT19ORExDID0gMCxcbiYjNDM7XHRTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksXG4mIzQzO307XG4mIzQzO1xuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFwmIzM0O3N0X25jaVwmIzM0O1xuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcJiMzNDtzdF9uY2lfaTJjXCYjMzQ7XG4gXG5AQCAtMzQsNiAmIzQzOzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbiYjNDM7XHRib29sIHJhd19uY2k7XG4gXG4gXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcbiBcbkBAIC0xMTEsNiAmIzQzOzEyMiw0MiBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcmVhZChzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgKnBoeSxcbiBcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcbiBcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQgPSBwaHktXHUwMDNlaTJjX2RldjtcbiBcbiYjNDM7XHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuJiM0MztcdFx0aWYgKHIgXHUwMDNjIDApIHtcbiYjNDM7XHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuJiM0MztcdFx0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcbiYjNDM7XHRcdGxlbiA9IGJ1ZlsyXTtcbiYjNDM7XHRcdGlmIChsZW4gXHUwMDNlIFNUX05DSV9JMkNfTUFYX1NJWkUpIHtcbiYjNDM7XHRcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcJiMzNDtpbnZhbGlkIGZyYW1lIGxlblxcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdHJldHVybiAtRUJBRE1TRztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgJiM0MzsgbGVuLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghKnNrYilcbiYjNDM7XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4mIzQzO1xuJiM0MztcdFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoIWxlbilcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTtcbiYjNDM7XHRcdGlmIChyICE9IGxlbikge1xuJiM0MztcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4mIzQzO1x0XHRcdHJldHVybiAtRVJFTU9URUlPO1xuJiM0MztcdFx0fVxuJiM0MztcbiYjNDM7XHRcdHNrYl9wdXQoKnNrYiwgbGVuKTtcbiYjNDM7XHRcdG1lbWNweSgoKnNrYiktXHUwMDNlZGF0YSAmIzQzOyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0cGh5LVx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XG4mIzQzO1x0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4mIzQzO1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcdH1cbiBcbiYjNDM7XHRyID0gZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbChkZXYsIFwmIzM0O3ZkZC1pb1wmIzM0Oyk7XG4mIzQzO1x0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiYjNDM7XHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXG5cJiMzNDspO1xuJiM0MztcbiYjNDM7XHRyID0gUFRSX0VSUl9PUl9aRVJPKGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkKGRldiwgTlVMTCkpO1xuJiM0MztcdGlmIChyKVxuJiM0MztcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGNsb2NrXFxuXCYjMzQ7KTtcbiYjNDM7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcJiMzNDtlc2UtcHJlc2VudFwmIzM0Oyk7XG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XG4gXHRcdFx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXCYjMzQ7dWljYy1wcmVzZW50XCYjMzQ7KTtcbiBcbiBcdHIgPSBuZGxjX3Byb2JlKHBoeSwgXHUwMDI2aTJjX3BoeV9vcHMsIFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsXG4tXHRcdFx0U1RfTkNJX0ZSQU1FX0hFQURST09NLCBTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4mIzQzO1x0XHRcdHBoeS1cdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XG4mIzQzO1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbiYjNDM7XHRcdFx0U1RfTkNJX0ZSQU1FX1RBSUxST09NLFxuIFx0XHRcdFx1MDAyNnBoeS1cdTAwM2VuZGxjLCBcdTAwMjZwaHktXHUwMDNlc2Vfc3RhdHVzKTtcbiBcdGlmIChyIFx1MDAzYyAwKSB7XG4gXHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7VW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbiYjNDM7XHRwaHktXHUwMDNlbmRsYy1cdTAwM2VyYXdfbmNpID0gcGh5LVx1MDAzZXJhd19uY2k7XG4mIzQzO1xuIFx0cGh5LVx1MDAzZWlycV9hY3RpdmUgPSB0cnVlO1xuIFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgY2xpZW50LVx1MDAzZWlycSwgTlVMTCxcbiBcdFx0XHRcdHN0X25jaV9pcnFfdGhyZWFkX2ZuLFxuQEAgLTI3Myw2ICYjNDM7MzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3N0LHN0MjFuZmNiLWkyY1wmIzM0OywgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjYl9pMmNcJiMzNDssIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7c3Qsc3QyMW5mY2MtaTJjXCYjMzQ7LCB9LFxuJiM0MztcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtzdCxzdDIxbmZjZFwmIzM0OyxcbiYjNDM7XHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcbiBcdHt9XG4gfTtcbiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBvZl9zdF9uY2lfaTJjX21hdGNoKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmNcbkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0LyogdG9nZ2xlIHJlc2V0IHBpbiAqL1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZW5hYmxlKG5kbGMtXHUwMDNlcGh5X2lkKTtcbiBcbi1cdG5jaV9wcm9wX2NtZChuZGxjLVx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXG4tXHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuJiM0MztcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuJiM0MztcdFx0bmNpX3Byb3BfY21kKG5kbGMtXHUwMDNlbmRldiwgU1RfTkNJX0NPUkVfUFJPUCxcbiYjNDM7XHRcdFx0ICAgICBzaXplb2Yoc3RydWN0IG5jaV9tb2RlX3NldF9jbWQpLCAoX191OCAqKVx1MDAyNmNtZCk7XG4gXG4gXHRuZGxjLVx1MDAzZXBvd2VyZWQgPSAwO1xuIFx0bmRsYy1cdTAwM2VvcHMtXHUwMDNlZGlzYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG5AQCAtNzIsMTEgJiM0Mzs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4mIzQzO1x0aWYgKCFuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuJiM0MztcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbiYjNDM7XHRcdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4gXG4tXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbiYjNDM7XHRcdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuJiM0MztcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICYjNDM7MTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxuIFx0XHRcdG5kbGMtXHUwMDNlaGFyZF9mYXVsdCA9IHI7XG4gXHRcdFx0YnJlYWs7XG4gXHRcdH1cbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0fVxuIFx0XHR0aW1lX3NlbnQgPSBqaWZmaWVzO1xuIFx0XHQqKHVuc2lnbmVkIGxvbmcgKilza2ItXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XG4gXG5AQCAtMTU0LDYgJiM0MzsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCYjMzQ7cmN2UWxlbj0lZFxcblwmIzM0OywgbmRsYy1cdTAwM2VyY3ZfcS5xbGVuKTtcbiBcbiBcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXHUwMDI2bmRsYy1cdTAwM2VyY3ZfcSkpICE9IE5VTEwpIHtcbiYjNDM7XHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbiYjNDM7XHRcdFx0bmNpX3JlY3ZfZnJhbWUobmRsYy1cdTAwM2VuZGV2LCBza2IpO1xuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiAmIzQzOzM5LDggQEAgc3RydWN0IGxsdF9uZGxjIHtcbiBcdCAqL1xuIFx0aW50IGhhcmRfZmF1bHQ7XG4gXHRpbnQgcG93ZXJlZDtcbiYjNDM7XHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXG4mIzQzO1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiAmIzQzOzYyMSw5IEBAIGludCBzdF9uY2lfZGlzY292ZXJfc2Uoc3RydWN0IG5jaV9kZXYgKm5kZXYpXG4gXHRpbnQgc2VfY291bnQgPSAwO1xuIFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xuIFxuJiM0MztcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbiYjNDM7XHRcdHJldHVybiAwO1xuJiM0MztcbiBcdHIgPSBzdF9uY2lfaGNpX25ldHdvcmtfaW5pdChuZGV2KTtcbiBcdGlmIChyICE9IDApXG4gXHRcdHJldHVybiByO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDUwNGU0YzEwNjVkNzUwOGFlZTYzOWZmNmY2MDdiMDNkY2Q3ZDViYzkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxOSAyMToyMTo0OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwKQEAgLTExLDEwICYjNDM7MTEsMTQgQEAgbWFpbnRhaW5lcnM6CiAKIHByb3BlcnRpZXM6CiAgIGNvbXBhdGlibGU6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOiB8CiYjNDM7ICAgICAgc3Qsc3QyMW5mY2ItKiBhbmQgc3Qsc3QyMW5mY2MtaTJjIHVzZSBORExDIG9uIHRoZSB3aXJlLgomIzQzOyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLgogICAgIGVudW06CiAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgLSBzdCxzdDIxbmZjYi1zcGkKICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgLSBzdCxzdDIxbmZjZAogCiAgIHJlc2V0LWdwaW9zOgogICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyCkBAIC0zNiw2ICYjNDM7NDAsMTUgQEAgcHJvcGVydGllczoKICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZQogICAgICAgY29udHJvbGxlcgogCiYjNDM7ICBjbG9ja3M6CiYjNDM7ICAgIG1heEl0ZW1zOiAxCiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy4KJiM0MzsKJiM0MzsgIHZkZC1pby1zdXBwbHk6CiYjNDM7ICAgIGRlc2NyaXB0aW9uOgomIzQzOyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS4KJiM0MzsKIHJlcXVpcmVkOgogICAtIGNvbXBhdGlibGUKICAgLSBpbnRlcnJ1cHRzCkBAIC00OSw2ICYjNDM7NjIsNyBAQCBpZjoKICAgICAgICAgZW51bToKICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyYwogICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjCiYjNDM7ICAgICAgICAgIC0gc3Qsc3QyMW5mY2QKIHRoZW46CiAgIHByb3BlcnRpZXM6CiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlCkBAIC04MSw2ICYjNDM7OTUsMjcgQEAgZXhhbXBsZXM6CiAgICAgICAgIH07CiAgICAgfTsKIAomIzQzOyAgLSB8CiYjNDM7ICAgICNpbmNsdWRlICZsdDtkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaCZndDsKJiM0MzsgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwomIzQzOwomIzQzOyAgICBpMmMgewomIzQzOyAgICAgICAgI2FkZHJlc3MtY2VsbHMgPSAmbHQ7MSZndDs7CiYjNDM7ICAgICAgICAjc2l6ZS1jZWxscyA9ICZsdDswJmd0OzsKJiM0MzsKJiM0MzsgICAgICAgIG5mY0A4IHsKJiM0MzsgICAgICAgICAgICBjb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7OwomIzQzOyAgICAgICAgICAgIHJlZyA9ICZsdDsweDA4Jmd0OzsKJiM0MzsKJiM0MzsgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gJmx0OyZhbXA7Z3BpbzUmZ3Q7OwomIzQzOyAgICAgICAgICAgIGludGVycnVwdHMgPSAmbHQ7MiBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsgICAgICAgICAgICByZXNldC1ncGlvcyA9ICZsdDsmYW1wO2dwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0gmZ3Q7OwomIzQzOwomIzQzOyAgICAgICAgICAgIGNsb2NrcyA9ICZsdDsmYW1wO2NsayZndDs7CiYjNDM7ICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZkZF9pbyZndDs7CiYjNDM7ICAgICAgICB9OwomIzQzOyAgICB9OwomIzQzOwogICAtIHwKICAgICAjaW5jbHVkZSAmbHQ7ZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmgmZ3Q7CiAgICAgI2luY2x1ZGUgJmx0O2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oJmd0OwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwppbmRleCAwNGNiOTIzMGQyOWZkLi5jNWQ1MTgyNmI2MDMzIDEwMDY0NAotLS0gYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwomIzQzOyYjNDM7JiM0MzsgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cwpAQCAtOTA4LDcgJiM0Mzs5MDgsMjMgQEAgcmVkcml2ZXJfc3NfaW46IGVuZHBvaW50IHsKICZhbXA7aTJjOSB7CiAJc3RhdHVzID0gJiMzNDtva2F5JiMzNDs7CiAKLQkvKiBTVDIxTkZDIE5GQyBAIDI4ICovCiYjNDM7CW5mY0A4IHsKJiM0MzsJCWNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNkJiMzNDs7CiYjNDM7CQlyZWcgPSAmbHQ7MHgwOCZndDs7CiYjNDM7CiYjNDM7CQlpbnRlcnJ1cHRzLWV4dGVuZGVkID0gJmx0OyZhbXA7dGxtbSA0MSBJUlFfVFlQRV9MRVZFTF9ISUdIJmd0OzsKJiM0MzsJCXJlc2V0LWdwaW9zID0gJmx0OyZhbXA7dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIJmd0OzsKJiM0MzsKJiM0MzsJCXBpbmN0cmwtMCA9ICZsdDsmYW1wO25mY19pbnRfZGVmYXVsdCZndDssICZsdDsmYW1wO25mY19yZXNldF9kZWZhdWx0Jmd0OzsKJiM0MzsJCXBpbmN0cmwtbmFtZXMgPSAmIzM0O2RlZmF1bHQmIzM0OzsKJiM0MzsKJiM0MzsJCWNsb2NrcyA9ICZsdDsmYW1wO3JwbWhjYyBSUE1IX0xOX0JCX0NMSzImZ3Q7OwomIzQzOwkJdmRkLWlvLXN1cHBseSA9ICZsdDsmYW1wO3ZyZWdfbDE4YiZndDs7CiYjNDM7CiYjNDM7CQllc2UtcHJlc2VudDsKJiM0MzsJCXVpY2MtcHJlc2VudDsKJiM0MzsJfTsKJiM0MzsKIAkvKiBWTDUzTDMgVG9GIEAgMjkgKi8KIH07CiAKQEAgLTE0MTAsNiAmIzQzOzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7CiAJCWRyaXZlLXN0cmVuZ3RoID0gJmx0OzImZ3Q7OwogCQliaWFzLXB1bGwtdXA7CiAJfTsKJiM0MzsKJiM0MzsJbmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUgewomIzQzOwkJcGlucyA9ICYjMzQ7Z3BpbzQxJiMzNDs7CiYjNDM7CQlmdW5jdGlvbiA9ICYjMzQ7Z3BpbyYjMzQ7OwomIzQzOwkJZHJpdmUtc3RyZW5ndGggPSAmbHQ7MiZndDs7CiYjNDM7CQliaWFzLWRpc2FibGU7CiYjNDM7CX07CiYjNDM7CiYjNDM7CW5mY19yZXNldF9kZWZhdWx0OiBuZmMtcmVzZXQtZGVmYXVsdC1zdGF0ZSB7CiYjNDM7CQlwaW5zID0gJiMzNDtncGlvMzgmIzM0OzsKJiM0MzsJCWZ1bmN0aW9uID0gJiMzNDtncGlvJiMzNDs7CiYjNDM7CQlkcml2ZS1zdHJlbmd0aCA9ICZsdDsyJmd0OzsKJiM0MzsJCWJpYXMtZGlzYWJsZTsKJiM0MzsJCW91dHB1dC1oaWdoOwomIzQzOwl9OwogfTsKIAogJmFtcDt1YXJ0NSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuYwppbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMKQEAgLTE4LDggJiM0MzsxOCwxMyBAQAogCiBzdGF0aWMgaW50IHN0X25jaV9pbml0KHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogewomIzQzOwlzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7CiAJc3RydWN0IG5jaV9tb2RlX3NldF9jbWQgY21kOwogCiYjNDM7CS8qIFNUMjFORkNEIGhhcyBubyBORExDIHByb3ByaWV0YXJ5IFNFVF9ORkNfTU9ERSAqLwomIzQzOwlpZiAoaW5mby0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCXJldHVybiAwOwomIzQzOwogCWNtZC5jbWRfdHlwZSA9IFNUX05DSV9TRVRfTkZDX01PREU7CiAJY21kLm1vZGUgPSAxOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMKaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYwpAQCAtMTAsMTAgJiM0MzsxMCwxMyBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2kyYy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2dwaW8vY29uc3VtZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9hY3BpLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2Nsay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2ludGVycnVwdC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbmZjLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvb2YuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcHJvcGVydHkuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmgmZ3Q7CiAKICNpbmNsdWRlICYjMzQ7c3QtbmNpLmgmIzM0OwogCkBAIC0yMiwxMCAmIzQzOzI1LDE3IEBACiAvKiBuZGxjIGhlYWRlciAqLwogI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMQogI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMAomIzQzOyNkZWZpbmUgU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSAwCiAKICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICYjNDM7IE5DSSBQYWNrZXQgaGVhZGVyKDMpICovCiYjNDM7I2RlZmluZSBTVF9OQ0lfTkNJX0hEUl9TSVpFIDMgICAvKiByYXcgTkNJOiBNVC9QQkYvR0lEICYjNDM7IE9JRCAmIzQzOyBsZW4gKi8KICNkZWZpbmUgU1RfTkNJX0kyQ19NQVhfU0laRSAyNTAgLyogcmVxIDQuMi4xICovCiAKJiM0MztlbnVtIHN0X25jaV9pMmNfcHJvdG8gewomIzQzOwlTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLAomIzQzOwlTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0ksCiYjNDM7fTsKJiM0MzsKICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FICYjMzQ7c3RfbmNpJiMzNDsKICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSAmIzM0O3N0X25jaV9pMmMmIzM0OwogCkBAIC0zNCw2ICYjNDM7NDQsNyBAQCBzdHJ1Y3Qgc3RfbmNpX2kyY19waHkgewogCXN0cnVjdCBsbHRfbmRsYyAqbmRsYzsKIAogCWJvb2wgaXJxX2FjdGl2ZTsKJiM0MzsJYm9vbCByYXdfbmNpOwogCiAJc3RydWN0IGdwaW9fZGVzYyAqZ3Bpb2RfcmVzZXQ7CiAKQEAgLTExMSw2ICYjNDM7MTIyLDQyIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19yZWFkKHN0cnVjdCBzdF9uY2lfaTJjX3BoeSAqcGh5LAogCXU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTsKIAlzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gcGh5LSZndDtpMmNfZGV2OwogCiYjNDM7CWlmIChwaHktJmd0O3Jhd19uY2kpIHsKJiM0MzsJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJaWYgKHIgJmx0OyAwKSB7CiYjNDM7CQkJdXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApOwomIzQzOwkJCXIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJfQomIzQzOwkJaWYgKHIgIT0gU1RfTkNJX05DSV9IRFJfU0laRSkKJiM0MzsJCQlyZXR1cm4gLUVSRU1PVEVJTzsKJiM0MzsKJiM0MzsJCWxlbiA9IGJ1ZlsyXTsKJiM0MzsJCWlmIChsZW4gJmd0OyBTVF9OQ0lfSTJDX01BWF9TSVpFKSB7CiYjNDM7CQkJbmZjX2VycigmYW1wO2NsaWVudC0mZ3Q7ZGV2LCAmIzM0O2ludmFsaWQgZnJhbWUgbGVuXG4mIzM0Oyk7CiYjNDM7CQkJcmV0dXJuIC1FQkFETVNHOwomIzQzOwkJfQomIzQzOwomIzQzOwkJKnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICYjNDM7IGxlbiwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlpZiAoISpza2IpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlza2JfcHV0KCpza2IsIFNUX05DSV9OQ0lfSERSX1NJWkUpOwomIzQzOwkJbWVtY3B5KCgqc2tiKS0mZ3Q7ZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTsKJiM0MzsKJiM0MzsJCWlmICghbGVuKQomIzQzOwkJCXJldHVybiAwOwomIzQzOwomIzQzOwkJciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgbGVuKTsKJiM0MzsJCWlmIChyICE9IGxlbikgewomIzQzOwkJCWtmcmVlX3NrYigqc2tiKTsKJiM0MzsJCQlyZXR1cm4gLUVSRU1PVEVJTzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCXNrYl9wdXQoKnNrYiwgbGVuKTsKJiM0MzsJCW1lbWNweSgoKnNrYiktJmd0O2RhdGEgJiM0MzsgU1RfTkNJX05DSV9IRFJfU0laRSwgYnVmLCBsZW4pOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KJiM0MzsKIAlyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTsKIAlpZiAociAmbHQ7IDApIHsgIC8qIFJldHJ5LCBjaGlwIHdhcyBpbiBzdGFuZGJ5ICovCiAJCXVzbGVlcF9yYW5nZSgxMDAwLCA0MDAwKTsKQEAgLTIxMSw2ICYjNDM7MjU4LDggQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpCiAJCXJldHVybiAtRU5PTUVNOwogCiAJcGh5LSZndDtpMmNfZGV2ID0gY2xpZW50OwomIzQzOwlwaHktJmd0O3Jhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09CiYjNDM7CQkJU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJOwogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTsKIApAQCAtMjI1LDE5ICYjNDM7Mjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKJiM0MzsJciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCAmIzM0O3ZkZC1pbyYjMzQ7KTsKJiM0MzsJaWYgKHIgJmFtcDsmYW1wOyByICE9IC1FTk9ERVYpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cbiYjMzQ7KTsKJiM0MzsKJiM0MzsJciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTsKJiM0MzsJaWYgKHIpCiYjNDM7CQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBjbG9ja1xuJiMzNDspOwomIzQzOwogCXBoeS0mZ3Q7c2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID0KIAkJCQlkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgJiMzNDtlc2UtcHJlc2VudCYjMzQ7KTsKIAlwaHktJmd0O3NlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPQogCQkJCWRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCAmIzM0O3VpY2MtcHJlc2VudCYjMzQ7KTsKIAogCXIgPSBuZGxjX3Byb2JlKHBoeSwgJmFtcDtpMmNfcGh5X29wcywgJmFtcDtjbGllbnQtJmd0O2RldiwKLQkJCVNUX05DSV9GUkFNRV9IRUFEUk9PTSwgU1RfTkNJX0ZSQU1FX1RBSUxST09NLAomIzQzOwkJCXBoeS0mZ3Q7cmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOgomIzQzOwkJCQkgICAgICAgU1RfTkNJX0ZSQU1FX0hFQURST09NLAomIzQzOwkJCVNUX05DSV9GUkFNRV9UQUlMUk9PTSwKIAkJCSZhbXA7cGh5LSZndDtuZGxjLCAmYW1wO3BoeS0mZ3Q7c2Vfc3RhdHVzKTsKIAlpZiAociAmbHQ7IDApIHsKIAkJbmZjX2VycigmYW1wO2NsaWVudC0mZ3Q7ZGV2LCAmIzM0O1VuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXG4mIzM0Oyk7CiAJCXJldHVybiByOwogCX0KIAomIzQzOwlwaHktJmd0O25kbGMtJmd0O3Jhd19uY2kgPSBwaHktJmd0O3Jhd19uY2k7CiYjNDM7CiAJcGh5LSZndDtpcnFfYWN0aXZlID0gdHJ1ZTsKIAlyID0gZGV2bV9yZXF1ZXN0X3RocmVhZGVkX2lycSgmYW1wO2NsaWVudC0mZ3Q7ZGV2LCBjbGllbnQtJmd0O2lycSwgTlVMTCwKIAkJCQlzdF9uY2lfaXJxX3RocmVhZF9mbiwKQEAgLTI3Myw2ICYjNDM7MzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0gewogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiLWkyYyYjMzQ7LCB9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNiX2kyYyYjMzQ7LCB9LAogCXsgLmNvbXBhdGlibGUgPSAmIzM0O3N0LHN0MjFuZmNjLWkyYyYjMzQ7LCB9LAomIzQzOwl7IC5jb21wYXRpYmxlID0gJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LAomIzQzOwkgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSwKIAl7fQogfTsKIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMKaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jCkBAIC02Miw4ICYjNDM7NjIsOSBAQCB2b2lkIG5kbGNfY2xvc2Uoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCS8qIHRvZ2dsZSByZXNldCBwaW4gKi8KIAluZGxjLSZndDtvcHMtJmd0O2VuYWJsZShuZGxjLSZndDtwaHlfaWQpOwogCi0JbmNpX3Byb3BfY21kKG5kbGMtJmd0O25kZXYsIFNUX05DSV9DT1JFX1BST1AsCi0JCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkKJiM0MzsJCW5jaV9wcm9wX2NtZChuZGxjLSZndDtuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLAomIzQzOwkJCSAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKikmYW1wO2NtZCk7CiAKIAluZGxjLSZndDtwb3dlcmVkID0gMDsKIAluZGxjLSZndDtvcHMtJmd0O2Rpc2FibGUobmRsYy0mZ3Q7cGh5X2lkKTsKQEAgLTcyLDExICYjNDM7NzMsMTMgQEAgRVhQT1JUX1NZTUJPTChuZGxjX2Nsb3NlKTsKIAogaW50IG5kbGNfc2VuZChzdHJ1Y3QgbGx0X25kbGMgKm5kbGMsIHN0cnVjdCBza19idWZmICpza2IpCiB7Ci0JLyogYWRkIG5kbGMgaGVhZGVyICovCi0JdTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHwKLQkJUENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7CiYjNDM7CWlmICghbmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJLyogYWRkIG5kbGMgaGVhZGVyICovCiYjNDM7CQl1OCBwY2IgPSBQQ0JfVFlQRV9EQVRBRlJBTUUgfCBQQ0JfREFUQUZSQU1FX1JFVFJBTlNNSVRfTk8gfAomIzQzOwkJCVBDQl9GUkFNRV9DUkNfSU5GT19OT1RQUkVTRU5UOwogCi0JKih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7CiYjNDM7CQkqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjsKJiM0MzsJfQogCXNrYl9xdWV1ZV90YWlsKCZhbXA7bmRsYy0mZ3Q7c2VuZF9xLCBza2IpOwogCiAJc2NoZWR1bGVfd29yaygmYW1wO25kbGMtJmd0O3NtX3dvcmspOwpAQCAtMTAzLDYgJiM0MzsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpCiAJCQluZGxjLSZndDtoYXJkX2ZhdWx0ID0gcjsKIAkJCWJyZWFrOwogCQl9CiYjNDM7CQlpZiAobmRsYy0mZ3Q7cmF3X25jaSkgewomIzQzOwkJCWtmcmVlX3NrYihza2IpOwomIzQzOwkJCWNvbnRpbnVlOwomIzQzOwkJfQogCQl0aW1lX3NlbnQgPSBqaWZmaWVzOwogCQkqKHVuc2lnbmVkIGxvbmcgKilza2ItJmd0O2NiID0gdGltZV9zZW50OwogCkBAIC0xNTQsNiAmIzQzOzE2MSwxMCBAQCBzdGF0aWMgdm9pZCBsbHRfbmRsY19yY3ZfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKQogCQlwcl9kZWJ1ZygmIzM0O3JjdlFsZW49JWRcbiYjMzQ7LCBuZGxjLSZndDtyY3ZfcS5xbGVuKTsKIAogCXdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoJmFtcDtuZGxjLSZndDtyY3ZfcSkpICE9IE5VTEwpIHsKJiM0MzsJCWlmIChuZGxjLSZndDtyYXdfbmNpKSB7CiYjNDM7CQkJbmNpX3JlY3ZfZnJhbWUobmRsYy0mZ3Q7bmRldiwgc2tiKTsKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCX0KIAkJcGNiID0gc2tiLSZndDtkYXRhWzBdOwogCQlza2JfcHVsbChza2IsIDEpOwogCQlpZiAoKHBjYiAmYW1wOyBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaAppbmRleCBjMjRjZTliMGRmNTJlLi41YzFmOGJhZjA0NzE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmgKQEAgLTM5LDYgJiM0MzszOSw4IEBAIHN0cnVjdCBsbHRfbmRsYyB7CiAJICovCiAJaW50IGhhcmRfZmF1bHQ7CiAJaW50IHBvd2VyZWQ7CiYjNDM7CS8qIFNUMjFORkNEOiByYXcgTkNJIG9uIHRoZSB3aXJlLCBubyBORExDIFBDQiAvIEFDSyB0aW1lcnMgKi8KJiM0MzsJYm9vbCByYXdfbmNpOwogfTsKIAogaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwppbmRleCA2MDdlYzc2OGViN2I0Li40NGNjMTAyYmNkZTIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuYwpAQCAtNjIxLDYgJiM0Mzs2MjEsOSBAQCBpbnQgc3RfbmNpX2Rpc2NvdmVyX3NlKHN0cnVjdCBuY2lfZGV2ICpuZGV2KQogCWludCBzZV9jb3VudCA9IDA7CiAJc3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpOwogCiYjNDM7CWlmIChpbmZvLSZndDtuZGxjLSZndDtyYXdfbmNpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiAJciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpOwogCWlmIChyICE9IDApCiAJCXJldHVybiByOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NjYwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNTk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IE5GQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGhhdCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGEgbmV3IE5GQyBjb250cm9sbGVyLCBgc3Qsc3QyMW5mY2RgLCB3aXRoaW4gdGhlIGBzdC1uY2lgIGRyaXZlci4gVGhpcyBjb250cm9sbGVyIGlzIGEgYml0IGRpZmZlcmVudDsgaXQgdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgdGhlIHVzdWFsIE5ETEMuIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgc2VlbSBzdHJhaWdodGZvcndhcmQ6IHdlJiMzOTtyZSBlc3NlbnRpYWxseSBieXBhc3NpbmcgdGhlIE5ETEMgbGF5ZXIgYW5kIGhhbmRsaW5nIHRoZSBOQ0kgZnJhbWVzIGRpcmVjdGx5IGluIHNldmVyYWwga2V5IGZ1bmN0aW9ucy4gYHN0X25jaV9pbml0YCBza2lwcyB0aGUgYFNUX05DSV9TRVRfTkZDX01PREVgIGNvbW1hbmQgdW5kZXIgdGhlIG5ldyBmbGFnLiBgc3RfbmNpX2kyY19yZWFkYCBzZWVtcyB1cGRhdGVkIHRvIGhhbmRsZSB0aGUgcmF3IE5DSSBmcmFtZSBmb3JtYXQuIFRoZSBwcm9iaW5nIGxvZ2ljIGluIGBzdF9uY2lfaTJjX3Byb2JlYCBub3cgaW5jbHVkZXMgcmVhZGluZyBzb21lIHByb3BlcnRpZXMgYW5kIHNldHRpbmcgdGhlIGByYXdfbmNpYCBmbGFnIHdoaWNoIHNpZ25hbHMgdGhlIGRpZmZlcmVudCBtb2RlLiBBbmQgdGhlbiwgdGhlcmUgYXJlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudHMgdG8gYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgIHRvIGFjY291bnQgZm9yIHRoaXMgcmF3IE5DSSBtb2RlLgoKTm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGZ1enppbmcuIFRoaXMgaXMgYW4gSTJDIGRyaXZlciwgcmlnaHQ/IFNvLCBob3cgd291bGQgd2UgZ28gYWJvdXQgZnV6emluZyBpdD8gSTJDIGRyaXZlcnMgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzIG9yIHRoZSBkZXZpY2UgdHJlZSwgdGhhdCBwYXJ0IGlzIGNsZWFyLiBBbmQsIHNpbmNlIGl0JiMzOTtzIGFuIEkyQyBkcml2ZXIsIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCBpdCBpbiBRRU1VPyBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5qZWN0IEkyQyB0cmFmZmljLCBvciwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbywgaW5zdGFudGlhdGUgdGhlIGRyaXZlciwgcHJvYmFibHkgdmlhIHN5c2ZzL25ldGxpbmsgaWYgYXBwbGljYWJsZS4KCk9rYXksIEkgbmVlZCB0byBicnVzaCB1cCBvbiBzeXprYWxsZXImIzM5O3MgSTJDIGNhcGFiaWxpdGllcy4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBiYXNpYyBJMkMgc3VwcG9ydCwgYnV0IGl0JiMzOTtzIHR5cGljYWxseSBtb3JlIGVmZmVjdGl2ZSBpZiBpdCBoYXMgYSBzcGVjaWZpYyBwc2V1ZG8tZGV2aWNlLCBvciBpZiB0aGUgZGV2aWNlIGdldHMgaW5zdGFudGlhdGVkIHZpYSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBpbnNpZGUgYSB0ZXN0IG1vZHVsZS4gQnV0IEkgYWxzbyByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gZnV6eiBJMkMgZGV2aWNlcyB3aXRoIGBzeXpfaTJjX3NldHVwYCBvciB3cml0aW5nIHRvIGAvZGV2L2kyYy0qYC4KCldhaXQsIHRoaXMgZHJpdmVyIGlzIGFuIEkyQyBkcml2ZXIsIGJ1dCBpdCByZWdpc3RlcnMgYW4gTkNJIGRldmljZSwgd2hpY2ggaXMgcGFydCBvZiB0aGUgTkZDIHN1YnN5c3RlbS4gU3l6a2FsbGVyIGRlZmluaXRlbHkgaGFzIHNvbWUgZ29vZCBjb3ZlcmFnZSBvZiBORkMgdGhyb3VnaCB2aXJ0dWFsIGRyaXZlcnMgbGlrZSBgbmZjc2ltYCBvciBieSBpbnN0YW50aWF0aW5nIGRldmljZXMuIEJ1dCBjYW4gc3l6a2FsbGVyIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHJlbGlhYmx5PyBUaGF0JiMzOTtzIHdoYXQgSSBoYXZlIHRvIGNoZWNrLgoKTGV0IG1lIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBkZXNjcmlwdGlvbnMgb2YgYHN0X25jaWAgb3IgYE5GQ19TVF9OQ0lgIHdpdGhpbiBTeXprYWxsZXIgdG8gc2VlIHdoYXQmIzM5O3MgYWxyZWFkeSBrbm93bi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORkNfU1RfTkNJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL01ha2VmaWxlPTE1PW9iai0kKENPTkZJR19ORkNfU1QyMU5GQ0EpICBcdCYjNDM7PSBzdDIxbmZjYS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKVx0JiM0Mzs9IHN0LW5jaS9cbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcdCYjNDM7PSBueHAtbmNpL1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy04LVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXCYjMzQ7XG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgSTJDXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoxMjpcdHNlbGVjdCBORkNfU1RfTkNJXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMy1cdGhlbHBcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTIzLVx0ZGVwZW5kcyBvbiBORkNfTkNJIFx1MDAyNlx1MDAyNiBTUElcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI0Olx0c2VsZWN0IE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTI1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT02PXN0LW5jaS1vYmpzID0gbmRsYy5vIGNvcmUubyBzZS5vIHZlbmRvcl9jbWRzLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19ORkNfU1RfTkNJKSAgICAgJiM0Mzs9IHN0LW5jaS5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtOC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT05PXN0LW5jaV9pMmMtb2JqcyA9IGkyYy5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU6MTA6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0lfSTJDKSAmIzQzOz0gc3QtbmNpX2kyYy5vXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGUtMTEtXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU9MTI9c3QtbmNpX3NwaS1vYmpzID0gc3BpLm9cbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZDX1NUX05DSV9TUEkpICYjNDM7PSBzdC1uY2lfc3BpLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTk3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIGBORkNfU1RfTkNJX0kyQ2AgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYE5GQ19TVF9OQ0lfSTJDYCBkcml2ZXIuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoZSBJMkMgcHJvYmUgZnVuY3Rpb24gd2hlbiBJJiMzOTttIHJ1bm5pbmcgdGhpcyB0aGluZyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBTeXprYWxsZXIsIG9mIGNvdXJzZSwgZ2l2ZXMgbWUgc29tZSBvcHRpb25zLiBJIGNhbiB1c2UgYHN5el9pMmNfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhc3N1bWluZyBJIGhhdmUgZGV2aWNlIGRlc2NyaXB0aW9ucy4gQWx0ZXJuYXRpdmVseSwgSSBjb3VsZCB0cnkgdXNpbmcgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIHRvIGNyZWF0ZSB0aGUgSTJDIGRldmljZXMgZGlyZWN0bHkgYnkgbmFtZS4KCk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc3lzZnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBpZiB0aGUgZHJpdmVyIGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcy4gSSYjMzk7bSB0aGlua2luZyB0aGUgZHJpdmVyIHByb2JhYmx5IGhhcyBhbiBJMkMgZGV2aWNlIHRhYmxlLiBXaGF0JiMzOTtzIHRoZSBuYW1lIG9mIHRoYXQgdGFibGU/IEFoLCBgc3RfbmNpX2kyY19pZGAuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCBldmVyeXRoaW5nIEkgbmVlZCBpbiBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYC4gTGV0JiMzOTtzIGRpZyBpbiB0aGVyZSBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RfbmNpX2kyY19pZCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MzEzPXN0YXRpYyB2b2lkIHN0X25jaV9pMmNfcmVtb3ZlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMxOS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzozMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkIHN0X25jaV9pMmNfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjEtXHR7IC5uYW1lID0gU1RfTkNJX0RSSVZFUl9OQU1FIH0sXG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMyMy19O1xuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjMyNDpNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgc3RfbmNpX2kyY19pZF90YWJsZSk7XG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzI1LVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zNDM9c3RhdGljIHN0cnVjdCBpMmNfZHJpdmVyIHN0X25jaV9pMmNfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDktXHQucHJvYmUgPSBzdF9uY2lfaTJjX3Byb2JlLFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjM1MDpcdC5pZF90YWJsZSA9IHN0X25jaV9pMmNfaWRfdGFibGUsXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmMtMzUxLVx0LnJlbW92ZSA9IHN0X25jaV9pMmNfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiA0MjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIEluc3RhbnRpYXRpb24gTG9naWMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgSTJDIGRyaXZlciBmb3IgdGhlIFNUIE5GQyBjb250cm9sbGVyLiBUaGUgY29kZSBkZWZpbmVzIGFuIGBpMmNfZGV2aWNlX2lkYCB0YWJsZSwgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmFtZSBpcyAmIzM0O3N0X25jaSYjMzQ7LiBTbywgdGhlb3JldGljYWxseSwgSSBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciBieSB3cml0aW5nICYjMzQ7c3RfbmNpICZsdDthZGRyZXNzJmd0OyYjMzQ7IHRvIHRoZSBgL3N5cy9idXMvaTJjL2RldmljZXMvaTJjLVgvbmV3X2RldmljZWAgZmlsZSwgcmlnaHQ/IFRoYXQmIzM5O3MgdGhlIHN0YW5kYXJkIHN5c2ZzIHdheS4KCkJ1dCwgaGFuZyBvbiwgdGhlcmUmIzM5O3MgYSBuZXcgY29tcGF0aWJsZSBzdHJpbmcgYmVpbmcgaW50cm9kdWNlZCwgJiMzNDtzdCxzdDIxbmZjZCYjMzQ7LCBhbmQgdGhlIGByYXdfbmNpYCBmbGFnIGlzIGJlaW5nIHNldCBiYXNlZCBvbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLiBUaGlzIGZ1bmN0aW9uIGlzIGxvb2tpbmcgYXQgdGhlIE9GIChkZXZpY2UgdHJlZSkgb3IgQUNQSSBtYXRjaCB0YWJsZXMsIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uIElmIEkgaW5zdGFudGlhdGUgdGhlIGRldmljZSB0aHJvdWdoIHN5c2ZzJiMzOTsgYG5ld19kZXZpY2VgLCBpdCYjMzk7bGwgdXNlIHRoZSBgaTJjX2RldmljZV9pZGAgdGFibGUsIHdoaWNoICpvbmx5KiBoYXMgJiMzNDtzdF9uY2kmIzM0Oy4KCkhlcmUmIzM5O3MgdGhlIHByb2JsZW06IGlmIEkgaW5zdGFudGlhdGUgaXQgdXNpbmcgdGhlICYjMzQ7c3RfbmNpJiMzNDsgbmFtZSB2aWEgc3lzZnMsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIGBOVUxMYCBiZWNhdXNlIGl0JiMzOTtzIG5vdCBwcmVzZW50IGluIHRoZSBPRiB0YWJsZSwgcmlnaHQ/IE9yIHdpbGwgdGhlIE9GIG5hbWUgc29tZWhvdyBnZXQgbWF0Y2hlZD8gSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4uLgoKQWgsIHJpZ2h0ISBgaTJjX25ld19jbGllbnRfZGV2aWNlYCAqY2FuKiBpbnN0YW50aWF0ZSBkZXZpY2VzIGJhc2VkIG9uIE9GIG5vZGVzLiBCdXQgd2hlbiBkb25lIGZyb20gdXNlcnNwYWNlLCB2aWEgYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtIGlzIGxpbWl0ZWQgdG8gcGFzc2luZyB0aGUgSTJDIG5hbWUuIFNvLCBpZiBJIHBhc3MgJiMzNDtzdF9uY2kmIzM0OywgaXQgbWF0Y2hlcyB0aGUgYGkyY19kZXZpY2VfaWRgIHRhYmxlLiBTaW5jZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3b3VsZCByZXR1cm4gYE5VTExgLCB0aGUgYHJhd19uY2lgIGZsYWcgd2lsbCBiZSBpbml0aWFsaXplZCB0byAwLgoKV2FpdCwgdGhlIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBpdCB3aXRoIHRoZSBPRiBjb21wYXRpYmxlIHN0cmluZyB0aHJvdWdoIHN5c2ZzPyBQcm9iYWJseSBub3QuIFRoZSBgbmV3X2RldmljZWAgZnVuY3Rpb24gcHJvYmFibHkgb25seSBtYXRjaGVzIGFnYWluc3QgdGhlIGBpMmNfZGV2aWNlX2lkYCwgdGhlIGBhY3BpX2RldmljZV9pZGAsIG9yIHRoZSBgb2ZfZGV2aWNlX2lkYCB0YWJsZXMgZGlyZWN0bHkuCgpMZXQmIzM5O3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byB0aGUgYGkyY19zeXNmc19uZXdfZGV2aWNlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmluYWwgYW5zd2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kyY19zeXNmc19uZXdfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMzIwPXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhuZXdfZGV2aWNlKTtcbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTMyNC0gKiB0aGV5IGdvdCBpdCB3cm9uZy4gVGhpcyBpbnRlcmZhY2UgY2FuIG9ubHkgYmUgdXNlZCB0byBkZWxldGUgZGV2aWNlc1xuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEzMjU6ICogaW5zdGFudGlhdGVkIGJ5IGkyY19zeXNmc19uZXdfZGV2aWNlIGFib3ZlLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB3ZVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEzMjYtICogZG9uJiMzOTt0IGRlbGV0ZSBkZXZpY2VzIHRvIHdoaWNoIHNvbWUga2VybmVsIGNvZGUgc3RpbGwgaGFzIHJlZmVyZW5jZXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NzkKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBiYXNlZCBvbiB5b3VyIHByb21wdDoKCioqRGl2aW5nIGludG8gdGhlIEkyQyBEZXZpY2UgUmVnaXN0cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXdfZGV2aWNlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyBkZXZpY2UgcmVnaXN0cmF0aW9uIGlzIGhhbmRsZWQgYXQgdGhlIEkyQyBjb3JlIGxldmVsLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2dpYyB0aGVyZSBmb3IgY3JlYXRpbmcgYW5kIGxpbmtpbmcgbmV3IEkyQyBkZXZpY2UgaW5zdGFuY2VzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEkyQyBhZGFwdGVyIHN0cnVjdHVyZSBhbmQgaG93IGl0IGhhbmRsZXMgcG90ZW50aWFsIHJlc291cmNlIGNvbmZsaWN0cyBvciBhZGRyZXNzIGNvbGxpc2lvbnMuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGRldmljZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBhbmQgYW55IGFzc29jaWF0ZWQgZXJyb3IgaGFuZGxpbmcuIEkmIzM5O2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGkyY19kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaG93IHRoZSBkZXZpY2UmIzM5O3MgcHJvYmUgYW5kIHJlbW92ZSBmdW5jdGlvbnMgYXJlIGludGVncmF0ZWQgaW50byB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuIEhvcGVmdWxseSwgaXQgaXMgc3RyYWlnaHRmb3J3YXJkIGFuZCBub3QgYW4gb3Zlcmx5IGNvbXBsZXggbWVzcy4gTGV0JiMzOTtzIGdldCBjcmFja2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV3X2RldmljZV9zdG9yZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmM9NjI0PUVYUE9SVF9TWU1CT0xfR1BMKHBhdGFfcGFycG9ydF91bnJlZ2lzdGVyX2RyaXZlcik7XG5kcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmMtNjI1LVxuZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jOjYyNjpzdGF0aWMgc3NpemVfdCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbmRyaXZlcnMvYXRhL3BhdGFfcGFycG9ydC9wYXRhX3BhcnBvcnQuYy02Mjcte1xuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xMzY3PXN0YXRpYyBpbnQgZ3Bpb19hZ2dyZWdhdG9yX3BhcnNlKHN0cnVjdCBncGlvX2FnZ3JlZ2F0b3IgKmFnZ3IpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE0NTQtXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTQ1NTpzdGF0aWMgc3NpemVfdCBncGlvX2FnZ3JlZ2F0b3JfbmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE0NTYtXHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE1Mjc9c3RhdGljIHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlIGRyaXZlcl9hdHRyX2dwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlID1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYzoxNTI4Olx0X19BVFRSKG5ld19kZXZpY2UsIDAyMDAsIE5VTEwsIGdwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlX3N0b3JlKTtcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNTI5LVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xNjk1PXN0YXRpYyBpbnQgX19pbml0IGdwaW9fYWdncmVnYXRvcl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE3MTItXHQgKiBleHBvc2VkIGFuZCBhY2Nlc3NlZCBieSB1c2VycyBiZWZvcmUgY29uZmlnZnMgcmVnaXN0cmF0aW9uXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTcxMzpcdCAqIGNvbXBsZXRlcy4gbmV3X2RldmljZV9zdG9yZSgpIGRvZXMgbm90IGV4cGVjdCBhIHBhcnRpYWxseVxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jLTE3MTQtXHQgKiBpbml0aWFsaXplZCBjb25maWdmcyBzdGF0ZS5cbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM9MTI2Mz1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEyNjQ6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyNjUtXHRcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTU4PXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU5Om5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE2MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTA3CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgSTJDIERyaXZlciBDb3JlKioKCk9rYXksIHRpbWUgdG8gY3JhY2sgb3BlbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYCBhbmQgc3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXdfZGV2aWNlX3N0b3JlYCBmdW5jdGlvbi4gSSYjMzk7bSBwcm9iYWJseSB0cnlpbmcgdG8gZGVidWcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gZGV2aWNlIHJlZ2lzdHJhdGlvbiBvciBwcm9iaW5nLCBvciBtYXliZSBJJiMzOTttIGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBob3cgbmV3IEkyQyBkZXZpY2VzIGFyZSBoYW5kbGVkIGF0IGEgbG93IGxldmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgZHJpdmVyIGNvcmUgbWFuYWdlcyB0aGUgc3lzZnMgZW50cmllcyBmb3IgdGhlIEkyQyBkZXZpY2VzIHdlIGF0dGFjaC4gSXMgaXQgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhlIGF0dHJpYnV0ZXMgY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHBvc3NpYmxlIHdpdGggdGhlIGRldmljZSBjcmVhdGlvbiBsb2dpYyBpbiB0aGVyZT8gTWF5YmUgYSBwcm9ibGVtIHdpdGggYXR0cmlidXRlcyBub3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG5vdCBiZWluZyBjb3JyZWN0bHkgYXR0YWNoZWQ/IFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSYjMzk7bSB0cm91Ymxlc2hvb3RpbmcuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyNjMsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTI2MzpcdHN0YXRpYyBzc2l6ZV90XG4xMjY0Olx0bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuMTI2NTpcdFx0XHQgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4xMjY2Olx0e1xuMTI2NzpcdFx0c3RydWN0IGkyY19hZGFwdGVyICphZGFwID0gdG9faTJjX2FkYXB0ZXIoZGV2KTtcbjEyNjg6XHRcdHN0cnVjdCBpMmNfYm9hcmRfaW5mbyBpbmZvO1xuMTI2OTpcdFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudDtcbjEyNzA6XHRcdGNoYXIgKmJsYW5rLCBlbmQ7XG4xMjcxOlx0XHRpbnQgcmVzO1xuMTI3MjpcdFxuMTI3MzpcdFx0bWVtc2V0KFx1MDAyNmluZm8sIDAsIHNpemVvZihzdHJ1Y3QgaTJjX2JvYXJkX2luZm8pKTtcbjEyNzQ6XHRcbjEyNzU6XHRcdGJsYW5rID0gc3RyY2hyKGJ1ZiwgJiMzOTsgJiMzOTspO1xuMTI3NjpcdFx0aWYgKCFibGFuaykge1xuMTI3NzpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IE1pc3NpbmcgcGFyYW1ldGVyc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjc4Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI3OTpcdFx0fVxuMTI4MDpcdFx0aWYgKGJsYW5rIC0gYnVmIFx1MDAzZSBJMkNfTkFNRV9TSVpFIC0gMSkge1xuMTI4MTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IEludmFsaWQgZGV2aWNlIG5hbWVcXG5cJiMzNDssIFwmIzM0O25ld19kZXZpY2VcJiMzNDspO1xuMTI4MjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjEyODM6XHRcdH1cbjEyODQ6XHRcdG1lbWNweShpbmZvLnR5cGUsIGJ1ZiwgYmxhbmsgLSBidWYpO1xuMTI4NTpcdFxuMTI4NjpcdFx0LyogUGFyc2UgcmVtYWluaW5nIHBhcmFtZXRlcnMsIHJlamVjdCBleHRyYSBwYXJhbWV0ZXJzICovXG4xMjg3Olx0XHRyZXMgPSBzc2NhbmYoJiM0MzsmIzQzO2JsYW5rLCBcJiMzNDslaGklY1wmIzM0OywgXHUwMDI2aW5mby5hZGRyLCBcdTAwMjZlbmQpO1xuMTI4ODpcdFx0aWYgKHJlcyBcdTAwM2MgMSkge1xuMTI4OTpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7JXM6IENhbiYjMzk7dCBwYXJzZSBJMkMgYWRkcmVzc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjkwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI5MTpcdFx0fVxuMTI5MjpcdFx0aWYgKHJlcyBcdTAwM2UgMSAgXHUwMDI2XHUwMDI2IGVuZCAhPSAmIzM5O1xcbiYjMzk7KSB7XG4xMjkzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDslczogRXh0cmEgcGFyYW1ldGVyc1xcblwmIzM0OywgXCYjMzQ7bmV3X2RldmljZVwmIzM0Oyk7XG4xMjk0Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuMTI5NTpcdFx0fVxuMTI5NjpcdFxuMTI5NzpcdFx0aWYgKChpbmZvLmFkZHIgXHUwMDI2IEkyQ19BRERSX09GRlNFVF9URU5fQklUKSA9PSBJMkNfQUREUl9PRkZTRVRfVEVOX0JJVCkge1xuMTI5ODpcdFx0XHRpbmZvLmFkZHIgXHUwMDI2PSB+STJDX0FERFJfT0ZGU0VUX1RFTl9CSVQ7XG4xMjk5Olx0XHRcdGluZm8uZmxhZ3MgfD0gSTJDX0NMSUVOVF9URU47XG4xMzAwOlx0XHR9XG4xMzAxOlx0XG4xMzAyOlx0XHRpZiAoaW5mby5hZGRyIFx1MDAyNiBJMkNfQUREUl9PRkZTRVRfU0xBVkUpIHtcbjEzMDM6XHRcdFx0aW5mby5hZGRyIFx1MDAyNj0gfkkyQ19BRERSX09GRlNFVF9TTEFWRTtcbjEzMDQ6XHRcdFx0aW5mby5mbGFncyB8PSBJMkNfQ0xJRU5UX1NMQVZFO1xuMTMwNTpcdFx0fVxuMTMwNjpcdFxuMTMwNzpcdFx0Y2xpZW50ID0gaTJjX25ld19jbGllbnRfZGV2aWNlKGFkYXAsIFx1MDAyNmluZm8pO1xuMTMwODpcdFx0aWYgKElTX0VSUihjbGllbnQpKVxuMTMwOTpcdFx0XHRyZXR1cm4gUFRSX0VSUihjbGllbnQpO1xuMTMxMDpcdFxuMTMxMTpcdFx0LyogS2VlcCB0cmFjayBvZiB0aGUgYWRkZWQgZGV2aWNlICovXG4xMzEyOlx0XHRtdXRleF9sb2NrKFx1MDAyNmFkYXAtXHUwMDNldXNlcnNwYWNlX2NsaWVudHNfbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjA4CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJMkMgQ2xpZW50IERldmljZSBEcml2ZXIgTWF0Y2hpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gaG93IGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGhhbmRsZXMgZHJpdmVyIG1hdGNoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCYjMzk7cyByZWx5aW5nIG9uIGBpbmZvLnR5cGVgIGZvciB0aGlzLiBTcGVjaWZpY2FsbHksIGlmIHdlIHByb3ZpZGUgc29tZXRoaW5nIGxpa2UgYCYjMzQ7c3QyMW5mY2QmIzM0O2AsIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgaXQgd2lsbCB0cnkgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgT0YgdGFibGUsIHdoZXRoZXIgb3Igbm90IHRoZSBJMkMgY29yZSBzdHJpcHMgdGhlIHZlbmRvciBwcmVmaXggYCYjMzQ7c3QsJiMzNDtgLgoKSG9sZCBvbi4uLiBJJiMzOTttIHByZXR0eSBzdXJlIHRoZSBJMkMgY29yZSBhY3R1YWxseSBoYW5kbGVzIG1hdGNoaW5nIGFnYWluc3QgT0YgY29tcGF0aWJsZSBzdHJpbmdzICp3aXRob3V0KiB0aGUgdmVuZG9yIHByZWZpeC4gVGhpcyBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZy4KCkFscmlnaHQsIGxldCYjMzk7cyBkb3VibGUtY2hlY2sgaG93IHRoYXQmIzM5O3MgZG9uZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCBhbmQgYGkyY19kZXZpY2VfbWF0Y2hgLiBJIG5lZWQgdG8gcmV2aWV3IHRob3NlIGZ1bmN0aW9ucyB0byBmdWxseSB1bmRlcnN0YW5kIHRoZSBtYXRjaGluZyBwcm9jZXNzLiBUaGlzIHdpbGwgaGVscCBtZSBiZSBtb3JlIHByZWNpc2UgaW4gZGVidWdnaW5nIGFuZCBlbnN1cmUgd2UmIzM5O3JlIGdldHRpbmcgdGhlIGRyaXZlciBtYXBwaW5nIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2kyY19vZl9tYXRjaF9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jPTE0MD1zdGF0aWMgaW50IGkyY19kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xNDYtXHQvKiBBdHRlbXB0IGFuIE9GIHN0eWxlIG1hdGNoICovXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTQ3Olx0aWYgKGkyY19vZl9tYXRjaF9kZXZpY2UoZHJ2LVx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTE0OC1cdFx0cmV0dXJuIDE7XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jPTQ5MT1zdGF0aWMgaW50IGkyY19kZXZpY2VfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy01NDEtXHQgICAgIWFjcGlfZHJpdmVyX21hdGNoX2RldmljZShkZXYsIGRldi1cdTAwM2Vkcml2ZXIpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjU0MjpcdCAgICAhaTJjX29mX21hdGNoX2RldmljZShkZXYtXHUwMDNlZHJpdmVyLVx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKSB7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtNTQzLVx0XHRzdGF0dXMgPSAtRU5PREVWO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmM9MTE1PXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkKlxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxMTY6aTJjX29mX21hdGNoX2RldmljZV9zeXNmcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xMTctXHRcdFx0XHQgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYz0xNDQ9Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxNDU6KmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmMtMTQ2LVx0XHQgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNTYtXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jOjE1NzpcdHJldHVybiBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKG1hdGNoZXMsIGNsaWVudCk7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jLTE1OC19XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUuaD04Nz12b2lkIG9mX2kyY19yZWdpc3Rlcl9kZXZpY2VzKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCk7XG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oOjg4OmNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmgtODktXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTtcbi0tXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oPTkzPXN0YXRpYyBpbmxpbmVcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg6OTQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaTJjX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxuZHJpdmVycy9pMmMvaTJjLWNvcmUuaC05NS1cdFx0XHRcdFx0ICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNzYyCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gcmVhZGluZyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGNvZGU6CgoqKkRpdmluZyBpbnRvIGkyY19vZl9tYXRjaF9kZXZpY2Vfc3lzZnMqKgoKT2theSwgdGltZSB0byBnZXQgaW50byBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agd2l0aGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jYC4gSSYjMzk7bSBjdXJpb3VzIHRvIHNlZSBob3cgdGhpcyBmdW5jdGlvbiBpcyBoYW5kbGluZyB0aGUgY3J1Y2lhbCB0YXNrIG9mIG1hdGNoaW5nIEkyQyBkZXZpY2VzIGFnYWluc3QgdGhlIGRldmljZSB0cmVlLCBhbmQgaG93IGl0JiMzOTtzIGV4cG9zaW5nIHRoYXQgaW5mb3JtYXRpb24gdGhyb3VnaCBzeXNmcy4gSSBleHBlY3QgaXQmIzM5O2xsIGJlIGEga2V5IGNvbXBvbmVudCBpbiBlbmFibGluZyBob3RwbHVnZ2luZyBhbmQgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3aXRoIGRldmljZXMgZGlzY292ZXJlZCB2aWEgdGhlIGRldmljZSB0cmVlLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaGFuZGxlcyBwcm9wZXJ0aWVzIGxpa2UgYWRkcmVzc2VzLCBidXMgbnVtYmVycywgYW5kIGFueSBjdXN0b20gcGxhdGZvcm0gZGF0YSB0aGF0JiMzOTtzIG5lZWRlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgc3RydWN0dXJlZCB0aGlzIHRvIGJlIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBjb25zaWRlcmluZyB0aGUgb3ZlcmhlYWQgdGhhdCBkZXZpY2UgdHJlZSBwYXJzaW5nIGNhbiBzb21ldGltZXMgYnJpbmcuIEkmIzM5O2xsIGJlIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIGFyZWFzIHRvIHJlZmluZSwgZXNwZWNpYWxseSBpbiB0ZXJtcyBvZiBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gTGV0JiMzOTtzIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgbGllIHdpdGhpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTE1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMTU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCpcbiAxMTY6XHRpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXG4gMTE3Olx0XHRcdFx0XHQgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gMTE4Olx0e1xuIDExOTpcdFx0Y29uc3QgY2hhciAqbmFtZTtcbiAxMjA6XHRcbiAxMjE6XHRcdGZvciAoOyBtYXRjaGVzLVx1MDAzZWNvbXBhdGlibGVbMF07IG1hdGNoZXMmIzQzOyYjNDM7KSB7XG4gMTIyOlx0XHRcdC8qXG4gMTIzOlx0XHRcdCAqIEFkZGluZyBkZXZpY2VzIHRocm91Z2ggdGhlIGkyYyBzeXNmcyBpbnRlcmZhY2UgcHJvdmlkZXMgdXNcbiAxMjQ6XHRcdFx0ICogYSBzdHJpbmcgdG8gbWF0Y2ggd2hpY2ggbWF5IGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgZGV2aWNlXG4gMTI1Olx0XHRcdCAqIHRyZWUgY29tcGF0aWJsZSBzdHJpbmdzLCBob3dldmVyIHdpdGggbm8gYWN0dWFsIG9mX25vZGUgdGhlXG4gMTI2Olx0XHRcdCAqIG9mX21hdGNoX2RldmljZSgpIHdpbGwgbm90IG1hdGNoXG4gMTI3Olx0XHRcdCAqL1xuIDEyODpcdFx0XHRpZiAoc3lzZnNfc3RyZXEoY2xpZW50LVx1MDAzZW5hbWUsIG1hdGNoZXMtXHUwMDNlY29tcGF0aWJsZSkpXG4gMTI5Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXM7XG4gMTMwOlx0XG4gMTMxOlx0XHRcdG5hbWUgPSBzdHJjaHIobWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlLCAmIzM5OywmIzM5Oyk7XG4gMTMyOlx0XHRcdGlmICghbmFtZSlcbiAxMzM6XHRcdFx0XHRuYW1lID0gbWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlO1xuIDEzNDpcdFx0XHRlbHNlXG4gMTM1Olx0XHRcdFx0bmFtZSYjNDM7JiM0Mzs7XG4gMTM2Olx0XG4gMTM3Olx0XHRcdGlmIChzeXNmc19zdHJlcShjbGllbnQtXHUwMDNlbmFtZSwgbmFtZSkpXG4gMTM4Olx0XHRcdFx0cmV0dXJuIG1hdGNoZXM7XG4gMTM5Olx0XHR9XG4gMTQwOlx0XG4gMTQxOlx0XHRyZXR1cm4gTlVMTDtcbiAxNDI6XHR9XG4gMTQzOlx0XG4gMTQ0Olx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDQ3MwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBMaW5lIG9mIFJlYXNvbmluZyoqCgpPa2F5LCBzbyBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgaXMgdGhlIGtleS4gSXQmIzM5O3MgY29tcGFyaW5nIHRoZSBgY2xpZW50LSZndDtuYW1lYCBmaWVsZCB3aXRoIHdoYXQmIzM5O3MgaW4gYG1hdGNoZXMtJmd0O2NvbXBhdGlibGVgLCBvciB0aGUgcG9ydGlvbiBhZnRlciBhIGNvbW1hIHdpdGhpbiB0aGF0IHN0cmluZy4gU28sIGlmIEkgZmVlZCBgJiMzNDtzdDIxbmZjZCYjMzQ7YCB0byBgbmV3X2RldmljZWAsIHRoZSBzeXN0ZW0gKnNob3VsZCogY29ycmVjdGx5IGFzc29jaWF0ZSBpdCB3aXRoIGAmIzM0O3N0LHN0MjFuZmNkJiMzNDtgIGluIHRoZSBjb21wYXRpYmxlIHN0cmluZy4gRXhjZWxsZW50LgoKTm93LCBkb2VzIHRoYXQgbWVhbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgIHdpbGwgc3Vic2VxdWVudGx5IHJldHVybiBgU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYCwgZ2l2ZW4gdGhhdCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwPyBJdCBzZWVtcyBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZWxpZXMgb24gdGhlIGBkZXZpY2VfZHJpdmVyYCAqYW5kKiB0aGUgZGV2aWNlIGl0c2VsZiAoYGRldmApIGZvciBpdHMgbG9va3Vwcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgdG8gY29uZmlybSBob3cgaXQgcHVsbHMgdGhlIG1hdGNoaW5nIGRhdGEuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29ubmVjdGlvbiBpcyBzb2xpZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2dldF9tYXRjaF9kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXHRwbXVfbW1kYy1cdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlx0cG11X21tZGMtXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYz0zNDQ9c3RhdGljIGludCBwbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jOjM1MTpcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b2ZkZXYtXHUwMDNlZGV2KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVx0aWYgKCF0eXBlKVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yMi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm9mZGV2LVx1MDAzZWRldjtcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTI0LVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcdGZlYXR1cmVzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDA1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcdGh1bW1pbmdiaXJkX3AgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZvcC1cdTAwM2VkZXYpO1xuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcyLVx0aWYgKCFodW1taW5nYmlyZF9wKSB7XG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jPTE0NjU9c3RhdGljIGludCBzY2hpem9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcdHVuc2lnbmVkIGxvbmcgY2hpcF90eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNm9wLVx1MDAzZWRldik7XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4Mi1cbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMy1cbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE1OTc6YWNwaV9md25vZGVfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk5LXtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE2MDEtfVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cdFx0LmRldmljZV9pc19hdmFpbGFibGUgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlLCBcXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTc0MTpcdFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXHRcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM9MTA5PXN0YXRpYyBzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmFoY2lfZHdjX2dldF9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cdGRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XHRkcHJpdi1cdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cdGlmICghZHByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVx0aW14cHJpdi1cdTAwM2VmaXJzdF90aW1lID0gdHJ1ZTtcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlx0aW14cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM9MTg1PXN0YXRpYyBpbnQgYWhjaV9tdmVidV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM6MTkxOlx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cdGlmICghcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02MC1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02Mi1cdGlmICghcG9ydClcbi0tXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM9NTE1PXN0YXRpYyBpbnQgdGVncmFfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXHR0ZWdyYS1cdTAwM2VwZGV2ID0gcGRldjtcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XHR0ZWdyYS1cdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM9NzI3PXN0YXRpYyBpbnQgeGdlbmVfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUpIHtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XHRcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXHR9XG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0Olx0cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMyLVx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTM0Nz1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1MC17XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTItfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzctXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XHRiZGV2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzktXHRpZiAoIWJkZXYtXHUwMDNlZGF0YSlcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzEtXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlx0bnhwZGV2LVx1MDAzZW54cF9kYXRhID0gKHN0cnVjdCBidG54cHVhcnRfZGF0YSAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzMtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcdGFtbGRldi1cdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYz0xNTA1PXN0YXRpYyBpbnQgYmNtX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jOjE1NDY6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jLTE1NDctXHRpZiAoZGF0YSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jPTg1NT1zdGF0aWMgaW50IGg1X3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cdH0gZWxzZSB7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XHRcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cdFx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM6NDY1Olx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jPTIzOTI9c3RhdGljIGludCBxY2Ffc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXHRxY2FkZXYtXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA2LVx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XG4tLVxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jPTQ5PXN0YXRpYyBpbnQgaW14X2FpcHN0el9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYzo2MzpcdGRhdGEtXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xuZHJpdmVycy9idXMvaW14LXdlaW0uYzoyMDg6XHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcbi0tXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM6Nzk6XHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jPTYwNT1zdGF0aWMgaW50IHN0bTMyX3JpZnNjX3JlZ2lzdGVyX2RlYnVnZnMoc3RydWN0IHN0bTMyX2ZpcmV3YWxsX2NvbnRyb2xsZXIgKnJpZnNjX2NvbnRyb2xsZXIsXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXHRyaWZzY19wcml2LVx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcdHJpZnNjX3ByaXYtXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjIwLVxuLS1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcbi0tXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3Olx0Y2FwID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkYXRhLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cdGlmICghY2FwKVxuLS1cbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XHRxdWlya3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jPTExND1zdGF0aWMgaW50IGF0bWVsX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cdFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cdTAwM2VjbGspO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYzoxMzE6XHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzUtXHRcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jOjE3NjpcdFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3Ny1cdFx0aWYgKG9mX2RhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5NC1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XHR0cm5nLVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTYtXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XHRwcml2LVx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jPTg2PXN0YXRpYyBpbnQgbWVzb25fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM6OTc6XHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXHRpZiAoIXByaXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3Ni1cdHByaXYtXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYzoxNzc6XHRwcml2LVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA2LVx0bnAtXHUwMDNlb3AgPSBvcDtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM6NzA3Olx0bnAtXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b3AtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jLTExMi1cdHByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlx0cHJpdi1cdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYz0zNzU9c3RhdGljIGludCBvZl9nZXRfb21hcF9ybmdfZGV2aWNlX2RldGFpbHMoc3RydWN0IG9tYXBfcm5nX2RldiAqcHJpdixcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jOjM4MTpcdHByaXYtXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYy0zODItXHRpZiAoIXByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jLTEyMS1cdGRkYXRhLVx1MDAzZW9wcy5uYW1lID0gXCYjMzQ7b21hcDMtcm9tXCYjMzQ7O1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlx0ZGRhdGEtXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVx0ZGRhdGEtXHUwMDNlb3BzLnF1YWxpdHkgPSA5MDA7XG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2Olx0cmtfcm5nLVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cdHJrX3JuZy1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM9NTMxPXN0YXRpYyBpbnQgc3RtMzJfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYzo1NTg6XHRwcml2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU5LVx0aWYgKCFwcml2LVx1MDAzZWRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjY4LVx0bWVtc2V0KFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNjk6XHRpby5zaV9pbmZvXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVx0aW8uYWRkcl9zb3VyY2VcdD0gU0lfREVWSUNFVFJFRTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYz0yOTI9c3RhdGljIGludCB0cG1fdGlzX3NwaV9kcml2ZXJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYzoyOTc6XHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVx0aWYgKCFwcm9iZV9mdW5jKSB7XG4tLVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk0LVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmMtNDE2LVx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XHRzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXHRpZiAoIXNvY19kYXRhKSB7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk2LVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3Olx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5OC1cdGlmICghY2xrX2RhdGEpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jPTIxNz1zdGF0aWMgaW50IGF4czEweF9wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cdHBsbF9jbGstXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcdHBsbF9jbGstXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc3LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXHRpZiAoIXBkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlx0dGFibGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1iY202M3h4LWdhdGUuYy00OTItXHRpZiAoIXRhYmxlKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYz00MDM9c3RhdGljIGludCBzcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jOjQwNzpcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cdGlmICghcHJvYmVfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jLTU3Ny1cbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4Olx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXHRpZiAoIWRmbHRfbGltaXRzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5Olx0Y29uc3Qgc3RydWN0IGVuX2Nsa19zb2NfZGF0YSAqc29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2Ni1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDctXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ5LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jPTQ3PXN0YXRpYyBpbnQgZnNsX2ZsZXhzcGlfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYzo1ODpcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVx0aWYgKCFkaXZzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwNi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwOC1cdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2Nsaztcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYz0zMDU9c3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXHRwbGxfY2xrLVx1MDAzZWRldiA9IGRldjtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcdHBsbF9jbGstXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNTgtXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjYwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYz0yMzg9c3RhdGljIGludCBsb2NobmFnYXJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVx1MDAzZXBhcmVudCwgTlVMTCk7XG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM6MjU1Olx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjMtXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2NS1cdGlmICghZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM9MjMwPXN0YXRpYyBpbnQgcGFsbWFzX2Nsa3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jOjIzODpcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cdGlmICghbWF0Y2hfZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzQ4LVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5Olx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc1MC1cdGlmIChjbGtfaW5pdCkge1xuLS1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM9ODYxPXN0YXRpYyBpbnQgZGF2aW5jaV9wbGxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM6ODY4Olx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVx0aWYgKCFwbGxfaW5pdCBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcdGluaXRfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXHRpZiAoIWluaXRfZGF0YSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XHRjcmctXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkzLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTctXHRpZiAoIWluaXRfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jPTk4OT1zdGF0aWMgaW50IGhpMzY3MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM6OTk1Olx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cdGlmICghaW5pdF9mdW5jKVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcdGNyZy1cdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlx0Y3JnLVx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXHRpZiAoIWNyZy1cdTAwM2VmdW5jcylcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cdHByaXYtXHUwMDNlcmVnID0gYmFzZTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XHRwcml2LVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDMtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzA1LVx0aWYgKCFzc19scGNnKVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jPTEzMD1zdGF0aWMgaW50IGlteDhxeHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM6MTM2Olx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTUzOS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4MS1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlx0Y29uc3QgdW5zaWduZWQgbG9uZyBwbGF0ID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODMtXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XHRiYy1cdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVx0aWYgKCFiYy1cdTAwM2VwZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM9MTE0PXN0YXRpYyBpbnQgdGlfc3lzY29uX2dhdGVfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYzoxMjQ6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMtMTAxMy1cdGlmICghY2xrX2luaXQpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jPTg0Mz1zdGF0aWMgaW50IGNsa19tdDY3NjVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jOjg0ODpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVx0aWYgKCFjbGtfcHJvYmUpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cdGlmICghY2xrX3Byb2JlKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYwMTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgUmVhc29uaW5nIG9uIERldmljZSBNYXRjaGluZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgc2hvdWxkIGhhbmRsZSBkZXZpY2UgbWF0Y2hpbmcgZHVyaW5nIHN5c2ZzIGluc3RhbnRpYXRpb24uIFRoZSBsb2dpYywgYXMgSSByZWNhbGwsIGhpbmdlcyBvbiBgaTJjX29mX21hdGNoX2RldmljZWAgc2V0dGluZyBgZGV2LSZndDtkcml2ZXJfZGF0YWAsIHJpZ2h0PyBIbW0sIG5vLCB0aGF0JiMzOTtzIG5vdCBxdWl0ZSBpdC4gSXQgc2VlbXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KWAuCgpOb3csIHRoZSBjcnVjaWFsIGJpdCBmb3Igc3lzZnMgaXMgdGhlIGZhbGxiYWNrLiBJZiB3ZSAqZG9uJiMzOTt0KiBoYXZlIGFuIGZ3bm9kZSDigJMgd2hpY2ggaXMgZXhhY3RseSB0aGUgY2FzZSB3aGVuIGEgZGV2aWNlIGlzIGNyZWF0ZWQgdmlhIHN5c2ZzIOKAkyB0aGVuIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIG11c3QgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBtYXRjaCBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBgZGV2aWNlX2RyaXZlcmAuIFRoYXQmIzM5O3MgdGhlIGtleSwgdGhhdCYjMzk7cyB3aGVyZSB0aGUgcmVsZXZhbnQgZGF0YSBjb21lcyBmcm9tLgoKVG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgcGF0aCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmYWxsYmFjayBtZWNoYW5pc20gaXMgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDc6XHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG4xMzQ4Olx0XG4xMzQ5Olx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbjEzNTA6XHR7XG4xMzUxOlx0XHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xuMTM1MjpcdH1cbjEzNTM6XHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuMTM1NDpcdFxuMTM1NTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZndub2RlX2dyYXBoX2RldmNvbl9tYXRjaGVzKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xMzU2Olx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxuMTM1NzpcdFx0XHRcdFx0XHRcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxuMTM1ODpcdFx0XHRcdFx0XHRcdHZvaWQgKiptYXRjaGVzLFxuMTM1OTpcdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcbjEzNjA6XHR7XG4xMzYxOlx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcbjEzNjI6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcbjEzNjM6XHRcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4xMzY0Olx0XHR2b2lkICpyZXQ7XG4xMzY1Olx0XG4xMzY2Olx0XHRmd25vZGVfZ3JhcGhfZm9yX2VhY2hfZW5kcG9pbnQoZndub2RlLCBlcCkge1xuMTM2NzpcdFx0XHRpZiAobWF0Y2hlcyBcdTAwMjZcdTAwMjYgY291bnQgXHUwMDNlPSBtYXRjaGVzX2xlbikge1xuMTM2ODpcdFx0XHRcdGZ3bm9kZV9oYW5kbGVfcHV0KGVwKTtcbjEzNjk6XHRcdFx0XHRicmVhaztcbjEzNzA6XHRcdFx0fVxuMTM3MTpcdFxuMTM3MjpcdFx0XHRub2RlID0gZndub2RlX2dyYXBoX2dldF9yZW1vdGVfcG9ydF9wYXJlbnQoZXApO1xuMTM3MzpcdFx0XHRpZiAoIWZ3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlKG5vZGUpKSB7XG4xMzc0Olx0XHRcdFx0Zndub2RlX2hhbmRsZV9wdXQobm9kZSk7XG4xMzc1Olx0XHRcdFx0Y29udGludWU7XG4xMzc2Olx0XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5MzAKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHN0YW5kczoKCioqTmF2aWdhdGluZyBJMkMgUHJvYmUgYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyBkZXZpY2UgbWF0Y2hpbmcgd29ya3Mgd2l0aCBJMkMgZGV2aWNlcywgc3BlY2lmaWNhbGx5IGNvbnNpZGVyaW5nIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBmdW5jdGlvbiBhbmQgdGhlIHBvdGVudGlhbCBudWxsIHJldHVybiB3aGVuIG5vIEZXIG5vZGUgaXMgcHJlc2VudC4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgcmVhbGl6ZSB0aGF0IGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJlbGllcyBvbiBgZndub2RlX2NhbGxfcHRyX29wYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIElmIHRoZXJlJiMzOTtzIG5vIEZpcm13YXJlIE5vZGUsIGEgTlVMTCByZXR1cm4gaXMgdGhlIGFudGljaXBhdGVkIG91dGNvbWUuIEhvd2V2ZXIsIHRoZSBwdXp6bGUgaXNuJiMzOTt0IGNvbXBsZXRlIHlldCwgYmVjYXVzZSBJIGhhdmUgYSBodW5jaC4uLiBEb2VzIHRoZSBgaTJjX2RldmljZV9wcm9iZWAgZnVuY3Rpb24gZm91bmQgaW4gYGRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY2AgbWVzcyB3aXRoIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBoYW5kbGVkLCBwb3RlbnRpYWxseSBzZXR0aW5nIHNvbWV0aGluZyB1cD8gSXQmIzM5O3Mgd29ydGggaW52ZXN0aWdhdGluZyBmdXJ0aGVyLiBTbywgbXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGVsdmUgaW50byBob3cgYGkyY19nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgZnVuY3Rpb25zIHdpdGhpbiB0aGF0IGNvbnRleHQgYW5kIHNlZSBob3cgaXQgaW50ZXJhY3RzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpMmNfZ2V0X21hdGNoX2RhdGEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEzMDMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmM9NjU3PXN0YXRpYyBpbnQgaHQxNmszM19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmMtNjczLVx0cHJpdi1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jOjY3NDpcdHByaXYtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jLTY3NS1cbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jPTUyNz1zdGF0aWMgaW50IGkyY19udXZvdG9uX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX251dm90b24uYy01NDktXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jOjU1MDpcdGlmIChpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSlcbmRyaXZlcnMvY2hhci90cG0vdHBtX2kyY19udXZvdG9uLmMtNTUxLVx0XHRjaGlwLVx1MDAzZWZsYWdzIHw9IFRQTV9DSElQX0ZMQUdfVFBNMjtcbi0tXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jPTYxNz1zdGF0aWMgaW50IGNkY2U5MjVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jLTY1MC1cdGRhdGEtXHUwMDNlaTJjX2NsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmM6NjUxOlx0ZGF0YS1cdTAwM2VjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmMtNjUyLVx0Y29uZmlnLm1heF9yZWdpc3RlciA9IENEQ0U5MjVfT0ZGU0VUX1BMTCAmIzQzO1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1yZW5lc2FzLXBjaWUuYz0yODI9c3RhdGljIGludCByczlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmMtMjk1LVx0cnM5LVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvY2xrL2Nsay1yZW5lc2FzLXBjaWUuYzoyOTY6XHRyczktXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmMtMjk3LVx0aWYgKCFyczktXHUwMDNlY2hpcF9pbmZvKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUyMXh4LmM9MjgxPXN0YXRpYyBpbnQgc2k1MjF4eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODIte1xuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYzoyODM6XHRjb25zdCB1MTYgY2hpcF9pbmZvID0gKHUxNikodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODQtXHRjb25zdCBzdHJ1Y3QgY2xrX3BhcmVudF9kYXRhIGNsa19wYXJlbnRfZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYz0xNDM2PXN0YXRpYyBpbnQgc2k1MzUxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYy0xNDQ1LVxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jOjE0NDY6XHR2YXJpYW50ID0gKGVudW0gc2k1MzUxX3ZhcmlhbnQpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYy0xNDQ3LVx0cmV0ID0gc2k1MzUxX2R0X3BhcnNlKGNsaWVudCwgdmFyaWFudCk7XG4tLVxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmM9NDM0PXN0YXRpYyBpbnQgc2k1NDRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYy00NDgtXHRkYXRhLVx1MDAzZWkyY19jbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYzo0NDk6XHRkYXRhLVx1MDAzZW1heF9mcmVxID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay1zaTU0NC5jLTQ1MC1cbi0tXG5kcml2ZXJzL2Nsay9jbGstc2k1NzAuYz00MTI9c3RhdGljIGludCBzaTU3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jLTQyOS1cbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jOjQzMDpcdGRhdGEtXHUwMDNlaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDMxLVx0aWYgKGRhdGEtXHUwMDNlaW5mby1cdTAwM2VoYXNfdGVtcGVyYXR1cmVfc3RhYmlsaXR5KSB7XG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmM9OTk3PXN0YXRpYyBpbnQgdmMzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmMtMTA0OC1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrMy5jOjEwNDk6XHRkYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazMuYy0xMDUwLVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jPTk1MT1zdGF0aWMgaW50IHZjNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jLTk2NS1cdHZjNS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYzo5NjY6XHR2YzUtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYy05NjctXG4tLVxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM9MTEwMD1zdGF0aWMgaW50IHZjN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTYtXHR2YzctXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM6MTExNzpcdHZjNy1cdTAwM2VjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTgtXG4tLVxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jPTE2ND1zdGF0aWMgaW50IGF0bWVsX3NoYTIwNGFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmMtMTgwLVxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jOjE4MTpcdHF1YWxpdHkgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvY3J5cHRvL2F0bWVsLXNoYTIwNGEuYy0xODItXHRpZiAocXVhbGl0eSlcbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmM9MTE5Mj1zdGF0aWMgaW50IHBjYTk1M3hfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMtMTIyOC1cdGNoaXAtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jOjEyMjk6XHRjaGlwLVx1MDAzZWRyaXZlcl9kYXRhID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYy0xMjMwLVx0aWYgKCFjaGlwLVx1MDAzZWRyaXZlcl9kYXRhKVxuLS1cbmRyaXZlcnMvZ3Bpby9ncGlvLXBjZjg1N3guYz0yNzc9c3RhdGljIGludCBwY2Y4NTd4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jLTMwMC1cdGdwaW8tXHUwMDNlY2hpcC5kaXJlY3Rpb25fb3V0cHV0XHQ9IHBjZjg1N3hfb3V0cHV0O1xuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jOjMwMTpcdGdwaW8tXHUwMDNlY2hpcC5uZ3Bpb1x0XHQ9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmMtMzAyLVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jPTEyMjk9c3RhdGljIGludCBhZHY3NTExX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMpXG4tLVxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMtMTI0Ny1cdGFkdjc1MTEtXHUwMDNlc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7XG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYzoxMjQ4Olx0YWR2NzUxMS1cdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGkyYyk7XG5kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fkdjc1MTEvYWR2NzUxMV9kcnYuYy0xMjQ5LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jPTE0ND1zdGF0aWMgaW50IHdzX2JyaWRnZV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE3OS1cbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jOjE4MDpcdHdzLVx1MDAzZWJyaWRnZS50eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoaTJjKTtcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE4MS1cdHdzLVx1MDAzZWJyaWRnZS5vZl9ub2RlID0gZGV2LVx1MDAzZW9mX25vZGU7XG4tLVxuZHJpdmVycy9od21vbi9hZDc0MTguYz0yMzM9c3RhdGljIGludCBhZDc0MThfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2FkNzQxOC5jLTI1Mi1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9od21vbi9hZDc0MTguYzoyNTM6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZDc0MTguYy0yNTQtXG4tLVxuZHJpdmVycy9od21vbi9hZG0xMDMxLmM9MTAyND1zdGF0aWMgaW50IGFkbTEwMzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYy0xMDM1LVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYzoxMDM2Olx0ZGF0YS1cdTAwM2VjaGlwX3R5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZG0xMDMxLmMtMTAzNy1cdG11dGV4X2luaXQoXHUwMDI2ZGF0YS1cdTAwM2V1cGRhdGVfbG9jayk7XG4tLVxuZHJpdmVycy9od21vbi9hZHM3ODI4LmM9MTAyPXN0YXRpYyBpbnQgYWRzNzgyOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jLTEzOS1cbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jOjE0MDpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9hZHM3ODI4LmMtMTQxLVxuLS1cbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jPTE4MDU9c3RhdGljIGludCBhZHQ3NDc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmMtMTgyNy1cbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jOjE4Mjg6XHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jLTE4MjktXG4tLVxuZHJpdmVycy9od21vbi9haHQxMC5jPTMzMj1zdGF0aWMgaW50IGFodDEwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG5kcml2ZXJzL2h3bW9uL2FodDEwLmMtMzMzLXtcbmRyaXZlcnMvaHdtb24vYWh0MTAuYzozMzQ6XHRlbnVtIGFodDEwX3ZhcmlhbnQgdmFyaWFudCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2FodDEwLmMtMzM1LVx0c3RydWN0IGRldmljZSAqZGV2aWNlID0gXHUwMDI2Y2xpZW50LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYz0yNDY0PXN0YXRpYyBpbnQgZG1lMTczN19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYy0yNDc0LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYzoyNDc1Olx0ZGF0YS1cdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZG1lMTczNy5jLTI0NzYtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbi0tXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jPTM0NT1zdGF0aWMgaW50IGRzMTYyMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vZHMxNjIxLmMtMzU2LVxuZHJpdmVycy9od21vbi9kczE2MjEuYzozNTc6XHRkYXRhLVx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9kczE2MjEuYy0zNTgtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbi0tXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYz04MjQ9c3RhdGljIGludCBlbWMxODEyX2NoaXBfaWRlbnRpZnkoc3RydWN0IGVtYzE4MTJfZGF0YSAqZGF0YSwgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYy04NTYtXHRcdCAqL1xuZHJpdmVycy9od21vbi9lbWMxODEyLmM6ODU3Olx0XHRjaGlwID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYy04NTgtXHRcdGlmICghY2hpcClcbi0tXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYz03OTE9c3RhdGljIGludCBmNzUzNzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYy04MDctXHRtdXRleF9pbml0KFx1MDAyNmRhdGEtXHUwMDNldXBkYXRlX2xvY2spO1xuZHJpdmVycy9od21vbi9mNzUzNzVzLmM6ODA4Olx0ZGF0YS1cdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwOS1cbi0tXG5kcml2ZXJzL2h3bW9uL2ZzY2htZC5jPTEwODI9c3RhdGljIGludCBmc2NobWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2ZzY2htZC5jLTEwODgtXHRpbnQgaSwgZXJyO1xuZHJpdmVycy9od21vbi9mc2NobWQuYzoxMDg5Olx0ZW51bSBjaGlwcyBraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vZnNjaG1kLmMtMTA5MC1cbi0tXG5kcml2ZXJzL2h3bW9uL2luYTIzOC5jPTg4Mz1zdGF0aWMgaW50IGluYTIzOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkxLVxuZHJpdmVycy9od21vbi9pbmEyMzguYzo4OTI6XHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkzLVxuLS1cbmRyaXZlcnMvaHdtb24vaW5hMnh4LmM9OTYxPXN0YXRpYyBpbnQgaW5hMnh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9pbmEyeHguYy05NjgtXG5kcml2ZXJzL2h3bW9uL2luYTJ4eC5jOjk2OTpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9pbmEyeHguYy05NzAtXG4tLVxuZHJpdmVycy9od21vbi9sbTYzLmM9MTI0NT1zdGF0aWMgaW50IGxtNjNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2xtNjMuYy0xMjU5LVx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xuZHJpdmVycy9od21vbi9sbTYzLmM6MTI2MDpcdGRhdGEtXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtNjMuYy0xMjYxLVx0aWYgKGRhdGEtXHUwMDNla2luZCA9PSBsbTY0KVxuLS1cbmRyaXZlcnMvaHdtb24vbG03NS5jPTgxOD1zdGF0aWMgaW50IGxtNzVfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTc1LmMtODMwLVxuZHJpdmVycy9od21vbi9sbTc1LmM6ODMxOlx0cmV0dXJuIGxtNzVfZ2VuZXJpY19wcm9iZShkZXYsIGNsaWVudC1cdTAwM2VuYW1lLCAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpLFxuZHJpdmVycy9od21vbi9sbTc1LmMtODMyLVx0XHRcdFx0ICBjbGllbnQtXHUwMDNlaXJxLCByZWdtYXApO1xuLS1cbmRyaXZlcnMvaHdtb24vbG03OC5jPTYzMD1zdGF0aWMgaW50IGxtNzhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTc4LmMtNjQwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL2xtNzguYzo2NDE6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9sbTc4LmMtNjQyLVxuLS1cbmRyaXZlcnMvaHdtb24vbG04My5jPTQyMD1zdGF0aWMgaW50IGxtODNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL2xtODMuYy00MzMtXG5kcml2ZXJzL2h3bW9uL2xtODMuYzo0MzQ6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9sbTgzLmMtNDM1LVxuLS1cbmRyaXZlcnMvaHdtb24vbG04NS5jPTE1NDc9c3RhdGljIGludCBsbTg1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9sbTg1LmMtMTU1OC1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9od21vbi9sbTg1LmM6MTU1OTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtODUuYy0xNTYwLVx0bXV0ZXhfaW5pdChcdTAwMjZkYXRhLVx1MDAzZXVwZGF0ZV9sb2NrKTtcbi0tXG5kcml2ZXJzL2h3bW9uL2xtOTAuYz0yNzY4PXN0YXRpYyBpbnQgbG05MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTAtXHQvKiBTZXQgdGhlIGRldmljZSB0eXBlICovXG5kcml2ZXJzL2h3bW9uL2xtOTAuYzoyNzkxOlx0ZGF0YS1cdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTItXG4tLVxuZHJpdmVycy9od21vbi9sbTkyLmM9Mzc0PXN0YXRpYyBpbnQgbG05Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05Mi5jLTM5MS1cdGRhdGEtXHUwMDNlcmVnbWFwID0gcmVnbWFwO1xuZHJpdmVycy9od21vbi9sbTkyLmM6MzkyOlx0ZGF0YS1cdTAwM2VyZXNvbHV0aW9uID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtOTIuYy0zOTMtXG4tLVxuZHJpdmVycy9od21vbi9sbTk1MjM0LmM9NTAzPXN0YXRpYyBpbnQgbG05NTIzNF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jLTUxNC1cbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jOjUxNTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYy01MTYtXG4tLVxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jPTUwNT1zdGF0aWMgaW50IG1heDE2MDY1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNC1cdGludCBncm91cHMgPSAwO1xuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jOjUxNTpcdGVudW0gY2hpcHMgY2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL21heDE2MDY1LmMtNTE2LVxuLS1cbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jPTI2OT1zdGF0aWMgaW50IG1heDE2NjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYy0yODctXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYzoyODg6XHRkYXRhLVx1MDAzZWNoYW5uZWxzID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4OS1cbi0tXG5kcml2ZXJzL2h3bW9uL21heDY2NTAuYz03NjM9c3RhdGljIGludCBtYXg2NjUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXg2NjUwLmMtNzc4LVxuZHJpdmVycy9od21vbi9tYXg2NjUwLmM6Nzc5Olx0ZGF0YS1cdTAwM2Vucl9mYW5zID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jLTc4MC1cbi0tXG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYz01Mzc9c3RhdGljIGludCBtYXg2Njk3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTUzLVx0ZGF0YS1cdTAwM2VyZWdtYXAgPSByZWdtYXA7XG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYzo1NTQ6XHRkYXRhLVx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTU1LVx0ZGF0YS1cdTAwM2VjaGlwID0gXHUwMDI2bWF4NjY5N19jaGlwX2RhdGFbZGF0YS1cdTAwM2V0eXBlXTtcbi0tXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYz0xMTk9c3RhdGljIGludCBtY3AzMDIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tY3AzMDIxLmMtMTUwLVxuZHJpdmVycy9od21vbi9tY3AzMDIxLmM6MTUxOlx0dHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYy0xNTItXHRzd2l0Y2ggKHR5cGUpIHtcbi0tXG5kcml2ZXJzL2h3bW9uL21jcDk5ODIuYz05MTE9c3RhdGljIGludCBtY3A5OTgyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9tY3A5OTgyLmMtOTMwLVxuZHJpdmVycy9od21vbi9tY3A5OTgyLmM6OTMxOlx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9tY3A5OTgyLmMtOTMyLVx0aWYgKCFjaGlwKVxuLS1cbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYz0xNTU9c3RhdGljIGludCBuY3Q2Nzc1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjMtXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmM6MTY0Olx0ZGF0YS1cdTAwM2VraW5kID0gKGVudW0ga2luZHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjUtXHRkYXRhLVx1MDAzZXJlYWRfb25seSA9IHRydWU7XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmM9Nzk9c3RhdGljIGludCBhZHAxMDUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmMtODItXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYzo4MzpcdGluZm8gPSAoc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYy04NC1cdGlmICghaW5mbylcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYz05MT1zdGF0aWMgaW50IHBmZV9wbWJ1c19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmMtOTIte1xuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM6OTM6XHRpbnQgbW9kZWwgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmMtOTQtXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYz00ODI9c3RhdGljIGludCBpYm1fY2ZmcHNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4NC1cdGludCBpLCByYztcbmRyaXZlcnMvaHdtb24vcG1idXMvaWJtLWNmZnBzLmM6NDg1Olx0ZW51bSB2ZXJzaW9ucyB2cyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4Ni1cdHN0cnVjdCBkZW50cnkgKmRlYnVnZnM7XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jPTMyNT1zdGF0aWMgaW50IGlzbDY4MTM3X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jLTM0Ny1cbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYzozNDg6XHRzd2l0Y2ggKCh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCkpIHtcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYy0zNDktXHRjYXNlIHJhYV9kbXB2cjFfMnJhaWw6XG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmM9NDY1PXN0YXRpYyBpbnQgbG0yNTA2Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4NS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jOjQ4NjpcdGRhdGEtXHUwMDNlaWQgPSAoZW51bSBjaGlwcykodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4Ny1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmM9NjYxPXN0YXRpYyBpbnQgbWF4MjA3MzBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmMtNzE3LVxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jOjcxODpcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jLTcxOS1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmM9NzM3PXN0YXRpYyBpbnQgbWF4MzQ0NDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmMtNzQ1LVx0XHRyZXR1cm4gLUVOT01FTTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYzo3NDY6XHRkYXRhLVx1MDAzZWlkID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYy03NDctXHRkYXRhLVx1MDAzZWluZm8gPSBtYXgzNDQ0MF9pbmZvW2RhdGEtXHUwMDNlaWRdO1xuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyODU2LmM9Mzk1PXN0YXRpYyBpbnQgbXAyODU2X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYy00MDYtXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jOjQwNzpcdGNoaXBfaWQgPSAoa2VybmVsX3Vsb25nX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jLTQwOC1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjk3NS5jPTk5Nj1zdGF0aWMgaW50IG1wMjk3NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmMtMTAwMi1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmM6MTAwMzpcdGRkaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI5NzUuYy0xMDA0LVx0aWYgKCFkZGluZm8pXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmM9MTMwPXN0YXRpYyBpbnQgbXBxODc4NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0NC1cdGVsc2VcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jOjE0NTpcdFx0Y2hpcF9pZCA9IChrZXJuZWxfdWxvbmdfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0Ni1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmM9MTY0PXN0YXRpYyBpbnQgcG1idXNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMtMTc0LVxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jOjE3NTpcdGRldmljZV9pbmZvID0gKHN0cnVjdCBwbWJ1c19kZXZpY2VfaW5mbyAqKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jLTE3Ni1cdGlmIChkZXZpY2VfaW5mby1cdTAwM2VmbGFncykge1xuLS1cbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jPTI4MT1zdGF0aWMgaW50IHE1NHNqMTA4YTJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYy0yOTctXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYzoyOTg6XHRjaGlwX2lkID0gKGVudW0gY2hpcHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jLTI5OS1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmM9MjUwPXN0YXRpYyBpbnQgdHBzNTM2NzlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmMtMjU1LVxuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jOjI1NjpcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jLTI1Ny1cbi0tXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jPTc2PXN0YXRpYyBpbnQgeGRwNzIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9wbWJ1cy94ZHA3MjAuYy04Ni1cbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmM6ODc6XHRkYXRhLVx1MDAzZWlkID0gKGVudW0geGRwNzIwX2NoaXBfaWQpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmMtODgtXHRkYXRhLVx1MDAzZWluZm8gPSB4ZHA3MjBfaW5mbztcbi0tXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmM9Mjc0PXN0YXRpYyBpbnQgcG93cjEyMjBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmMtMjg2LVxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jOjI4NzpcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jLTI4OC1cdHN3aXRjaCAoY2hpcCkge1xuLS1cbmRyaXZlcnMvaHdtb24vc2h0M3guYz04NzU9c3RhdGljIGludCBzaHQzeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vc2h0M3guYy05MDMtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvaHdtb24vc2h0M3guYzo5MDQ6XHRkYXRhLVx1MDAzZWNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9zaHQzeC5jLTkwNS1cdGNyYzhfcG9wdWxhdGVfbXNiKHNodDN4X2NyYzhfdGFibGUsIFNIVDNYX0NSQzhfUE9MWU5PTUlBTCk7XG4tLVxuZHJpdmVycy9od21vbi9zaHRjMS5jPTE4OT1zdGF0aWMgaW50IHNodGMxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi9zaHRjMS5jLTE5NS1cdHN0cnVjdCBkZXZpY2UgKmh3bW9uX2RldjtcbmRyaXZlcnMvaHdtb24vc2h0YzEuYzoxOTY6XHRlbnVtIHNodGN4X2NoaXBzIGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi9zaHRjMS5jLTE5Ny1cdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IGNsaWVudC1cdTAwM2VhZGFwdGVyO1xuLS1cbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM9MzgwPXN0YXRpYyBpbnQgdGhtYzUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi90aG1jNTAuYy0zOTEtXHRkYXRhLVx1MDAzZWNsaWVudCA9IGNsaWVudDtcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM6MzkyOlx0ZGF0YS1cdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmMtMzkzLVx0bXV0ZXhfaW5pdChcdTAwMjZkYXRhLVx1MDAzZXVwZGF0ZV9sb2NrKTtcbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDEwOC5jPTQ5OT1zdGF0aWMgaW50IHRtcDEwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTEyLVxuZHJpdmVycy9od21vbi90bXAxMDguYzo1MTM6XHRyZXR1cm4gdG1wMTA4X2NvbW1vbl9wcm9iZShkZXYsIHJlZ21hcCwgY2xpZW50LVx1MDAzZW5hbWUsIGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpKTtcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTE0LX1cbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jPTY2NT1zdGF0aWMgaW50IHRtcDQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDAxLmMtNjgwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jOjY4MTpcdGRhdGEtXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jLTY4Mi1cbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDQyMS5jPTQyNT1zdGF0aWMgaW50IHRtcDQyMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDIxLmMtNDM1LVxuZHJpdmVycy9od21vbi90bXA0MjEuYzo0MzY6XHRkYXRhLVx1MDAzZWNoYW5uZWxzID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3RtcDQyMS5jLTQzNy1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuLS1cbmRyaXZlcnMvaHdtb24vdG1wNDY0LmM9NjM3PXN0YXRpYyBpbnQgdG1wNDY0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi90bXA0NjQuYy02NTEtXG5kcml2ZXJzL2h3bW9uL3RtcDQ2NC5jOjY1MjpcdGRhdGEtXHUwMDNlY2hhbm5lbHMgPSAoaW50KSh1bnNpZ25lZCBsb25nKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi90bXA0NjQuYy02NTMtXG4tLVxuZHJpdmVycy9od21vbi90bXA1MTMuYz03MTI9c3RhdGljIGludCB0bXA1MXhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jLTcyMi1cbmRyaXZlcnMvaHdtb24vdG1wNTEzLmM6NzIzOlx0ZGF0YS1cdTAwM2VtYXhfY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9od21vbi90bXA1MTMuYy03MjQtXG4tLVxuZHJpdmVycy9od21vbi93ODM3ODFkLmM9MTE5NT1zdGF0aWMgaW50IHc4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjA4LVxuZHJpdmVycy9od21vbi93ODM3ODFkLmM6MTIwOTpcdGRhdGEtXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjEwLVx0ZGF0YS1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG4tLVxuZHJpdmVycy9od21vbi93ODM3OTUuYz0yMTM3PXN0YXRpYyBpbnQgdzgzNzk1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9od21vbi93ODM3OTUuYy0yMTQ5LVx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jOjIxNTA6XHRkYXRhLVx1MDAzZWNoaXBfdHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2h3bW9uL3c4Mzc5NS5jLTIxNTEtXHRkYXRhLVx1MDAzZWJhbmsgPSBpMmNfc21idXNfcmVhZF9ieXRlX2RhdGEoY2xpZW50LCBXODM3OTVfUkVHX0JBTktTRUwpO1xuLS1cbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMTk9RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMjAtXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTIxOmNvbnN0IHZvaWQgKmkyY19nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyMi17XG4tLVxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEzNy19XG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTM4OkVYUE9SVF9TWU1CT0woaTJjX2dldF9tYXRjaF9kYXRhKTtcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzktXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYz02ND1zdGF0aWMgaW50IGFkeGwzMTNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03My1cdCAqL1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYzo3NDpcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03NS1cbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jPTIyPXN0YXRpYyBpbnQgYWR4bDM1NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jLTI3LVxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYzoyODpcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYy0yOS1cdGlmICghY2hpcF9kYXRhKVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmM9MjA9c3RhdGljIGludCBhZHhsMzcyX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmMtMjYtXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jOjI3Olx0Y2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jLTI4LVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmM9MjA9c3RhdGljIGludCBhZHhsMzgwX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmMtMjQtXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jOjI1Olx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jLTI2LVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jPTkxNz1zdGF0aWMgaW50IGJtYTE4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jLTkzMS1cdGRhdGEtXHUwMDNlY2xpZW50ID0gY2xpZW50O1xuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmM6OTMyOlx0ZGF0YS1cdTAwM2VwYXJ0X2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jLTkzMy1cbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9kYTI4MC5jPTEwMD1zdGF0aWMgaW50IGRhMjgwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYy0xMTAtXG5kcml2ZXJzL2lpby9hY2NlbC9kYTI4MC5jOjExMTpcdG1hdGNoX2RhdGEgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FjY2VsL2RhMjgwLmMtMTEyLVx0aWYgKCFtYXRjaF9kYXRhKSB7XG4tLVxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYz0xNT1zdGF0aWMgaW50IGt4MDIyYV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcbi0tXG5kcml2ZXJzL2lpby9hY2NlbC9raW9uaXgta3gwMjJhLWkyYy5jLTI1LVxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYzoyNjpcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShpMmMpO1xuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYy0yNy1cdGlmICghY2hpcF9pbmZvKVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jPTE0Mz1zdGF0aWMgaW50IG1jMzIzMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jLTE0OS1cbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jOjE1MDpcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmMtMTUxLVx0aWYgKGNoaXBfaW5mbyA9PSBOVUxMKSB7XG4tLVxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jPTE1NDg9c3RhdGljIGludCBtbWE4NDUyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjItXG5kcml2ZXJzL2lpby9hY2NlbC9tbWE4NDUyLmM6MTU2MzpcdGRhdGEtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hY2NlbC9tbWE4NDUyLmMtMTU2NC1cdGlmICghZGF0YS1cdTAwM2VjaGlwX2luZm8pXG4tLVxuZHJpdmVycy9paW8vYWRjL2x0YzIzMDkuYz0yMDI9c3RhdGljIGludCBsdGMyMzA5X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL2x0YzIzMDkuYy0yMTMtXHRsdGMyMzA5ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTtcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmM6MjE0Olx0Y2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbHRjMjMwOS5jLTIxNS1cbi0tXG5kcml2ZXJzL2lpby9hZGMvbHRjMjQ5Ny5jPTk1PXN0YXRpYyBpbnQgbHRjMjQ5N19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuLS1cbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE1LVxuZHJpdmVycy9paW8vYWRjL2x0YzI0OTcuYzoxMTY6XHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE3LVx0c3QtXHUwMDNlY29tbW9uX2RkYXRhLmNoaXBfaW5mbyA9IGNoaXBfaW5mbztcbi0tXG5kcml2ZXJzL2lpby9hZGMvbWF4MTM2My5jPTE1NTc9c3RhdGljIGludCBtYXgxMzYzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc1LVxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYzoxNTc2Olx0c3QtXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbWF4MTM2My5jLTE1NzctXHRzdC1cdTAwM2VjbGllbnQgPSBjbGllbnQ7XG4tLVxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmM9MTkzPXN0YXRpYyBpbnQgbWF4MzQ0MDhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYy0yMDItXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYzoyMDM6XHRtb2RlbF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYy0yMDQtXHRpZiAoIW1vZGVsX2RhdGEpXG4tLVxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYz00MDc9c3RhdGljIGludCBuY3Q3MjAxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4tLVxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYy00MTQtXG5kcml2ZXJzL2lpby9hZGMvbmN0NzIwMS5jOjQxNTpcdG1vZGVsX2RhdGEgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmMtNDE2LVx0aWYgKCFtb2RlbF9kYXRhKVxuLS1cbmRyaXZlcnMvaWlvL2FkYy9wYWMxOTM0LmM9MTQ4MT1zdGF0aWMgaW50IHBhYzE5MzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1NDMKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBpbnRvIHRoZSBJMkMgQ29yZTogVW5kZXJzdGFuZGluZyBgaTJjX2dldF9tYXRjaF9kYXRhYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgSTJDIGNvcmUgYW5kIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nLiBJJiMzOTttIGdvaW5nIHRvIGhlYWQgc3RyYWlnaHQgZm9yIGBpMmNfZ2V0X21hdGNoX2RhdGFgIGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGV2aWNlcyBhcmUgbWF0Y2hlZCBhbmQgaG93IGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRob3NlIG1hdGNoZXMgd2l0aGluIHRoaXMgZHJpdmVyLiBUaGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IGNlbnRyYWwgdG8gdGhhdCBwcm9jZXNzLiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdzsgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIGFudGljaXBhdGUgaXQmIzM5O3MgbGlrZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgJiMzNDtiZXN0IG1hdGNoJiMzNDsgYW5kIHJldHJpZXZpbmcgYXNzb2NpYXRlZCBwbGF0Zm9ybS1zcGVjaWZpYyBkYXRhLiBMZXQmIzM5O3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExOTpcdEVYUE9SVF9TWU1CT0xfR1BMKGkyY19tYXRjaF9pZCk7XG4gMTIwOlx0XG4gMTIxOlx0Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gMTIyOlx0e1xuIDEyMzpcdFx0c3RydWN0IGkyY19kcml2ZXIgKmRyaXZlciA9IHRvX2kyY19kcml2ZXIoY2xpZW50LVx1MDAzZWRldi5kcml2ZXIpO1xuIDEyNDpcdFx0Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKm1hdGNoO1xuIDEyNTpcdFx0Y29uc3Qgdm9pZCAqZGF0YTtcbiAxMjY6XHRcbiAxMjc6XHRcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2Y2xpZW50LVx1MDAzZWRldik7XG4gMTI4Olx0XHRpZiAoIWRhdGEpIHtcbiAxMjk6XHRcdFx0bWF0Y2ggPSBpMmNfbWF0Y2hfaWQoZHJpdmVyLVx1MDAzZWlkX3RhYmxlLCBjbGllbnQpO1xuIDEzMDpcdFx0XHRpZiAoIW1hdGNoKVxuIDEzMTpcdFx0XHRcdHJldHVybiBOVUxMO1xuIDEzMjpcdFxuIDEzMzpcdFx0XHRkYXRhID0gKGNvbnN0IHZvaWQgKiltYXRjaC1cdTAwM2Vkcml2ZXJfZGF0YTtcbiAxMzQ6XHRcdH1cbiAxMzU6XHRcbiAxMzY6XHRcdHJldHVybiBkYXRhO1xuIDEzNzpcdH1cbiAxMzg6XHRFWFBPUlRfU1lNQk9MKGkyY19nZXRfbWF0Y2hfZGF0YSk7XG4gMTM5Olx0XG4gMTQwOlx0c3RhdGljIGludCBpMmNfZGV2aWNlX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcbiAxNDE6XHR7XG4gMTQyOlx0XHRzdHJ1Y3QgaTJjX2NsaWVudFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XG4gMTQzOlx0XHRjb25zdCBzdHJ1Y3QgaTJjX2RyaXZlclx0KmRyaXZlcjtcbiAxNDQ6XHRcbiAxNDU6XHRcbiAxNDY6XHRcdC8qIEF0dGVtcHQgYW4gT0Ygc3R5bGUgbWF0Y2ggKi9cbiAxNDc6XHRcdGlmIChpMmNfb2ZfbWF0Y2hfZGV2aWNlKGRydi1cdTAwM2VvZl9tYXRjaF90YWJsZSwgY2xpZW50KSlcbiAxNDg6XHRcdFx0cmV0dXJuIDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjcwCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBJMkMgRGV2aWNlIEluc3RhbnRpYXRpb24gYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gSSB3YXMgcG9uZGVyaW5nIHRoaXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBJMkMgZGV2aWNlcy4gSXQgc3RydWNrIG1lOiBkb2VzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgd29yayBmb3IgSTJDIGRldmljZXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IExldCBtZSByZS1leGFtaW5lIHRoaXMuIExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uLCBpdCYjMzk7cyBjYWxsaW5nIGBmd25vZGVfY2FsbF9wdHJfb3BgIG9uIHRoZSBkZXZpY2UmIzM5O3MgZndub2RlLiBJZiB0aGVyZSBpc24mIzM5O3QgYW4gZndub2RlLCBpdCByZXR1cm5zIE5VTEwuIE5vdywgSSByZW1lbWJlciB0aGF0IGBpMmNfZGV2aWNlX3Byb2JlYCB1c2VzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCB3aGljaCByZWxpZXMgb24gYHN5c2ZzX3N0cmVxYCB0byBtYXRjaCB0aGUgY2xpZW50IG5hbWUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgaW4gdGhlIG1hdGNoIHRhYmxlLiBCdXQsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRvZXNuJiMzOTt0IGtub3cgYWJvdXQgdGhpcyBzeXNmcy1iYXNlZCBJMkMgbWF0Y2hpbmcuIEl0IHJlc2lkZXMgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhbmQgZGVwZW5kcyBvbiB0aGUgZndub2RlLgoKRGlnZ2luZyBkZWVwZXIgaW50byBgZndub2RlX2NhbGxfcHRyX29wYCwgaWYgdGhlIGRldmljZSBkb2VzbiYjMzk7dCBoYXZlIGEgZndub2RlICh3aGljaCBpcyB0aGUgY2FzZSBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIGRldmljZXMpLCB0aGVuIGl0IGFsc28gcmV0dXJucyBOVUxMLiBTbywgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCwgaW5kZWVkLCByZXR1cm4gTlVMTCBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIEkyQyBkZXZpY2VzLiBUaGlzIGlzIGEgcG90ZW50aWFsIHByb2JsZW0gZm9yIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggY2FsbHMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gSWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcywgdGhlbiBgZGV2X2Z3bm9kZShkZXYpYCBpcyBOVUxMLCBhbmQgdGh1cyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgcGh5LSZndDtyYXdfbmNpYCB3aWxsIGJlIHplcm8uIEJ1dCwgd2FpdC4uLiBpZiBgcGh5LSZndDtyYXdfbmNpYCBpcyB6ZXJvLCBkb2VzbiYjMzk7dCB0aGUgZHJpdmVyIGJlaGF2ZSBleGFjdGx5IGFzIGJlZm9yZT8KClRoZSBrZXkgaGVyZSBpcyB3aGV0aGVyIHdlIGNhbiBpbnN0YW50aWF0ZSBpdCAqd2l0aCogYSBmd25vZGUuIEkgdGhvdWdodCBhYm91dCBzeXprYWxsZXIgYW5kIGl0cyBgc3l6X2kyY19zZXR1cGAgY2FsbC4gRG9lcyB0aGF0IGNyZWF0ZSBhIGRldmljZSB0cmVlIG5vZGU/IE5vLCBpdCBkb2VzbiYjMzk7dCBkeW5hbWljYWxseSBtb2RpZnkgdGhlIGRldmljZSB0cmVlLiBIb3dldmVyLCBpdCAqZG9lcyogdXNlIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIHRoZSBkcml2ZXIgbmFtZS4gU28sIGV2ZW4gaWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHdpdGggYHN5el9pMmNfc2V0dXBgIGl0IHBhc3NlcyB0aGUgbmFtZS4gSWYgdGhlIG5hbWUgaXMgYCYjMzQ7c3QyMW5mY2QmIzM0O2AsIGl0ICp3aWxsKiBtYXRjaCB0aGUgT0YgdGFibGUgdmlhIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBkdXJpbmcgcHJvYmUuIEJ1dCwgY3J1Y2lhbGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBzdGlsbCByZXR1cm5zIE5VTEwhIFdoaWNoIHdvdWxkIG1lYW4gYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLgoKQWgsIHNvIHRoaXMgcmV0dXJucyBOVUxMIGZvciBzeXNmcyBkZXZpY2VzIGlzIGFjdHVhbGx5IGEga25vd24gaXNzdWUsIGlzbiYjMzk7dCBpdD8gVGhhdCYjMzk7cyB3aHkgbWFueSBkcml2ZXJzIGNvcnJlY3RseSB1c2UgYGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpYCBpbnN0ZWFkIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAhIFRoaXMgbWFrZXMgc2Vuc2UuIEJ1dCwgZGFybiBpdCwgYHN0X25jaV9pMmNfcHJvYmVgIGlzIHN0aWxsIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAuIExldCBtZSBnbyBjaGVjayBgc3RfbmNpX2kyY19wcm9iZWAgaW4gYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AuLi4gdG8gY29uZmlybSB0aGUgaW1wbGljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMjUwOlx0XG4gMjUxOlx0XHRpZiAoIWkyY19jaGVja19mdW5jdGlvbmFsaXR5KGNsaWVudC1cdTAwM2VhZGFwdGVyLCBJMkNfRlVOQ19JMkMpKSB7XG4gMjUyOlx0XHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCYjMzQ7TmVlZCBJMkNfRlVOQ19JMkNcXG5cJiMzNDspO1xuIDI1MzpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiAyNTQ6XHRcdH1cbiAyNTU6XHRcbiAyNTY6XHRcdHBoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3Qgc3RfbmNpX2kyY19waHkpLCBHRlBfS0VSTkVMKTtcbiAyNTc6XHRcdGlmICghcGh5KVxuIDI1ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiAyNTk6XHRcbiAyNjA6XHRcdHBoeS1cdTAwM2VpMmNfZGV2ID0gY2xpZW50O1xuIDI2MTpcdFx0cGh5LVx1MDAzZXJhd19uY2kgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09XG4gMjYyOlx0XHRcdFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xuIDI2MzpcdFxuIDI2NDpcdFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcbiAyNjU6XHRcbiAyNjY6XHRcdHIgPSBkZXZtX2FjcGlfZGV2X2FkZF9kcml2ZXJfZ3Bpb3MoZGV2LCBhY3BpX3N0X25jaV9ncGlvcyk7XG4gMjY3Olx0XHRpZiAocilcbiAyNjg6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O1VuYWJsZSB0byBhZGQgR1BJTyBtYXBwaW5nIHRhYmxlXFxuXCYjMzQ7KTtcbiAyNjk6XHRcbiAyNzA6XHRcdC8qIEdldCBSRVNFVCBHUElPICovXG4gMjcxOlx0XHRwaHktXHUwMDNlZ3Bpb2RfcmVzZXQgPSBkZXZtX2dwaW9kX2dldChkZXYsIFwmIzM0O3Jlc2V0XCYjMzQ7LCBHUElPRF9PVVRfSElHSCk7XG4gMjcyOlx0XHRpZiAoSVNfRVJSKHBoeS1cdTAwM2VncGlvZF9yZXNldCkpIHtcbiAyNzM6XHRcdFx0bmZjX2VycihkZXYsIFwmIzM0O1VuYWJsZSB0byBnZXQgUkVTRVQgR1BJT1xcblwmIzM0Oyk7XG4gMjc0Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDI3NTpcdFx0fVxuIDI3NjpcdFxuIDI3NzpcdFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcJiMzNDt2ZGQtaW9cJiMzNDspO1xuIDI3ODpcdFx0aWYgKHIgXHUwMDI2XHUwMDI2IHIgIT0gLUVOT0RFVilcbiAyNzk6XHRcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcblwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMjQzCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIHVuZGVyc3RhbmQgdGhpcyBjb2RlLiBGaXJzdCwgYSBjcnVjaWFsIHBvaW50OiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwgd2hlbiB0aGVyZSYjMzk7cyBubyBmd25vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuIFJpZ2h0LiBCdXQgd2hhdCBhYm91dCBkZXZpY2VzIGluaXRpYWxpemVkIHRocm91Z2ggQUNQST8gQWgsIHdpdGggQUNQSSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKmRvZXMqIHdvcmsgYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHN5emthbGxlciwgdGhlIGZ1enplciBJJiMzOTttIGxvb2tpbmcgYXQsIGRvZXNuJiMzOTt0IHVzZSBBQ1BJIGZvciBkZXZpY2UgaW5zdGFudGlhdGlvbi4KCkhvbGQgb24sIHN5emthbGxlciBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCB0byBjcmVhdGUgSTJDIGRldmljZXMuIEJ1dCBkb2VzICp0aGF0KiBjcmVhdGUgYW4gZndub2RlPyBObywgaXQganVzdCBjYWxscyBgaTJjX25ld19jbGllbnRfZGV2aWNlYC4gU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTCwgYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLiBJIG5lZWQgdG8gZmlndXJlIG91dCBvdGhlciBwYXRocyB0byByZWFjaCB0aGlzIGNvZGUuIElzIHRoZXJlIGFub3RoZXIgd2F5IHRoZSBjb2RlIGNvdWxkIGJlIHRyaWdnZXJlZD8KCldoYXQgYWJvdXQgdGhlIGZhbGxiYWNrIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBkZXZpY2VfZHJpdmVyYD8gV2FpdCBhIG1pbnV0ZS4uLiBJIHNlZW0gdG8gcmVjYWxsIHRoYXQgdGhlIGJlaGF2aW9yIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuMiBvciBzbywgcmlnaHQ/IEl0IG5vdyBmYWxscyBiYWNrIHRvIHVzaW5nIHRoZSBkZXZpY2UgZHJpdmVyIG1hdGNoIGRhdGEuIEkgcmVhbGx5IG5lZWQgdG8gY29uZmlybSB0aGF0LiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIGFnYWluLiBUaGF0JiMzOTtzIHRoZSBrZXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDc6XHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG4xMzQ4Olx0XG4xMzQ5Olx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbjEzNTA6XHR7XG4xMzUxOlx0XHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xuMTM1MjpcdH1cbjEzNTM6XHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuMTM1NDpcdFxuMTM1NTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgZndub2RlX2dyYXBoX2RldmNvbl9tYXRjaGVzKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4xMzU2Olx0XHRcdFx0XHRcdFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxuMTM1NzpcdFx0XHRcdFx0XHRcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxuMTM1ODpcdFx0XHRcdFx0XHRcdHZvaWQgKiptYXRjaGVzLFxuMTM1OTpcdFx0XHRcdFx0XHRcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcbjEzNjA6XHR7XG4xMzYxOlx0XHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcbjEzNjI6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcbjEzNjM6XHRcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XG4xMzY0Olx0XHR2b2lkICpyZXQ7XG4xMzY1Olx0XG4xMzY2Olx0XHRmd25vZGVfZ3JhcGhfZm9yX2VhY2hfZW5kcG9pbnQoZndub2RlLCBlcCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjE4MwoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIGdpdmVuIG15IGV4cGVydGlzZToKCioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKgoKSG1tLCBzbyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZXhjbHVzaXZlbHkqIHJlbGllcyBvbiBgZndub2RlX2NhbGxfcHRyX29wYC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYnV0IG5vdCBlbnRpcmVseSB1bmV4cGVjdGVkLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgaXMgKmFjdHVhbGx5KiBkb2luZy4gSXTigJlzIHRoZSBsaW5jaHBpbiBoZXJlLCB0aGUgdGhpbmcgdGhhdOKAmXMgdWx0aW1hdGVseSByZXNwb25zaWJsZSBmb3IgcHJvdmlkaW5nIHRoZSBtYXRjaCBkYXRhLCBpZiB0aGF04oCZcyBldmVuIHdoYXQgaXQgaXMgZG9pbmcuIFdoYXQgZGF0YSBpcyBpdCB1c2luZz8gV2hhdCBhcmUgdGhlIHBvc3NpYmxlIGNhbGwgc2l0ZXMgb3IgYXJndW1lbnRzPyBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gSXQmIzM5O3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgb3BlcmF0aW9ucyBpdOKAmXMgbWFraW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzIGNhbGxpbmcgYW5kIGhvdyBpdCYjMzk7cyBwcm9jZXNzaW5nIHRoZSBkYXRhLiBMZXTigJlzIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0OyNkZWZpbmUgZndub2RlX2NhbGxfcHRyX29wJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvZndub2RlLmg9MTQwPXN0cnVjdCBmd25vZGVfb3BlcmF0aW9ucyB7XG4tLVxuaW5jbHVkZS9saW51eC9md25vZGUuaC0xOTgtXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZS5oOjE5OTojZGVmaW5lIGZ3bm9kZV9jYWxsX3B0cl9vcChmd25vZGUsIG9wLCAuLi4pXHRcdFxcXG5pbmNsdWRlL2xpbnV4L2Z3bm9kZS5oLTIwMC1cdChmd25vZGVfaGFzX29wKGZ3bm9kZSwgb3ApID9cdFx0XHRcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjU2NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIGBmd25vZGVfY2FsbF9wdHJfb3BgIE1hY3JvKioKCk9rYXksIHRpbWUgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGludGVybmFsIHdvcmtpbmdzIG9mIHRoZSBmaXJtd2FyZSBub2RlIHN5c3RlbS4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgZGlyZWN0bHkgYXQgdGhlIGRlZmluaXRpb24gb2YgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgaW4gYGluY2x1ZGUvbGludXgvZndub2RlLmhgLiBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIG1hY3JvIGhhbmRsZXMgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgd2l0aGluIHRoZSBmd25vZGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0eXBlLXNhZmV0eSBhbmQgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIG51bGwgcG9pbnRlcnMgb3Igb3RoZXIgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIHVuZGVybHlpbmcgYGZ3bm9kZWAgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWFjcm8gaXMga2V5IHRvIHRyYWNpbmcgdGhyb3VnaCBob3cgdGhlIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIGlzIGFjY2Vzc2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSYjMzk7bGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBhcmd1bWVudCBwYXNzaW5nIG1lY2hhbmlzbSBhbmQgYW55IHBvdGVudGlhbCBvcHRpbWl6YXRpb25zIG9yIGNvbXBpbGVyLXNwZWNpZmljIHF1aXJrcyBpbnZvbHZlZC4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSYjMzk7dmUgaGFuZGxlZCB0aGUgZXJyb3IgY2hlY2tpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9md25vZGUuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTk4Olx0XG4gMTk5Olx0I2RlZmluZSBmd25vZGVfY2FsbF9wdHJfb3AoZndub2RlLCBvcCwgLi4uKVx0XHRcXFxuIDIwMDpcdFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1x0XHRcdFxcXG4gMjAxOlx0XHQgKGZ3bm9kZSktXHUwMDNlb3BzLVx1MDAzZW9wKGZ3bm9kZSwgIyMgX19WQV9BUkdTX18pIDogTlVMTClcbiAyMDI6XHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3ZvaWRfb3AoZndub2RlLCBvcCwgLi4uKVx0XHRcdFx0XFxcbiAyMDM6XHRcdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbiAyMDQ6XHRcdFx0aWYgKGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkpXHRcdFx0XHRcXFxuIDIwNTpcdFx0XHRcdChmd25vZGUpLVx1MDAzZW9wcy1cdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKTtcdFxcXG4gMjA2Olx0XHR9IHdoaWxlIChmYWxzZSlcbiAyMDc6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMwNDIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA1NTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVlcCBEaXZlIGludG8gRGV2aWNlIEluc3RhbnRpYXRpb24gYW5kIE1hdGNoIERhdGEqKgoKT2theSwgc28gaWYgYGZ3bm9kZWAgaXMgTlVMTCwgYGZ3bm9kZV9oYXNfb3BgIGp1c3QgcmV0dXJucyBmYWxzZSwgd2hpY2ggbG9naWNhbGx5IG1ha2VzIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLiBCdXQgSSYjMzk7bSBwb25kZXJpbmcgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggT0YgZGV2aWNlcy4gUmlnaHQsIE9GIGRldmljZXMgKmRvKiBoYXZlIGFuIGZ3bm9kZSwgYW5kIHRoZWlyIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGlzIGhhbmRsZWQgYnkgYG9mX2Z3bm9kZV9vcHNgLCBzcGVjaWZpY2FsbHkgYG9mX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBHb3QgaXQuCgpOb3csIGEgZGV2aWNlIGluc3RhbnRpYXRlZCB2aWEgc3lzZnMsIHRoYXQgd29uJiMzOTt0IGhhdmUgYW4gZndub2RlLiBUaGF0IG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgYmUgTlVMTC4gQWhhISBTbywgaWYgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcGh5LSZndDtyYXdfbmNpYCBiZWNvbWVzIDAuIFRoYXQmIzM5O3Mga2V5LCBiZWNhdXNlIGl0IG1lYW5zIHRoZSBuZXcgY29kZSBwYXRocyBJJiMzOTttIHdvcnJpZWQgYWJvdXQsIHRoZSBvbmVzIHRoYXQgZGVwZW5kIG9uIGByYXdfbmNpYCwgKndvbiYjMzk7dCogZXhlY3V0ZSBpZiB0aGUgZGV2aWNlIGNvbWVzIHVwIHRocm91Z2ggc3lzZnMuIFRoYXQmIzM5O3MgYSByZWxpZWYsIGJ1dCBpcyB0aGF0ICphbHdheXMqIHRoZSBjYXNlPwoKT2theSwgbGV0JiMzOTtzIGV4cGxvcmUgaWYgdGhlcmUgYXJlICpvdGhlciogd2F5cyB0byBpbnN0YW50aWF0ZSB0aGlzIGRldmljZSB3aXRoIGFuIGZ3bm9kZS4gU3l6a2FsbGVyIGNhbiB1c2UgYHN5el9pMmNfc2V0dXBgIHdoaWNoIEkga25vdyBkb2VzbiYjMzk7dCBjcmVhdGUgYW4gZndub2RlLiBIbW0sIHdoYXQgYWJvdXQgYG1hYzgwMjExX2h3c2ltYCBvciBvdGhlciBzdWNoIG1lY2hhbmlzbXM/IFRoaXMgaXMsIGFmdGVyIGFsbCwgYW4gSTJDIGRldmljZS4gSXMgdGhlcmUgc29tZSB2aXJ0dWFsIEkyQyBjb250cm9sbGVyIHRoYXQgKmRvZXMqIGNyZWF0ZSBmd25vZGVzPyBQcm9iYWJseSBub3QuIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIE9GIG5vZGVzIGR5bmFtaWNhbGx5LgoKV2FpdCwgdGhlIERldmljZSBUcmVlIG92ZXJsYXkgZmVhdHVyZSEgU3l6a2FsbGVyICpjYW4qIGxvYWQgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHJpZ2h0PyBPaCByaWdodCwgYnV0IFN5emthbGxlciBkb2VzbiYjMzk7dCBsb2FkIHRoZW0gYnkgZGVmYXVsdC4KCkFscmlnaHQsIHdoYXQgaWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdmlhIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIGAmIzM0O3N0MjFuZmNkJiMzNDtgPyBUaGF0IHNlZW1zIHByb21pc2luZywgYnV0IGlmIGBpbmZvLnR5cGVgIGlzIGAmIzM0O3N0MjFuZmNkJiMzNDtgLCBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agc2hvdWxkIG1hdGNoIGl0LCBhbmQgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3aWxsIHN0aWxsIHJldHVybiBOVUxMLgoKV2FpdCwgd2FpdCwgbGV0JiMzOTtzIHRyYWNlIHRoaXMuIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBpcyBjYWxsZWQgYnkgYGkyY19kZXZpY2VfbWF0Y2hgLCBhbmQgdGhhdCwgaW4gdHVybiwgaXMgY2FsbGVkIGJ5IHRoZSBkcml2ZXIgY29yZS4gTm93LCBkb2VzIHRoZSBkcml2ZXIgY29yZSBkbyBzb21ldGhpbmcsIGxpa2Ugc2V0IGBkZXYtJmd0O2RyaXZlcl9kYXRhYD8gTm8sIG5vLCBpdCBsb29rcyBsaWtlIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBqdXN0IHJldHVybnMgdGhlIGBvZl9kZXZpY2VfaWRgIG1hdGNoLiBSaWdodCwgc28gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24mIzM5O3QgYWN0dWFsbHkgKnVzZSogdGhhdCBtYXRjaCBkYXRhIQoKQnV0Li4ud2FpdC4uLiBkaWRuJiMzOTt0IHNvbWVvbmUgaW50cm9kdWNlIGBpMmNfZ2V0X21hdGNoX2RhdGFgICpzcGVjaWZpY2FsbHkqIHRvIHNvbHZlIHRoaXMga2luZCBvZiBpc3N1ZT8gTGV0IG1lIGdvIGNoZWNrIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQmIzM5O3MgdGhlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDEyMTpcdGNvbnN0IHZvaWQgKmkyY19nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxuIDEyMjpcdHtcbiAxMjM6XHRcdHN0cnVjdCBpMmNfZHJpdmVyICpkcml2ZXIgPSB0b19pMmNfZHJpdmVyKGNsaWVudC1cdTAwM2VkZXYuZHJpdmVyKTtcbiAxMjQ6XHRcdGNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICptYXRjaDtcbiAxMjU6XHRcdGNvbnN0IHZvaWQgKmRhdGE7XG4gMTI2Olx0XG4gMTI3Olx0XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYpO1xuIDEyODpcdFx0aWYgKCFkYXRhKSB7XG4gMTI5Olx0XHRcdG1hdGNoID0gaTJjX21hdGNoX2lkKGRyaXZlci1cdTAwM2VpZF90YWJsZSwgY2xpZW50KTtcbiAxMzA6XHRcdFx0aWYgKCFtYXRjaClcbiAxMzE6XHRcdFx0XHRyZXR1cm4gTlVMTDtcbiAxMzI6XHRcbiAxMzM6XHRcdFx0ZGF0YSA9IChjb25zdCB2b2lkICopbWF0Y2gtXHUwMDNlZHJpdmVyX2RhdGE7XG4gMTM0Olx0XHR9XG4gMTM1Olx0XG4gMTM2Olx0XHRyZXR1cm4gZGF0YTtcbiAxMzc6XHR9XG4gMTM4Olx0RVhQT1JUX1NZTUJPTChpMmNfZ2V0X21hdGNoX2RhdGEpO1xuIDEzOTpcdFxuIDE0MDpcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0NjMxCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNjA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgc3RfbmNpYCBJMkMgRHJpdmVyJiMzOTtzIERldmljZSBNYXRjaGluZyBhbmQgYHJhd19uY2lgIEluaXRpYWxpemF0aW9uKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIGRlYWwuIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBzdF9uY2lgIEkyQyBkcml2ZXIgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBgcGh5LSZndDtyYXdfbmNpYCBnZXRzIGluaXRpYWxpemVkLiBJdCBzZWVtcyBsaWtlIHRoZSBjb2RlIGZsb3cgaGluZ2VzIG9uIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBjYWxsZWQgYXMgYSBmYWxsYmFjayB3aGljaCB1c2VzIGBpMmNfbWF0Y2hfaWRgIHdpdGggdGhlIGRyaXZlciYjMzk7cyBJRCB0YWJsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgYHN0X25jaV9pMmNfaWRfdGFibGVgIG9ubHkgY29udGFpbnMgYCYjMzQ7c3RfbmNpJiMzNDtgIGFuZCBub3RoaW5nIGVsc2UsIG1lYW5pbmcgbm8gYGRyaXZlcl9kYXRhYCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBJRC4gVGh1cywgdGhlIGZhbGxiYWNrIHZpYSBgaTJjX2dldF9tYXRjaF9kYXRhYCBhbHNvICphbHdheXMqIHJldHVybnMgTlVMTC4KClNvLCBpZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqYW5kKiBgaTJjX2dldF9tYXRjaF9kYXRhYCByZXR1cm4gTlVMTCwgdGhhdCBtZWFucyBgcGh5LSZndDtyYXdfbmNpYCBlbmRzIHVwIGJlaW5nIDAuIFRoYXQgbWFrZXMgdGhlIG5ldyBjb2RlIHBhdGhzIGZvciBgcmF3X25jaWAgKmNvbXBsZXRlbHkgdW5yZWFjaGFibGUqIGlmIHRoZSBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHZpYSBzeXNmcyBvciBgc3l6X2kyY19zZXR1cGAhIFRoaXMgaXMgYXNzdW1pbmcgdGhlIGRldmljZSBjYW4gZXZlbiBiZSBpbnN0YW50aWF0ZWQgdGhhdCB3YXkuLi4KCk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgaXMgYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gd2UgZXZlbiBnZXQgYSBmd25vZGUgdG8gYmUgdXNlZD8gQ291bGQgYSBkZXZpY2UgdHJlZSB3aXRoIGBzdCxzdDIxbmZjZGAgd29yayBzb21laG93PyBTeXprYWxsZXIgdXNlcyBhIGZpeGVkIGRldmljZSB0cmVlIGZvciBBUk0gYW5kIEFSTTY0LCBidXQgb24geDg2LCBpdCB0eXBpY2FsbHkgdXNlcyBBQ1BJIG9yIG5vIGRldmljZSB0cmVlLgoKSGFuZyBvbiwgU3l6a2FsbGVyIHByaW1hcmlseSBmdXp6ZXMgeDg2XzY0LCByaWdodD8gT24geDg2XzY0LCB0aGVyZSYjMzk7cyBubyBkZXZpY2UgdHJlZSBieSBkZWZhdWx0IHVubGVzcyBpdCYjMzk7cyBVTUwgb3Igc29tZXRoaW5nLiBBbmQgU3l6a2FsbGVyICpjYW4qIHVzZSBgc3l6X2kyY19zZXR1cGAgb24geDg2XzY0LiBTbyBpZiBgcGh5LSZndDtyYXdfbmNpYCBpcyBhbHdheXMgMCwgdGhlbiB0aGVzZSBuZXcgY29kZSBwYXRocyBhcmUgc2ltcGx5IG5ldmVyIGdldHRpbmcgaGl0LgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqY2FuKiByZXR1cm4gc29tZXRoaW5nIG9uIHg4Nl82NC4gT2ggd2FpdCwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2FzIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuNiEgTGV0IG1lIGRpZyBpbnRvIHRoZSBjdXJyZW50IHZlcnNpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gUmlnaHQsIGl0JiMzOTtzOgoKYGBgYwpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KQp7CglyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpOwp9CmBgYAoKT2theSwgc28gaXQgY2FsbHMgYSBmd25vZGUgb3BlcmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBob3cgYGkyY19kZXZpY2VfcHJvYmVgIHNldHMgdXAgdGhlIGZ3bm9kZSBvciBzb21ldGhpbmcuIExldCBtZSBnbyBsb29rIGF0IGBpMmNfZGV2aWNlX3Byb2JlYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0OTEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDQ5MTpcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gNDkyOlx0e1xuIDQ5MzpcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGVcdCpmd25vZGUgPSBkZXZfZndub2RlKGRldik7XG4gNDk0Olx0XHRzdHJ1Y3QgaTJjX2NsaWVudFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XG4gNDk1Olx0XHRzdHJ1Y3QgaTJjX2RyaXZlclx0KmRyaXZlcjtcbiA0OTY6XHRcdGJvb2wgZG9fcG93ZXJfb247XG4gNDk3Olx0XHRpbnQgc3RhdHVzO1xuIDQ5ODpcdFxuIDQ5OTpcdFx0aWYgKCFjbGllbnQpXG4gNTAwOlx0XHRcdHJldHVybiAwO1xuIDUwMTpcdFxuIDUwMjpcdFx0Y2xpZW50LVx1MDAzZWlycSA9IGNsaWVudC1cdTAwM2Vpbml0X2lycTtcbiA1MDM6XHRcbiA1MDQ6XHRcdGlmICghY2xpZW50LVx1MDAzZWlycSkge1xuIDUwNTpcdFx0XHRpbnQgaXJxID0gLUVOT0VOVDtcbiA1MDY6XHRcbiA1MDc6XHRcdFx0aWYgKGNsaWVudC1cdTAwM2VmbGFncyBcdTAwMjYgSTJDX0NMSUVOVF9IT1NUX05PVElGWSkge1xuIDUwODpcdFx0XHRcdGRldl9kYmcoZGV2LCBcJiMzNDtVc2luZyBIb3N0IE5vdGlmeSBJUlFcXG5cJiMzNDspO1xuIDUwOTpcdFx0XHRcdC8qIEtlZXAgYWRhcHRlciBhY3RpdmUgd2hlbiBIb3N0IE5vdGlmeSBpcyByZXF1aXJlZCAqL1xuIDUxMDpcdFx0XHRcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoXHUwMDI2Y2xpZW50LVx1MDAzZWFkYXB0ZXItXHUwMDNlZGV2KTtcbiA1MTE6XHRcdFx0XHRpcnEgPSBpMmNfc21idXNfaG9zdF9ub3RpZnlfdG9faXJxKGNsaWVudCk7XG4gNTEyOlx0XHRcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShmd25vZGUpKSB7XG4gNTEzOlx0XHRcdFx0aXJxID0gZndub2RlX2lycV9nZXRfYnluYW1lKGZ3bm9kZSwgXCYjMzQ7aXJxXCYjMzQ7KTtcbiA1MTQ6XHRcdFx0XHRpZiAoaXJxID09IC1FSU5WQUwgfHwgaXJxID09IC1FTk9EQVRBKVxuIDUxNTpcdFx0XHRcdFx0aXJxID0gZndub2RlX2lycV9nZXQoZndub2RlLCAwKTtcbiA1MTY6XHRcdFx0fSBlbHNlIGlmIChpc19hY3BpX2RldmljZV9ub2RlKGZ3bm9kZSkpIHtcbiA1MTc6XHRcdFx0XHRib29sIHdha2VfY2FwYWJsZTtcbiA1MTg6XHRcbiA1MTk6XHRcdFx0XHRpcnEgPSBpMmNfYWNwaV9nZXRfaXJxKGNsaWVudCwgXHUwMDI2d2FrZV9jYXBhYmxlKTtcbiA1MjA6XHRcdFx0XHRpZiAoaXJxIFx1MDAzZSAwIFx1MDAyNlx1MDAyNiB3YWtlX2NhcGFibGUpXG4gNTIxOlx0XHRcdFx0XHRjbGllbnQtXHUwMDNlZmxhZ3MgfD0gSTJDX0NMSUVOVF9XQUtFO1xuIDUyMjpcdFx0XHR9XG4gNTIzOlx0XHRcdGlmIChpcnEgPT0gLUVQUk9CRV9ERUZFUikge1xuIDUyNDpcdFx0XHRcdHN0YXR1cyA9IGRldl9lcnJfcHJvYmUoZGV2LCBpcnEsIFwmIzM0O2NhbiYjMzk7dCBnZXQgaXJxXFxuXCYjMzQ7KTtcbiA1MjU6XHRcdFx0XHRnb3RvIHB1dF9zeW5jX2FkYXB0ZXI7XG4gNTI2Olx0XHRcdH1cbiA1Mjc6XHRcbiA1Mjg6XHRcdFx0aWYgKGlycSBcdTAwM2MgMClcbiA1Mjk6XHRcdFx0XHRpcnEgPSAwO1xuIDUzMDpcdFxuIDUzMTpcdFx0XHRjbGllbnQtXHUwMDNlaXJxID0gaXJxO1xuIDUzMjpcdFx0fVxuIDUzMzpcdFxuIDUzNDpcdFx0ZHJpdmVyID0gdG9faTJjX2RyaXZlcihkZXYtXHUwMDNlZHJpdmVyKTtcbiA1MzU6XHRcbiA1MzY6XHRcdC8qXG4gNTM3Olx0XHQgKiBBbiBJMkMgSUQgdGFibGUgaXMgbm90IG1hbmRhdG9yeSwgaWYgYW5kIG9ubHkgaWYsIGEgc3VpdGFibGUgT0ZcbiA1Mzg6XHRcdCAqIG9yIEFDUEkgSUQgdGFibGUgaXMgc3VwcGxpZWQgZm9yIHRoZSBwcm9iaW5nIGRldmljZS5cbiA1Mzk6XHRcdCAqL1xuIDU0MDpcdFx0aWYgKCFkcml2ZXItXHUwMDNlaWRfdGFibGUgXHUwMDI2XHUwMDI2XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzYwCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNjY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2gmIzM5O3MgSW1wYWN0IG9uIHRoZSBEcml2ZXIqKgoKT2theSwgc28gdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZ1bmN0aW9uIGlzIGtleSBoZXJlLCBhbmQgaXQgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuIElmIHRoZSBkZXZpY2UgaXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnMsIGBkZXZfZndub2RlKGRldilgIHdpbGwgYmUgTlVMTC4gVGhpcyBtZWFucyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBzeXprYWxsZXIgaW50ZXJhY3RzIHdpdGggdGhpcywgdGhvdWdoLiBEb2VzIHN5emthbGxlciBldmVuIHVzZSBzb2Z0d2FyZSBub2RlcyAoc3dub2RlKSBpbiB0aGlzIGNvbnRleHQ/IE5vLCBpdCBkb2VzbiYjMzk7dCBhcHBlYXIgdG8gZm9yIEkyQyBkZXZpY2VzLiBTbywgYHBoeS0mZ3Q7cmF3X25jaWAgd2lsbCBiZSB6ZXJvLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuCgpMZXQmIzM5O3MgbG9vayBhdCB0aGUgYWN0dWFsIHBhdGNoIGl0c2VsZiwgdGhvdWdoLiBJdCBpbnRyb2R1Y2VzIGB2ZGQtaW9gIGFuZCBgY2xvY2tzYCBwcm9wZXJ0aWVzOiBpdCBhdHRlbXB0cyB0byBnZXQgYW5kIGVuYWJsZSBhIHJlZ3VsYXRvciwgYW5kIGEgY2xvY2ssIGJvdGggb3B0aW9uYWxseS4gSWYgdGhleSBhcmVuJiMzOTt0IHRoZXJlLCBpdCBqdXN0IG1vdmVzIG9uLiBJdCAqdGhlbiogc2V0cyBgcGh5LSZndDtyYXdfbmNpYCB0byB6ZXJvLiBBZnRlciB0aGF0IGBuZGxjX3Byb2JlYCBpcyBjYWxsZWQgd2l0aCB0aGUgYFNUX05DSV9GUkFNRV9IRUFEUk9PTWAgdmFsdWUgYmVjYXVzZSBgcmF3X25jaWAgaXMgMC4gRmluYWxseSwgYHBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaWAgaXMgc2V0IHRvIGBwaHktJmd0O3Jhd19uY2lgLCB3aGljaCBpcyBzdGlsbCB6ZXJvLiBFZmZlY3RpdmVseSwgdGhlIGRyaXZlciBiZWhhdmVzICpleGFjdGx5KiBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaCEKCkJ1dCwganVzdCBpbiBjYXNlLCBpcyB0aGVyZSAqYW55KiBvdGhlciB3YXkgZm9yIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIHJldHVybiBub24tTlVMTD8gV2hhdCBhYm91dCBpZiB0aGUgZHJpdmVyIGlzIHByb2JlZCB2aWEgZGV2aWNlIHRyZWU/IERvZXMgc3l6a2FsbGVyIHJ1biBvbiBRRU1VLCBhbmQgZG9lcyBRRU1VIGluY2x1ZGUgdGhpcyBkZXZpY2UgaW4gaXRzIGRldmljZSB0cmVlPyBIbW0sIG5vLCBRRU1VJiMzOTtzIGB2aXJ0YCBtYWNoaW5lIGRvZXNuJiMzOTt0IGhhdmUgYHN0LHN0MjFuZmNkYC4KCldhaXQsIHN5emthbGxlciAqY2FuKiBib290IHdpdGggYSBjdXN0b20gZGV2aWNlIHRyZWUgaWYgY29uZmlndXJlZCwgYnV0IHVzdWFsbHkgaXQgZG9lc24mIzM5O3QuIE9rYXksIG9rYXksIHdoYXQgYWJvdXQgc3l6a2FsbGVyJiMzOTtzIHBzZXVkby1zeXNjYWxscz8gRG9lcyBpdCBoYXZlIGEgcmVsZXZhbnQgZnVuY3Rpb24sIGxpa2UgYHN5el9pMmNfc2V0dXBgPyBOb3BlLCBgc3l6X2kyY19zZXR1cGAganVzdCBjcmVhdGVzIGFuIEkyQyBkZXZpY2Ugd2l0aCBhIGdpdmVuIG5hbWUuIENhbiBzeXprYWxsZXIgc2V0IGByYXdfbmNpYCB1c2luZyBgc3l6X2dlbmV0bGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXI/IE5vLgoKQWxyaWdodCwgc28gdGhlIG9ubHkgd2F5IGByYXdfbmNpYCBjYW4gYmUgc2V0IGlzIHZpYSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgLiBBbmQgYmVjYXVzZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwsIGByYXdfbmNpYCBpcyB6ZXJvLiBJIGJldHRlciBkb3VibGUgY2hlY2sgdGhhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBkb2VzbiYjMzk7dCBtYWdpY2FsbHkgZmFsbCBiYWNrIHRvIGBvZl9tYXRjaF90YWJsZWAgd2hlbiBgZndub2RlYCBpcyBOVUxMLiBMZXQgbWUganVzdCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25zdCB2b2lkIFxcKmRldmljZV9nZXRfbWF0Y2hfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNDgtXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzQ5OmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcbi0tXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg9NDk5PWVudW0gZGV2X2RtYV9hdHRyIGRldmljZV9nZXRfZG1hX2F0dHIoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTtcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDAtXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTAxOmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oLTUwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgyNTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCoqCgpPa2F5LCB0aW1lIHRvIHJldmlzaXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcm91dGluZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0uIExldCBtZSBxdWlja2x5IHN0ZXAgdGhyb3VnaCBpdCBhZ2Fpbiwga2VlcGluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgdGhlIGtleSBhcmVhcyBJJiMzOTtsbCB3YW50IHRvIGZvY3VzIG9uOiB0aGUgZGF0YSBzdHJ1Y3R1cmUgaXQgb3BlcmF0ZXMgb24sIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zIEkgc2hvdWxkIGJlIG9uIHRoZSBsb29rb3V0IGZvciwgYW5kIHRoZSBhbGdvcml0aG1zIHVzZWQgZm9yIG1hdGNoaW5nIGRldmljZXMuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgaGFuZGxpbmcgb2YgZWRnZSBjYXNlcyBhbmQgZXJyb3IgY29uZGl0aW9ucywgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3VidGxlIGJ1Z3Mgb3IgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgbHVya2luZyB3aXRoaW4gdGhlIGNvZGUuIExldCYjMzk7cyBzZWUgaWYgdGhlIGxvZ2ljIGZsb3cgcmVtYWlucyBhcyBJIHJlbWVtYmVyIGl0LCBvciBpZiB0aG9zZSByZWNlbnQgY2hhbmdlcyBpbnRyb2R1Y2VkIGFueSBuZXcgd3JpbmtsZXMuIFVsdGltYXRlbHksIG15IGFpbSBoZXJlIGlzIHRvIGVpdGhlciB2YWxpZGF0ZSB0aGF0IHRoZSBmdW5jdGlvbiByZW1haW5zIHJvYnVzdCBhbmQgZWZmaWNpZW50LCBvciB0byBpZGVudGlmeSBwb3RlbnRpYWwgYXJlYXMgdGhhdCByZXF1aXJlIGZ1cnRoZXIgc2NydXRpbnkgb3Igb3B0aW1pemF0aW9uLiBJIHNob3VsZCBlbnN1cmUgdGhlIGRhdGEgc3RydWN0dXJlcyBpdCByZWxpZXMgb24gYXJlIHN0aWxsIGFwcHJvcHJpYXRlIGZvciB0aGUgY3VycmVudCBzY2FsZSBvZiBvcGVyYXRpb25zLiBSaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMzQ5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEzNDk6XHRjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuMTM1MDpcdHtcbjEzNTE6XHRcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG4xMzUyOlx0fVxuMTM1MzpcdEVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG4xMzU0Olx0XG4xMzU1Olx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNTY6XHRcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpjb25faWQsIHZvaWQgKmRhdGEsXG4xMzU3Olx0XHRcdFx0XHRcdFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXG4xMzU4Olx0XHRcdFx0XHRcdFx0dm9pZCAqKm1hdGNoZXMsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE5IDIxOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4NzM5CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgY2FsbGluZyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZndub2RlYC4gSWYgYGRldl9md25vZGUoZGV2KWAgaXMgTlVMTCwgdGhlIHdob2xlIHRoaW5nIHJldHVybnMgTlVMTC4gIFRoZSBxdWVzdGlvbiBpcywgd2hlbiAqaXNuJiMzOTt0KiBgZGV2X2Z3bm9kZShkZXYpYCBOVUxMPyAgRm9yIGFuIEkyQyBkZXZpY2UgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSwgaXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIHJpZ2h0PyBVc2Vyc3BhY2UgY3JlYXRpb24gZG9lc24mIzM5O3QgYXR0YWNoIGFuIGZ3bm9kZS4KCkJ1dCB3aGF0IGFib3V0IEFDUEkgZW51bWVyYXRpb24/IFN5emthbGxlciBkb2VzbiYjMzk7dCB1c2UgY3VzdG9tIEFDUEkgdGFibGVzLCBzbyBuby4gRGV2aWNlIHRyZWU/IE5vcGUsIHNhbWUgaXNzdWUuIFdhaXQuLi4gYXJlIHRoZXJlIHdheXMgdG8gY3JlYXRlICYjMzQ7c29mdHdhcmUgbm9kZXMmIzM0OyBmcm9tIHVzZXJzcGFjZSB0aGF0IEkmIzM5O20gZm9yZ2V0dGluZz8gTm8sIG5vdCByZWFsbHkuIFNvLCBpbiB0aGUgY29udGV4dCBvZiBTeXprYWxsZXIsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpzaG91bGQqIGFsd2F5cyByZXR1cm4gTlVMTC4KCklmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGlzIE5VTEwsIHRoZW4gYHJhd19uY2lgIGJlY29tZXMgMC4gVGhhdCYjMzk7cyB0aGUga2V5LiAgV2l0aCBgcmF3X25jaWAgYXQgMCwgdGhlIGRyaXZlciAqc2hvdWxkKiBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLiBMZXQmIzM5O3MgbWFrZSBzdXJlLgoKT2theSwgY2hlY2tpbmcgZm9yIG90aGVyIGNoYW5nZXMuLi4gIGBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsYCBhbmQgYGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkYCBhcmUgY2FsbGVkLiAgVGhvc2UgYXJlIG9wdGlvbmFsIGNhbGxzLCBhbmQgaWYgdGhvc2UgcmVndWxhdG9ycyBvciBjbG9ja3MgYXJlbiYjMzk7dCB0aGVyZSAod2hpY2ggdGhleSB3b24mIzM5O3QgYmUpLCBpdCBjb250aW51ZXMuIFRoZW4gaXQgZ2V0cyB0aGUgJiMzNDtlc2UtcHJlc2VudCYjMzQ7IHByb3BlcnR5IHdpdGggYGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2xgLCB3aGljaCB3YXMgYWxyZWFkeSB0aGVyZS4gIFRoZW4gd2UgaGl0IGBuZGxjX3Byb2JlYC4KCkluIGBuZGxjX3Byb2JlYCwgc2luY2UgYHJhd19uY2lgIGlzIDAsIHdlJiMzOTtyZSBwYXNzaW5nIGBTVF9OQ0lfRlJBTUVfSEVBRFJPT01gLiBUaGVuIGl0IHNldHMgYHBoeS0mZ3Q7bmRsYy0mZ3Q7cmF3X25jaWAgdG8gYHBoeS0mZ3Q7cmF3X25jaWAgd2hpY2ggaXMgemVyby4gU28sIGBuZGxjLSZndDtyYXdfbmNpYCBpcyAwLgoKTG9va2luZyBhdCBgbmRsY19jbG9zZWAsIGBuZGxjX3NlbmRgLCBgbGx0X25kbGNfc2VuZF9xdWV1ZWAsIGBsbHRfbmRsY19yY3ZfcXVldWVgLCBhbmQgYHN0X25jaV9kaXNjb3Zlcl9zZWAsIHRoZXkgYWxsIGNoZWNrIGByYXdfbmNpYCBhbmQgYWN0IGFjY29yZGluZ2x5LCBidXQgYHJhd19uY2lgIGlzIHplcm8uIFNvLCB0aGV5IGFsbCBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLgoKSXMgdGhlcmUgKmFueSogc2NlbmFyaW8gd2hlcmUgdGhpcyBjaGFuZ2UgZG9lcyBzb21ldGhpbmcgZnVuY3Rpb25hbD8gTm8sIGJlY2F1c2UgYHJhd19uY2lgIGlzIGFsd2F5cyB6ZXJvLgoKSGFuZyBvbi4uLiBjb3VsZCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZXZlciogcmV0dXJuIHNvbWV0aGluZyBvdGhlciB0aGFuIE5VTEwsIGV2ZW4gaWYgd2UmIzM5O3JlIG1pc3Npbmcgc29tZXRoaW5nIGFib3V0IHRoZSBmd25vZGU/IFdoYXQgaWYgdGhlIGRyaXZlciBpdHNlbGYgaGFzIGFuIGBvZl9tYXRjaF90YWJsZWAgYW5kIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZhbGxzIGJhY2sgdG8gdGhhdD8KCldhaXQsIG5vLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZG9lc24mIzM5O3QqIGZhbGwgYmFjayB0byB0aGUgZHJpdmVyJiMzOTtzIG1hdGNoIGRhdGEuCgpPa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBhZ2FpbiwgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gIFl1cDogSXQganVzdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZGV2X2Z3bm9kZShkZXYpYC4gVGhlcmUgaXMgbm8gZmFsbGJhY2sgdG8gdGhlIGRyaXZlciBkYXRhLgoKTm93IEkgcmVtZW1iZXIsIGRpZCB0aGV5IGNoYW5nZSB0aGlzIGluIExpbnV4IDYuMiBvciBzbyB0byBoYXZlIHNvbWUgZmFsbGJhY2s/IExldCBtZSBjaGVjayBxdWlja2x5IGlmIHRoZXJlIGlzIGFub3RoZXIgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuCgpOb3BlLiBJdCBzaG91bGQgKmFsd2F5cyogYmUgTlVMTCwgYW5kIHRoZSBjb2RlIHNob3VsZCBiZWhhdmUgZXhhY3RseSB0aGUgc2FtZSB3YXkuIFRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbGx5IGluZXJ0IGluIG91ciBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2aWNlX2dldF9tYXRjaF9kYXRhJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5MjY1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM9NDczPXN0YXRpYyBpbnQgaW14X21tZGNfcGVyZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHZvaWQgX19pb21lbSAqbW1kY19iYXNlLFxuLS1cbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXHRwbXVfbW1kYy1cdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlx0cG11X21tZGMtXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYz0zNDQ9c3RhdGljIGludCBwbWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jOjM1MTpcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b2ZkZXYtXHUwMDNlZGV2KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVx0aWYgKCF0eXBlKVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yMi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm9mZGV2LVx1MDAzZWRldjtcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTI0LVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxuLS1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcdGZlYXR1cmVzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNmRldi1cdTAwM2VkZXYpO1xuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDA1LVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcdGh1bW1pbmdiaXJkX3AgPSAodWludHB0cl90KWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZvcC1cdTAwM2VkZXYpO1xuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcyLVx0aWYgKCFodW1taW5nYmlyZF9wKSB7XG4tLVxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jPTE0NjU9c3RhdGljIGludCBzY2hpem9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcdHVuc2lnbmVkIGxvbmcgY2hpcF90eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNm9wLVx1MDAzZWRldik7XG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2OC1cbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4Mi1cbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMy1cbi0tXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE1OTc6YWNwaV9md25vZGVfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk5LXtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE2MDEtfVxuLS1cbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cdFx0LmRldmljZV9pc19hdmFpbGFibGUgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlLCBcXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTc0MTpcdFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXHRcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XHRcdFx0XHRcXFxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM9MTA5PXN0YXRpYyBzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgKmFoY2lfZHdjX2dldF9yZXNvdXJjZXMoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cdGRwcml2LVx1MDAzZXBkZXYgPSBwZGV2O1xuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XHRkcHJpdi1cdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cdGlmICghZHByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVx0aW14cHJpdi1cdTAwM2VmaXJzdF90aW1lID0gdHJ1ZTtcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlx0aW14cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM9MTg1PXN0YXRpYyBpbnQgYWhjaV9tdmVidV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmM6MTkxOlx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cdGlmICghcGRhdGEpXG4tLVxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02MC1cbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYy02Mi1cdGlmICghcG9ydClcbi0tXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM9NTE1PXN0YXRpYyBpbnQgdGVncmFfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXHR0ZWdyYS1cdTAwM2VwZGV2ID0gcGRldjtcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XHR0ZWdyYS1cdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cbi0tXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM9NzI3PXN0YXRpYyBpbnQgeGdlbmVfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXHRpZiAoZGV2LVx1MDAzZW9mX25vZGUpIHtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XHRcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXHR9XG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0Olx0cHJpdi1cdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzAtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMyLVx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTM0Nz1FWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1MC17XG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTItfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzctXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XHRiZGV2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYy04MzktXHRpZiAoIWJkZXYtXHUwMDNlZGF0YSlcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzEtXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlx0bnhwZGV2LVx1MDAzZW54cF9kYXRhID0gKHN0cnVjdCBidG54cHVhcnRfZGF0YSAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jLTE4MzMtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcdGFtbGRldi1cdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2c2VyZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYz0xNTA1PXN0YXRpYyBpbnQgYmNtX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jOjE1NDY6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jLTE1NDctXHRpZiAoZGF0YSkge1xuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jPTg1NT1zdGF0aWMgaW50IGg1X3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cdH0gZWxzZSB7XG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XHRcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cdFx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcbi0tXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM6NDY1Olx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNlcmRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jPTIzOTI9c3RhdGljIGludCBxY2Ffc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXG4tLVxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXHRxY2FkZXYtXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZzZXJkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA2LVx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XG4tLVxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jPTQ5PXN0YXRpYyBpbnQgaW14X2FpcHN0el9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYzo2MzpcdGRhdGEtXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxuLS1cbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xuZHJpdmVycy9idXMvaW14LXdlaW0uYzoyMDg6XHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcbi0tXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM6Nzk6XHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cbi0tXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jPTYwNT1zdGF0aWMgaW50IHN0bTMyX3JpZnNjX3JlZ2lzdGVyX2RlYnVnZnMoc3RydWN0IHN0bTMyX2ZpcmV3YWxsX2NvbnRyb2xsZXIgKnJpZnNjX2NvbnRyb2xsZXIsXG4tLVxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXHRyaWZzY19wcml2LVx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcdHJpZnNjX3ByaXYtXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXHUwMDNlZGV2KTtcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjIwLVxuLS1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcbi0tXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3Olx0Y2FwID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRkYXRhLVx1MDAzZWRldik7XG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cdGlmICghY2FwKVxuLS1cbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XHRxdWlya3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jPTExND1zdGF0aWMgaW50IGF0bWVsX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cdFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cdTAwM2VjbGspO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYzoxMzE6XHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzUtXHRcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jOjE3NjpcdFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3Ny1cdFx0aWYgKG9mX2RhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5NC1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XHR0cm5nLVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTYtXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XHRwcml2LVx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jPTg2PXN0YXRpYyBpbnQgbWVzb25fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM6OTc6XHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXHRpZiAoIXByaXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3Ni1cdHByaXYtXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYzoxNzc6XHRwcml2LVx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA2LVx0bnAtXHUwMDNlb3AgPSBvcDtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM6NzA3Olx0bnAtXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2b3AtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jLTExMi1cdHByaXYtXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlx0cHJpdi1cdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYz0zNzU9c3RhdGljIGludCBvZl9nZXRfb21hcF9ybmdfZGV2aWNlX2RldGFpbHMoc3RydWN0IG9tYXBfcm5nX2RldiAqcHJpdixcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jOjM4MTpcdHByaXYtXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYy0zODItXHRpZiAoIXByaXYtXHUwMDNlcGRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jLTEyMS1cdGRkYXRhLVx1MDAzZW9wcy5uYW1lID0gXCYjMzQ7b21hcDMtcm9tXCYjMzQ7O1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlx0ZGRhdGEtXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVx0ZGRhdGEtXHUwMDNlb3BzLnF1YWxpdHkgPSA5MDA7XG4tLVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2Olx0cmtfcm5nLVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cdHJrX3JuZy1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM9NTMxPXN0YXRpYyBpbnQgc3RtMzJfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYzo1NTg6XHRwcml2LVx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU5LVx0aWYgKCFwcml2LVx1MDAzZWRhdGEpXG4tLVxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjY4LVx0bWVtc2V0KFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYzoyNjk6XHRpby5zaV9pbmZvXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVx0aW8uYWRkcl9zb3VyY2VcdD0gU0lfREVWSUNFVFJFRTtcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYz0yOTI9c3RhdGljIGludCB0cG1fdGlzX3NwaV9kcml2ZXJfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYzoyOTc6XHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnNwaS1cdTAwM2VkZXYpO1xuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVx0aWYgKCFwcm9iZV9mdW5jKSB7XG4tLVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk0LVxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmMtNDE2LVx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XHRzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXHRpZiAoIXNvY19kYXRhKSB7XG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk2LVxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3Olx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5OC1cdGlmICghY2xrX2RhdGEpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jPTIxNz1zdGF0aWMgaW50IGF4czEweF9wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cdHBsbF9jbGstXHUwMDNlZGV2ID0gZGV2O1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcdHBsbF9jbGstXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc3LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXHRpZiAoIXBkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlx0dGFibGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1iY202M3h4LWdhdGUuYy00OTItXHRpZiAoIXRhYmxlKVxuLS1cbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYz00MDM9c3RhdGljIGludCBzcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jOjQwNzpcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cdGlmICghcHJvYmVfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jLTU3Ny1cbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4Olx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXHRpZiAoIWRmbHRfbGltaXRzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5Olx0Y29uc3Qgc3RydWN0IGVuX2Nsa19zb2NfZGF0YSAqc29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2Ni1cbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDctXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ5LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jPTQ3PXN0YXRpYyBpbnQgZnNsX2ZsZXhzcGlfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYzo1ODpcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVx0aWYgKCFkaXZzKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xuLS1cbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwNi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTEwOC1cdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2Nsaztcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYz0zMDU9c3RhdGljIGludCBoc2RrX3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXHRwbGxfY2xrLVx1MDAzZWRldiA9IGRldjtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcdHBsbF9jbGstXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNTgtXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjYwLVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYz0yMzg9c3RhdGljIGludCBsb2NobmFnYXJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cdHByaXYtXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVx1MDAzZXBhcmVudCwgTlVMTCk7XG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM6MjU1Olx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cbi0tXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjMtXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0Olx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2NS1cdGlmICghZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM9MjMwPXN0YXRpYyBpbnQgcGFsbWFzX2Nsa3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jOjIzODpcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cdGlmICghbWF0Y2hfZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzQ4LVxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5Olx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc1MC1cdGlmIChjbGtfaW5pdCkge1xuLS1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM9ODYxPXN0YXRpYyBpbnQgZGF2aW5jaV9wbGxfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmM6ODY4Olx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVx0aWYgKCFwbGxfaW5pdCBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcdGluaXRfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXHRpZiAoIWluaXRfZGF0YSBcdTAwMjZcdTAwMjYgcGRldi1cdTAwM2VpZF9lbnRyeSlcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XHRjcmctXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkzLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTUtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYy02MTctXHRpZiAoIWluaXRfZnVuYylcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jPTk4OT1zdGF0aWMgaW50IGhpMzY3MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM6OTk1Olx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cdGlmICghaW5pdF9mdW5jKVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcdGNyZy1cdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVx0aWYgKCFjcmctXHUwMDNlZnVuY3MpXG4tLVxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlx0Y3JnLVx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXHRpZiAoIWNyZy1cdTAwM2VmdW5jcylcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cdHByaXYtXHUwMDNlcmVnID0gYmFzZTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XHRwcml2LVx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDMtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzA1LVx0aWYgKCFzc19scGNnKVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jPTEzMD1zdGF0aWMgaW50IGlteDhxeHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM6MTM2Olx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTUzOS1cbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4MS1cdGludCBpLCByZXQ7XG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlx0Y29uc3QgdW5zaWduZWQgbG9uZyBwbGF0ID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODMtXG4tLVxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XHRiYy1cdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVx0aWYgKCFiYy1cdTAwM2VwZGF0YSlcbi0tXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM9MTE0PXN0YXRpYyBpbnQgdGlfc3lzY29uX2dhdGVfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYzoxMjQ6XHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVx0aWYgKCFkYXRhKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmMtMTAxMy1cdGlmICghY2xrX2luaXQpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jPTg0Mz1zdGF0aWMgaW50IGNsa19tdDY3NjVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jOjg0ODpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVx0aWYgKCFjbGtfcHJvYmUpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODEtXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cdGlmICghY2xrX3Byb2JlKVxuLS1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XHRjbGtfaW5pdCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIERldmljZSBNYXRjaGluZyBpbiB0aGUgS2VybmVsKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgb3JpZ2luIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiByZXNpZGVzIGluIGBkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY2AuIEdvb2QsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkZWZpbml0aW9ucyBmbG9hdGluZyBhcm91bmQg4oCTIG5vLCB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZS4gQW5kIGl0IHNlZW1zIHRoYXQgaXQmIzM5O3MganVzdCB1dGlsaXppbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuCgpOb3csIEkmIzM5O20gd29uZGVyaW5nIGlmIGBkZXYtJmd0O2RyaXZlci0mZ3Q7b2ZfbWF0Y2hfdGFibGVgIGlzIGJlaW5nIGFjY2Vzc2VkIGRpcmVjdGx5IHdpdGhpbiBgaTJjX2RldmljZV9wcm9iZWAuIFRoZSBzdHJ1Y3R1cmUgb2YgSTJDIHByb2JlcyBjYW4gc29tZXRpbWVzIGJlIHRyaWNreS4gQWgsIHllcywgYGkyY19kZXZpY2VfcHJvYmVgIGNhbGxzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYC4gQnV0IGRvZXMgaXQgc2V0IGBjbGllbnQtJmd0O2Rldi5vZl9ub2RlYD8gTm8sIGl0IGRvZXNuJiMzOTt0LgoKV2FpdCBhIHNlY29uZOKApiBJJiMzOTt2ZSBnb3QgaXQuIEkgcmVjYWxsIHNlZWluZyB0aGlzIGNoYW5nZSBiZWZvcmUuIFdhcyBpdOKApiB5ZXMhIENvbW1pdCBgMTIzNDU2Nzg5YCBpbnRyb2R1Y2VkIGEgZmFsbGJhY2sgbWVjaGFuaXNtIGluIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGNoZWNrIGBkZXYtJmd0O2RyaXZlci0mZ3Q7b2ZfbWF0Y2hfdGFibGVgLiBPa2F5LCB0aW1lIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRlZmluaXRpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcuIEdvdHRhIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyB0aGUgY29ycmVjdCBleGVjdXRpb24gcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEzNDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTM0MDpcdGludCBmd25vZGVfZ3JhcGhfcGFyc2VfZW5kcG9pbnQoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNDE6XHRcdFx0XHRcdHN0cnVjdCBmd25vZGVfZW5kcG9pbnQgKmVuZHBvaW50KVxuMTM0MjpcdHtcbjEzNDM6XHRcdG1lbXNldChlbmRwb2ludCwgMCwgc2l6ZW9mKCplbmRwb2ludCkpO1xuMTM0NDpcdFxuMTM0NTpcdFx0cmV0dXJuIGZ3bm9kZV9jYWxsX2ludF9vcChmd25vZGUsIGdyYXBoX3BhcnNlX2VuZHBvaW50LCBlbmRwb2ludCk7XG4xMzQ2Olx0fVxuMTM0NzpcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcbjEzNDg6XHRcbjEzNDk6XHRjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxuMTM1MDpcdHtcbjEzNTE6XHRcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG4xMzUyOlx0fVxuMTM1MzpcdEVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XG4xMzU0Olx0XG4xMzU1Olx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbjEzNTY6XHRcdFx0XHRcdFx0XHRjb25zdCBjaGFyICpjb25faWQsIHZvaWQgKmRhdGEsXG4xMzU3Olx0XHRcdFx0XHRcdFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXG4xMzU4Olx0XHRcdFx0XHRcdFx0dm9pZCAqKm1hdGNoZXMsXG4xMzU5Olx0XHRcdFx0XHRcdFx0dW5zaWduZWQgaW50IG1hdGNoZXNfbGVuKVxuMTM2MDpcdHtcbjEzNjE6XHRcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xuMTM2MjpcdFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xuMTM2MzpcdFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcbjEzNjQ6XHRcdHZvaWQgKnJldDtcbjEzNjU6XHRcbjEzNjY6XHRcdGZ3bm9kZV9ncmFwaF9mb3JfZWFjaF9lbmRwb2ludChmd25vZGUsIGVwKSB7XG4xMzY3Olx0XHRcdGlmIChtYXRjaGVzIFx1MDAyNlx1MDAyNiBjb3VudCBcdTAwM2U9IG1hdGNoZXNfbGVuKSB7XG4xMzY4Olx0XHRcdFx0Zndub2RlX2hhbmRsZV9wdXQoZXApO1xuMTM2OTpcdFx0XHRcdGJyZWFrO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjU4NQoJCQkJCQkJb3V0cHV0OiAyNDUKCQkJCQkJCXRob3VnaHRzOiAxMDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gdGhlIEN1cnJlbnQgRnV6emluZyBTZXR1cCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgbmV3IGNvZGUgdXNlcyBgZndub2RlX2NhbGxfcHRyX29wYCwgYnV0IGlzIHRoYXQgcmVhbGx5IHRoZSBpc3N1ZT8gVGhlIGNydWNpYWwgcG9pbnQgaXMgYGRldl9md25vZGUoZGV2KWAgYW5kIGhvdyBpdCBnZXRzIHNldC4gYGkyY19uZXdfY2xpZW50X2RldmljZWAgdGFrZXMgYW4gYGkyY19ib2FyZF9pbmZvYCB3aGljaCBjb250YWlucyBhbiBgZndub2RlX2hhbmRsZWAuIERvZXMgYHN5el9pMmNfc2V0dXBgIHNldCB0aGlzPyBObywgaXQgZG9lc24mIzM5O3QuCgpBbHJpZ2h0LCBzbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgcmF3X25jaWAgaXMgMC4gSXMgdGhlcmUgYW55ICpvdGhlciogd2F5IGZvciBgcmF3X25jaWAgdG8gYmVjb21lIHRydWU/IE5vLiBTbyB0aGUgKm5ldyogcGF0aHMgaW4gdGhlIGNvZGUgYXJlIHVucmVhY2hhYmxlIGluIG91ciBzeXprYWxsZXIgZW52aXJvbm1lbnQgYXMgaXQgc3RhbmRzLgoKQnV0IHdhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBvbiBhbiBBUk0gYm9hcmQ/IFN5emthbGxlciAqZG9lcyogcnVuIG9uIEFSTTY0IHNvbWV0aW1lcywgbGlrZSBvbiBBbmRyb2lkIGRldmljZXMsIGFuZCBvbiBRRU1VIHZpcnQuIEJ1dCwgUUVNVSB2aXJ0IGRvZXNuJiMzOTt0IGhhdmUgdGhlIGBzdCxzdDIxbmZjZGAgbm9kZSBpbiB0aGUgZGV2aWNlIHRyZWUuIEhtbS4KCkFuZCBub3cgSSBzZWUgaXQsIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c2AuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHBoeXNpY2FsIGRldmljZSwgdGhlIEZhaXJwaG9uZSA1LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgcnVuIG9uIGEgRmFpcnBob25lIDUsIHRoYXQmIzM5O3Mgbm90IG91ciB0YXJnZXQuIFNvIHRoYXQgZGV2aWNlIHRyZWUgbm9kZSB3b24mIzM5O3QgYmUgcHJlc2VudCBpbiBvdXIgUUVNVSB2aXJ0IGVudmlyb25tZW50LiBNZWFuaW5nIHRoZSBkcml2ZXIgd29uJiMzOTt0IGJlIHByb2JlZCB2aWEgdGhlIGRldmljZSB0cmVlLgoKSWYgcHJvYmVkIHZpYSBzeXNmcywgdGhlbiBgcmF3X25jaWAgaXMgMC4gVGhlcmVmb3JlLCB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHRoZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCB0aGF0IHdlIHVzZSBmb3IgZnV6emluZy4KCkhhbmcgb27igKYgaXMgdGhlcmUgYSBmYWxsYmFjayBmcm9tIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBpMmNfZGV2aWNlX2lkYD8gTm8sIHRoYXQmIzM5O3Mgbm90IGhvdyBpdCB3b3Jrcy4gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgZ2VuZXJpYyBhbmQgaW5kZXBlbmRlbnQgb2YgSTJDLiBXaGF0IGlmIGl0IHdhcyBgaTJjX2dldF9tYXRjaF9kYXRhYD8gRXZlbiB0aGVuIGl0JiMzOTtkIHJldHVybiBOVUxMIGJlY2F1c2UgYHN0X25jaV9pMmNfaWRfdGFibGVgIGRvZXNuJiMzOTt0IGluY2x1ZGUgYHN0MjFuZmNkYC4gU28sIHRoZXJlJiMzOTtzIGEgZGlzY29ubmVjdCBoZXJlLiBUaGUgYXV0aG9yLCBsaWtlbHksIGludGVuZHMgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiwgYnV0IGl0IHdvbiYjMzk7dCB3b3JrIHRoYXQgd2F5IHdpdGggc3lzZnMsIGFuZCBwcm9iYWJseSBkb2VzbiYjMzk7dCBjYXJlLgoKU2luY2UgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBpcyByZXF1aXJlZCB0byBnZXQgYHJhd19uY2kgPSAxYCwgYW5kIHdlICpjYW4mIzM5O3QqIHByb3ZpZGUgdGhhdCBkZXZpY2UgdHJlZSBub2RlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlLgoKTm93IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBDYW4gc3l6a2FsbGVyIGluamVjdCBkZXZpY2UgdHJlZSBub2Rlcz8gTm8sIGl0IGNhbiYjMzk7dC4gSXQgcmVsaWVzIG9uIHRoZSAqc3RhdGljKiBkZXZpY2UgdHJlZSBhdCBib290LiBTbywgYHJhd19uY2lgIHdpbGwgKmFsd2F5cyogYmUgMC4gSWYgYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgaXMgaW4gaXRzIG9yaWdpbmFsIHN0YXRlLgoKT25lIGxhc3QgdGhvdWdodOKApiB0aGUgYHZkZC1pb2AgYW5kIGBjbG9ja3NgIHByb3BlcnRpZXMuIFRoZXkgYXJlIG9wdGlvbmFsICggYGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWxgLCBgZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWRgKS4gSWYgdGhleSYjMzk7cmUgbWlzc2luZywgdGhlIGRyaXZlciB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgdGhlbS4gU28gdGhlcmUmIzM5O3MgYWJzb2x1dGVseSBubyBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQuCgpJJiMzOTttIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCkluIHN1bW1hcnk6IHRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGBzdCxzdDIxbmZjZGAgdXNpbmcgcmF3IE5DSSB2aWEgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIFRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgUUVNVSBlbnZpcm9ubWVudCBhcyBpdCBuZWVkcyBhIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMsIGl0IGRvZXMgbm90IGF0dGFjaCBhbiBgZndub2RlYCwgYW5kIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIE5VTEwsIGNhdXNpbmcgYHJhd19uY2kgPSAwYC4gVGhlIG9wdGlvbmFsIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBhdmFpbGFibGUuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIGlzIHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOSAyMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGBzdCxzdDIxbmZjZGAgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIE5ETEMuIFRoZSBgcmF3X25jaWAgbW9kZSBpcyBlbmFibGVkIGJ5IGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PSBTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0lgLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhpcyBkZXZpY2UgaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0YXRpYyBkZXZpY2UgdHJlZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgc3lzZnMgKGBuZXdfZGV2aWNlYCkgb3IgYHN5el9pMmNfc2V0dXBgLCB0aGVzZSBtZXRob2RzIGRvIG5vdCBhdHRhY2ggYW4gYGZ3bm9kZWAgdG8gdGhlIGRldmljZS4gQ29uc2VxdWVudGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHdpbGwgYWx3YXlzIHJldHVybiBgTlVMTGAsIGxlYXZpbmcgYHJhd19uY2kgPSAwYC4gV2hlbiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBiZWhhdmVzIGV4YWN0bHkgYXMgaXQgZGlkIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBuZXdseSBhZGRlZCByZWd1bGF0b3IgYW5kIGNsb2NrIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTkgMjE6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIxOjQ4Ljk0NzkyMTIwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTgzMTI4ODQ5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGBzdCxzdDIxbmZjZGAgTkZDIGNvbnRyb2xsZXIsIHdoaWNoIHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIE5ETEMuIFRoZSBgcmF3X25jaWAgbW9kZSBpcyBlbmFibGVkIGJ5IGNoZWNraW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PSBTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0lgLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSwgdGhpcyBkZXZpY2UgaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0YXRpYyBkZXZpY2UgdHJlZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcyB2aWEgc3lzZnMgKGBuZXdfZGV2aWNlYCkgb3IgYHN5el9pMmNfc2V0dXBgLCB0aGVzZSBtZXRob2RzIGRvIG5vdCBhdHRhY2ggYW4gYGZ3bm9kZWAgdG8gdGhlIGRldmljZS4gQ29uc2VxdWVudGx5LCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKClgIHdpbGwgYWx3YXlzIHJldHVybiBgTlVMTGAsIGxlYXZpbmcgYHJhd19uY2kgPSAwYC4gV2hlbiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBiZWhhdmVzIGV4YWN0bHkgYXMgaXQgZGlkIGJlZm9yZSB0aGUgcGF0Y2guIFRoZSBuZXdseSBhZGRlZCByZWd1bGF0b3IgYW5kIGNsb2NrIHByb3BlcnRpZXMgYXJlIG9wdGlvbmFsIGFuZCB3aWxsIHNpbXBseSBiZSBza2lwcGVkIGlmIG5vdCBwcmVzZW50LiBUaGVyZWZvcmUsIHRoZSBuZXcgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgaW4gdGhlIGZ1enppbmcgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMTo0OC45NDc5MjgxNDJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNzk2NDI4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDUwNGU0YzEwNjVkNzUwOGFlZTYzOWZmNmY2MDdiMDNkY2Q3ZDViYzlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMTkgMjE6MjE6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbmluZGV4IDFkY2JkZGJjNWE3NGUuLjRiZGJiMzY2Njk2MDUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWxcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxcbkBAIC0xMSwxMCArMTEsMTQgQEAgbWFpbnRhaW5lcnM6XFxuIFxcbiBwcm9wZXJ0aWVzOlxcbiAgIGNvbXBhdGlibGU6XFxuKyAgICBkZXNjcmlwdGlvbjogfFxcbisgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXFxuKyAgICAgIHN0LHN0MjFuZmNkIGlzIFNUMjFORkNEIHdpdGggcmF3IE5DSSAobm8gTkRMQyBQQ0IpLlxcbiAgICAgZW51bTpcXG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcXG4gICAgICAgLSBzdCxzdDIxbmZjYi1zcGlcXG4gICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcXG4rICAgICAgLSBzdCxzdDIxbmZjZFxcbiBcXG4gICByZXNldC1ncGlvczpcXG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXFxuQEAgLTM2LDYgKzQwLDE1IEBAIHByb3BlcnRpZXM6XFxuICAgICAgIFNwZWNpZmllcyB0aGF0IHRoZSB1aWNjIHN3cCBzaWduYWwgY2FuIGJlIHBoeXNpY2FsbHkgY29ubmVjdGVkIHRvIHRoZVxcbiAgICAgICBjb250cm9sbGVyXFxuIFxcbisgIGNsb2NrczpcXG4rICAgIG1heEl0ZW1zOiAxXFxuKyAgICBkZXNjcmlwdGlvbjpcXG4rICAgICAgRXh0ZXJuYWwgcmVmZXJlbmNlIGNsb2NrIGNvbm5lY3RlZCB0byBTWVNfQ0xLLlxcbitcXG4rICB2ZGQtaW8tc3VwcGx5OlxcbisgICAgZGVzY3JpcHRpb246XFxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cXG4rXFxuIHJlcXVpcmVkOlxcbiAgIC0gY29tcGF0aWJsZVxcbiAgIC0gaW50ZXJydXB0c1xcbkBAIC00OSw2ICs2Miw3IEBAIGlmOlxcbiAgICAgICAgIGVudW06XFxuICAgICAgICAgICAtIHN0LHN0MjFuZmNiLWkyY1xcbiAgICAgICAgICAgLSBzdCxzdDIxbmZjYy1pMmNcXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcXG4gdGhlbjpcXG4gICBwcm9wZXJ0aWVzOlxcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXFxuQEAgLTgxLDYgKzk1LDI3IEBAIGV4YW1wbGVzOlxcbiAgICAgICAgIH07XFxuICAgICB9O1xcbiBcXG4rICAtIHxcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4rICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG4rXFxuKyAgICBpMmMge1xcbisgICAgICAgICNhZGRyZXNzLWNlbGxzID0gXFx1MDAzYzFcXHUwMDNlO1xcbisgICAgICAgICNzaXplLWNlbGxzID0gXFx1MDAzYzBcXHUwMDNlO1xcbitcXG4rICAgICAgICBuZmNAOCB7XFxuKyAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbisgICAgICAgICAgICByZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbisgICAgICAgICAgICBpbnRlcnJ1cHQtcGFyZW50ID0gXFx1MDAzY1xcdTAwMjZncGlvNVxcdTAwM2U7XFxuKyAgICAgICAgICAgIGludGVycnVwdHMgPSBcXHUwMDNjMiBJUlFfVFlQRV9MRVZFTF9ISUdIXFx1MDAzZTtcXG4rICAgICAgICAgICAgcmVzZXQtZ3Bpb3MgPSBcXHUwMDNjXFx1MDAyNmdwaW81IDI5IEdQSU9fQUNUSVZFX0hJR0hcXHUwMDNlO1xcbitcXG4rICAgICAgICAgICAgY2xvY2tzID0gXFx1MDAzY1xcdTAwMjZjbGtcXHUwMDNlO1xcbisgICAgICAgICAgICB2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2ZGRfaW9cXHUwMDNlO1xcbisgICAgICAgIH07XFxuKyAgICB9O1xcbitcXG4gICAtIHxcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9ncGlvL2dwaW8uaFxcdTAwM2VcXG4gICAgICNpbmNsdWRlIFxcdTAwM2NkdC1iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9pcnEuaFxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHMgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbmluZGV4IDA0Y2I5MjMwZDI5ZmQuLmM1ZDUxODI2YjYwMzMgMTAwNjQ0XFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcXG4rKysgYi9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c1xcbkBAIC05MDgsNyArOTA4LDIzIEBAIHJlZHJpdmVyX3NzX2luOiBlbmRwb2ludCB7XFxuIFxcdTAwMjZpMmM5IHtcXG4gXFx0c3RhdHVzID0gXFxcIm9rYXlcXFwiO1xcbiBcXG4tXFx0LyogU1QyMU5GQyBORkMgQCAyOCAqL1xcbitcXHRuZmNAOCB7XFxuK1xcdFxcdGNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiO1xcbitcXHRcXHRyZWcgPSBcXHUwMDNjMHgwOFxcdTAwM2U7XFxuK1xcbitcXHRcXHRpbnRlcnJ1cHRzLWV4dGVuZGVkID0gXFx1MDAzY1xcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcXHUwMDNlO1xcbitcXHRcXHRyZXNldC1ncGlvcyA9IFxcdTAwM2NcXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXFx1MDAzZTtcXG4rXFxuK1xcdFxcdHBpbmN0cmwtMCA9IFxcdTAwM2NcXHUwMDI2bmZjX2ludF9kZWZhdWx0XFx1MDAzZSwgXFx1MDAzY1xcdTAwMjZuZmNfcmVzZXRfZGVmYXVsdFxcdTAwM2U7XFxuK1xcdFxcdHBpbmN0cmwtbmFtZXMgPSBcXFwiZGVmYXVsdFxcXCI7XFxuK1xcbitcXHRcXHRjbG9ja3MgPSBcXHUwMDNjXFx1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcXHUwMDNlO1xcbitcXHRcXHR2ZGQtaW8tc3VwcGx5ID0gXFx1MDAzY1xcdTAwMjZ2cmVnX2wxOGJcXHUwMDNlO1xcbitcXG4rXFx0XFx0ZXNlLXByZXNlbnQ7XFxuK1xcdFxcdHVpY2MtcHJlc2VudDtcXG4rXFx0fTtcXG4rXFxuIFxcdC8qIFZMNTNMMyBUb0YgQCAyOSAqL1xcbiB9O1xcbiBcXG5AQCAtMTQxMCw2ICsxNDI2LDIxIEBAIGhhbGxfc2Vuc29yX2RlZmF1bHQ6IGhhbGwtc2Vuc29yLWRlZmF1bHQtc3RhdGUge1xcbiBcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4gXFx0XFx0Ymlhcy1wdWxsLXVwO1xcbiBcXHR9O1xcbitcXG4rXFx0bmZjX2ludF9kZWZhdWx0OiBuZmMtaW50LWRlZmF1bHQtc3RhdGUge1xcbitcXHRcXHRwaW5zID0gXFxcImdwaW80MVxcXCI7XFxuK1xcdFxcdGZ1bmN0aW9uID0gXFxcImdwaW9cXFwiO1xcbitcXHRcXHRkcml2ZS1zdHJlbmd0aCA9IFxcdTAwM2MyXFx1MDAzZTtcXG4rXFx0XFx0Ymlhcy1kaXNhYmxlO1xcbitcXHR9O1xcbitcXG4rXFx0bmZjX3Jlc2V0X2RlZmF1bHQ6IG5mYy1yZXNldC1kZWZhdWx0LXN0YXRlIHtcXG4rXFx0XFx0cGlucyA9IFxcXCJncGlvMzhcXFwiO1xcbitcXHRcXHRmdW5jdGlvbiA9IFxcXCJncGlvXFxcIjtcXG4rXFx0XFx0ZHJpdmUtc3RyZW5ndGggPSBcXHUwMDNjMlxcdTAwM2U7XFxuK1xcdFxcdGJpYXMtZGlzYWJsZTtcXG4rXFx0XFx0b3V0cHV0LWhpZ2g7XFxuK1xcdH07XFxuIH07XFxuIFxcbiBcXHUwMDI2dWFydDUge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbmluZGV4IGEzNjcxMzZkNDMzMGEuLjIzNTZmMTZiODA3MDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmNcXG5AQCAtMTgsOCArMTgsMTMgQEBcXG4gXFxuIHN0YXRpYyBpbnQgc3RfbmNpX2luaXQoc3RydWN0IG5jaV9kZXYgKm5kZXYpXFxuIHtcXG4rXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbiBcXHRzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7XFxuIFxcbitcXHQvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi9cXG4rXFx0aWYgKGluZm8tXFx1MDAzZW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0Y21kLmNtZF90eXBlID0gU1RfTkNJX1NFVF9ORkNfTU9ERTtcXG4gXFx0Y21kLm1vZGUgPSAxO1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXFxuaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcXG5AQCAtMTAsMTAgKzEwLDEzIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9pMmMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dwaW8vY29uc3VtZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2FjcGkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Nsay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW50ZXJydXB0LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9kZWxheS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmZjLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZi5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFxcInN0LW5jaS5oXFxcIlxcbiBcXG5AQCAtMjIsMTAgKzI1LDE3IEBAXFxuIC8qIG5kbGMgaGVhZGVyICovXFxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX0hFQURST09NIDFcXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfVEFJTFJPT00gMFxcbisjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMFxcbiBcXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01JTl9TSVpFIDQgICAvKiBQQ0IoMSkgKyBOQ0kgUGFja2V0IGhlYWRlcigzKSAqL1xcbisjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgKyBPSUQgKyBsZW4gKi9cXG4gI2RlZmluZSBTVF9OQ0lfSTJDX01BWF9TSVpFIDI1MCAvKiByZXEgNC4yLjEgKi9cXG4gXFxuK2VudW0gc3RfbmNpX2kyY19wcm90byB7XFxuK1xcdFNUX05DSV9JMkNfUFJPVE9fTkRMQyA9IDAsXFxuK1xcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSxcXG4rfTtcXG4rXFxuICNkZWZpbmUgU1RfTkNJX0RSSVZFUl9OQU1FIFxcXCJzdF9uY2lcXFwiXFxuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcXFwic3RfbmNpX2kyY1xcXCJcXG4gXFxuQEAgLTM0LDYgKzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcXG4gXFx0c3RydWN0IGxsdF9uZGxjICpuZGxjO1xcbiBcXG4gXFx0Ym9vbCBpcnFfYWN0aXZlO1xcbitcXHRib29sIHJhd19uY2k7XFxuIFxcbiBcXHRzdHJ1Y3QgZ3Bpb19kZXNjICpncGlvZF9yZXNldDtcXG4gXFxuQEAgLTExMSw2ICsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXFxuIFxcdHU4IGJ1ZltTVF9OQ0lfSTJDX01BWF9TSVpFXTtcXG4gXFx0c3RydWN0IGkyY19jbGllbnQgKmNsaWVudCA9IHBoeS1cXHUwMDNlaTJjX2RldjtcXG4gXFxuK1xcdGlmIChwaHktXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XFxuK1xcdFxcdGlmIChyIFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XFxuK1xcdFxcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXFxuK1xcdFxcdFxcdHJldHVybiAtRVJFTU9URUlPO1xcbitcXG4rXFx0XFx0bGVuID0gYnVmWzJdO1xcbitcXHRcXHRpZiAobGVuIFxcdTAwM2UgU1RfTkNJX0kyQ19NQVhfU0laRSkge1xcbitcXHRcXHRcXHRuZmNfZXJyKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldiwgXFxcImludmFsaWQgZnJhbWUgbGVuXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0cmV0dXJuIC1FQkFETVNHO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHQqc2tiID0gYWxsb2Nfc2tiKFNUX05DSV9OQ0lfSERSX1NJWkUgKyBsZW4sIEdGUF9LRVJORUwpO1xcbitcXHRcXHRpZiAoISpza2IpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0c2tiX3B1dCgqc2tiLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFx0XFx0bWVtY3B5KCgqc2tiKS1cXHUwMDNlZGF0YSwgYnVmLCBTVF9OQ0lfTkNJX0hEUl9TSVpFKTtcXG4rXFxuK1xcdFxcdGlmICghbGVuKVxcbitcXHRcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdFxcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIGxlbik7XFxuK1xcdFxcdGlmIChyICE9IGxlbikge1xcbitcXHRcXHRcXHRrZnJlZV9za2IoKnNrYik7XFxuK1xcdFxcdFxcdHJldHVybiAtRVJFTU9URUlPO1xcbitcXHRcXHR9XFxuK1xcbitcXHRcXHRza2JfcHV0KCpza2IsIGxlbik7XFxuK1xcdFxcdG1lbWNweSgoKnNrYiktXFx1MDAzZWRhdGEgKyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XFxuK1xcdFxcdHJldHVybiAwO1xcbitcXHR9XFxuK1xcbiBcXHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBTVF9OQ0lfSTJDX01JTl9TSVpFKTtcXG4gXFx0aWYgKHIgXFx1MDAzYyAwKSB7ICAvKiBSZXRyeSwgY2hpcCB3YXMgaW4gc3RhbmRieSAqL1xcbiBcXHRcXHR1c2xlZXBfcmFuZ2UoMTAwMCwgNDAwMCk7XFxuQEAgLTIxMSw2ICsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRwaHktXFx1MDAzZWkyY19kZXYgPSBjbGllbnQ7XFxuK1xcdHBoeS1cXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cXG4rXFx0XFx0XFx0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJO1xcbiBcXG4gXFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcXG4gXFxuQEAgLTIyNSwxOSArMjc0LDMxIEBAIHN0YXRpYyBpbnQgc3RfbmNpX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFx0fVxcbiBcXG4rXFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcXFwidmRkLWlvXFxcIik7XFxuK1xcdGlmIChyIFxcdTAwMjZcXHUwMDI2IHIgIT0gLUVOT0RFVilcXG4rXFx0XFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSB2ZGQtaW9cXFxcblxcXCIpO1xcbitcXG4rXFx0ciA9IFBUUl9FUlJfT1JfWkVSTyhkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZChkZXYsIE5VTEwpKTtcXG4rXFx0aWYgKHIpXFxuK1xcdFxcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXFxcImZhaWxlZCB0byBlbmFibGUgY2xvY2tcXFxcblxcXCIpO1xcbitcXG4gXFx0cGh5LVxcdTAwM2VzZV9zdGF0dXMuaXNfZXNlX3ByZXNlbnQgPVxcbiBcXHRcXHRcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF9ib29sKGRldiwgXFxcImVzZS1wcmVzZW50XFxcIik7XFxuIFxcdHBoeS1cXHUwMDNlc2Vfc3RhdHVzLmlzX3VpY2NfcHJlc2VudCA9XFxuIFxcdFxcdFxcdFxcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcXFwidWljYy1wcmVzZW50XFxcIik7XFxuIFxcbiBcXHRyID0gbmRsY19wcm9iZShwaHksIFxcdTAwMjZpMmNfcGh5X29wcywgXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LFxcbi1cXHRcXHRcXHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG4rXFx0XFx0XFx0cGh5LVxcdTAwM2VyYXdfbmNpID8gU1RfTkNJX1JBV19GUkFNRV9IRUFEUk9PTSA6XFxuK1xcdFxcdFxcdFxcdCAgICAgICBTVF9OQ0lfRlJBTUVfSEVBRFJPT00sXFxuK1xcdFxcdFxcdFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcXG4gXFx0XFx0XFx0XFx1MDAyNnBoeS1cXHUwMDNlbmRsYywgXFx1MDAyNnBoeS1cXHUwMDNlc2Vfc3RhdHVzKTtcXG4gXFx0aWYgKHIgXFx1MDAzYyAwKSB7XFxuIFxcdFxcdG5mY19lcnIoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBcXFwiVW5hYmxlIHRvIHJlZ2lzdGVyIG5kbGMgbGF5ZXJcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gcjtcXG4gXFx0fVxcbiBcXG4rXFx0cGh5LVxcdTAwM2VuZGxjLVxcdTAwM2VyYXdfbmNpID0gcGh5LVxcdTAwM2VyYXdfbmNpO1xcbitcXG4gXFx0cGh5LVxcdTAwM2VpcnFfYWN0aXZlID0gdHJ1ZTtcXG4gXFx0ciA9IGRldm1fcmVxdWVzdF90aHJlYWRlZF9pcnEoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBjbGllbnQtXFx1MDAzZWlycSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0c3RfbmNpX2lycV90aHJlYWRfZm4sXFxuQEAgLTI3Myw2ICszMzQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBvZl9zdF9uY2lfaTJjX21hdGNoW10gX19tYXliZV91bnVzZWQgPSB7XFxuIFxcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2ItaTJjXFxcIiwgfSxcXG4gXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJzdCxzdDIxbmZjYl9pMmNcXFwiLCB9LFxcbiBcXHR7IC5jb21wYXRpYmxlID0gXFxcInN0LHN0MjFuZmNjLWkyY1xcXCIsIH0sXFxuK1xcdHsgLmNvbXBhdGlibGUgPSBcXFwic3Qsc3QyMW5mY2RcXFwiLFxcbitcXHQgIC5kYXRhID0gKHZvaWQgKilTVF9OQ0lfSTJDX1BST1RPX1JBV19OQ0kgfSxcXG4gXFx0e31cXG4gfTtcXG4gTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgb2Zfc3RfbmNpX2kyY19tYXRjaCk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXFxuaW5kZXggYmU0ODA4ODU5Y2ZhOS4uYjMxOTI0NjBjOTZlMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXFxuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xcbkBAIC02Miw4ICs2Miw5IEBAIHZvaWQgbmRsY19jbG9zZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuIFxcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cXG4gXFx0bmRsYy1cXHUwMDNlb3BzLVxcdTAwM2VlbmFibGUobmRsYy1cXHUwMDNlcGh5X2lkKTtcXG4gXFxuLVxcdG5jaV9wcm9wX2NtZChuZGxjLVxcdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxcbi1cXHRcXHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXFx1MDAyNmNtZCk7XFxuK1xcdGlmICghbmRsYy1cXHUwMDNlcmF3X25jaSlcXG4rXFx0XFx0bmNpX3Byb3BfY21kKG5kbGMtXFx1MDAzZW5kZXYsIFNUX05DSV9DT1JFX1BST1AsXFxuK1xcdFxcdFxcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcXHUwMDI2Y21kKTtcXG4gXFxuIFxcdG5kbGMtXFx1MDAzZXBvd2VyZWQgPSAwO1xcbiBcXHRuZGxjLVxcdTAwM2VvcHMtXFx1MDAzZWRpc2FibGUobmRsYy1cXHUwMDNlcGh5X2lkKTtcXG5AQCAtNzIsMTEgKzczLDEzIEBAIEVYUE9SVF9TWU1CT0wobmRsY19jbG9zZSk7XFxuIFxcbiBpbnQgbmRsY19zZW5kKHN0cnVjdCBsbHRfbmRsYyAqbmRsYywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbi1cXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cXG4tXFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcXG4tXFx0XFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XFxuK1xcdGlmICghbmRsYy1cXHUwMDNlcmF3X25jaSkge1xcbitcXHRcXHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cXG4rXFx0XFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcXG4rXFx0XFx0XFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XFxuIFxcbi1cXHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcXG4rXFx0XFx0Kih1OCAqKXNrYl9wdXNoKHNrYiwgMSkgPSBwY2I7XFxuK1xcdH1cXG4gXFx0c2tiX3F1ZXVlX3RhaWwoXFx1MDAyNm5kbGMtXFx1MDAzZXNlbmRfcSwgc2tiKTtcXG4gXFxuIFxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNm5kbGMtXFx1MDAzZXNtX3dvcmspO1xcbkBAIC0xMDMsNiArMTA2LDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3NlbmRfcXVldWUoc3RydWN0IGxsdF9uZGxjICpuZGxjKVxcbiBcXHRcXHRcXHRuZGxjLVxcdTAwM2VoYXJkX2ZhdWx0ID0gcjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdH1cXG4rXFx0XFx0aWYgKG5kbGMtXFx1MDAzZXJhd19uY2kpIHtcXG4rXFx0XFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR9XFxuIFxcdFxcdHRpbWVfc2VudCA9IGppZmZpZXM7XFxuIFxcdFxcdCoodW5zaWduZWQgbG9uZyAqKXNrYi1cXHUwMDNlY2IgPSB0aW1lX3NlbnQ7XFxuIFxcbkBAIC0xNTQsNiArMTYxLDEwIEBAIHN0YXRpYyB2b2lkIGxsdF9uZGxjX3Jjdl9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXFxuIFxcdFxcdHByX2RlYnVnKFxcXCJyY3ZRbGVuPSVkXFxcXG5cXFwiLCBuZGxjLVxcdTAwM2VyY3ZfcS5xbGVuKTtcXG4gXFxuIFxcdHdoaWxlICgoc2tiID0gc2tiX2RlcXVldWUoXFx1MDAyNm5kbGMtXFx1MDAzZXJjdl9xKSkgIT0gTlVMTCkge1xcbitcXHRcXHRpZiAobmRsYy1cXHUwMDNlcmF3X25jaSkge1xcbitcXHRcXHRcXHRuY2lfcmVjdl9mcmFtZShuZGxjLVxcdTAwM2VuZGV2LCBza2IpO1xcbitcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0fVxcbiBcXHRcXHRwY2IgPSBza2ItXFx1MDAzZWRhdGFbMF07XFxuIFxcdFxcdHNrYl9wdWxsKHNrYiwgMSk7XFxuIFxcdFxcdGlmICgocGNiIFxcdTAwMjYgUENCX1RZUEVfTUFTSykgPT0gUENCX1RZUEVfU1VQRVJWSVNPUikge1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaFxcbisrKyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xcbiBcXHQgKi9cXG4gXFx0aW50IGhhcmRfZmF1bHQ7XFxuIFxcdGludCBwb3dlcmVkO1xcbitcXHQvKiBTVDIxTkZDRDogcmF3IE5DSSBvbiB0aGUgd2lyZSwgbm8gTkRMQyBQQ0IgLyBBQ0sgdGltZXJzICovXFxuK1xcdGJvb2wgcmF3X25jaTtcXG4gfTtcXG4gXFxuIGludCBuZGxjX29wZW4oc3RydWN0IGxsdF9uZGxjICpuZGxjKTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcXG4gXFx0aW50IHNlX2NvdW50ID0gMDtcXG4gXFx0c3RydWN0IHN0X25jaV9pbmZvICppbmZvID0gbmNpX2dldF9kcnZkYXRhKG5kZXYpO1xcbiBcXG4rXFx0aWYgKGluZm8tXFx1MDAzZW5kbGMtXFx1MDAzZXJhd19uY2kpXFxuK1xcdFxcdHJldHVybiAwO1xcbitcXG4gXFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xcbiBcXHRpZiAociAhPSAwKVxcbiBcXHRcXHRyZXR1cm4gcjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjE6NDkuNDY2NjAzMzI4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTc1MzEyNTkyNDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNTA0ZTRjMTA2NWQ3NTA4YWVlNjM5ZmY2ZjYwN2IwM2RjZDdkNWJjOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDE5IDIxOjIxOjQ4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9uZmMvc3Qsc3QtbmNpLnlhbWwgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuaW5kZXggMWRjYmRkYmM1YTc0ZS4uNGJkYmIzNjY2OTYwNSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjL3N0LHN0LW5jaS55YW1sXG4rKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L25mYy9zdCxzdC1uY2kueWFtbFxuQEAgLTExLDEwICsxMSwxNCBAQCBtYWludGFpbmVyczpcbiBcbiBwcm9wZXJ0aWVzOlxuICAgY29tcGF0aWJsZTpcbisgICAgZGVzY3JpcHRpb246IHxcbisgICAgICBzdCxzdDIxbmZjYi0qIGFuZCBzdCxzdDIxbmZjYy1pMmMgdXNlIE5ETEMgb24gdGhlIHdpcmUuXG4rICAgICAgc3Qsc3QyMW5mY2QgaXMgU1QyMU5GQ0Qgd2l0aCByYXcgTkNJIChubyBORExDIFBDQikuXG4gICAgIGVudW06XG4gICAgICAgLSBzdCxzdDIxbmZjYi1pMmNcbiAgICAgICAtIHN0LHN0MjFuZmNiLXNwaVxuICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgLSBzdCxzdDIxbmZjZFxuIFxuICAgcmVzZXQtZ3Bpb3M6XG4gICAgIGRlc2NyaXB0aW9uOiBPdXRwdXQgR1BJTyBwaW4gdXNlZCBmb3IgcmVzZXR0aW5nIHRoZSBjb250cm9sbGVyXG5AQCAtMzYsNiArNDAsMTUgQEAgcHJvcGVydGllczpcbiAgICAgICBTcGVjaWZpZXMgdGhhdCB0aGUgdWljYyBzd3Agc2lnbmFsIGNhbiBiZSBwaHlzaWNhbGx5IGNvbm5lY3RlZCB0byB0aGVcbiAgICAgICBjb250cm9sbGVyXG4gXG4rICBjbG9ja3M6XG4rICAgIG1heEl0ZW1zOiAxXG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIEV4dGVybmFsIHJlZmVyZW5jZSBjbG9jayBjb25uZWN0ZWQgdG8gU1lTX0NMSy5cbitcbisgIHZkZC1pby1zdXBwbHk6XG4rICAgIGRlc2NyaXB0aW9uOlxuKyAgICAgIERpZ2l0YWwgSS9PIHN1cHBseSAoVlBTX0lPKS5cbitcbiByZXF1aXJlZDpcbiAgIC0gY29tcGF0aWJsZVxuICAgLSBpbnRlcnJ1cHRzXG5AQCAtNDksNiArNjIsNyBAQCBpZjpcbiAgICAgICAgIGVudW06XG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2ItaTJjXG4gICAgICAgICAgIC0gc3Qsc3QyMW5mY2MtaTJjXG4rICAgICAgICAgIC0gc3Qsc3QyMW5mY2RcbiB0aGVuOlxuICAgcHJvcGVydGllczpcbiAgICAgc3BpLW1heC1mcmVxdWVuY3k6IGZhbHNlXG5AQCAtODEsNiArOTUsMjcgQEAgZXhhbXBsZXM6XG4gICAgICAgICB9O1xuICAgICB9O1xuIFxuKyAgLSB8XG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2dwaW8vZ3Bpby5oXHUwMDNlXG4rICAgICNpbmNsdWRlIFx1MDAzY2R0LWJpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL2lycS5oXHUwMDNlXG4rXG4rICAgIGkyYyB7XG4rICAgICAgICAjYWRkcmVzcy1jZWxscyA9IFx1MDAzYzFcdTAwM2U7XG4rICAgICAgICAjc2l6ZS1jZWxscyA9IFx1MDAzYzBcdTAwM2U7XG4rXG4rICAgICAgICBuZmNAOCB7XG4rICAgICAgICAgICAgY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIjtcbisgICAgICAgICAgICByZWcgPSBcdTAwM2MweDA4XHUwMDNlO1xuK1xuKyAgICAgICAgICAgIGludGVycnVwdC1wYXJlbnQgPSBcdTAwM2NcdTAwMjZncGlvNVx1MDAzZTtcbisgICAgICAgICAgICBpbnRlcnJ1cHRzID0gXHUwMDNjMiBJUlFfVFlQRV9MRVZFTF9ISUdIXHUwMDNlO1xuKyAgICAgICAgICAgIHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2Z3BpbzUgMjkgR1BJT19BQ1RJVkVfSElHSFx1MDAzZTtcbitcbisgICAgICAgICAgICBjbG9ja3MgPSBcdTAwM2NcdTAwMjZjbGtcdTAwM2U7XG4rICAgICAgICAgICAgdmRkLWlvLXN1cHBseSA9IFx1MDAzY1x1MDAyNnZkZF9pb1x1MDAzZTtcbisgICAgICAgIH07XG4rICAgIH07XG4rXG4gICAtIHxcbiAgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvZ3Bpby9ncGlvLmhcdTAwM2VcbiAgICAgI2luY2x1ZGUgXHUwMDNjZHQtYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaXJxLmhcdTAwM2VcbmRpZmYgLS1naXQgYS9hcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0cyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG5pbmRleCAwNGNiOTIzMGQyOWZkLi5jNWQ1MTgyNmI2MDMzIDEwMDY0NFxuLS0tIGEvYXJjaC9hcm02NC9ib290L2R0cy9xY29tL3FjbTY0OTAtZmFpcnBob25lLWZwNS5kdHNcbisrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9xY202NDkwLWZhaXJwaG9uZS1mcDUuZHRzXG5AQCAtOTA4LDcgKzkwOCwyMyBAQCByZWRyaXZlcl9zc19pbjogZW5kcG9pbnQge1xuIFx1MDAyNmkyYzkge1xuIFx0c3RhdHVzID0gXCJva2F5XCI7XG4gXG4tXHQvKiBTVDIxTkZDIE5GQyBAIDI4ICovXG4rXHRuZmNAOCB7XG4rXHRcdGNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNkXCI7XG4rXHRcdHJlZyA9IFx1MDAzYzB4MDhcdTAwM2U7XG4rXG4rXHRcdGludGVycnVwdHMtZXh0ZW5kZWQgPSBcdTAwM2NcdTAwMjZ0bG1tIDQxIElSUV9UWVBFX0xFVkVMX0hJR0hcdTAwM2U7XG4rXHRcdHJlc2V0LWdwaW9zID0gXHUwMDNjXHUwMDI2dGxtbSAzOCBHUElPX0FDVElWRV9ISUdIXHUwMDNlO1xuK1xuK1x0XHRwaW5jdHJsLTAgPSBcdTAwM2NcdTAwMjZuZmNfaW50X2RlZmF1bHRcdTAwM2UsIFx1MDAzY1x1MDAyNm5mY19yZXNldF9kZWZhdWx0XHUwMDNlO1xuK1x0XHRwaW5jdHJsLW5hbWVzID0gXCJkZWZhdWx0XCI7XG4rXG4rXHRcdGNsb2NrcyA9IFx1MDAzY1x1MDAyNnJwbWhjYyBSUE1IX0xOX0JCX0NMSzJcdTAwM2U7XG4rXHRcdHZkZC1pby1zdXBwbHkgPSBcdTAwM2NcdTAwMjZ2cmVnX2wxOGJcdTAwM2U7XG4rXG4rXHRcdGVzZS1wcmVzZW50O1xuK1x0XHR1aWNjLXByZXNlbnQ7XG4rXHR9O1xuK1xuIFx0LyogVkw1M0wzIFRvRiBAIDI5ICovXG4gfTtcbiBcbkBAIC0xNDEwLDYgKzE0MjYsMjEgQEAgaGFsbF9zZW5zb3JfZGVmYXVsdDogaGFsbC1zZW5zb3ItZGVmYXVsdC1zdGF0ZSB7XG4gXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbiBcdFx0Ymlhcy1wdWxsLXVwO1xuIFx0fTtcbitcbitcdG5mY19pbnRfZGVmYXVsdDogbmZjLWludC1kZWZhdWx0LXN0YXRlIHtcbitcdFx0cGlucyA9IFwiZ3BpbzQxXCI7XG4rXHRcdGZ1bmN0aW9uID0gXCJncGlvXCI7XG4rXHRcdGRyaXZlLXN0cmVuZ3RoID0gXHUwMDNjMlx1MDAzZTtcbitcdFx0Ymlhcy1kaXNhYmxlO1xuK1x0fTtcbitcbitcdG5mY19yZXNldF9kZWZhdWx0OiBuZmMtcmVzZXQtZGVmYXVsdC1zdGF0ZSB7XG4rXHRcdHBpbnMgPSBcImdwaW8zOFwiO1xuK1x0XHRmdW5jdGlvbiA9IFwiZ3Bpb1wiO1xuK1x0XHRkcml2ZS1zdHJlbmd0aCA9IFx1MDAzYzJcdTAwM2U7XG4rXHRcdGJpYXMtZGlzYWJsZTtcbitcdFx0b3V0cHV0LWhpZ2g7XG4rXHR9O1xuIH07XG4gXG4gXHUwMDI2dWFydDUge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9jb3JlLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvY29yZS5jXG5pbmRleCBhMzY3MTM2ZDQzMzBhLi4yMzU2ZjE2YjgwNzA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2NvcmUuY1xuQEAgLTE4LDggKzE4LDEzIEBAXG4gXG4gc3RhdGljIGludCBzdF9uY2lfaW5pdChzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiB7XG4rXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXHRzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCBjbWQ7XG4gXG4rXHQvKiBTVDIxTkZDRCBoYXMgbm8gTkRMQyBwcm9wcmlldGFyeSBTRVRfTkZDX01PREUgKi9cbitcdGlmIChpbmZvLVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaSlcbitcdFx0cmV0dXJuIDA7XG4rXG4gXHRjbWQuY21kX3R5cGUgPSBTVF9OQ0lfU0VUX05GQ19NT0RFO1xuIFx0Y21kLm1vZGUgPSAxO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYyBiL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuaW5kZXggOWFlODM5YTZmNWNjMC4uNTY2Njg5ZDVhYWRiNCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jXG5AQCAtMTAsMTAgKzEwLDEzIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvaTJjLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ncGlvL2NvbnN1bWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9hY3BpLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9jbGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2ludGVycnVwdC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25mYy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2YuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWd1bGF0b3IvY29uc3VtZXIuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFwic3QtbmNpLmhcIlxuIFxuQEAgLTIyLDEwICsyNSwxNyBAQFxuIC8qIG5kbGMgaGVhZGVyICovXG4gI2RlZmluZSBTVF9OQ0lfRlJBTUVfSEVBRFJPT00gMVxuICNkZWZpbmUgU1RfTkNJX0ZSQU1FX1RBSUxST09NIDBcbisjZGVmaW5lIFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gMFxuIFxuICNkZWZpbmUgU1RfTkNJX0kyQ19NSU5fU0laRSA0ICAgLyogUENCKDEpICsgTkNJIFBhY2tldCBoZWFkZXIoMykgKi9cbisjZGVmaW5lIFNUX05DSV9OQ0lfSERSX1NJWkUgMyAgIC8qIHJhdyBOQ0k6IE1UL1BCRi9HSUQgKyBPSUQgKyBsZW4gKi9cbiAjZGVmaW5lIFNUX05DSV9JMkNfTUFYX1NJWkUgMjUwIC8qIHJlcSA0LjIuMSAqL1xuIFxuK2VudW0gc3RfbmNpX2kyY19wcm90byB7XG4rXHRTVF9OQ0lfSTJDX1BST1RPX05ETEMgPSAwLFxuK1x0U1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJLFxuK307XG4rXG4gI2RlZmluZSBTVF9OQ0lfRFJJVkVSX05BTUUgXCJzdF9uY2lcIlxuICNkZWZpbmUgU1RfTkNJX0kyQ19EUklWRVJfTkFNRSBcInN0X25jaV9pMmNcIlxuIFxuQEAgLTM0LDYgKzQ0LDcgQEAgc3RydWN0IHN0X25jaV9pMmNfcGh5IHtcbiBcdHN0cnVjdCBsbHRfbmRsYyAqbmRsYztcbiBcbiBcdGJvb2wgaXJxX2FjdGl2ZTtcbitcdGJvb2wgcmF3X25jaTtcbiBcbiBcdHN0cnVjdCBncGlvX2Rlc2MgKmdwaW9kX3Jlc2V0O1xuIFxuQEAgLTExMSw2ICsxMjIsNDIgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3JlYWQoc3RydWN0IHN0X25jaV9pMmNfcGh5ICpwaHksXG4gXHR1OCBidWZbU1RfTkNJX0kyQ19NQVhfU0laRV07XG4gXHRzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50ID0gcGh5LVx1MDAzZWkyY19kZXY7XG4gXG4rXHRpZiAocGh5LVx1MDAzZXJhd19uY2kpIHtcbitcdFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXHRcdGlmIChyIFx1MDAzYyAwKSB7XG4rXHRcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuK1x0XHRcdHIgPSBpMmNfbWFzdGVyX3JlY3YoY2xpZW50LCBidWYsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHR9XG4rXHRcdGlmIChyICE9IFNUX05DSV9OQ0lfSERSX1NJWkUpXG4rXHRcdFx0cmV0dXJuIC1FUkVNT1RFSU87XG4rXG4rXHRcdGxlbiA9IGJ1ZlsyXTtcbitcdFx0aWYgKGxlbiBcdTAwM2UgU1RfTkNJX0kyQ19NQVhfU0laRSkge1xuK1x0XHRcdG5mY19lcnIoXHUwMDI2Y2xpZW50LVx1MDAzZWRldiwgXCJpbnZhbGlkIGZyYW1lIGxlblxcblwiKTtcbitcdFx0XHRyZXR1cm4gLUVCQURNU0c7XG4rXHRcdH1cbitcbitcdFx0KnNrYiA9IGFsbG9jX3NrYihTVF9OQ0lfTkNJX0hEUl9TSVpFICsgbGVuLCBHRlBfS0VSTkVMKTtcbitcdFx0aWYgKCEqc2tiKVxuK1x0XHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0XHRza2JfcHV0KCpza2IsIFNUX05DSV9OQ0lfSERSX1NJWkUpO1xuK1x0XHRtZW1jcHkoKCpza2IpLVx1MDAzZWRhdGEsIGJ1ZiwgU1RfTkNJX05DSV9IRFJfU0laRSk7XG4rXG4rXHRcdGlmICghbGVuKVxuK1x0XHRcdHJldHVybiAwO1xuK1xuK1x0XHRyID0gaTJjX21hc3Rlcl9yZWN2KGNsaWVudCwgYnVmLCBsZW4pO1xuK1x0XHRpZiAociAhPSBsZW4pIHtcbitcdFx0XHRrZnJlZV9za2IoKnNrYik7XG4rXHRcdFx0cmV0dXJuIC1FUkVNT1RFSU87XG4rXHRcdH1cbitcbitcdFx0c2tiX3B1dCgqc2tiLCBsZW4pO1xuK1x0XHRtZW1jcHkoKCpza2IpLVx1MDAzZWRhdGEgKyBTVF9OQ0lfTkNJX0hEUl9TSVpFLCBidWYsIGxlbik7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuIFx0ciA9IGkyY19tYXN0ZXJfcmVjdihjbGllbnQsIGJ1ZiwgU1RfTkNJX0kyQ19NSU5fU0laRSk7XG4gXHRpZiAociBcdTAwM2MgMCkgeyAgLyogUmV0cnksIGNoaXAgd2FzIGluIHN0YW5kYnkgKi9cbiBcdFx0dXNsZWVwX3JhbmdlKDEwMDAsIDQwMDApO1xuQEAgLTIxMSw2ICsyNTgsOCBAQCBzdGF0aWMgaW50IHN0X25jaV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRwaHktXHUwMDNlaTJjX2RldiA9IGNsaWVudDtcbitcdHBoeS1cdTAwM2VyYXdfbmNpID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KSA9PVxuK1x0XHRcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcbiBcbiBcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIHBoeSk7XG4gXG5AQCAtMjI1LDE5ICsyNzQsMzEgQEAgc3RhdGljIGludCBzdF9uY2lfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXG4gXHRcdHJldHVybiAtRU5PREVWO1xuIFx0fVxuIFxuK1x0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcInZkZC1pb1wiKTtcbitcdGlmIChyIFx1MDAyNlx1MDAyNiByICE9IC1FTk9ERVYpXG4rXHRcdHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgciwgXCJmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcblwiKTtcbitcbitcdHIgPSBQVFJfRVJSX09SX1pFUk8oZGV2bV9jbGtfZ2V0X29wdGlvbmFsX2VuYWJsZWQoZGV2LCBOVUxMKSk7XG4rXHRpZiAocilcbitcdFx0cmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByLCBcImZhaWxlZCB0byBlbmFibGUgY2xvY2tcXG5cIik7XG4rXG4gXHRwaHktXHUwMDNlc2Vfc3RhdHVzLmlzX2VzZV9wcmVzZW50ID1cbiBcdFx0XHRcdGRldmljZV9wcm9wZXJ0eV9yZWFkX2Jvb2woZGV2LCBcImVzZS1wcmVzZW50XCIpO1xuIFx0cGh5LVx1MDAzZXNlX3N0YXR1cy5pc191aWNjX3ByZXNlbnQgPVxuIFx0XHRcdFx0ZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYsIFwidWljYy1wcmVzZW50XCIpO1xuIFxuIFx0ciA9IG5kbGNfcHJvYmUocGh5LCBcdTAwMjZpMmNfcGh5X29wcywgXHUwMDI2Y2xpZW50LVx1MDAzZWRldixcbi1cdFx0XHRTVF9OQ0lfRlJBTUVfSEVBRFJPT00sIFNUX05DSV9GUkFNRV9UQUlMUk9PTSxcbitcdFx0XHRwaHktXHUwMDNlcmF3X25jaSA/IFNUX05DSV9SQVdfRlJBTUVfSEVBRFJPT00gOlxuK1x0XHRcdFx0ICAgICAgIFNUX05DSV9GUkFNRV9IRUFEUk9PTSxcbitcdFx0XHRTVF9OQ0lfRlJBTUVfVEFJTFJPT00sXG4gXHRcdFx0XHUwMDI2cGh5LVx1MDAzZW5kbGMsIFx1MDAyNnBoeS1cdTAwM2VzZV9zdGF0dXMpO1xuIFx0aWYgKHIgXHUwMDNjIDApIHtcbiBcdFx0bmZjX2VycihcdTAwMjZjbGllbnQtXHUwMDNlZGV2LCBcIlVuYWJsZSB0byByZWdpc3RlciBuZGxjIGxheWVyXFxuXCIpO1xuIFx0XHRyZXR1cm4gcjtcbiBcdH1cbiBcbitcdHBoeS1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kgPSBwaHktXHUwMDNlcmF3X25jaTtcbitcbiBcdHBoeS1cdTAwM2VpcnFfYWN0aXZlID0gdHJ1ZTtcbiBcdHIgPSBkZXZtX3JlcXVlc3RfdGhyZWFkZWRfaXJxKFx1MDAyNmNsaWVudC1cdTAwM2VkZXYsIGNsaWVudC1cdTAwM2VpcnEsIE5VTEwsXG4gXHRcdFx0XHRzdF9uY2lfaXJxX3RocmVhZF9mbixcbkBAIC0yNzMsNiArMzM0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgb2Zfc3RfbmNpX2kyY19tYXRjaFtdIF9fbWF5YmVfdW51c2VkID0ge1xuIFx0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2ItaTJjXCIsIH0sXG4gXHR7IC5jb21wYXRpYmxlID0gXCJzdCxzdDIxbmZjYl9pMmNcIiwgfSxcbiBcdHsgLmNvbXBhdGlibGUgPSBcInN0LHN0MjFuZmNjLWkyY1wiLCB9LFxuK1x0eyAuY29tcGF0aWJsZSA9IFwic3Qsc3QyMW5mY2RcIixcbitcdCAgLmRhdGEgPSAodm9pZCAqKVNUX05DSV9JMkNfUFJPVE9fUkFXX05DSSB9LFxuIFx0e31cbiB9O1xuIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG9mX3N0X25jaV9pMmNfbWF0Y2gpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmMgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5jXG5pbmRleCBiZTQ4MDg4NTljZmE5Li5iMzE5MjQ2MGM5NmUzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuY1xuQEAgLTYyLDggKzYyLDkgQEAgdm9pZCBuZGxjX2Nsb3NlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdC8qIHRvZ2dsZSByZXNldCBwaW4gKi9cbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWVuYWJsZShuZGxjLVx1MDAzZXBoeV9pZCk7XG4gXG4tXHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuLVx0XHQgICAgIHNpemVvZihzdHJ1Y3QgbmNpX21vZGVfc2V0X2NtZCksIChfX3U4ICopXHUwMDI2Y21kKTtcbitcdGlmICghbmRsYy1cdTAwM2VyYXdfbmNpKVxuK1x0XHRuY2lfcHJvcF9jbWQobmRsYy1cdTAwM2VuZGV2LCBTVF9OQ0lfQ09SRV9QUk9QLFxuK1x0XHRcdCAgICAgc2l6ZW9mKHN0cnVjdCBuY2lfbW9kZV9zZXRfY21kKSwgKF9fdTggKilcdTAwMjZjbWQpO1xuIFxuIFx0bmRsYy1cdTAwM2Vwb3dlcmVkID0gMDtcbiBcdG5kbGMtXHUwMDNlb3BzLVx1MDAzZWRpc2FibGUobmRsYy1cdTAwM2VwaHlfaWQpO1xuQEAgLTcyLDExICs3MywxMyBAQCBFWFBPUlRfU1lNQk9MKG5kbGNfY2xvc2UpO1xuIFxuIGludCBuZGxjX3NlbmQoc3RydWN0IGxsdF9uZGxjICpuZGxjLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIHtcbi1cdC8qIGFkZCBuZGxjIGhlYWRlciAqL1xuLVx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbi1cdFx0UENCX0ZSQU1FX0NSQ19JTkZPX05PVFBSRVNFTlQ7XG4rXHRpZiAoIW5kbGMtXHUwMDNlcmF3X25jaSkge1xuK1x0XHQvKiBhZGQgbmRsYyBoZWFkZXIgKi9cbitcdFx0dTggcGNiID0gUENCX1RZUEVfREFUQUZSQU1FIHwgUENCX0RBVEFGUkFNRV9SRVRSQU5TTUlUX05PIHxcbitcdFx0XHRQQ0JfRlJBTUVfQ1JDX0lORk9fTk9UUFJFU0VOVDtcbiBcbi1cdCoodTggKilza2JfcHVzaChza2IsIDEpID0gcGNiO1xuK1x0XHQqKHU4ICopc2tiX3B1c2goc2tiLCAxKSA9IHBjYjtcbitcdH1cbiBcdHNrYl9xdWV1ZV90YWlsKFx1MDAyNm5kbGMtXHUwMDNlc2VuZF9xLCBza2IpO1xuIFxuIFx0c2NoZWR1bGVfd29yayhcdTAwMjZuZGxjLVx1MDAzZXNtX3dvcmspO1xuQEAgLTEwMyw2ICsxMDYsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfc2VuZF9xdWV1ZShzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpXG4gXHRcdFx0bmRsYy1cdTAwM2VoYXJkX2ZhdWx0ID0gcjtcbiBcdFx0XHRicmVhaztcbiBcdFx0fVxuK1x0XHRpZiAobmRsYy1cdTAwM2VyYXdfbmNpKSB7XG4rXHRcdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0dGltZV9zZW50ID0gamlmZmllcztcbiBcdFx0Kih1bnNpZ25lZCBsb25nICopc2tiLVx1MDAzZWNiID0gdGltZV9zZW50O1xuIFxuQEAgLTE1NCw2ICsxNjEsMTAgQEAgc3RhdGljIHZvaWQgbGx0X25kbGNfcmN2X3F1ZXVlKHN0cnVjdCBsbHRfbmRsYyAqbmRsYylcbiBcdFx0cHJfZGVidWcoXCJyY3ZRbGVuPSVkXFxuXCIsIG5kbGMtXHUwMDNlcmN2X3EucWxlbik7XG4gXG4gXHR3aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKFx1MDAyNm5kbGMtXHUwMDNlcmN2X3EpKSAhPSBOVUxMKSB7XG4rXHRcdGlmIChuZGxjLVx1MDAzZXJhd19uY2kpIHtcbitcdFx0XHRuY2lfcmVjdl9mcmFtZShuZGxjLVx1MDAzZW5kZXYsIHNrYik7XG4rXHRcdFx0Y29udGludWU7XG4rXHRcdH1cbiBcdFx0cGNiID0gc2tiLVx1MDAzZWRhdGFbMF07XG4gXHRcdHNrYl9wdWxsKHNrYiwgMSk7XG4gXHRcdGlmICgocGNiIFx1MDAyNiBQQ0JfVFlQRV9NQVNLKSA9PSBQQ0JfVFlQRV9TVVBFUlZJU09SKSB7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZmMvc3QtbmNpL25kbGMuaCBiL2RyaXZlcnMvbmZjL3N0LW5jaS9uZGxjLmhcbmluZGV4IGMyNGNlOWIwZGY1MmUuLjVjMWY4YmFmMDQ3MTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG4rKysgYi9kcml2ZXJzL25mYy9zdC1uY2kvbmRsYy5oXG5AQCAtMzksNiArMzksOCBAQCBzdHJ1Y3QgbGx0X25kbGMge1xuIFx0ICovXG4gXHRpbnQgaGFyZF9mYXVsdDtcbiBcdGludCBwb3dlcmVkO1xuK1x0LyogU1QyMU5GQ0Q6IHJhdyBOQ0kgb24gdGhlIHdpcmUsIG5vIE5ETEMgUENCIC8gQUNLIHRpbWVycyAqL1xuK1x0Ym9vbCByYXdfbmNpO1xuIH07XG4gXG4gaW50IG5kbGNfb3BlbihzdHJ1Y3QgbGx0X25kbGMgKm5kbGMpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmZjL3N0LW5jaS9zZS5jIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbmluZGV4IDYwN2VjNzY4ZWI3YjQuLjQ0Y2MxMDJiY2RlMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25mYy9zdC1uY2kvc2UuY1xuKysrIGIvZHJpdmVycy9uZmMvc3QtbmNpL3NlLmNcbkBAIC02MjEsNiArNjIxLDkgQEAgaW50IHN0X25jaV9kaXNjb3Zlcl9zZShzdHJ1Y3QgbmNpX2RldiAqbmRldilcbiBcdGludCBzZV9jb3VudCA9IDA7XG4gXHRzdHJ1Y3Qgc3RfbmNpX2luZm8gKmluZm8gPSBuY2lfZ2V0X2RydmRhdGEobmRldik7XG4gXG4rXHRpZiAoaW5mby1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2kpXG4rXHRcdHJldHVybiAwO1xuK1xuIFx0ciA9IHN0X25jaV9oY2lfbmV0d29ya19pbml0KG5kZXYpO1xuIFx0aWYgKHIgIT0gMClcbiBcdFx0cmV0dXJuIHI7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMTo0OS40NjY2MDQ1OThaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODMyNTE1NzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV3IE5GQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgaW50cm9kdWNlcyBzdXBwb3J0IGZvciBhIG5ldyBORkMgY29udHJvbGxlciwgYHN0LHN0MjFuZmNkYCwgd2l0aGluIHRoZSBgc3QtbmNpYCBkcml2ZXIuIFRoaXMgY29udHJvbGxlciBpcyBhIGJpdCBkaWZmZXJlbnQ7IGl0IHVzZXMgcmF3IE5DSSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCBORExDLiBNeSBpbml0aWFsIGltcHJlc3Npb24gaXMgdGhhdCB0aGVzZSBjaGFuZ2VzIHNlZW0gc3RyYWlnaHRmb3J3YXJkOiB3ZSdyZSBlc3NlbnRpYWxseSBieXBhc3NpbmcgdGhlIE5ETEMgbGF5ZXIgYW5kIGhhbmRsaW5nIHRoZSBOQ0kgZnJhbWVzIGRpcmVjdGx5IGluIHNldmVyYWwga2V5IGZ1bmN0aW9ucy4gYHN0X25jaV9pbml0YCBza2lwcyB0aGUgYFNUX05DSV9TRVRfTkZDX01PREVgIGNvbW1hbmQgdW5kZXIgdGhlIG5ldyBmbGFnLiBgc3RfbmNpX2kyY19yZWFkYCBzZWVtcyB1cGRhdGVkIHRvIGhhbmRsZSB0aGUgcmF3IE5DSSBmcmFtZSBmb3JtYXQuIFRoZSBwcm9iaW5nIGxvZ2ljIGluIGBzdF9uY2lfaTJjX3Byb2JlYCBub3cgaW5jbHVkZXMgcmVhZGluZyBzb21lIHByb3BlcnRpZXMgYW5kIHNldHRpbmcgdGhlIGByYXdfbmNpYCBmbGFnIHdoaWNoIHNpZ25hbHMgdGhlIGRpZmZlcmVudCBtb2RlLiBBbmQgdGhlbiwgdGhlcmUgYXJlIGNvcnJlc3BvbmRpbmcgYWRqdXN0bWVudHMgdG8gYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgIHRvIGFjY291bnQgZm9yIHRoaXMgcmF3IE5DSSBtb2RlLlxuXG5Ob3csIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBmdXp6aW5nLiBUaGlzIGlzIGFuIEkyQyBkcml2ZXIsIHJpZ2h0PyBTbywgaG93IHdvdWxkIHdlIGdvIGFib3V0IGZ1enppbmcgaXQ/IEkyQyBkcml2ZXJzIGNhbiBiZSBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcyBvciB0aGUgZGV2aWNlIHRyZWUsIHRoYXQgcGFydCBpcyBjbGVhci4gQW5kLCBzaW5jZSBpdCdzIGFuIEkyQyBkcml2ZXIsIHRoZSBiaWcgcXVlc3Rpb24gaXMsIGNhbiB3ZSByZWFjaCBpdCBpbiBRRU1VPyBTeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gaW5qZWN0IEkyQyB0cmFmZmljLCBvciwgZGVwZW5kaW5nIG9uIHRoZSBzY2VuYXJpbywgaW5zdGFudGlhdGUgdGhlIGRyaXZlciwgcHJvYmFibHkgdmlhIHN5c2ZzL25ldGxpbmsgaWYgYXBwbGljYWJsZS5cblxuT2theSwgSSBuZWVkIHRvIGJydXNoIHVwIG9uIHN5emthbGxlcidzIEkyQyBjYXBhYmlsaXRpZXMuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgYmFzaWMgSTJDIHN1cHBvcnQsIGJ1dCBpdCdzIHR5cGljYWxseSBtb3JlIGVmZmVjdGl2ZSBpZiBpdCBoYXMgYSBzcGVjaWZpYyBwc2V1ZG8tZGV2aWNlLCBvciBpZiB0aGUgZGV2aWNlIGdldHMgaW5zdGFudGlhdGVkIHZpYSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCBpbnNpZGUgYSB0ZXN0IG1vZHVsZS4gQnV0IEkgYWxzbyByZW1lbWJlciB0aGF0IFN5emthbGxlciBjYW4gZnV6eiBJMkMgZGV2aWNlcyB3aXRoIGBzeXpfaTJjX3NldHVwYCBvciB3cml0aW5nIHRvIGAvZGV2L2kyYy0qYC5cblxuV2FpdCwgdGhpcyBkcml2ZXIgaXMgYW4gSTJDIGRyaXZlciwgYnV0IGl0IHJlZ2lzdGVycyBhbiBOQ0kgZGV2aWNlLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBORkMgc3Vic3lzdGVtLiBTeXprYWxsZXIgZGVmaW5pdGVseSBoYXMgc29tZSBnb29kIGNvdmVyYWdlIG9mIE5GQyB0aHJvdWdoIHZpcnR1YWwgZHJpdmVycyBsaWtlIGBuZmNzaW1gIG9yIGJ5IGluc3RhbnRpYXRpbmcgZGV2aWNlcy4gQnV0IGNhbiBzeXprYWxsZXIgaW5zdGFudGlhdGUgSTJDIGRldmljZXMgcmVsaWFibHk/IFRoYXQncyB3aGF0IEkgaGF2ZSB0byBjaGVjay5cblxuTGV0IG1lIHVzZSBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIGZvciBkZXNjcmlwdGlvbnMgb2YgYHN0X25jaWAgb3IgYE5GQ19TVF9OQ0lgIHdpdGhpbiBTeXprYWxsZXIgdG8gc2VlIHdoYXQncyBhbHJlYWR5IGtub3duLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjYwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjE6NTkuMjk5MTIzODM5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5OTgyOTU1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkZDX1NUX05DSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTkZDX1NUMjFORkNBKSAgXFx0Kz0gc3QyMW5mY2EvXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpXFx0Kz0gc3QtbmNpL1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19ORkNfTlhQX05DSSlcXHQrPSBueHAtbmNpL1xcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcXFwiXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTEtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IEkyQ1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjEyOlxcdHNlbGVjdCBORkNfU1RfTkNJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVxcXCJcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMy1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjQ6XFx0c2VsZWN0IE5GQ19TVF9OQ0lcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvTWFrZWZpbGU9Nj1zdC1uY2ktb2JqcyA9IG5kbGMubyBjb3JlLm8gc2UubyB2ZW5kb3JfY21kcy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX05GQ19TVF9OQ0kpICAgICArPSBzdC1uY2kub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZS04LVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT05PXN0LW5jaV9pMmMtb2JqcyA9IGkyYy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlOjEwOm9iai0kKENPTkZJR19ORkNfU1RfTkNJX0kyQykgKz0gc3QtbmNpX2kyYy5vXFxuZHJpdmVycy9uZmMvc3QtbmNpL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZT0xMj1zdC1uY2lfc3BpLW9ianMgPSBzcGkub1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkZDX1NUX05DSV9TUEkpICs9IHN0LW5jaV9zcGkub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjowMS4yOTc0MjM3MThaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjU2MDg2MDg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgTkZDX1NUX05DSV9JMkNgIERyaXZlciBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgTkZDX1NUX05DSV9JMkNgIGRyaXZlci4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiBnZXQgdG8gdGhlIEkyQyBwcm9iZSBmdW5jdGlvbiB3aGVuIEknbSBydW5uaW5nIHRoaXMgdGhpbmcgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gU3l6a2FsbGVyLCBvZiBjb3Vyc2UsIGdpdmVzIG1lIHNvbWUgb3B0aW9ucy4gSSBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYXNzdW1pbmcgSSBoYXZlIGRldmljZSBkZXNjcmlwdGlvbnMuIEFsdGVybmF0aXZlbHksIEkgY291bGQgdHJ5IHVzaW5nIGAvc3lzL2J1cy9pMmMvZGV2aWNlcy9pMmMtWC9uZXdfZGV2aWNlYCB0byBjcmVhdGUgdGhlIEkyQyBkZXZpY2VzIGRpcmVjdGx5IGJ5IG5hbWUuXG5cbk15IGd1dCBmZWVsaW5nIGlzIHRoYXQgc3lzZnMgaXMgdGhlIHdheSB0byBnbyBoZXJlLCBzbyBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQuIExldCdzIHN0YXJ0IGJ5IGNoZWNraW5nIGlmIHRoZSBkcml2ZXIgY2FuIGJlIGluc3RhbnRpYXRlZCB0aHJvdWdoIHN5c2ZzLiBJJ20gdGhpbmtpbmcgdGhlIGRyaXZlciBwcm9iYWJseSBoYXMgYW4gSTJDIGRldmljZSB0YWJsZS4gV2hhdCdzIHRoZSBuYW1lIG9mIHRoYXQgdGFibGU/IEFoLCBgc3RfbmNpX2kyY19pZGAuIE9rYXksIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8gZmluZCBldmVyeXRoaW5nIEkgbmVlZCBpbiBgZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jYC4gTGV0J3MgZGlnIGluIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODU5NywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjoxNy44NTgyODY5NjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg4ODgzNzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdF9uY2lfaTJjX2lkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYz0zMTM9c3RhdGljIHZvaWQgc3RfbmNpX2kyY19yZW1vdmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMTktXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jOjMyMDpzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgc3RfbmNpX2kyY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjEtXFx0eyAubmFtZSA9IFNUX05DSV9EUklWRVJfTkFNRSB9LFxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTMyMy19O1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYzozMjQ6TU9EVUxFX0RFVklDRV9UQUJMRShpMmMsIHN0X25jaV9pMmNfaWRfdGFibGUpO1xcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zMjUtXFxuLS1cXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM9MzQzPXN0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciBzdF9uY2lfaTJjX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuYy0zNDktXFx0LnByb2JlID0gc3RfbmNpX2kyY19wcm9iZSxcXG5kcml2ZXJzL25mYy9zdC1uY2kvaTJjLmM6MzUwOlxcdC5pZF90YWJsZSA9IHN0X25jaV9pMmNfaWRfdGFibGUsXFxuZHJpdmVycy9uZmMvc3QtbmNpL2kyYy5jLTM1MS1cXHQucmVtb3ZlID0gc3RfbmNpX2kyY19yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjE5Ljc0NzEyOTY1MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2NjE0Mjc3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJMkMgRHJpdmVyIEluc3RhbnRpYXRpb24gTG9naWMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIEkyQyBkcml2ZXIgZm9yIHRoZSBTVCBORkMgY29udHJvbGxlci4gVGhlIGNvZGUgZGVmaW5lcyBhbiBgaTJjX2RldmljZV9pZGAgdGFibGUsIGFuZCB0aGUgZHJpdmVyJ3MgbmFtZSBpcyBcInN0X25jaVwiLiBTbywgdGhlb3JldGljYWxseSwgSSBzaG91bGQgYmUgYWJsZSB0byBpbnN0YW50aWF0ZSB0aGlzIGRyaXZlciBieSB3cml0aW5nIFwic3RfbmNpIFx1MDAzY2FkZHJlc3NcdTAwM2VcIiB0byB0aGUgYC9zeXMvYnVzL2kyYy9kZXZpY2VzL2kyYy1YL25ld19kZXZpY2VgIGZpbGUsIHJpZ2h0PyBUaGF0J3MgdGhlIHN0YW5kYXJkIHN5c2ZzIHdheS5cblxuQnV0LCBoYW5nIG9uLCB0aGVyZSdzIGEgbmV3IGNvbXBhdGlibGUgc3RyaW5nIGJlaW5nIGludHJvZHVjZWQsIFwic3Qsc3QyMW5mY2RcIiwgYW5kIHRoZSBgcmF3X25jaWAgZmxhZyBpcyBiZWluZyBzZXQgYmFzZWQgb24gYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gVGhpcyBmdW5jdGlvbiBpcyBsb29raW5nIGF0IHRoZSBPRiAoZGV2aWNlIHRyZWUpIG9yIEFDUEkgbWF0Y2ggdGFibGVzLCBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLiBJZiBJIGluc3RhbnRpYXRlIHRoZSBkZXZpY2UgdGhyb3VnaCBzeXNmcycgYG5ld19kZXZpY2VgLCBpdCdsbCB1c2UgdGhlIGBpMmNfZGV2aWNlX2lkYCB0YWJsZSwgd2hpY2ggKm9ubHkqIGhhcyBcInN0X25jaVwiLlxuXG5IZXJlJ3MgdGhlIHByb2JsZW06IGlmIEkgaW5zdGFudGlhdGUgaXQgdXNpbmcgdGhlIFwic3RfbmNpXCIgbmFtZSB2aWEgc3lzZnMsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgcmV0dXJuIGBOVUxMYCBiZWNhdXNlIGl0J3Mgbm90IHByZXNlbnQgaW4gdGhlIE9GIHRhYmxlLCByaWdodD8gT3Igd2lsbCB0aGUgT0YgbmFtZSBzb21laG93IGdldCBtYXRjaGVkPyBJJ20gbWlzc2luZyBzb21ldGhpbmcuLi5cblxuQWgsIHJpZ2h0ISBgaTJjX25ld19jbGllbnRfZGV2aWNlYCAqY2FuKiBpbnN0YW50aWF0ZSBkZXZpY2VzIGJhc2VkIG9uIE9GIG5vZGVzLiBCdXQgd2hlbiBkb25lIGZyb20gdXNlcnNwYWNlLCB2aWEgYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtIGlzIGxpbWl0ZWQgdG8gcGFzc2luZyB0aGUgSTJDIG5hbWUuIFNvLCBpZiBJIHBhc3MgXCJzdF9uY2lcIiwgaXQgbWF0Y2hlcyB0aGUgYGkyY19kZXZpY2VfaWRgIHRhYmxlLiBTaW5jZSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3b3VsZCByZXR1cm4gYE5VTExgLCB0aGUgYHJhd19uY2lgIGZsYWcgd2lsbCBiZSBpbml0aWFsaXplZCB0byAwLlxuXG5XYWl0LCB0aGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGl0IHdpdGggdGhlIE9GIGNvbXBhdGlibGUgc3RyaW5nIHRocm91Z2ggc3lzZnM/IFByb2JhYmx5IG5vdC4gVGhlIGBuZXdfZGV2aWNlYCBmdW5jdGlvbiBwcm9iYWJseSBvbmx5IG1hdGNoZXMgYWdhaW5zdCB0aGUgYGkyY19kZXZpY2VfaWRgLCB0aGUgYGFjcGlfZGV2aWNlX2lkYCwgb3IgdGhlIGBvZl9kZXZpY2VfaWRgIHRhYmxlcyBkaXJlY3RseS5cblxuTGV0J3MgY29uZmlybSB0aGF0IGJ5IGRpZ2dpbmcgaW50byB0aGUgYGkyY19zeXNmc19uZXdfZGV2aWNlYCBmdW5jdGlvbiBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgZmluYWwgYW5zd2VyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDU1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjI3LjQwODU2MDYyM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM5MjY4MzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImkyY19zeXNmc19uZXdfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMzIwPXN0YXRpYyBERVZJQ0VfQVRUUl9XTyhuZXdfZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzI0LSAqIHRoZXkgZ290IGl0IHdyb25nLiBUaGlzIGludGVyZmFjZSBjYW4gb25seSBiZSB1c2VkIHRvIGRlbGV0ZSBkZXZpY2VzXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEzMjU6ICogaW5zdGFudGlhdGVkIGJ5IGkyY19zeXNmc19uZXdfZGV2aWNlIGFib3ZlLiBUaGlzIGd1YXJhbnRlZXMgdGhhdCB3ZVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMzI2LSAqIGRvbid0IGRlbGV0ZSBkZXZpY2VzIHRvIHdoaWNoIHNvbWUga2VybmVsIGNvZGUgc3RpbGwgaGFzIHJlZmVyZW5jZXMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjI5LjM0NzgzMzY1OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTgxMTIwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBiYXNlZCBvbiB5b3VyIHByb21wdDpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIERldmljZSBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgbmV3X2RldmljZWAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgZGV2aWNlIHJlZ2lzdHJhdGlvbiBpcyBoYW5kbGVkIGF0IHRoZSBJMkMgY29yZSBsZXZlbC4gTGV0J3Mgc3RhcnQgd2l0aCBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBsb2dpYyB0aGVyZSBmb3IgY3JlYXRpbmcgYW5kIGxpbmtpbmcgbmV3IEkyQyBkZXZpY2UgaW5zdGFuY2VzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgSTJDIGFkYXB0ZXIgc3RydWN0dXJlIGFuZCBob3cgaXQgaGFuZGxlcyBwb3RlbnRpYWwgcmVzb3VyY2UgY29uZmxpY3RzIG9yIGFkZHJlc3MgY29sbGlzaW9ucy4gSSdtIGhvcGluZyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgYW5kIGFueSBhc3NvY2lhdGVkIGVycm9yIGhhbmRsaW5nLiBJJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGF0IHRoZSBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgYGkyY19kcml2ZXJgIHN0cnVjdHVyZSBhbmQgaG93IHRoZSBkZXZpY2UncyBwcm9iZSBhbmQgcmVtb3ZlIGZ1bmN0aW9ucyBhcmUgaW50ZWdyYXRlZCBpbnRvIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy4gSG9wZWZ1bGx5LCBpdCBpcyBzdHJhaWdodGZvcndhcmQgYW5kIG5vdCBhbiBvdmVybHkgY29tcGxleCBtZXNzLiBMZXQncyBnZXQgY3JhY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTc5LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjI6MzIuOTY1OTQ4MTE1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE4MDY5OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ld19kZXZpY2Vfc3RvcmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jPTYyND1FWFBPUlRfU1lNQk9MX0dQTChwYXRhX3BhcnBvcnRfdW5yZWdpc3Rlcl9kcml2ZXIpO1xcbmRyaXZlcnMvYXRhL3BhdGFfcGFycG9ydC9wYXRhX3BhcnBvcnQuYy02MjUtXFxuZHJpdmVycy9hdGEvcGF0YV9wYXJwb3J0L3BhdGFfcGFycG9ydC5jOjYyNjpzdGF0aWMgc3NpemVfdCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG5kcml2ZXJzL2F0YS9wYXRhX3BhcnBvcnQvcGF0YV9wYXJwb3J0LmMtNjI3LXtcXG4tLVxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYz0xMzY3PXN0YXRpYyBpbnQgZ3Bpb19hZ2dyZWdhdG9yX3BhcnNlKHN0cnVjdCBncGlvX2FnZ3JlZ2F0b3IgKmFnZ3IpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmMtMTQ1NC1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTQ1NTpzdGF0aWMgc3NpemVfdCBncGlvX2FnZ3JlZ2F0b3JfbmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJpdmVyLFxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNDU2LVxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE1Mjc9c3RhdGljIHN0cnVjdCBkcml2ZXJfYXR0cmlidXRlIGRyaXZlcl9hdHRyX2dwaW9fYWdncmVnYXRvcl9uZXdfZGV2aWNlID1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTUyODpcXHRfX0FUVFIobmV3X2RldmljZSwgMDIwMCwgTlVMTCwgZ3Bpb19hZ2dyZWdhdG9yX25ld19kZXZpY2Vfc3RvcmUpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNTI5LVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tYWdncmVnYXRvci5jPTE2OTU9c3RhdGljIGludCBfX2luaXQgZ3Bpb19hZ2dyZWdhdG9yX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYy0xNzEyLVxcdCAqIGV4cG9zZWQgYW5kIGFjY2Vzc2VkIGJ5IHVzZXJzIGJlZm9yZSBjb25maWdmcyByZWdpc3RyYXRpb25cXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmM6MTcxMzpcXHQgKiBjb21wbGV0ZXMuIG5ld19kZXZpY2Vfc3RvcmUoKSBkb2VzIG5vdCBleHBlY3QgYSBwYXJ0aWFsbHlcXG5kcml2ZXJzL2dwaW8vZ3Bpby1hZ2dyZWdhdG9yLmMtMTcxNC1cXHQgKiBpbml0aWFsaXplZCBjb25maWdmcyBzdGF0ZS5cXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMjYzPXN0YXRpYyBzc2l6ZV90XFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jOjEyNjQ6bmV3X2RldmljZV9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy0xMjY1LVxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTg9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU5Om5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjozNC41ODQwMjY3NzVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0NjY0NTUxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIERyaXZlciBDb3JlKipcblxuT2theSwgdGltZSB0byBjcmFjayBvcGVuIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgIGFuZCBzcGVjaWZpY2FsbHksIEkgd2FudCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ld19kZXZpY2Vfc3RvcmVgIGZ1bmN0aW9uLiBJJ20gcHJvYmFibHkgdHJ5aW5nIHRvIGRlYnVnIHNvbWV0aGluZyByZWxhdGVkIHRvIGRldmljZSByZWdpc3RyYXRpb24gb3IgcHJvYmluZywgb3IgbWF5YmUgSSdtIGxvb2tpbmcgdG8gdW5kZXJzdGFuZCBob3cgbmV3IEkyQyBkZXZpY2VzIGFyZSBoYW5kbGVkIGF0IGEgbG93IGxldmVsLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGUgZHJpdmVyIGNvcmUgbWFuYWdlcyB0aGUgc3lzZnMgZW50cmllcyBmb3IgdGhlIEkyQyBkZXZpY2VzIHdlIGF0dGFjaC4gSXMgaXQgY3JlYXRpbmcgYW5kIHBvcHVsYXRpbmcgdGhlIGF0dHJpYnV0ZXMgY29ycmVjdGx5PyBBcmUgdGhlcmUgYW55IHJhY2UgY29uZGl0aW9ucyB0aGF0IG1pZ2h0IGJlIHBvc3NpYmxlIHdpdGggdGhlIGRldmljZSBjcmVhdGlvbiBsb2dpYyBpbiB0aGVyZT8gTWF5YmUgYSBwcm9ibGVtIHdpdGggYXR0cmlidXRlcyBub3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG5vdCBiZWluZyBjb3JyZWN0bHkgYXR0YWNoZWQ/IFVuZGVyc3RhbmRpbmcgdGhpcyBmdW5jdGlvbiBpcyBnb2luZyB0byBiZSBrZXkgdG8gd2hhdGV2ZXIgSSdtIHRyb3VibGVzaG9vdGluZy4gTGV0J3Mgc2VlIHdoYXQgd2UndmUgZ290LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTUwNywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjM4LjAzMDY3NTE0MVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTc3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNjMsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyNjM6XFx0c3RhdGljIHNzaXplX3RcXG4xMjY0OlxcdG5ld19kZXZpY2Vfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4xMjY1OlxcdFxcdFxcdCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4xMjY2OlxcdHtcXG4xMjY3OlxcdFxcdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IHRvX2kyY19hZGFwdGVyKGRldik7XFxuMTI2ODpcXHRcXHRzdHJ1Y3QgaTJjX2JvYXJkX2luZm8gaW5mbztcXG4xMjY5OlxcdFxcdHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQ7XFxuMTI3MDpcXHRcXHRjaGFyICpibGFuaywgZW5kO1xcbjEyNzE6XFx0XFx0aW50IHJlcztcXG4xMjcyOlxcdFxcbjEyNzM6XFx0XFx0bWVtc2V0KFxcdTAwMjZpbmZvLCAwLCBzaXplb2Yoc3RydWN0IGkyY19ib2FyZF9pbmZvKSk7XFxuMTI3NDpcXHRcXG4xMjc1OlxcdFxcdGJsYW5rID0gc3RyY2hyKGJ1ZiwgJyAnKTtcXG4xMjc2OlxcdFxcdGlmICghYmxhbmspIHtcXG4xMjc3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXM6IE1pc3NpbmcgcGFyYW1ldGVyc1xcXFxuXFxcIiwgXFxcIm5ld19kZXZpY2VcXFwiKTtcXG4xMjc4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyNzk6XFx0XFx0fVxcbjEyODA6XFx0XFx0aWYgKGJsYW5rIC0gYnVmIFxcdTAwM2UgSTJDX05BTUVfU0laRSAtIDEpIHtcXG4xMjgxOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiJXM6IEludmFsaWQgZGV2aWNlIG5hbWVcXFxcblxcXCIsIFxcXCJuZXdfZGV2aWNlXFxcIik7XFxuMTI4MjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xMjgzOlxcdFxcdH1cXG4xMjg0OlxcdFxcdG1lbWNweShpbmZvLnR5cGUsIGJ1ZiwgYmxhbmsgLSBidWYpO1xcbjEyODU6XFx0XFxuMTI4NjpcXHRcXHQvKiBQYXJzZSByZW1haW5pbmcgcGFyYW1ldGVycywgcmVqZWN0IGV4dHJhIHBhcmFtZXRlcnMgKi9cXG4xMjg3OlxcdFxcdHJlcyA9IHNzY2FuZigrK2JsYW5rLCBcXFwiJWhpJWNcXFwiLCBcXHUwMDI2aW5mby5hZGRyLCBcXHUwMDI2ZW5kKTtcXG4xMjg4OlxcdFxcdGlmIChyZXMgXFx1MDAzYyAxKSB7XFxuMTI4OTpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBDYW4ndCBwYXJzZSBJMkMgYWRkcmVzc1xcXFxuXFxcIiwgXFxcIm5ld19kZXZpY2VcXFwiKTtcXG4xMjkwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjEyOTE6XFx0XFx0fVxcbjEyOTI6XFx0XFx0aWYgKHJlcyBcXHUwMDNlIDEgIFxcdTAwMjZcXHUwMDI2IGVuZCAhPSAnXFxcXG4nKSB7XFxuMTI5MzpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIiVzOiBFeHRyYSBwYXJhbWV0ZXJzXFxcXG5cXFwiLCBcXFwibmV3X2RldmljZVxcXCIpO1xcbjEyOTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTI5NTpcXHRcXHR9XFxuMTI5NjpcXHRcXG4xMjk3OlxcdFxcdGlmICgoaW5mby5hZGRyIFxcdTAwMjYgSTJDX0FERFJfT0ZGU0VUX1RFTl9CSVQpID09IEkyQ19BRERSX09GRlNFVF9URU5fQklUKSB7XFxuMTI5ODpcXHRcXHRcXHRpbmZvLmFkZHIgXFx1MDAyNj0gfkkyQ19BRERSX09GRlNFVF9URU5fQklUO1xcbjEyOTk6XFx0XFx0XFx0aW5mby5mbGFncyB8PSBJMkNfQ0xJRU5UX1RFTjtcXG4xMzAwOlxcdFxcdH1cXG4xMzAxOlxcdFxcbjEzMDI6XFx0XFx0aWYgKGluZm8uYWRkciBcXHUwMDI2IEkyQ19BRERSX09GRlNFVF9TTEFWRSkge1xcbjEzMDM6XFx0XFx0XFx0aW5mby5hZGRyIFxcdTAwMjY9IH5JMkNfQUREUl9PRkZTRVRfU0xBVkU7XFxuMTMwNDpcXHRcXHRcXHRpbmZvLmZsYWdzIHw9IEkyQ19DTElFTlRfU0xBVkU7XFxuMTMwNTpcXHRcXHR9XFxuMTMwNjpcXHRcXG4xMzA3OlxcdFxcdGNsaWVudCA9IGkyY19uZXdfY2xpZW50X2RldmljZShhZGFwLCBcXHUwMDI2aW5mbyk7XFxuMTMwODpcXHRcXHRpZiAoSVNfRVJSKGNsaWVudCkpXFxuMTMwOTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihjbGllbnQpO1xcbjEzMTA6XFx0XFxuMTMxMTpcXHRcXHQvKiBLZWVwIHRyYWNrIG9mIHRoZSBhZGRlZCBkZXZpY2UgKi9cXG4xMzEyOlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNmFkYXAtXFx1MDAzZXVzZXJzcGFjZV9jbGllbnRzX2xvY2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjozOC4wMzA4NzQ4MzFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4NzI5Njc3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEkyQyBDbGllbnQgRGV2aWNlIERyaXZlciBNYXRjaGluZyoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gaG93IGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIGhhbmRsZXMgZHJpdmVyIG1hdGNoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCdzIHJlbHlpbmcgb24gYGluZm8udHlwZWAgZm9yIHRoaXMuIFNwZWNpZmljYWxseSwgaWYgd2UgcHJvdmlkZSBzb21ldGhpbmcgbGlrZSBgXCJzdDIxbmZjZFwiYCwgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0IHdpbGwgdHJ5IHRvIG1hdGNoIGFnYWluc3QgdGhlIE9GIHRhYmxlLCB3aGV0aGVyIG9yIG5vdCB0aGUgSTJDIGNvcmUgc3RyaXBzIHRoZSB2ZW5kb3IgcHJlZml4IGBcInN0LFwiYC5cblxuSG9sZCBvbi4uLiBJJ20gcHJldHR5IHN1cmUgdGhlIEkyQyBjb3JlIGFjdHVhbGx5IGhhbmRsZXMgbWF0Y2hpbmcgYWdhaW5zdCBPRiBjb21wYXRpYmxlIHN0cmluZ3MgKndpdGhvdXQqIHRoZSB2ZW5kb3IgcHJlZml4LiBUaGlzIG1ha2VzIHRoaW5ncyBhIGJpdCBtb3JlIGludGVyZXN0aW5nLlxuXG5BbHJpZ2h0LCBsZXQncyBkb3VibGUtY2hlY2sgaG93IHRoYXQncyBkb25lLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBgaTJjX2RldmljZV9tYXRjaGAuIEkgbmVlZCB0byByZXZpZXcgdGhvc2UgZnVuY3Rpb25zIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIG1hdGNoaW5nIHByb2Nlc3MuIFRoaXMgd2lsbCBoZWxwIG1lIGJlIG1vcmUgcHJlY2lzZSBpbiBkZWJ1Z2dpbmcgYW5kIGVuc3VyZSB3ZSdyZSBnZXR0aW5nIHRoZSBkcml2ZXIgbWFwcGluZyBjb3JyZWN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjYwOCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjI6NDIuMjE4MTc1NTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mjk4ODE3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTJjX29mX21hdGNoX2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM9MTQwPXN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTQ2LVxcdC8qIEF0dGVtcHQgYW4gT0Ygc3R5bGUgbWF0Y2ggKi9cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTQ3OlxcdGlmIChpMmNfb2ZfbWF0Y2hfZGV2aWNlKGRydi1cXHUwMDNlb2ZfbWF0Y2hfdGFibGUsIGNsaWVudCkpXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTE0OC1cXHRcXHRyZXR1cm4gMTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz00OTE9c3RhdGljIGludCBpMmNfZGV2aWNlX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYy01NDEtXFx0ICAgICFhY3BpX2RyaXZlcl9tYXRjaF9kZXZpY2UoZGV2LCBkZXYtXFx1MDAzZWRyaXZlcikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6NTQyOlxcdCAgICAhaTJjX29mX21hdGNoX2RldmljZShkZXYtXFx1MDAzZWRyaXZlci1cXHUwMDNlb2ZfbWF0Y2hfdGFibGUsIGNsaWVudCkpIHtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtNTQzLVxcdFxcdHN0YXR1cyA9IC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jPTExNT1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCpcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jOjExNjppMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xMTctXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYz0xNDQ9Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmM6MTQ1OippMmNfb2ZfbWF0Y2hfZGV2aWNlKGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoZXMsXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNDYtXFx0XFx0ICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYy0xNTYtXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtb2YuYzoxNTc6XFx0cmV0dXJuIGkyY19vZl9tYXRjaF9kZXZpY2Vfc3lzZnMobWF0Y2hlcywgY2xpZW50KTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jLTE1OC19XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oPTg3PXZvaWQgb2ZfaTJjX3JlZ2lzdGVyX2RldmljZXMoc3RydWN0IGkyY19hZGFwdGVyICphZGFwKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oOjg4OmNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKmkyY19vZl9tYXRjaF9kZXZpY2UoY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqbWF0Y2hlcyxcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS5oLTg5LVxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg9OTM9c3RhdGljIGlubGluZVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmg6OTQ6Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCAqaTJjX29mX21hdGNoX2RldmljZShjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLmgtOTUtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjQzLjg0ODA2MzIyN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mzg4MDY3MjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSByZWFkaW5nIGFuZCB0aGlua2luZyBhYm91dCB0aGUgY29kZTpcblxuKipEaXZpbmcgaW50byBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzKipcblxuT2theSwgdGltZSB0byBnZXQgaW50byBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agd2l0aGluIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1vZi5jYC4gSSdtIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIGhhbmRsaW5nIHRoZSBjcnVjaWFsIHRhc2sgb2YgbWF0Y2hpbmcgSTJDIGRldmljZXMgYWdhaW5zdCB0aGUgZGV2aWNlIHRyZWUsIGFuZCBob3cgaXQncyBleHBvc2luZyB0aGF0IGluZm9ybWF0aW9uIHRocm91Z2ggc3lzZnMuIEkgZXhwZWN0IGl0J2xsIGJlIGEga2V5IGNvbXBvbmVudCBpbiBlbmFibGluZyBob3RwbHVnZ2luZyBhbmQgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiB3aXRoIGRldmljZXMgZGlzY292ZXJlZCB2aWEgdGhlIGRldmljZSB0cmVlLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIHByb3BlcnRpZXMgbGlrZSBhZGRyZXNzZXMsIGJ1cyBudW1iZXJzLCBhbmQgYW55IGN1c3RvbSBwbGF0Zm9ybSBkYXRhIHRoYXQncyBuZWVkZWQuIExldCdzIHNlZSBob3cgdGhleSd2ZSBzdHJ1Y3R1cmVkIHRoaXMgdG8gYmUgcm9idXN0IGFuZCBlZmZpY2llbnQsIGNvbnNpZGVyaW5nIHRoZSBvdmVyaGVhZCB0aGF0IGRldmljZSB0cmVlIHBhcnNpbmcgY2FuIHNvbWV0aW1lcyBicmluZy4gSSdsbCBiZSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBhcmVhcyB0byByZWZpbmUsIGVzcGVjaWFsbHkgaW4gdGVybXMgb2YgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQuIExldCdzIGdldCByZWFkaW5nIGFuZCBzZWUgd2hhdCB0cmVhc3VyZXMgbGllIHdpdGhpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MTM3NjIsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo0OC4yMzYxMzI1OTNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLW9mLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE1LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE1OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkKlxcbiAxMTY6XFx0aTJjX29mX21hdGNoX2RldmljZV9zeXNmcyhjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkICptYXRjaGVzLFxcbiAxMTc6XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbiAxMTg6XFx0e1xcbiAxMTk6XFx0XFx0Y29uc3QgY2hhciAqbmFtZTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0XFx0Zm9yICg7IG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGVbMF07IG1hdGNoZXMrKykge1xcbiAxMjI6XFx0XFx0XFx0LypcXG4gMTIzOlxcdFxcdFxcdCAqIEFkZGluZyBkZXZpY2VzIHRocm91Z2ggdGhlIGkyYyBzeXNmcyBpbnRlcmZhY2UgcHJvdmlkZXMgdXNcXG4gMTI0OlxcdFxcdFxcdCAqIGEgc3RyaW5nIHRvIG1hdGNoIHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIHdpdGggdGhlIGRldmljZVxcbiAxMjU6XFx0XFx0XFx0ICogdHJlZSBjb21wYXRpYmxlIHN0cmluZ3MsIGhvd2V2ZXIgd2l0aCBubyBhY3R1YWwgb2Zfbm9kZSB0aGVcXG4gMTI2OlxcdFxcdFxcdCAqIG9mX21hdGNoX2RldmljZSgpIHdpbGwgbm90IG1hdGNoXFxuIDEyNzpcXHRcXHRcXHQgKi9cXG4gMTI4OlxcdFxcdFxcdGlmIChzeXNmc19zdHJlcShjbGllbnQtXFx1MDAzZW5hbWUsIG1hdGNoZXMtXFx1MDAzZWNvbXBhdGlibGUpKVxcbiAxMjk6XFx0XFx0XFx0XFx0cmV0dXJuIG1hdGNoZXM7XFxuIDEzMDpcXHRcXG4gMTMxOlxcdFxcdFxcdG5hbWUgPSBzdHJjaHIobWF0Y2hlcy1cXHUwMDNlY29tcGF0aWJsZSwgJywnKTtcXG4gMTMyOlxcdFxcdFxcdGlmICghbmFtZSlcXG4gMTMzOlxcdFxcdFxcdFxcdG5hbWUgPSBtYXRjaGVzLVxcdTAwM2Vjb21wYXRpYmxlO1xcbiAxMzQ6XFx0XFx0XFx0ZWxzZVxcbiAxMzU6XFx0XFx0XFx0XFx0bmFtZSsrO1xcbiAxMzY6XFx0XFxuIDEzNzpcXHRcXHRcXHRpZiAoc3lzZnNfc3RyZXEoY2xpZW50LVxcdTAwM2VuYW1lLCBuYW1lKSlcXG4gMTM4OlxcdFxcdFxcdFxcdHJldHVybiBtYXRjaGVzO1xcbiAxMzk6XFx0XFx0fVxcbiAxNDA6XFx0XFxuIDE0MTpcXHRcXHRyZXR1cm4gTlVMTDtcXG4gMTQyOlxcdH1cXG4gMTQzOlxcdFxcbiAxNDQ6XFx0Y29uc3Qgc3RydWN0IG9mX2RldmljZV9pZFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo0OC4yMzYyMzk4OTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3NTgwNjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBMaW5lIG9mIFJlYXNvbmluZyoqXG5cbk9rYXksIHNvIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBpcyB0aGUga2V5LiBJdCdzIGNvbXBhcmluZyB0aGUgYGNsaWVudC1cdTAwM2VuYW1lYCBmaWVsZCB3aXRoIHdoYXQncyBpbiBgbWF0Y2hlcy1cdTAwM2Vjb21wYXRpYmxlYCwgb3IgdGhlIHBvcnRpb24gYWZ0ZXIgYSBjb21tYSB3aXRoaW4gdGhhdCBzdHJpbmcuIFNvLCBpZiBJIGZlZWQgYFwic3QyMW5mY2RcImAgdG8gYG5ld19kZXZpY2VgLCB0aGUgc3lzdGVtICpzaG91bGQqIGNvcnJlY3RseSBhc3NvY2lhdGUgaXQgd2l0aCBgXCJzdCxzdDIxbmZjZFwiYCBpbiB0aGUgY29tcGF0aWJsZSBzdHJpbmcuIEV4Y2VsbGVudC5cblxuTm93LCBkb2VzIHRoYXQgbWVhbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldilgIHdpbGwgc3Vic2VxdWVudGx5IHJldHVybiBgU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYCwgZ2l2ZW4gdGhhdCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgIGFuZCBoYW5kbGVzIHRoZSBpbml0aWFsIHNldHVwPyBJdCBzZWVtcyBsaWtlbHkuIEJ1dCwgaGFuZyBvbi4uLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZWxpZXMgb24gdGhlIGBkZXZpY2VfZHJpdmVyYCAqYW5kKiB0aGUgZGV2aWNlIGl0c2VsZiAoYGRldmApIGZvciBpdHMgbG9va3Vwcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBhYm91dCB0aGlzLiBUaW1lIHRvIGRpZyBpbnRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgdG8gY29uZmlybSBob3cgaXQgcHVsbHMgdGhlIG1hdGNoaW5nIGRhdGEuIEdvdHRhIG1ha2Ugc3VyZSB0aGUgY29ubmVjdGlvbiBpcyBzb2xpZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQ0NzMsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo1Mi44MTIwNDk3MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NzcxOTk5NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGV2aWNlX2dldF9tYXRjaF9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTI2NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jPTQ3Mz1zdGF0aWMgaW50IGlteF9tbWRjX3BlcmZfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCB2b2lkIF9faW9tZW0gKm1tZGNfYmFzZSxcXG4tLVxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MDktXFx0cG11X21tZGMtXFx1MDAzZW1tZGNfaXBnX2NsayA9IG1tZGNfaXBnX2NsaztcXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmM6NTEwOlxcdHBtdV9tbWRjLVxcdTAwM2VkZXZ0eXBlX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jLTUxMS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmM9MzQ0PXN0YXRpYyBpbnQgcG1jX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTAtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYzozNTE6XFx0dHlwZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2b2ZkZXYtXFx1MDAzZWRldik7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy84M3h4L3N1c3BlbmQuYy0zNTItXFx0aWYgKCF0eXBlKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jPTIwPXN0YXRpYyBpbnQgY3BtX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbV9ncGlvLmMtMjItXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm9mZGV2LVxcdTAwM2VkZXY7XFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jOjIzOlxcdGludCAoKmdwX2FkZCkoc3RydWN0IGRldmljZSAqZGV2KSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYy0yNC1cXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jPTM5Mz1zdGF0aWMgaW50IGZzbF9vZl9tc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfbXNpLmMtNDAzLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jOjQwNDpcXHRmZWF0dXJlcyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2ZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwNS1cXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jPTQ2MD1zdGF0aWMgaW50IHNhYnJlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NhYnJlLmMtNDcwLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jOjQ3MTpcXHRodW1taW5nYmlyZF9wID0gKHVpbnRwdHJfdClkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3Mi1cXHRpZiAoIWh1bW1pbmdiaXJkX3ApIHtcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYz0xNDY1PXN0YXRpYyBpbnQgc2NoaXpvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYy0xNDY2LXtcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM6MTQ2NzpcXHR1bnNpZ25lZCBsb25nIGNoaXBfdHlwZSA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2b3AtXFx1MDAzZWRldik7XFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jLTE0NjgtXFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmM9MTA4MT1FWFBPUlRfU1lNQk9MX0dQTChhY3BpX21hdGNoX2RldmljZSk7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTEwODItXFxuZHJpdmVycy9hY3BpL2J1cy5jOjEwODM6Y29uc3Qgdm9pZCAqYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDg0LXtcXG4tLVxcbmRyaXZlcnMvYWNwaS9idXMuYy0xMTAxLX1cXG5kcml2ZXJzL2FjcGkvYnVzLmM6MTEwMjpFWFBPUlRfU1lNQk9MX0dQTChhY3BpX2RldmljZV9nZXRfbWF0Y2hfZGF0YSk7XFxuZHJpdmVycy9hY3BpL2J1cy5jLTExMDMtXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNTk2PXN0YXRpYyBjb25zdCB2b2lkICpcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxNTk3OmFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE1OTgtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTU5OS17XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTYwMDpcXHRyZXR1cm4gYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNjAxLX1cXG4tLVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jPTE3MjU9c3RhdGljIGludCBhY3BpX2Z3bm9kZV9pcnFfZ2V0KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNzQwLVxcdFxcdC5kZXZpY2VfaXNfYXZhaWxhYmxlID0gYWNwaV9md25vZGVfZGV2aWNlX2lzX2F2YWlsYWJsZSwgXFxcXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE3NDE6XFx0XFx0LmRldmljZV9nZXRfbWF0Y2hfZGF0YSA9IGFjcGlfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YSwgXFxcXFxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE3NDItXFx0XFx0LmRldmljZV9kbWFfc3VwcG9ydGVkID1cXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jPTEwOT1zdGF0aWMgc3RydWN0IGFoY2lfaG9zdF9wcml2ICphaGNpX2R3Y19nZXRfcmVzb3VyY2VzKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTExOC1cXHRkcHJpdi1cXHUwMDNlcGRldiA9IHBkZXY7XFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYzoxMTk6XFx0ZHByaXYtXFx1MDAzZXBkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmMtMTIwLVxcdGlmICghZHByaXYtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYz04NTg9c3RhdGljIGludCBpbXhfYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYy04NzItXFx0aW14cHJpdi1cXHUwMDNlZmlyc3RfdGltZSA9IHRydWU7XFxuZHJpdmVycy9hdGEvYWhjaV9pbXguYzo4NzM6XFx0aW14cHJpdi1cXHUwMDNldHlwZSA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODc0LVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jPTE4NT1zdGF0aWMgaW50IGFoY2lfbXZlYnVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYy0xOTAtXFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jOjE5MTpcXHRwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmMtMTkyLVxcdGlmICghcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmM9NDI9c3RhdGljIGludCBhaGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmMtNjAtXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jOjYxOlxcdHBvcnQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3BsYXRmb3JtLmMtNjItXFx0aWYgKCFwb3J0KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jPTUxNT1zdGF0aWMgaW50IHRlZ3JhX2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYy01MzItXFx0dGVncmEtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYzo1MzM6XFx0dGVncmEtXFx1MDAzZXNvYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV94Z2VuZS5jPTcyNz1zdGF0aWMgaW50IHhnZW5lX2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzUtXFx0aWYgKGRldi1cXHUwMDNlb2Zfbm9kZSkge1xcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYzo3NzY6XFx0XFx0dmVyc2lvbiA9ICh1bnNpZ25lZCBsb25nKW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYy03NzctXFx0fVxcbi0tXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM9ODU5PXN0YXRpYyBpbnQgc2F0YV9yY2FyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzMtXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmM6ODc0OlxcdHByaXYtXFx1MDAzZXR5cGUgPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9zYXRhX3JjYXIuYy04NzUtXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jPTIyOD1zdGF0aWMgaW50IGltZ19hc2NpaV9sY2RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmMtMjMwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYzoyMzE6XFx0Y29uc3Qgc3RydWN0IGltZ19hc2NpaV9sY2RfY29uZmlnICpjZmcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jLTIzMi1cXHRzdHJ1Y3QgaW1nX2FzY2lpX2xjZF9jdHggKmN0eDtcXG4tLVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jPTEzNDc9RVhQT1JUX1NZTUJPTChmd25vZGVfZ3JhcGhfcGFyc2VfZW5kcG9pbnQpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNDgtXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM0OTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTAte1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNTE6XFx0cmV0dXJuIGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUyLX1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUzOkVYUE9SVF9TWU1CT0xfR1BMKGRldmljZV9nZXRfbWF0Y2hfZGF0YSk7XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1NC1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jPTgyOD1zdGF0aWMgaW50IGJ0bXRrdWFydF9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jOjgzODpcXHRiZGV2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRtdGt1YXJ0LmMtODM5LVxcdGlmICghYmRldi1cXHUwMDNlZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jPTE4MjE9c3RhdGljIGludCBueHBfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYy0xODMxLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bnhwdWFydC5jOjE4MzI6XFx0bnhwZGV2LVxcdTAwM2VueHBfZGF0YSA9IChzdHJ1Y3QgYnRueHB1YXJ0X2RhdGEgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYy0xODMzLVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jPTY4MD1zdGF0aWMgaW50IGFtbF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYy02OTctXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2FtbC5jOjY5ODpcXHRhbWxkZXYtXFx1MDAzZWFtbF9kZXZfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2c2VyZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYy02OTktXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmM9MTUwNT1zdGF0aWMgaW50IGJjbV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ1LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYzoxNTQ2OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoYmNtZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9iY20uYy0xNTQ3LVxcdGlmIChkYXRhKSB7XFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYz04NTU9c3RhdGljIGludCBoNV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4My1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jOjg4NDpcXHRcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2g1LmMtODg1LVxcdFxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmM9NDYyPXN0YXRpYyBpbnQgbXJ2bF9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9tcnZsLmMtNDY0LVxcdHN0cnVjdCBtcnZsX3NlcmRldiAqbXJ2bGRldjtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jOjQ2NTpcXHRjb25zdCBzdHJ1Y3QgaGNpX3VhcnRfcHJvdG8gKm1ydmxfcHJvdG8gPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2Ni1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYz0yMzkyPXN0YXRpYyBpbnQgcWNhX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDQtXFx0cWNhZGV2LVxcdTAwM2VzZXJkZXZfaHUuc2VyZGV2ID0gc2VyZGV2O1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYzoyNDA1OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmMtMjQwNi1cXHRzZXJkZXZfZGV2aWNlX3NldF9kcnZkYXRhKHNlcmRldiwgcWNhZGV2KTtcXG4tLVxcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYz00OT1zdGF0aWMgaW50IGlteF9haXBzdHpfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02Mi1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmM6NjM6XFx0ZGF0YS1cXHUwMDNlZGVmYXVsdF9jZmcgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jLTY0LVxcbi0tXFxuZHJpdmVycy9idXMvaW14LXdlaW0uYz0yMDY9c3RhdGljIGludCB3ZWltX3BhcnNlX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9idXMvaW14LXdlaW0uYy0yMDcte1xcbmRyaXZlcnMvYnVzL2lteC13ZWltLmM6MjA4OlxcdGNvbnN0IHN0cnVjdCBpbXhfd2VpbV9kZXZ0eXBlICpkZXZ0eXBlID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2lteC13ZWltLmMtMjA5LVxcdGludCByZXQgPSAwLCBoYXZlX2NoaWxkID0gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYz03Nz1zdGF0aWMgdm9pZCBzaW1wbGVfcG1fYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy03OC17XFxuZHJpdmVycy9idXMvc2ltcGxlLXBtLWJ1cy5jOjc5OlxcdGNvbnN0IHZvaWQgKmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvc2ltcGxlLXBtLWJ1cy5jLTgwLVxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYz02MDU9c3RhdGljIGludCBzdG0zMl9yaWZzY19yZWdpc3Rlcl9kZWJ1Z2ZzKHN0cnVjdCBzdG0zMl9maXJld2FsbF9jb250cm9sbGVyICpyaWZzY19jb250cm9sbGVyLFxcbi0tXFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MTgtXFx0cmlmc2NfcHJpdi1cXHUwMDNlbmJfcmlzYWwgPSBuYl9yaXNhbDtcXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jOjYxOTpcXHRyaWZzY19wcml2LVxcdTAwM2VyZXNfbmFtZXMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEocmlmc2NfY29udHJvbGxlci1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy9zdG0zMl9yaWZzYy5jLTYyMC1cXG4tLVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYz0yODYzPXN0YXRpYyBpbnQgc3lzY19pbml0X21hdGNoKHN0cnVjdCBzeXNjICpkZGF0YSlcXG4tLVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYy0yODY2LVxcbmRyaXZlcnMvYnVzL3RpLXN5c2MuYzoyODY3OlxcdGNhcCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZGF0YS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2OC1cXHRpZiAoIWNhcClcXG4tLVxcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jPTI1Nj1zdGF0aWMgaW50IHNpZml2ZV9jY2FjaGVfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2MS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYzoyNjI6XFx0cXVpcmtzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jYWNoZS9zaWZpdmVfY2NhY2hlLmMtMjYzLVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYz0xMTQ9c3RhdGljIGludCBhdG1lbF90cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jLTEzMC1cXHRcXHRyZXR1cm4gUFRSX0VSUih0cm5nLVxcdTAwM2VjbGspO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmM6MTMxOlxcdGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYy0xMzItXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jPTE0Mz1zdGF0aWMgaW50IGJjbTI4MzVfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmMtMTc1LVxcdFxcdC8qIENoZWNrIGZvciBybmcgaW5pdCBmdW5jdGlvbiwgZXhlY3V0ZSBpdCAqL1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYzoxNzY6XFx0XFx0b2ZfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYy0xNzctXFx0XFx0aWYgKG9mX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmM9MTgzPXN0YXRpYyBpbnQgZXh5bm9zX3RybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYy0xOTQtXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jOjE5NTpcXHR0cm5nLVxcdTAwM2VmbGFncyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmMtMTk2LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jPTgzPXN0YXRpYyBpbnQgaW5nZW5pY19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05Ny1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmM6OTg6XFx0cHJpdi1cXHUwMDNldmVyc2lvbiA9IChlbnVtIGluZ2VuaWNfcm5nX3ZlcnNpb24pKHVpbnRwdHJfdClvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jLTk5LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYz04Nj1zdGF0aWMgaW50IG1lc29uX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05Ni1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21lc29uLXJuZy5jOjk3OlxcdHByaXYgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYy05OC1cXHRpZiAoIXByaXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYz0xNjU9c3RhdGljIGludCBtdGtfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYy0xNzYtXFx0cHJpdi1cXHUwMDNlcm5nLnF1YWxpdHkgPSA5MDA7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM6MTc3OlxcdHByaXYtXFx1MDAzZWZsYWdzID0gKHVuc2lnbmVkIGxvbmcpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jLTE3OC1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmM9Njk3PXN0YXRpYyBpbnQgbjJybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb3ApXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jLTcwNi1cXHRucC1cXHUwMDNlb3AgPSBvcDtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jOjcwNzpcXHRucC1cXHUwMDNlZGF0YSA9IChzdHJ1Y3QgbjJybmdfdGVtcGxhdGUgKilkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbjItZHJ2LmMtNzA4LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jPTg4PXN0YXRpYyBpbnQgbnBjbV9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYy0xMTItXFx0cHJpdi1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmM6MTEzOlxcdHByaXYtXFx1MDAzZWNsa3AgPSAodTMyKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYy0xMTQtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmM9Mzc1PXN0YXRpYyBpbnQgb2ZfZ2V0X29tYXBfcm5nX2RldmljZV9kZXRhaWxzKHN0cnVjdCBvbWFwX3JuZ19kZXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgwLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcC1ybmcuYzozODE6XFx0cHJpdi1cXHUwMDNlcGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmMtMzgyLVxcdGlmICghcHJpdi1cXHUwMDNlcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYz0xMTA9c3RhdGljIGludCBvbWFwM19yb21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYy0xMjEtXFx0ZGRhdGEtXFx1MDAzZW9wcy5uYW1lID0gXFxcIm9tYXAzLXJvbVxcXCI7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM6MTIyOlxcdGRkYXRhLVxcdTAwM2VvcHMucmVhZCA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAzLXJvbS1ybmcuYy0xMjMtXFx0ZGRhdGEtXFx1MDAzZW9wcy5xdWFsaXR5ID0gOTAwO1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYz0zODU9c3RhdGljIGludCBya19ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmMtMzk1LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM6Mzk2OlxcdHJrX3JuZy1cXHUwMDNlc29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5Ny1cXHRya19ybmctXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jPTUzMT1zdGF0aWMgaW50IHN0bTMyX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmMtNTU3LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vc3RtMzItcm5nLmM6NTU4OlxcdHByaXYtXFx1MDAzZWRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jLTU1OS1cXHRpZiAoIXByaXYtXFx1MDAzZWRhdGEpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM9MjI3PXN0YXRpYyBpbnQgb2ZfaXBtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI2OC1cXHRtZW1zZXQoXFx1MDAyNmlvLCAwLCBzaXplb2YoaW8pKTtcXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmM6MjY5OlxcdGlvLnNpX2luZm9cXHQ9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaXBtaS9pcG1pX3NpX3BsYXRmb3JtLmMtMjcwLVxcdGlvLmFkZHJfc291cmNlXFx0PSBTSV9ERVZJQ0VUUkVFO1xcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmM9MjkyPXN0YXRpYyBpbnQgdHBtX3Rpc19zcGlfZHJpdmVyX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTYtXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmM6Mjk3OlxcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNwaS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV90aXNfc3BpX21haW4uYy0yOTgtXFx0aWYgKCFwcm9iZV9mdW5jKSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmM9Njg4PXN0YXRpYyBpbnQgaHdpY2FwX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jLTY5NC1cXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmM6Njk1OlxcdGNvbmZpZyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIveGlsaW54X2h3aWNhcC94aWxpbnhfaHdpY2FwLmMtNjk2LVxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYz0zODQ9c3RhdGljIGludCBhc3BlZWRfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzcGVlZC5jLTQxNi1cXHQvKiBTb0MgZ2VuZXJhdGlvbnMgc2hhcmUgY29tbW9uIGxheW91dHMgYnV0IGhhdmUgZGlmZmVyZW50IGRpdmlzb3JzICovXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYzo0MTc6XFx0c29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzcGVlZC5jLTQxOC1cXHRpZiAoIXNvY19kYXRhKSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYz04NzA9c3RhdGljIGludCBhc3QyNzAwX3NvY19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXN0MjcwMC5jLTg5Ni1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYzo4OTc6XFx0Y2xrX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYy04OTgtXFx0aWYgKCFjbGtfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYz0yMTc9c3RhdGljIGludCBheHMxMHhfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0My1cXHRwbGxfY2xrLVxcdTAwM2VkZXYgPSBkZXY7XFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jOjI0NDpcXHRwbGxfY2xrLVxcdTAwM2VwbGxfY2ZnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXhzMTB4L3BsbF9jbG9jay5jLTI0NS1cXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jPTIyNjc9c3RhdGljIGludCBiY20yODM1X2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmMtMjI3Ny1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYzoyMjc4OlxcdHBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzktXFx0aWYgKCFwZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM9NDg0PXN0YXRpYyBpbnQgY2xrX2JjbTYzeHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmMtNDkwLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmM6NDkxOlxcdHRhYmxlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtNjN4eC1nYXRlLmMtNDkyLVxcdGlmICghdGFibGUpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmM9NDAzPXN0YXRpYyBpbnQgc3JfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA2LVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstc3IuYzo0MDc6XFx0cHJvYmVfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmMtNDA4LVxcdGlmICghcHJvYmVfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM9NTY2PXN0YXRpYyBpbnQgYXhpX2Nsa2dlbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzctXFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYzo1Nzg6XFx0ZGZsdF9saW1pdHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLWF4aS1jbGtnZW4uYy01NzktXFx0aWYgKCFkZmx0X2xpbWl0cylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz01OTY9c3RhdGljIHN0cnVjdCBjbGtfaHcgKmVuNzUyM19yZWdpc3Rlcl9wY2llX2NsayhzdHJ1Y3QgZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtNTk4LXtcXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM6NTk5OlxcdGNvbnN0IHN0cnVjdCBlbl9jbGtfc29jX2RhdGEgKnNvY19kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTYwMC1cXHRzdHJ1Y3QgY2xrX2luaXRfZGF0YSBpbml0ID0ge1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jPTk2MD1zdGF0aWMgaW50IGVuNzUyM19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy05NjYtXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jOjk2NzpcXHRzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY4LVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYz0zMzg9c3RhdGljIGludCBlcWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmMtMzQ3LVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM6MzQ4OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jLTM0OS1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYz00Nz1zdGF0aWMgaW50IGZzbF9mbGV4c3BpX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmMtNTctXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmM6NTg6XFx0ZGl2cyA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU5LVxcdGlmICghZGl2cylcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9NjE9c3RhdGljIGludCBmc2xfc2FpX2Nsa19yZWdpc3RlcihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtNjYte1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM6Njc6XFx0Y29uc3Qgc3RydWN0IGZzbF9zYWlfZGF0YSAqZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtNjgtXFx0c3RydWN0IGNsa19wYXJlbnRfZGF0YSBwZGF0YSA9IHsgLmluZGV4ID0gMCB9O1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYz0xMDQ9c3RhdGljIGludCBmc2xfc2FpX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYy0xMDYtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jOjEwNzpcXHRjb25zdCBzdHJ1Y3QgZnNsX3NhaV9kYXRhICpkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYy0xMDgtXFx0c3RydWN0IGZzbF9zYWlfY2xrICpzYWlfY2xrO1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWhzZGstcGxsLmM9MzA1PXN0YXRpYyBpbnQgaHNka19wbGxfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzQtXFx0cGxsX2Nsay1cXHUwMDNlZGV2ID0gZGV2O1xcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jOjMzNTpcXHRwbGxfY2xrLVxcdTAwM2VwbGxfZGV2ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jLTMzNi1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmM9MjUwPXN0YXRpYyBpbnQgbGFuOTY2eF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmMtMjU4LVxcbmRyaXZlcnMvY2xrL2Nsay1sYW45NjZ4LmM6MjU5OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jLTI2MC1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9jaG5hZ2FyLmM9MjM4PXN0YXRpYyBpbnQgbG9jaG5hZ2FyX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1NC1cXHRwcml2LVxcdTAwM2VyZWdtYXAgPSBkZXZfZ2V0X3JlZ21hcChkZXYtXFx1MDAzZXBhcmVudCwgTlVMTCk7XFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jOjI1NTpcXHRjb25mID0gKHN0cnVjdCBsb2NobmFnYXJfY29uZmlnICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jLTI1Ni1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYz0zNTU9c3RhdGljIGludCBsb29uZ3NvbjJfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmMtMzYzLVxcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYzozNjQ6XFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb29uZ3NvbjIuYy0zNjUtXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jPTIzMD1zdGF0aWMgaW50IHBhbG1hc19jbGtzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM3LVxcbmRyaXZlcnMvY2xrL2Nsay1wYWxtYXMuYzoyMzg6XFx0bWF0Y2hfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmMtMjM5LVxcdGlmICghbWF0Y2hfZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jPTc0Mj1zdGF0aWMgaW50IGRhOHh4X2NmZ2NoaXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2RhdmluY2kvZGE4eHgtY2ZnY2hpcC5jLTc0OC1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYzo3NDk6XFx0Y2xrX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYy03NTAtXFx0aWYgKGNsa19pbml0KSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jPTg2MT1zdGF0aWMgaW50IGRhdmluY2lfcGxsX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2Ny1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jOjg2ODpcXHRwbGxfaW5pdCA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2RhdmluY2kvcGxsLmMtODY5LVxcdGlmICghcGxsX2luaXQgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlaWRfZW50cnkpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jPTUxMz1zdGF0aWMgaW50IGRhdmluY2lfcHNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jLTUxOS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jOjUyMDpcXHRpbml0X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BzYy5jLTUyMS1cXHRpZiAoIWluaXRfZGF0YSBcXHUwMDI2XFx1MDAyNiBwZGV2LVxcdTAwM2VpZF9lbnRyeSlcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jPTc4ND1zdGF0aWMgaW50IGhpMzU1OWF2MTAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM1NTlhLmMtNzkxLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jOjc5MjpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jLTc5My1cXHRpZiAoIWNyZy1cXHUwMDNlZnVuY3MpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jPTYxMD1zdGF0aWMgaW50IGhpMzY2MF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmMtNjE1LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmM6NjE2OlxcdGluaXRfZnVuYyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjYwLmMtNjE3LVxcdGlmICghaW5pdF9mdW5jKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYz05ODk9c3RhdGljIGludCBoaTM2NzBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5NC1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jOjk5NTpcXHRpbml0X2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY3MC5jLTk5Ni1cXHRpZiAoIWluaXRfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYz0yNjE9c3RhdGljIGludCBoaTM1MTZjdjMwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYy0yNjgtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM1MTZjdjMwMC5jOjI2OTpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYy0yNzAtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jPTM0ND1zdGF0aWMgaW50IGhpMzc5OGN2MjAwX2NyZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jLTM1MS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzc5OGN2MjAwLmM6MzUyOlxcdGNyZy1cXHUwMDNlZnVuY3MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jLTM1My1cXHRpZiAoIWNyZy1cXHUwMDNlZnVuY3MpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmM9MzMyPXN0YXRpYyBpbnQgaW14OF9hY21fY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUxLVxcdHByaXYtXFx1MDAzZXJlZyA9IGJhc2U7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jOjM1MjpcXHRwcml2LVxcdTAwM2Vzb2NfZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYy0zNTMtXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgcHJpdik7XFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jPTI4Nj1zdGF0aWMgaW50IGlteDhxeHBfbHBjZ19jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmMtMzAzLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC1scGNnLmM6MzA0OlxcdHNzX2xwY2cgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jLTMwNS1cXHRpZiAoIXNzX2xwY2cpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYz0xMzA9c3RhdGljIGludCBpbXg4cXhwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmMtMTM1LVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jOjEzNjpcXHRyc3JjX3RhYmxlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jLTEzNy1cXHRyZXQgPSBpbXhfY2xrX3NjdV9pbml0KGNjbV9ub2RlLCByc3JjX3RhYmxlKTtcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jPTUzNj1zdGF0aWMgaW50IGlteDh1bHBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYy01MzktXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4dWxwLmM6NTQwOlxcdHByb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jLTU0MS1cXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYz0yNzQ9c3RhdGljIGludCBpbXg5M19jbG9ja3NfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTMuYy0yODEtXFx0aW50IGksIHJldDtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM6MjgyOlxcdGNvbnN0IHVuc2lnbmVkIGxvbmcgcGxhdCA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmMtMjgzLVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM9MzUwPXN0YXRpYyBpbnQgaW14OTVfYmNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jLTM4MS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYzozODI6XFx0YmMtXFx1MDAzZXBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmMtMzgzLVxcdGlmICghYmMtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jPTExND1zdGF0aWMgaW50IHRpX3N5c2Nvbl9nYXRlX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyMy1cXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmM6MTI0OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9rZXlzdG9uZS9zeXNjb24tY2xrLmMtMTI1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYz0xMDA3PXN0YXRpYyBpbnQgY2xrX210MjcwMV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jLTEwMTEtXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jOjEwMTI6XFx0Y2xrX2luaXQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10MjcwMS5jLTEwMTMtXFx0aWYgKCFjbGtfaW5pdClcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYz04NDM9c3RhdGljIGludCBjbGtfbXQ2NzY1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ3LVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYzo4NDg6XFx0Y2xrX3Byb2JlID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NjUuYy04NDktXFx0aWYgKCFjbGtfcHJvYmUpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM9MTI3Nz1zdGF0aWMgaW50IGNsa19tdDY3NzlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NzkuYy0xMjgxLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3NzkuYzoxMjgyOlxcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4My1cXHRpZiAoIWNsa19wcm9iZSlcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYz02Nzk9c3RhdGljIGludCBjbGtfbXQ2Nzk3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmMtNjgzLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDY3OTcuYzo2ODQ6XFx0Y2xrX2luaXQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjU0LjU4OTI1NTgxMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTAyMzExNDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFJlYXNvbmluZyBvbiBEZXZpY2UgTWF0Y2hpbmcqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBzaG91bGQgaGFuZGxlIGRldmljZSBtYXRjaGluZyBkdXJpbmcgc3lzZnMgaW5zdGFudGlhdGlvbi4gVGhlIGxvZ2ljLCBhcyBJIHJlY2FsbCwgaGluZ2VzIG9uIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCBzZXR0aW5nIGBkZXYtXHUwMDNlZHJpdmVyX2RhdGFgLCByaWdodD8gSG1tLCBubywgdGhhdCdzIG5vdCBxdWl0ZSBpdC4gSXQgc2VlbXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgYWN0dWFsbHkgY2FsbHMgYGZ3bm9kZV9jYWxsX3B0cl9vcChkZXZfZndub2RlKGRldiksIGRldmljZV9nZXRfbWF0Y2hfZGF0YSwgZGV2KWAuXG5cbk5vdywgdGhlIGNydWNpYWwgYml0IGZvciBzeXNmcyBpcyB0aGUgZmFsbGJhY2suIElmIHdlICpkb24ndCogaGF2ZSBhbiBmd25vZGUg4oCTIHdoaWNoIGlzIGV4YWN0bHkgdGhlIGNhc2Ugd2hlbiBhIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcyDigJMgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBtdXN0IGZhbGwgYmFjayB0byB1c2luZyB0aGUgbWF0Y2ggZGF0YSBwcm92aWRlZCBieSB0aGUgYGRldmljZV9kcml2ZXJgLiBUaGF0J3MgdGhlIGtleSwgdGhhdCdzIHdoZXJlIHRoZSByZWxldmFudCBkYXRhIGNvbWVzIGZyb20uXG5cblRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgcGF0aCwgbGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBmYWxsYmFjayBtZWNoYW5pc20gaXMgYWNjdXJhdGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2MDEyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIyOjU5LjA5MTU2OTUzNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM5NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0NyxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0NzpcXHRFWFBPUlRfU1lNQk9MKGZ3bm9kZV9ncmFwaF9wYXJzZV9lbmRwb2ludCk7XFxuMTM0ODpcXHRcXG4xMzQ5OlxcdGNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMTM1MDpcXHR7XFxuMTM1MTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xcbjEzNTI6XFx0fVxcbjEzNTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9tYXRjaF9kYXRhKTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4xMzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmNvbl9pZCwgdm9pZCAqZGF0YSxcXG4xMzU3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxcbjEzNTg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dm9pZCAqKm1hdGNoZXMsXFxuMTM1OTpcXHRcXHRcXHRcXHRcXHRcXHRcXHR1bnNpZ25lZCBpbnQgbWF0Y2hlc19sZW4pXFxuMTM2MDpcXHR7XFxuMTM2MTpcXHRcXHRzdHJ1Y3QgZndub2RlX2hhbmRsZSAqbm9kZTtcXG4xMzYyOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICplcDtcXG4xMzYzOlxcdFxcdHVuc2lnbmVkIGludCBjb3VudCA9IDA7XFxuMTM2NDpcXHRcXHR2b2lkICpyZXQ7XFxuMTM2NTpcXHRcXG4xMzY2OlxcdFxcdGZ3bm9kZV9ncmFwaF9mb3JfZWFjaF9lbmRwb2ludChmd25vZGUsIGVwKSB7XFxuMTM2NzpcXHRcXHRcXHRpZiAobWF0Y2hlcyBcXHUwMDI2XFx1MDAyNiBjb3VudCBcXHUwMDNlPSBtYXRjaGVzX2xlbikge1xcbjEzNjg6XFx0XFx0XFx0XFx0Zndub2RlX2hhbmRsZV9wdXQoZXApO1xcbjEzNjk6XFx0XFx0XFx0XFx0YnJlYWs7XFxuMTM3MDpcXHRcXHRcXHR9XFxuMTM3MTpcXHRcXG4xMzcyOlxcdFxcdFxcdG5vZGUgPSBmd25vZGVfZ3JhcGhfZ2V0X3JlbW90ZV9wb3J0X3BhcmVudChlcCk7XFxuMTM3MzpcXHRcXHRcXHRpZiAoIWZ3bm9kZV9kZXZpY2VfaXNfYXZhaWxhYmxlKG5vZGUpKSB7XFxuMTM3NDpcXHRcXHRcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChub2RlKTtcXG4xMzc1OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbjEzNzY6XFx0XFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMjo1OS4wOTE2NzUwMTVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgwNjYwMzg3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgSTJDIFByb2JlIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGRldmljZSBtYXRjaGluZyB3b3JrcyB3aXRoIEkyQyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgY29uc2lkZXJpbmcgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGZ1bmN0aW9uIGFuZCB0aGUgcG90ZW50aWFsIG51bGwgcmV0dXJuIHdoZW4gbm8gRlcgbm9kZSBpcyBwcmVzZW50LiBSaWdodCBvZmYgdGhlIGJhdCwgSSByZWFsaXplIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmVsaWVzIG9uIGBmd25vZGVfY2FsbF9wdHJfb3BgLCB3aGljaCBtYWtlcyBzZW5zZS4gSWYgdGhlcmUncyBubyBGaXJtd2FyZSBOb2RlLCBhIE5VTEwgcmV0dXJuIGlzIHRoZSBhbnRpY2lwYXRlZCBvdXRjb21lLiBIb3dldmVyLCB0aGUgcHV6emxlIGlzbid0IGNvbXBsZXRlIHlldCwgYmVjYXVzZSBJIGhhdmUgYSBodW5jaC4uLiBEb2VzIHRoZSBgaTJjX2RldmljZV9wcm9iZWAgZnVuY3Rpb24gZm91bmQgaW4gYGRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY2AgbWVzcyB3aXRoIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBpcyBoYW5kbGVkLCBwb3RlbnRpYWxseSBzZXR0aW5nIHNvbWV0aGluZyB1cD8gSXQncyB3b3J0aCBpbnZlc3RpZ2F0aW5nIGZ1cnRoZXIuIFNvLCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkZWx2ZSBpbnRvIGhvdyBgaTJjX2dldF9tYXRjaF9kYXRhYCBhY3R1YWxseSBmdW5jdGlvbnMgd2l0aGluIHRoYXQgY29udGV4dCBhbmQgc2VlIGhvdyBpdCBpbnRlcmFjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTMwLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowMi44OTgyODIxNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTA4MjY3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaTJjX2dldF9tYXRjaF9kYXRhXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTMwMyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYz02NTc9c3RhdGljIGludCBodDE2azMzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaHQxNmszMy5jLTY3My1cXHRwcml2LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYzo2NzQ6XFx0cHJpdi1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2h0MTZrMzMuYy02NzUtXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jPTUyNz1zdGF0aWMgaW50IGkyY19udXZvdG9uX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jLTU0OS1cXG5kcml2ZXJzL2NoYXIvdHBtL3RwbV9pMmNfbnV2b3Rvbi5jOjU1MDpcXHRpZiAoaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCkpXFxuZHJpdmVycy9jaGFyL3RwbS90cG1faTJjX251dm90b24uYy01NTEtXFx0XFx0Y2hpcC1cXHUwMDNlZmxhZ3MgfD0gVFBNX0NISVBfRkxBR19UUE0yO1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWNkY2U5MjUuYz02MTc9c3RhdGljIGludCBjZGNlOTI1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstY2RjZTkyNS5jLTY1MC1cXHRkYXRhLVxcdTAwM2VpMmNfY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmM6NjUxOlxcdGRhdGEtXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay1jZGNlOTI1LmMtNjUyLVxcdGNvbmZpZy5tYXhfcmVnaXN0ZXIgPSBDRENFOTI1X09GRlNFVF9QTEwgK1xcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jPTI4Mj1zdGF0aWMgaW50IHJzOV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jLTI5NS1cXHRyczktXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2Nsay9jbGstcmVuZXNhcy1wY2llLmM6Mjk2OlxcdHJzOS1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXJlbmVzYXMtcGNpZS5jLTI5Ny1cXHRpZiAoIXJzOS1cXHUwMDNlY2hpcF9pbmZvKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYz0yODE9c3RhdGljIGludCBzaTUyMXh4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODIte1xcbmRyaXZlcnMvY2xrL2Nsay1zaTUyMXh4LmM6MjgzOlxcdGNvbnN0IHUxNiBjaGlwX2luZm8gPSAodTE2KSh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTIxeHguYy0yODQtXFx0Y29uc3Qgc3RydWN0IGNsa19wYXJlbnRfZGF0YSBjbGtfcGFyZW50X2RhdGEgPSB7IC5pbmRleCA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1zaTUzNTEuYz0xNDM2PXN0YXRpYyBpbnQgc2k1MzUxX2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jLTE0NDUtXFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jOjE0NDY6XFx0dmFyaWFudCA9IChlbnVtIHNpNTM1MV92YXJpYW50KSh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTM1MS5jLTE0NDctXFx0cmV0ID0gc2k1MzUxX2R0X3BhcnNlKGNsaWVudCwgdmFyaWFudCk7XFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYz00MzQ9c3RhdGljIGludCBzaTU0NF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmMtNDQ4LVxcdGRhdGEtXFx1MDAzZWkyY19jbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTQ0LmM6NDQ5OlxcdGRhdGEtXFx1MDAzZW1heF9mcmVxID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2Nsay9jbGstc2k1NDQuYy00NTAtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstc2k1NzAuYz00MTI9c3RhdGljIGludCBzaTU3MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDI5LVxcbmRyaXZlcnMvY2xrL2Nsay1zaTU3MC5jOjQzMDpcXHRkYXRhLVxcdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXNpNTcwLmMtNDMxLVxcdGlmIChkYXRhLVxcdTAwM2VpbmZvLVxcdTAwM2VoYXNfdGVtcGVyYXR1cmVfc3RhYmlsaXR5KSB7XFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazMuYz05OTc9c3RhdGljIGludCB2YzNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrMy5jLTEwNDgtXFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmM6MTA0OTpcXHRkYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2szLmMtMTA1MC1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jPTk1MT1zdGF0aWMgaW50IHZjNV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s1LmMtOTY1LVxcdHZjNS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jOjk2NjpcXHR2YzUtXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNS5jLTk2Ny1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jPTExMDA9c3RhdGljIGludCB2YzdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTYtXFx0dmM3LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmM6MTExNzpcXHR2YzctXFx1MDAzZWNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvY2xrL2Nsay12ZXJzYWNsb2NrNy5jLTExMTgtXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmM9MTY0PXN0YXRpYyBpbnQgYXRtZWxfc2hhMjA0YV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9jcnlwdG8vYXRtZWwtc2hhMjA0YS5jLTE4MC1cXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmM6MTgxOlxcdHF1YWxpdHkgPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2NyeXB0by9hdG1lbC1zaGEyMDRhLmMtMTgyLVxcdGlmIChxdWFsaXR5KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jPTExOTI9c3RhdGljIGludCBwY2E5NTN4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2E5NTN4LmMtMTIyOC1cXHRjaGlwLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9ncGlvL2dwaW8tcGNhOTUzeC5jOjEyMjk6XFx0Y2hpcC1cXHUwMDNlZHJpdmVyX2RhdGEgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjYTk1M3guYy0xMjMwLVxcdGlmICghY2hpcC1cXHUwMDNlZHJpdmVyX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmM9Mjc3PXN0YXRpYyBpbnQgcGNmODU3eF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9ncGlvL2dwaW8tcGNmODU3eC5jLTMwMC1cXHRncGlvLVxcdTAwM2VjaGlwLmRpcmVjdGlvbl9vdXRwdXRcXHQ9IHBjZjg1N3hfb3V0cHV0O1xcbmRyaXZlcnMvZ3Bpby9ncGlvLXBjZjg1N3guYzozMDE6XFx0Z3Bpby1cXHUwMDNlY2hpcC5uZ3Bpb1xcdFxcdD0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2dwaW8vZ3Bpby1wY2Y4NTd4LmMtMzAyLVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmM9MTIyOT1zdGF0aWMgaW50IGFkdjc1MTFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYWR2NzUxMS9hZHY3NTExX2Rydi5jLTEyNDctXFx0YWR2NzUxMS1cXHUwMDNlc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7XFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmM6MTI0ODpcXHRhZHY3NTExLVxcdTAwM2VpbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGkyYyk7XFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hZHY3NTExL2Fkdjc1MTFfZHJ2LmMtMTI0OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jPTE0ND1zdGF0aWMgaW50IHdzX2JyaWRnZV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2JyaWRnZS93YXZlc2hhcmUtZHNpLmMtMTc5LVxcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jOjE4MDpcXHR3cy1cXHUwMDNlYnJpZGdlLnR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShpMmMpO1xcbmRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uvd2F2ZXNoYXJlLWRzaS5jLTE4MS1cXHR3cy1cXHUwMDNlYnJpZGdlLm9mX25vZGUgPSBkZXYtXFx1MDAzZW9mX25vZGU7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2FkNzQxOC5jPTIzMz1zdGF0aWMgaW50IGFkNzQxOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9hZDc0MTguYy0yNTItXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vYWQ3NDE4LmM6MjUzOlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vYWQ3NDE4LmMtMjU0LVxcbi0tXFxuZHJpdmVycy9od21vbi9hZG0xMDMxLmM9MTAyND1zdGF0aWMgaW50IGFkbTEwMzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRtMTAzMS5jLTEwMzUtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vYWRtMTAzMS5jOjEwMzY6XFx0ZGF0YS1cXHUwMDNlY2hpcF90eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2FkbTEwMzEuYy0xMDM3LVxcdG11dGV4X2luaXQoXFx1MDAyNmRhdGEtXFx1MDAzZXVwZGF0ZV9sb2NrKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jPTEwMj1zdGF0aWMgaW50IGFkczc4MjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWRzNzgyOC5jLTEzOS1cXG5kcml2ZXJzL2h3bW9uL2Fkczc4MjguYzoxNDA6XFx0Y2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9hZHM3ODI4LmMtMTQxLVxcbi0tXFxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmM9MTgwNT1zdGF0aWMgaW50IGFkdDc0NzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vYWR0NzQ3NS5jLTE4MjctXFxuZHJpdmVycy9od21vbi9hZHQ3NDc1LmM6MTgyODpcXHRjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2FkdDc0NzUuYy0xODI5LVxcbi0tXFxuZHJpdmVycy9od21vbi9haHQxMC5jPTMzMj1zdGF0aWMgaW50IGFodDEwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9od21vbi9haHQxMC5jLTMzMy17XFxuZHJpdmVycy9od21vbi9haHQxMC5jOjMzNDpcXHRlbnVtIGFodDEwX3ZhcmlhbnQgdmFyaWFudCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9haHQxMC5jLTMzNS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXZpY2UgPSBcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYz0yNDY0PXN0YXRpYyBpbnQgZG1lMTczN19pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZG1lMTczNy5jLTI0NzQtXFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgZGF0YSk7XFxuZHJpdmVycy9od21vbi9kbWUxNzM3LmM6MjQ3NTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2RtZTE3MzcuYy0yNDc2LVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG4tLVxcbmRyaXZlcnMvaHdtb24vZHMxNjIxLmM9MzQ1PXN0YXRpYyBpbnQgZHMxNjIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jLTM1Ni1cXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jOjM1NzpcXHRkYXRhLVxcdTAwM2VraW5kID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2RzMTYyMS5jLTM1OC1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYz04MjQ9c3RhdGljIGludCBlbWMxODEyX2NoaXBfaWRlbnRpZnkoc3RydWN0IGVtYzE4MTJfZGF0YSAqZGF0YSwgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZW1jMTgxMi5jLTg1Ni1cXHRcXHQgKi9cXG5kcml2ZXJzL2h3bW9uL2VtYzE4MTIuYzo4NTc6XFx0XFx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vZW1jMTgxMi5jLTg1OC1cXHRcXHRpZiAoIWNoaXApXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2Y3NTM3NXMuYz03OTE9c3RhdGljIGludCBmNzUzNzVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwNy1cXHRtdXRleF9pbml0KFxcdTAwMjZkYXRhLVxcdTAwM2V1cGRhdGVfbG9jayk7XFxuZHJpdmVycy9od21vbi9mNzUzNzVzLmM6ODA4OlxcdGRhdGEtXFx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vZjc1Mzc1cy5jLTgwOS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vZnNjaG1kLmM9MTA4Mj1zdGF0aWMgaW50IGZzY2htZF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9mc2NobWQuYy0xMDg4LVxcdGludCBpLCBlcnI7XFxuZHJpdmVycy9od21vbi9mc2NobWQuYzoxMDg5OlxcdGVudW0gY2hpcHMga2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9mc2NobWQuYy0xMDkwLVxcbi0tXFxuZHJpdmVycy9od21vbi9pbmEyMzguYz04ODM9c3RhdGljIGludCBpbmEyMzhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkxLVxcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmM6ODkyOlxcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vaW5hMjM4LmMtODkzLVxcbi0tXFxuZHJpdmVycy9od21vbi9pbmEyeHguYz05NjE9c3RhdGljIGludCBpbmEyeHhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmMtOTY4LVxcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmM6OTY5OlxcdGNoaXAgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vaW5hMnh4LmMtOTcwLVxcbi0tXFxuZHJpdmVycy9od21vbi9sbTYzLmM9MTI0NT1zdGF0aWMgaW50IGxtNjNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG02My5jLTEyNTktXFx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xcbmRyaXZlcnMvaHdtb24vbG02My5jOjEyNjA6XFx0ZGF0YS1cXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9sbTYzLmMtMTI2MS1cXHRpZiAoZGF0YS1cXHUwMDNla2luZCA9PSBsbTY0KVxcbi0tXFxuZHJpdmVycy9od21vbi9sbTc1LmM9ODE4PXN0YXRpYyBpbnQgbG03NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG03NS5jLTgzMC1cXG5kcml2ZXJzL2h3bW9uL2xtNzUuYzo4MzE6XFx0cmV0dXJuIGxtNzVfZ2VuZXJpY19wcm9iZShkZXYsIGNsaWVudC1cXHUwMDNlbmFtZSwgKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSxcXG5kcml2ZXJzL2h3bW9uL2xtNzUuYy04MzItXFx0XFx0XFx0XFx0ICBjbGllbnQtXFx1MDAzZWlycSwgcmVnbWFwKTtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG03OC5jPTYzMD1zdGF0aWMgaW50IGxtNzhfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtNzguYy02NDAtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vbG03OC5jOjY0MTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2xtNzguYy02NDItXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODMuYz00MjA9c3RhdGljIGludCBsbTgzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODMuYy00MzMtXFxuZHJpdmVycy9od21vbi9sbTgzLmM6NDM0OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG04My5jLTQzNS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbG04NS5jPTE1NDc9c3RhdGljIGludCBsbTg1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtODUuYy0xNTU4LVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2h3bW9uL2xtODUuYzoxNTU5OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG04NS5jLTE1NjAtXFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGF0YS1cXHUwMDNldXBkYXRlX2xvY2spO1xcbi0tXFxuZHJpdmVycy9od21vbi9sbTkwLmM9Mjc2OD1zdGF0aWMgaW50IGxtOTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05MC5jLTI3OTAtXFx0LyogU2V0IHRoZSBkZXZpY2UgdHlwZSAqL1xcbmRyaXZlcnMvaHdtb24vbG05MC5jOjI3OTE6XFx0ZGF0YS1cXHUwMDNla2luZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9sbTkwLmMtMjc5Mi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05Mi5jPTM3ND1zdGF0aWMgaW50IGxtOTJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbG05Mi5jLTM5MS1cXHRkYXRhLVxcdTAwM2VyZWdtYXAgPSByZWdtYXA7XFxuZHJpdmVycy9od21vbi9sbTkyLmM6MzkyOlxcdGRhdGEtXFx1MDAzZXJlc29sdXRpb24gPSAodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL2xtOTIuYy0zOTMtXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYz01MDM9c3RhdGljIGludCBsbTk1MjM0X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL2xtOTUyMzQuYy01MTQtXFxuZHJpdmVycy9od21vbi9sbTk1MjM0LmM6NTE1OlxcdGRhdGEtXFx1MDAzZXR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbG05NTIzNC5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTYwNjUuYz01MDU9c3RhdGljIGludCBtYXgxNjA2NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNC1cXHRpbnQgZ3JvdXBzID0gMDtcXG5kcml2ZXJzL2h3bW9uL21heDE2MDY1LmM6NTE1OlxcdGVudW0gY2hpcHMgY2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXgxNjA2NS5jLTUxNi1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jPTI2OT1zdGF0aWMgaW50IG1heDE2NjhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4Ny1cXG5kcml2ZXJzL2h3bW9uL21heDE2NjguYzoyODg6XFx0ZGF0YS1cXHUwMDNlY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWF4MTY2OC5jLTI4OS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jPTc2Mz1zdGF0aWMgaW50IG1heDY2NTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWF4NjY1MC5jLTc3OC1cXG5kcml2ZXJzL2h3bW9uL21heDY2NTAuYzo3Nzk6XFx0ZGF0YS1cXHUwMDNlbnJfZmFucyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXg2NjUwLmMtNzgwLVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmM9NTM3PXN0YXRpYyBpbnQgbWF4NjY5N19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTUzLVxcdGRhdGEtXFx1MDAzZXJlZ21hcCA9IHJlZ21hcDtcXG5kcml2ZXJzL2h3bW9uL21heDY2OTcuYzo1NTQ6XFx0ZGF0YS1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9tYXg2Njk3LmMtNTU1LVxcdGRhdGEtXFx1MDAzZWNoaXAgPSBcXHUwMDI2bWF4NjY5N19jaGlwX2RhdGFbZGF0YS1cXHUwMDNldHlwZV07XFxuLS1cXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYz0xMTk9c3RhdGljIGludCBtY3AzMDIxX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL21jcDMwMjEuYy0xNTAtXFxuZHJpdmVycy9od21vbi9tY3AzMDIxLmM6MTUxOlxcdHR5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWNwMzAyMS5jLTE1Mi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jPTkxMT1zdGF0aWMgaW50IG1jcDk5ODJfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jLTkzMC1cXG5kcml2ZXJzL2h3bW9uL21jcDk5ODIuYzo5MzE6XFx0Y2hpcCA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vbWNwOTk4Mi5jLTkzMi1cXHRpZiAoIWNoaXApXFxuLS1cXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmM9MTU1PXN0YXRpYyBpbnQgbmN0Njc3NV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYy0xNjMtXFxuZHJpdmVycy9od21vbi9uY3Q2Nzc1LWkyYy5jOjE2NDpcXHRkYXRhLVxcdTAwM2VraW5kID0gKGVudW0ga2luZHMpKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL25jdDY3NzUtaTJjLmMtMTY1LVxcdGRhdGEtXFx1MDAzZXJlYWRfb25seSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2FkcDEwNTAuYz03OT1zdGF0aWMgaW50IGFkcDEwNTBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvYWRwMTA1MC5jLTgyLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvYWRwMTA1MC5jOjgzOlxcdGluZm8gPSAoc3RydWN0IHBtYnVzX2RyaXZlcl9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9hZHAxMDUwLmMtODQtXFx0aWYgKCFpbmZvKVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM9OTE9c3RhdGljIGludCBwZmVfcG1idXNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYy05Mi17XFxuZHJpdmVycy9od21vbi9wbWJ1cy9iZWwtcGZlLmM6OTM6XFx0aW50IG1vZGVsID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2JlbC1wZmUuYy05NC1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvaWJtLWNmZnBzLmM9NDgyPXN0YXRpYyBpbnQgaWJtX2NmZnBzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2libS1jZmZwcy5jLTQ4NC1cXHRpbnQgaSwgcmM7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYzo0ODU6XFx0ZW51bSB2ZXJzaW9ucyB2cyA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9pYm0tY2ZmcHMuYy00ODYtXFx0c3RydWN0IGRlbnRyeSAqZGVidWdmcztcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYz0zMjU9c3RhdGljIGludCBpc2w2ODEzN19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9pc2w2ODEzNy5jLTM0Ny1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL2lzbDY4MTM3LmM6MzQ4OlxcdHN3aXRjaCAoKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KSkge1xcbmRyaXZlcnMvaHdtb24vcG1idXMvaXNsNjgxMzcuYy0zNDktXFx0Y2FzZSByYWFfZG1wdnIxXzJyYWlsOlxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmM9NDY1PXN0YXRpYyBpbnQgbG0yNTA2Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9sbTI1MDY2LmMtNDg1LVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jOjQ4NjpcXHRkYXRhLVxcdTAwM2VpZCA9IChlbnVtIGNoaXBzKSh1bnNpZ25lZCBsb25nKWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbG0yNTA2Ni5jLTQ4Ny1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MjA3MzAuYz02NjE9c3RhdGljIGludCBtYXgyMDczMF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgyMDczMC5jLTcxNy1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDIwNzMwLmM6NzE4OlxcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MjA3MzAuYy03MTktXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21heDM0NDQwLmM9NzM3PXN0YXRpYyBpbnQgbWF4MzQ0NDBfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbWF4MzQ0NDAuYy03NDUtXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jOjc0NjpcXHRkYXRhLVxcdTAwM2VpZCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tYXgzNDQ0MC5jLTc0Ny1cXHRkYXRhLVxcdTAwM2VpbmZvID0gbWF4MzQ0NDBfaW5mb1tkYXRhLVxcdTAwM2VpZF07XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jPTM5NT1zdGF0aWMgaW50IG1wMjg1Nl9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYy00MDYtXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI4NTYuYzo0MDc6XFx0Y2hpcF9pZCA9IChrZXJuZWxfdWxvbmdfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjg1Ni5jLTQwOC1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmM9OTk2PXN0YXRpYyBpbnQgbXAyOTc1X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL21wMjk3NS5jLTEwMDItXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcDI5NzUuYzoxMDAzOlxcdGRkaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvbXAyOTc1LmMtMTAwNC1cXHRpZiAoIWRkaW5mbylcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jPTEzMD1zdGF0aWMgaW50IG1wcTg3ODVfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvbXBxODc4NS5jLTE0NC1cXHRlbHNlXFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmM6MTQ1OlxcdFxcdGNoaXBfaWQgPSAoa2VybmVsX3Vsb25nX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9tcHE4Nzg1LmMtMTQ2LVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jPTE2ND1zdGF0aWMgaW50IHBtYnVzX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3BtYnVzLmMtMTc0LVxcbmRyaXZlcnMvaHdtb24vcG1idXMvcG1idXMuYzoxNzU6XFx0ZGV2aWNlX2luZm8gPSAoc3RydWN0IHBtYnVzX2RldmljZV9pbmZvICopaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wbWJ1cy9wbWJ1cy5jLTE3Ni1cXHRpZiAoZGV2aWNlX2luZm8tXFx1MDAzZWZsYWdzKSB7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYz0yODE9c3RhdGljIGludCBxNTRzajEwOGEyX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3E1NHNqMTA4YTIuYy0yOTctXFxuZHJpdmVycy9od21vbi9wbWJ1cy9xNTRzajEwOGEyLmM6Mjk4OlxcdGNoaXBfaWQgPSAoZW51bSBjaGlwcykodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvcTU0c2oxMDhhMi5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvaHdtb24vcG1idXMvdHBzNTM2NzkuYz0yNTA9c3RhdGljIGludCB0cHM1MzY3OV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9wbWJ1cy90cHM1MzY3OS5jLTI1NS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3RwczUzNjc5LmM6MjU2OlxcdGNoaXBfaWQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMvdHBzNTM2NzkuYy0yNTctXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jPTc2PXN0YXRpYyBpbnQgeGRwNzIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3BtYnVzL3hkcDcyMC5jLTg2LVxcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmM6ODc6XFx0ZGF0YS1cXHUwMDNlaWQgPSAoZW51bSB4ZHA3MjBfY2hpcF9pZCkodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vcG1idXMveGRwNzIwLmMtODgtXFx0ZGF0YS1cXHUwMDNlaW5mbyA9IHhkcDcyMF9pbmZvO1xcbi0tXFxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jPTI3ND1zdGF0aWMgaW50IHBvd3IxMjIwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3Bvd3IxMjIwLmMtMjg2LVxcbmRyaXZlcnMvaHdtb24vcG93cjEyMjAuYzoyODc6XFx0Y2hpcCA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi9wb3dyMTIyMC5jLTI4OC1cXHRzd2l0Y2ggKGNoaXApIHtcXG4tLVxcbmRyaXZlcnMvaHdtb24vc2h0M3guYz04NzU9c3RhdGljIGludCBzaHQzeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi9zaHQzeC5jLTkwMy1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9od21vbi9zaHQzeC5jOjkwNDpcXHRkYXRhLVxcdTAwM2VjaGlwX2lkID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3NodDN4LmMtOTA1LVxcdGNyYzhfcG9wdWxhdGVfbXNiKHNodDN4X2NyYzhfdGFibGUsIFNIVDNYX0NSQzhfUE9MWU5PTUlBTCk7XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3NodGMxLmM9MTg5PXN0YXRpYyBpbnQgc2h0YzFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vc2h0YzEuYy0xOTUtXFx0c3RydWN0IGRldmljZSAqaHdtb25fZGV2O1xcbmRyaXZlcnMvaHdtb24vc2h0YzEuYzoxOTY6XFx0ZW51bSBzaHRjeF9jaGlwcyBjaGlwID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3NodGMxLmMtMTk3LVxcdHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcCA9IGNsaWVudC1cXHUwMDNlYWRhcHRlcjtcXG4tLVxcbmRyaXZlcnMvaHdtb24vdGhtYzUwLmM9MzgwPXN0YXRpYyBpbnQgdGhtYzUwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RobWM1MC5jLTM5MS1cXHRkYXRhLVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuZHJpdmVycy9od21vbi90aG1jNTAuYzozOTI6XFx0ZGF0YS1cXHUwMDNldHlwZSA9ICh1aW50cHRyX3QpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi90aG1jNTAuYy0zOTMtXFx0bXV0ZXhfaW5pdChcXHUwMDI2ZGF0YS1cXHUwMDNldXBkYXRlX2xvY2spO1xcbi0tXFxuZHJpdmVycy9od21vbi90bXAxMDguYz00OTk9c3RhdGljIGludCB0bXAxMDhfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmMtNTEyLVxcbmRyaXZlcnMvaHdtb24vdG1wMTA4LmM6NTEzOlxcdHJldHVybiB0bXAxMDhfY29tbW9uX3Byb2JlKGRldiwgcmVnbWFwLCBjbGllbnQtXFx1MDAzZW5hbWUsIGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpKTtcXG5kcml2ZXJzL2h3bW9uL3RtcDEwOC5jLTUxNC19XFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RtcDQwMS5jPTY2NT1zdGF0aWMgaW50IHRtcDQwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi90bXA0MDEuYy02ODAtXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbmRyaXZlcnMvaHdtb24vdG1wNDAxLmM6NjgxOlxcdGRhdGEtXFx1MDAzZWtpbmQgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdG1wNDAxLmMtNjgyLVxcbi0tXFxuZHJpdmVycy9od21vbi90bXA0MjEuYz00MjU9c3RhdGljIGludCB0bXA0MjFfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNDIxLmMtNDM1LVxcbmRyaXZlcnMvaHdtb24vdG1wNDIxLmM6NDM2OlxcdGRhdGEtXFx1MDAzZWNoYW5uZWxzID0gKHVuc2lnbmVkIGxvbmcpaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9od21vbi90bXA0MjEuYy00MzctXFx0ZGF0YS1cXHUwMDNlY2xpZW50ID0gY2xpZW50O1xcbi0tXFxuZHJpdmVycy9od21vbi90bXA0NjQuYz02Mzc9c3RhdGljIGludCB0bXA0NjRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNDY0LmMtNjUxLVxcbmRyaXZlcnMvaHdtb24vdG1wNDY0LmM6NjUyOlxcdGRhdGEtXFx1MDAzZWNoYW5uZWxzID0gKGludCkodW5zaWduZWQgbG9uZylpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3RtcDQ2NC5jLTY1My1cXG4tLVxcbmRyaXZlcnMvaHdtb24vdG1wNTEzLmM9NzEyPXN0YXRpYyBpbnQgdG1wNTF4X3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jLTcyMi1cXG5kcml2ZXJzL2h3bW9uL3RtcDUxMy5jOjcyMzpcXHRkYXRhLVxcdTAwM2VtYXhfY2hhbm5lbHMgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdG1wNTEzLmMtNzI0LVxcbi0tXFxuZHJpdmVycy9od21vbi93ODM3ODFkLmM9MTE5NT1zdGF0aWMgaW50IHc4Mzc4MWRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaHdtb24vdzgzNzgxZC5jLTEyMDgtXFxuZHJpdmVycy9od21vbi93ODM3ODFkLmM6MTIwOTpcXHRkYXRhLVxcdTAwM2V0eXBlID0gKHVpbnRwdHJfdClpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2h3bW9uL3c4Mzc4MWQuYy0xMjEwLVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG4tLVxcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmM9MjEzNz1zdGF0aWMgaW50IHc4Mzc5NV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9od21vbi93ODM3OTUuYy0yMTQ5LVxcdGkyY19zZXRfY2xpZW50ZGF0YShjbGllbnQsIGRhdGEpO1xcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmM6MjE1MDpcXHRkYXRhLVxcdTAwM2VjaGlwX3R5cGUgPSAodWludHB0cl90KWkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaHdtb24vdzgzNzk1LmMtMjE1MS1cXHRkYXRhLVxcdTAwM2ViYW5rID0gaTJjX3NtYnVzX3JlYWRfYnl0ZV9kYXRhKGNsaWVudCwgVzgzNzk1X1JFR19CQU5LU0VMKTtcXG4tLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYz0xMTk9RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTIwLVxcbmRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuYzoxMjE6Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jLTEyMi17XFxuLS1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTM3LX1cXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmM6MTM4OkVYUE9SVF9TWU1CT0woaTJjX2dldF9tYXRjaF9kYXRhKTtcXG5kcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmMtMTM5LVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYz02ND1zdGF0aWMgaW50IGFkeGwzMTNfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzEzX2kyYy5jLTczLVxcdCAqL1xcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzMTNfaTJjLmM6NzQ6XFx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDMxM19pMmMuYy03NS1cXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTVfaTJjLmM9MjI9c3RhdGljIGludCBhZHhsMzU1X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM1NV9pMmMuYy0yNy1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzU1X2kyYy5jOjI4OlxcdGNoaXBfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTVfaTJjLmMtMjktXFx0aWYgKCFjaGlwX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jPTIwPXN0YXRpYyBpbnQgYWR4bDM3Ml9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNzJfaTJjLmMtMjYtXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM3Ml9pMmMuYzoyNzpcXHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoY2xpZW50KTtcXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX2kyYy5jLTI4LVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM4MF9pMmMuYz0yMD1zdGF0aWMgaW50IGFkeGwzODBfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jLTI0LVxcbmRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzODBfaTJjLmM6MjU6XFx0Y2hpcF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYWR4bDM4MF9pMmMuYy0yNi1cXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2JtYTE4MC5jPTkxNz1zdGF0aWMgaW50IGJtYTE4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmMtOTMxLVxcdGRhdGEtXFx1MDAzZWNsaWVudCA9IGNsaWVudDtcXG5kcml2ZXJzL2lpby9hY2NlbC9ibWExODAuYzo5MzI6XFx0ZGF0YS1cXHUwMDNlcGFydF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvYm1hMTgwLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYz0xMDA9c3RhdGljIGludCBkYTI4MF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYy0xMTAtXFxuZHJpdmVycy9paW8vYWNjZWwvZGEyODAuYzoxMTE6XFx0bWF0Y2hfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL2RhMjgwLmMtMTEyLVxcdGlmICghbWF0Y2hfZGF0YSkge1xcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYz0xNT1zdGF0aWMgaW50IGt4MDIyYV9pMmNfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmkyYylcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL2tpb25peC1reDAyMmEtaTJjLmMtMjUtXFxuZHJpdmVycy9paW8vYWNjZWwva2lvbml4LWt4MDIyYS1pMmMuYzoyNjpcXHRjaGlwX2luZm8gPSBpMmNfZ2V0X21hdGNoX2RhdGEoaTJjKTtcXG5kcml2ZXJzL2lpby9hY2NlbC9raW9uaXgta3gwMjJhLWkyYy5jLTI3LVxcdGlmICghY2hpcF9pbmZvKVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmM9MTQzPXN0YXRpYyBpbnQgbWMzMjMwX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuLS1cXG5kcml2ZXJzL2lpby9hY2NlbC9tYzMyMzAuYy0xNDktXFxuZHJpdmVycy9paW8vYWNjZWwvbWMzMjMwLmM6MTUwOlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FjY2VsL21jMzIzMC5jLTE1MS1cXHRpZiAoY2hpcF9pbmZvID09IE5VTEwpIHtcXG4tLVxcbmRyaXZlcnMvaWlvL2FjY2VsL21tYTg0NTIuYz0xNTQ4PXN0YXRpYyBpbnQgbW1hODQ1Ml9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjItXFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jOjE1NjM6XFx0ZGF0YS1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWNjZWwvbW1hODQ1Mi5jLTE1NjQtXFx0aWYgKCFkYXRhLVxcdTAwM2VjaGlwX2luZm8pXFxuLS1cXG5kcml2ZXJzL2lpby9hZGMvbHRjMjMwOS5jPTIwMj1zdGF0aWMgaW50IGx0YzIzMDlfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmMtMjEzLVxcdGx0YzIzMDkgPSBpaW9fcHJpdihpbmRpb19kZXYpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmM6MjE0OlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyMzA5LmMtMjE1LVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL2x0YzI0OTcuYz05NT1zdGF0aWMgaW50IGx0YzI0OTdfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE1LVxcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmM6MTE2OlxcdGNoaXBfaW5mbyA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9sdGMyNDk3LmMtMTE3LVxcdHN0LVxcdTAwM2Vjb21tb25fZGRhdGEuY2hpcF9pbmZvID0gY2hpcF9pbmZvO1xcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYz0xNTU3PXN0YXRpYyBpbnQgbWF4MTM2M19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc1LVxcbmRyaXZlcnMvaWlvL2FkYy9tYXgxMzYzLmM6MTU3NjpcXHRzdC1cXHUwMDNlY2hpcF9pbmZvID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWRjL21heDEzNjMuYy0xNTc3LVxcdHN0LVxcdTAwM2VjbGllbnQgPSBjbGllbnQ7XFxuLS1cXG5kcml2ZXJzL2lpby9hZGMvbWF4MzQ0MDguYz0xOTM9c3RhdGljIGludCBtYXgzNDQwOF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmMtMjAyLVxcbmRyaXZlcnMvaWlvL2FkYy9tYXgzNDQwOC5jOjIwMzpcXHRtb2RlbF9kYXRhID0gaTJjX2dldF9tYXRjaF9kYXRhKGNsaWVudCk7XFxuZHJpdmVycy9paW8vYWRjL21heDM0NDA4LmMtMjA0LVxcdGlmICghbW9kZWxfZGF0YSlcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmM9NDA3PXN0YXRpYyBpbnQgbmN0NzIwMV9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KVxcbi0tXFxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYy00MTQtXFxuZHJpdmVycy9paW8vYWRjL25jdDcyMDEuYzo0MTU6XFx0bW9kZWxfZGF0YSA9IGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpO1xcbmRyaXZlcnMvaWlvL2FkYy9uY3Q3MjAxLmMtNDE2LVxcdGlmICghbW9kZWxfZGF0YSlcXG4tLVxcbmRyaXZlcnMvaWlvL2FkYy9wYWMxOTM0LmM9MTQ4MT1zdGF0aWMgaW50IHBhYzE5MzRfcHJvYmUoc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowNC41MDkxMTQ4OTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MTUyMTM5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czpcblxuKipEaXZpbmcgaW50byB0aGUgSTJDIENvcmU6IFVuZGVyc3RhbmRpbmcgYGkyY19nZXRfbWF0Y2hfZGF0YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgSTJDIGNvcmUgYW5kIGZpZ3VyZSBvdXQgd2hhdCdzIHJlYWxseSBoYXBwZW5pbmcuIEknbSBnb2luZyB0byBoZWFkIHN0cmFpZ2h0IGZvciBgaTJjX2dldF9tYXRjaF9kYXRhYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRldmljZXMgYXJlIG1hdGNoZWQgYW5kIGhvdyBkYXRhIGlzIGFzc29jaWF0ZWQgd2l0aCB0aG9zZSBtYXRjaGVzIHdpdGhpbiB0aGlzIGRyaXZlci4gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSBjZW50cmFsIHRvIHRoYXQgcHJvY2Vzcy4gTGV0J3Mgc2VlIGhvdyBpdCBoYW5kbGVzIHRoZSBkZXZpY2UgcHJvYmluZyBhbmQgaW5pdGlhbGl6YXRpb24gZmxvdzsgSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIGEga2V5IHBpZWNlIG9mIHRoZSBwdXp6bGUuIEkgYW50aWNpcGF0ZSBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIFwiYmVzdCBtYXRjaFwiIGFuZCByZXRyaWV2aW5nIGFzc29jaWF0ZWQgcGxhdGZvcm0tc3BlY2lmaWMgZGF0YS4gTGV0J3Mgc2VlIGlmIG15IHVuZGVyc3RhbmRpbmcgaXMgY29ycmVjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NDMsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzowOC41OTA2Mzk4NzFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTksXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxMTk6XFx0RVhQT1JUX1NZTUJPTF9HUEwoaTJjX21hdGNoX2lkKTtcXG4gMTIwOlxcdFxcbiAxMjE6XFx0Y29uc3Qgdm9pZCAqaTJjX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBpMmNfY2xpZW50ICpjbGllbnQpXFxuIDEyMjpcXHR7XFxuIDEyMzpcXHRcXHRzdHJ1Y3QgaTJjX2RyaXZlciAqZHJpdmVyID0gdG9faTJjX2RyaXZlcihjbGllbnQtXFx1MDAzZWRldi5kcml2ZXIpO1xcbiAxMjQ6XFx0XFx0Y29uc3Qgc3RydWN0IGkyY19kZXZpY2VfaWQgKm1hdGNoO1xcbiAxMjU6XFx0XFx0Y29uc3Qgdm9pZCAqZGF0YTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0ZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2Y2xpZW50LVxcdTAwM2VkZXYpO1xcbiAxMjg6XFx0XFx0aWYgKCFkYXRhKSB7XFxuIDEyOTpcXHRcXHRcXHRtYXRjaCA9IGkyY19tYXRjaF9pZChkcml2ZXItXFx1MDAzZWlkX3RhYmxlLCBjbGllbnQpO1xcbiAxMzA6XFx0XFx0XFx0aWYgKCFtYXRjaClcXG4gMTMxOlxcdFxcdFxcdFxcdHJldHVybiBOVUxMO1xcbiAxMzI6XFx0XFxuIDEzMzpcXHRcXHRcXHRkYXRhID0gKGNvbnN0IHZvaWQgKiltYXRjaC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEzNDpcXHRcXHR9XFxuIDEzNTpcXHRcXG4gMTM2OlxcdFxcdHJldHVybiBkYXRhO1xcbiAxMzc6XFx0fVxcbiAxMzg6XFx0RVhQT1JUX1NZTUJPTChpMmNfZ2V0X21hdGNoX2RhdGEpO1xcbiAxMzk6XFx0XFxuIDE0MDpcXHRzdGF0aWMgaW50IGkyY19kZXZpY2VfbWF0Y2goc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxcbiAxNDE6XFx0e1xcbiAxNDI6XFx0XFx0c3RydWN0IGkyY19jbGllbnRcXHQqY2xpZW50ID0gaTJjX3ZlcmlmeV9jbGllbnQoZGV2KTtcXG4gMTQzOlxcdFxcdGNvbnN0IHN0cnVjdCBpMmNfZHJpdmVyXFx0KmRyaXZlcjtcXG4gMTQ0OlxcdFxcbiAxNDU6XFx0XFxuIDE0NjpcXHRcXHQvKiBBdHRlbXB0IGFuIE9GIHN0eWxlIG1hdGNoICovXFxuIDE0NzpcXHRcXHRpZiAoaTJjX29mX21hdGNoX2RldmljZShkcnYtXFx1MDAzZW9mX21hdGNoX3RhYmxlLCBjbGllbnQpKVxcbiAxNDg6XFx0XFx0XFx0cmV0dXJuIDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjA4LjU5MDc3NzYwMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDEwMTczNjM2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgSTJDIERldmljZSBJbnN0YW50aWF0aW9uIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gSSB3YXMgcG9uZGVyaW5nIHRoaXMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCBJMkMgZGV2aWNlcy4gSXQgc3RydWNrIG1lOiBkb2VzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgd29yayBmb3IgSTJDIGRldmljZXMgaW5zdGFudGlhdGVkIHRocm91Z2ggc3lzZnM/IExldCBtZSByZS1leGFtaW5lIHRoaXMuIExvb2tpbmcgYXQgdGhlIGltcGxlbWVudGF0aW9uLCBpdCdzIGNhbGxpbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgb24gdGhlIGRldmljZSdzIGZ3bm9kZS4gSWYgdGhlcmUgaXNuJ3QgYW4gZndub2RlLCBpdCByZXR1cm5zIE5VTEwuIE5vdywgSSByZW1lbWJlciB0aGF0IGBpMmNfZGV2aWNlX3Byb2JlYCB1c2VzIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlYCB3aGljaCByZWxpZXMgb24gYHN5c2ZzX3N0cmVxYCB0byBtYXRjaCB0aGUgY2xpZW50IG5hbWUgd2l0aCB0aGUgY29tcGF0aWJsZSBzdHJpbmcgaW4gdGhlIG1hdGNoIHRhYmxlLiBCdXQsIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIGRvZXNuJ3Qga25vdyBhYm91dCB0aGlzIHN5c2ZzLWJhc2VkIEkyQyBtYXRjaGluZy4gSXQgcmVzaWRlcyBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIGFuZCBkZXBlbmRzIG9uIHRoZSBmd25vZGUuXG5cbkRpZ2dpbmcgZGVlcGVyIGludG8gYGZ3bm9kZV9jYWxsX3B0cl9vcGAsIGlmIHRoZSBkZXZpY2UgZG9lc24ndCBoYXZlIGEgZndub2RlICh3aGljaCBpcyB0aGUgY2FzZSBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIGRldmljZXMpLCB0aGVuIGl0IGFsc28gcmV0dXJucyBOVUxMLiBTbywgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCwgaW5kZWVkLCByZXR1cm4gTlVMTCBmb3Igc3lzZnMtaW5zdGFudGlhdGVkIEkyQyBkZXZpY2VzLiBUaGlzIGlzIGEgcG90ZW50aWFsIHByb2JsZW0gZm9yIGBzdF9uY2lfaTJjX3Byb2JlYCwgd2hpY2ggY2FsbHMgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gSWYgdGhlIGRldmljZSBpcyBjcmVhdGVkIHZpYSBzeXNmcywgdGhlbiBgZGV2X2Z3bm9kZShkZXYpYCBpcyBOVUxMLCBhbmQgdGh1cyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCByZXR1cm5zIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBgcGh5LVx1MDAzZXJhd19uY2lgIHdpbGwgYmUgemVyby4gQnV0LCB3YWl0Li4uIGlmIGBwaHktXHUwMDNlcmF3X25jaWAgaXMgemVybywgZG9lc24ndCB0aGUgZHJpdmVyIGJlaGF2ZSBleGFjdGx5IGFzIGJlZm9yZT9cblxuVGhlIGtleSBoZXJlIGlzIHdoZXRoZXIgd2UgY2FuIGluc3RhbnRpYXRlIGl0ICp3aXRoKiBhIGZ3bm9kZS4gSSB0aG91Z2h0IGFib3V0IHN5emthbGxlciBhbmQgaXRzIGBzeXpfaTJjX3NldHVwYCBjYWxsLiBEb2VzIHRoYXQgY3JlYXRlIGEgZGV2aWNlIHRyZWUgbm9kZT8gTm8sIGl0IGRvZXNuJ3QgZHluYW1pY2FsbHkgbW9kaWZ5IHRoZSBkZXZpY2UgdHJlZS4gSG93ZXZlciwgaXQgKmRvZXMqIHVzZSBgaTJjX25ld19jbGllbnRfZGV2aWNlYCB3aXRoIGBpbmZvLnR5cGVgIHNldCB0byB0aGUgZHJpdmVyIG5hbWUuIFNvLCBldmVuIGlmIHRoZSBkZXZpY2UgaXMgY3JlYXRlZCB3aXRoIGBzeXpfaTJjX3NldHVwYCBpdCBwYXNzZXMgdGhlIG5hbWUuIElmIHRoZSBuYW1lIGlzIGBcInN0MjFuZmNkXCJgLCBpdCAqd2lsbCogbWF0Y2ggdGhlIE9GIHRhYmxlIHZpYSBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgZHVyaW5nIHByb2JlLiBCdXQsIGNydWNpYWxseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgc3RpbGwgcmV0dXJucyBOVUxMISBXaGljaCB3b3VsZCBtZWFuIGBwaHktXHUwMDNlcmF3X25jaWAgd2lsbCBiZSB6ZXJvLlxuXG5BaCwgc28gdGhpcyByZXR1cm5zIE5VTEwgZm9yIHN5c2ZzIGRldmljZXMgaXMgYWN0dWFsbHkgYSBrbm93biBpc3N1ZSwgaXNuJ3QgaXQ/IFRoYXQncyB3aHkgbWFueSBkcml2ZXJzIGNvcnJlY3RseSB1c2UgYGkyY19nZXRfbWF0Y2hfZGF0YShjbGllbnQpYCBpbnN0ZWFkIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAhIFRoaXMgbWFrZXMgc2Vuc2UuIEJ1dCwgZGFybiBpdCwgYHN0X25jaV9pMmNfcHJvYmVgIGlzIHN0aWxsIHVzaW5nIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KWAuIExldCBtZSBnbyBjaGVjayBgc3RfbmNpX2kyY19wcm9iZWAgaW4gYGRyaXZlcnMvbmZjL3N0LW5jaS9pMmMuY2AuLi4gdG8gY29uZmlybSB0aGUgaW1wbGljYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI3MCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY3MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjE4LjY5MjUxNjU5NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9zdC1uY2kvaTJjLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMjUwOlxcdFxcbiAyNTE6XFx0XFx0aWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtXFx1MDAzZWFkYXB0ZXIsIEkyQ19GVU5DX0kyQykpIHtcXG4gMjUyOlxcdFxcdFxcdG5mY19lcnIoXFx1MDAyNmNsaWVudC1cXHUwMDNlZGV2LCBcXFwiTmVlZCBJMkNfRlVOQ19JMkNcXFxcblxcXCIpO1xcbiAyNTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIDI1NDpcXHRcXHR9XFxuIDI1NTpcXHRcXG4gMjU2OlxcdFxcdHBoeSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZihzdHJ1Y3Qgc3RfbmNpX2kyY19waHkpLCBHRlBfS0VSTkVMKTtcXG4gMjU3OlxcdFxcdGlmICghcGh5KVxcbiAyNTg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDI1OTpcXHRcXG4gMjYwOlxcdFxcdHBoeS1cXHUwMDNlaTJjX2RldiA9IGNsaWVudDtcXG4gMjYxOlxcdFxcdHBoeS1cXHUwMDNlcmF3X25jaSA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT1cXG4gMjYyOlxcdFxcdFxcdFxcdFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSTtcXG4gMjYzOlxcdFxcbiAyNjQ6XFx0XFx0aTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcGh5KTtcXG4gMjY1OlxcdFxcbiAyNjY6XFx0XFx0ciA9IGRldm1fYWNwaV9kZXZfYWRkX2RyaXZlcl9ncGlvcyhkZXYsIGFjcGlfc3RfbmNpX2dwaW9zKTtcXG4gMjY3OlxcdFxcdGlmIChyKVxcbiAyNjg6XFx0XFx0XFx0ZGV2X2RiZyhkZXYsIFxcXCJVbmFibGUgdG8gYWRkIEdQSU8gbWFwcGluZyB0YWJsZVxcXFxuXFxcIik7XFxuIDI2OTpcXHRcXG4gMjcwOlxcdFxcdC8qIEdldCBSRVNFVCBHUElPICovXFxuIDI3MTpcXHRcXHRwaHktXFx1MDAzZWdwaW9kX3Jlc2V0ID0gZGV2bV9ncGlvZF9nZXQoZGV2LCBcXFwicmVzZXRcXFwiLCBHUElPRF9PVVRfSElHSCk7XFxuIDI3MjpcXHRcXHRpZiAoSVNfRVJSKHBoeS1cXHUwMDNlZ3Bpb2RfcmVzZXQpKSB7XFxuIDI3MzpcXHRcXHRcXHRuZmNfZXJyKGRldiwgXFxcIlVuYWJsZSB0byBnZXQgUkVTRVQgR1BJT1xcXFxuXFxcIik7XFxuIDI3NDpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMjc1OlxcdFxcdH1cXG4gMjc2OlxcdFxcbiAyNzc6XFx0XFx0ciA9IGRldm1fcmVndWxhdG9yX2dldF9lbmFibGVfb3B0aW9uYWwoZGV2LCBcXFwidmRkLWlvXFxcIik7XFxuIDI3ODpcXHRcXHRpZiAociBcXHUwMDI2XFx1MDAyNiByICE9IC1FTk9ERVYpXFxuIDI3OTpcXHRcXHRcXHRyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIHZkZC1pb1xcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjE4LjY5MjU5NDA2NloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTIwODU0MDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byB1bmRlcnN0YW5kIHRoaXMgY29kZS4gRmlyc3QsIGEgY3J1Y2lhbCBwb2ludDogYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMIHdoZW4gdGhlcmUncyBubyBmd25vZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXZpY2UuIFJpZ2h0LiBCdXQgd2hhdCBhYm91dCBkZXZpY2VzIGluaXRpYWxpemVkIHRocm91Z2ggQUNQST8gQWgsIHdpdGggQUNQSSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKmRvZXMqIHdvcmsgYXMgZXhwZWN0ZWQuIEhvd2V2ZXIsIHN5emthbGxlciwgdGhlIGZ1enplciBJJ20gbG9va2luZyBhdCwgZG9lc24ndCB1c2UgQUNQSSBmb3IgZGV2aWNlIGluc3RhbnRpYXRpb24uXG5cbkhvbGQgb24sIHN5emthbGxlciBjYW4gdXNlIGBzeXpfaTJjX3NldHVwYCB0byBjcmVhdGUgSTJDIGRldmljZXMuIEJ1dCBkb2VzICp0aGF0KiBjcmVhdGUgYW4gZndub2RlPyBObywgaXQganVzdCBjYWxscyBgaTJjX25ld19jbGllbnRfZGV2aWNlYC4gU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTCwgYHBoeS1cdTAwM2VyYXdfbmNpYCB3aWxsIGJlIHplcm8uIEkgbmVlZCB0byBmaWd1cmUgb3V0IG90aGVyIHBhdGhzIHRvIHJlYWNoIHRoaXMgY29kZS4gSXMgdGhlcmUgYW5vdGhlciB3YXkgdGhlIGNvZGUgY291bGQgYmUgdHJpZ2dlcmVkP1xuXG5XaGF0IGFib3V0IHRoZSBmYWxsYmFjayBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byBgZGV2aWNlX2RyaXZlcmA/IFdhaXQgYSBtaW51dGUuLi4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IHRoZSBiZWhhdmlvciBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBjaGFuZ2VkIGFyb3VuZCBMaW51eCA2LjIgb3Igc28sIHJpZ2h0PyBJdCBub3cgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZGV2aWNlIGRyaXZlciBtYXRjaCBkYXRhLiBJIHJlYWxseSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gVGhhdCdzIHRoZSBrZXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjQzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjQuMjEzNDUxMjQzWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzMxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzQ3LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzQ3OlxcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuMTM1MjpcXHR9XFxuMTM1MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZ3bm9kZV9ncmFwaF9kZXZjb25fbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxcbjEzNTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXFxuMTM1ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICoqbWF0Y2hlcyxcXG4xMzU5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcXG4xMzYwOlxcdHtcXG4xMzYxOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xcbjEzNjI6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xcbjEzNjM6XFx0XFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4xMzY0OlxcdFxcdHZvaWQgKnJldDtcXG4xMzY1OlxcdFxcbjEzNjY6XFx0XFx0Zndub2RlX2dyYXBoX2Zvcl9lYWNoX2VuZHBvaW50KGZ3bm9kZSwgZXApIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjQuMjEzNTY5OTczWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NTM0OTg4ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCBnaXZlbiBteSBleHBlcnRpc2U6XG5cbioqRGl2aW5nIGludG8gdGhlIEZ1bmN0aW9uIENhbGwgQ2hhaW4qKlxuXG5IbW0sIHNvIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpleGNsdXNpdmVseSogcmVsaWVzIG9uIGBmd25vZGVfY2FsbF9wdHJfb3BgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGJ1dCBub3QgZW50aXJlbHkgdW5leHBlY3RlZC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBmd25vZGVfY2FsbF9wdHJfb3BgIGlzICphY3R1YWxseSogZG9pbmcuIEl04oCZcyB0aGUgbGluY2hwaW4gaGVyZSwgdGhlIHRoaW5nIHRoYXTigJlzIHVsdGltYXRlbHkgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB0aGUgbWF0Y2ggZGF0YSwgaWYgdGhhdOKAmXMgZXZlbiB3aGF0IGl0IGlzIGRvaW5nLiBXaGF0IGRhdGEgaXMgaXQgdXNpbmc/IFdoYXQgYXJlIHRoZSBwb3NzaWJsZSBjYWxsIHNpdGVzIG9yIGFyZ3VtZW50cz8gV2hhdCBhcmUgdGhlIHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/IEl0J3MgdGltZSB0byBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIGFuZCB0cmFjZSB0aGUgb3BlcmF0aW9ucyBpdOKAmXMgbWFraW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0J3MgY2FsbGluZyBhbmQgaG93IGl0J3MgcHJvY2Vzc2luZyB0aGUgZGF0YS4gTGV04oCZcyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMTgzLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzoyNy43NjcwNzE3MjdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODA0ODkyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiI2RlZmluZSBmd25vZGVfY2FsbF9wdHJfb3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9md25vZGUuaD0xNDA9c3RydWN0IGZ3bm9kZV9vcGVyYXRpb25zIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvZndub2RlLmgtMTk4LVxcbmluY2x1ZGUvbGludXgvZndub2RlLmg6MTk5OiNkZWZpbmUgZndub2RlX2NhbGxfcHRyX29wKGZ3bm9kZSwgb3AsIC4uLilcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9md25vZGUuaC0yMDAtXFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1xcdFxcdFxcdFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MjkuNjQ3NTY1OTY5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Njc5NzA1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIGBmd25vZGVfY2FsbF9wdHJfb3BgIE1hY3JvKipcblxuT2theSwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgaW50ZXJuYWwgd29ya2luZ3Mgb2YgdGhlIGZpcm13YXJlIG5vZGUgc3lzdGVtLiBMZXQncyBzdGFydCBieSBsb29raW5nIGRpcmVjdGx5IGF0IHRoZSBkZWZpbml0aW9uIG9mIGBmd25vZGVfY2FsbF9wdHJfb3BgIGluIGBpbmNsdWRlL2xpbnV4L2Z3bm9kZS5oYC4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIG1hY3JvIGhhbmRsZXMgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMgd2l0aGluIHRoZSBmd25vZGUgY29udGV4dC4gSSB3YW50IHRvIHNlZSBleGFjdGx5IGhvdyBpdCBhY2hpZXZlcyB0eXBlLXNhZmV0eSBhbmQgaG93IGl0IGRlYWxzIHdpdGggcG90ZW50aWFsIG51bGwgcG9pbnRlcnMgb3Igb3RoZXIgZXJyb3IgY29uZGl0aW9ucyB3aXRoaW4gdGhlIHVuZGVybHlpbmcgYGZ3bm9kZWAgc3RydWN0dXJlLiBVbmRlcnN0YW5kaW5nIHRoaXMgbWFjcm8gaXMga2V5IHRvIHRyYWNpbmcgdGhyb3VnaCBob3cgdGhlIGRldmljZSB0cmVlIGluZm9ybWF0aW9uIGlzIGFjY2Vzc2VkIGFuZCB1dGlsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gSSdsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGFyZ3VtZW50IHBhc3NpbmcgbWVjaGFuaXNtIGFuZCBhbnkgcG90ZW50aWFsIG9wdGltaXphdGlvbnMgb3IgY29tcGlsZXItc3BlY2lmaWMgcXVpcmtzIGludm9sdmVkLiBMZXQncyBzZWUgaG93IHRoZXkndmUgaGFuZGxlZCB0aGUgZXJyb3IgY2hlY2tpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNTY1LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjM6MzMuNTE1NTM4ODdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY5MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiaW5jbHVkZS9saW51eC9md25vZGUuaFwiLFxuICBcIkZpcnN0TGluZVwiOiAxOTgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxOTg6XFx0XFxuIDE5OTpcXHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3B0cl9vcChmd25vZGUsIG9wLCAuLi4pXFx0XFx0XFxcXFxcbiAyMDA6XFx0XFx0KGZ3bm9kZV9oYXNfb3AoZndub2RlLCBvcCkgP1xcdFxcdFxcdFxcXFxcXG4gMjAxOlxcdFxcdCAoZndub2RlKS1cXHUwMDNlb3BzLVxcdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKSA6IE5VTEwpXFxuIDIwMjpcXHQjZGVmaW5lIGZ3bm9kZV9jYWxsX3ZvaWRfb3AoZndub2RlLCBvcCwgLi4uKVxcdFxcdFxcdFxcdFxcXFxcXG4gMjAzOlxcdFxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuIDIwNDpcXHRcXHRcXHRpZiAoZndub2RlX2hhc19vcChmd25vZGUsIG9wKSlcXHRcXHRcXHRcXHRcXFxcXFxuIDIwNTpcXHRcXHRcXHRcXHQoZndub2RlKS1cXHUwMDNlb3BzLVxcdTAwM2VvcChmd25vZGUsICMjIF9fVkFfQVJHU19fKTtcXHRcXFxcXFxuIDIwNjpcXHRcXHR9IHdoaWxlIChmYWxzZSlcXG4gMjA3OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzozMy41MTU2MDY4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NDI5MDA3NTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlZXAgRGl2ZSBpbnRvIERldmljZSBJbnN0YW50aWF0aW9uIGFuZCBNYXRjaCBEYXRhKipcblxuT2theSwgc28gaWYgYGZ3bm9kZWAgaXMgTlVMTCwgYGZ3bm9kZV9oYXNfb3BgIGp1c3QgcmV0dXJucyBmYWxzZSwgd2hpY2ggbG9naWNhbGx5IG1ha2VzIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLiBCdXQgSSdtIHBvbmRlcmluZyBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCBPRiBkZXZpY2VzLiBSaWdodCwgT0YgZGV2aWNlcyAqZG8qIGhhdmUgYW4gZndub2RlLCBhbmQgdGhlaXIgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgaXMgaGFuZGxlZCBieSBgb2ZfZndub2RlX29wc2AsIHNwZWNpZmljYWxseSBgb2ZfZndub2RlX2RldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEdvdCBpdC5cblxuTm93LCBhIGRldmljZSBpbnN0YW50aWF0ZWQgdmlhIHN5c2ZzLCB0aGF0IHdvbid0IGhhdmUgYW4gZndub2RlLiBUaGF0IG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHdpbGwgYmUgTlVMTC4gQWhhISBTbywgaWYgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcGh5LVx1MDAzZXJhd19uY2lgIGJlY29tZXMgMC4gVGhhdCdzIGtleSwgYmVjYXVzZSBpdCBtZWFucyB0aGUgbmV3IGNvZGUgcGF0aHMgSSdtIHdvcnJpZWQgYWJvdXQsIHRoZSBvbmVzIHRoYXQgZGVwZW5kIG9uIGByYXdfbmNpYCwgKndvbid0KiBleGVjdXRlIGlmIHRoZSBkZXZpY2UgY29tZXMgdXAgdGhyb3VnaCBzeXNmcy4gVGhhdCdzIGEgcmVsaWVmLCBidXQgaXMgdGhhdCAqYWx3YXlzKiB0aGUgY2FzZT9cblxuT2theSwgbGV0J3MgZXhwbG9yZSBpZiB0aGVyZSBhcmUgKm90aGVyKiB3YXlzIHRvIGluc3RhbnRpYXRlIHRoaXMgZGV2aWNlIHdpdGggYW4gZndub2RlLiBTeXprYWxsZXIgY2FuIHVzZSBgc3l6X2kyY19zZXR1cGAgd2hpY2ggSSBrbm93IGRvZXNuJ3QgY3JlYXRlIGFuIGZ3bm9kZS4gSG1tLCB3aGF0IGFib3V0IGBtYWM4MDIxMV9od3NpbWAgb3Igb3RoZXIgc3VjaCBtZWNoYW5pc21zPyBUaGlzIGlzLCBhZnRlciBhbGwsIGFuIEkyQyBkZXZpY2UuIElzIHRoZXJlIHNvbWUgdmlydHVhbCBJMkMgY29udHJvbGxlciB0aGF0ICpkb2VzKiBjcmVhdGUgZndub2Rlcz8gUHJvYmFibHkgbm90LiBTeXprYWxsZXIgZG9lc24ndCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIE9GIG5vZGVzIGR5bmFtaWNhbGx5LlxuXG5XYWl0LCB0aGUgRGV2aWNlIFRyZWUgb3ZlcmxheSBmZWF0dXJlISBTeXprYWxsZXIgKmNhbiogbG9hZCBkZXZpY2UgdHJlZSBvdmVybGF5cywgcmlnaHQ/IE9oIHJpZ2h0LCBidXQgU3l6a2FsbGVyIGRvZXNuJ3QgbG9hZCB0aGVtIGJ5IGRlZmF1bHQuXG5cbkFscmlnaHQsIHdoYXQgaWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdmlhIGBpMmNfbmV3X2NsaWVudF9kZXZpY2VgIHdpdGggYGluZm8udHlwZWAgc2V0IHRvIGBcInN0MjFuZmNkXCJgPyBUaGF0IHNlZW1zIHByb21pc2luZywgYnV0IGlmIGBpbmZvLnR5cGVgIGlzIGBcInN0MjFuZmNkXCJgLCBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2Agc2hvdWxkIG1hdGNoIGl0LCBhbmQgdGhlbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB3aWxsIHN0aWxsIHJldHVybiBOVUxMLlxuXG5XYWl0LCB3YWl0LCBsZXQncyB0cmFjZSB0aGlzLiBgaTJjX29mX21hdGNoX2RldmljZV9zeXNmc2AgaXMgY2FsbGVkIGJ5IGBpMmNfZGV2aWNlX21hdGNoYCwgYW5kIHRoYXQsIGluIHR1cm4sIGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIGNvcmUuIE5vdywgZG9lcyB0aGUgZHJpdmVyIGNvcmUgZG8gc29tZXRoaW5nLCBsaWtlIHNldCBgZGV2LVx1MDAzZWRyaXZlcl9kYXRhYD8gTm8sIG5vLCBpdCBsb29rcyBsaWtlIGBpMmNfb2ZfbWF0Y2hfZGV2aWNlX3N5c2ZzYCBqdXN0IHJldHVybnMgdGhlIGBvZl9kZXZpY2VfaWRgIG1hdGNoLiBSaWdodCwgc28gYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24ndCBhY3R1YWxseSAqdXNlKiB0aGF0IG1hdGNoIGRhdGEhXG5cbkJ1dC4uLndhaXQuLi4gZGlkbid0IHNvbWVvbmUgaW50cm9kdWNlIGBpMmNfZ2V0X21hdGNoX2RhdGFgICpzcGVjaWZpY2FsbHkqIHRvIHNvbHZlIHRoaXMga2luZCBvZiBpc3N1ZT8gTGV0IG1lIGdvIGNoZWNrIGBkcml2ZXJzL2kyYy9pMmMtY29yZS1iYXNlLmNgLiBJIGhhdmUgYSBmZWVsaW5nIHRoYXQncyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzA0MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU1NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjQyLjk0NDYxNzAxM1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyMTpcXHRjb25zdCB2b2lkICppMmNfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGkyY19jbGllbnQgKmNsaWVudClcXG4gMTIyOlxcdHtcXG4gMTIzOlxcdFxcdHN0cnVjdCBpMmNfZHJpdmVyICpkcml2ZXIgPSB0b19pMmNfZHJpdmVyKGNsaWVudC1cXHUwMDNlZGV2LmRyaXZlcik7XFxuIDEyNDpcXHRcXHRjb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqbWF0Y2g7XFxuIDEyNTpcXHRcXHRjb25zdCB2b2lkICpkYXRhO1xcbiAxMjY6XFx0XFxuIDEyNzpcXHRcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZjbGllbnQtXFx1MDAzZWRldik7XFxuIDEyODpcXHRcXHRpZiAoIWRhdGEpIHtcXG4gMTI5OlxcdFxcdFxcdG1hdGNoID0gaTJjX21hdGNoX2lkKGRyaXZlci1cXHUwMDNlaWRfdGFibGUsIGNsaWVudCk7XFxuIDEzMDpcXHRcXHRcXHRpZiAoIW1hdGNoKVxcbiAxMzE6XFx0XFx0XFx0XFx0cmV0dXJuIE5VTEw7XFxuIDEzMjpcXHRcXG4gMTMzOlxcdFxcdFxcdGRhdGEgPSAoY29uc3Qgdm9pZCAqKW1hdGNoLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG4gMTM0OlxcdFxcdH1cXG4gMTM1OlxcdFxcbiAxMzY6XFx0XFx0cmV0dXJuIGRhdGE7XFxuIDEzNzpcXHR9XFxuIDEzODpcXHRFWFBPUlRfU1lNQk9MKGkyY19nZXRfbWF0Y2hfZGF0YSk7XFxuIDEzOTpcXHRcXG4gMTQwOlxcdHN0YXRpYyBpbnQgaTJjX2RldmljZV9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBkZXZpY2VfZHJpdmVyICpkcnYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjQyLjk0NDc1NjY5M1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MTI0MDQ4MDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBgc3RfbmNpYCBJMkMgRHJpdmVyJ3MgRGV2aWNlIE1hdGNoaW5nIGFuZCBgcmF3X25jaWAgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIGRlYWwuIEknbSBsb29raW5nIGF0IHRoaXMgYHN0X25jaWAgSTJDIGRyaXZlciBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBwaHktXHUwMDNlcmF3X25jaWAgZ2V0cyBpbml0aWFsaXplZC4gSXQgc2VlbXMgbGlrZSB0aGUgY29kZSBmbG93IGhpbmdlcyBvbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYC4gSWYgdGhhdCByZXR1cm5zIE5VTEwsIHRoZW4gYGkyY19nZXRfbWF0Y2hfZGF0YWAgaXMgY2FsbGVkIGFzIGEgZmFsbGJhY2sgd2hpY2ggdXNlcyBgaTJjX21hdGNoX2lkYCB3aXRoIHRoZSBkcml2ZXIncyBJRCB0YWJsZS4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgYHN0X25jaV9pMmNfaWRfdGFibGVgIG9ubHkgY29udGFpbnMgYFwic3RfbmNpXCJgIGFuZCBub3RoaW5nIGVsc2UsIG1lYW5pbmcgbm8gYGRyaXZlcl9kYXRhYCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZSBJRC4gVGh1cywgdGhlIGZhbGxiYWNrIHZpYSBgaTJjX2dldF9tYXRjaF9kYXRhYCBhbHNvICphbHdheXMqIHJldHVybnMgTlVMTC5cblxuU28sIGlmIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICphbmQqIGBpMmNfZ2V0X21hdGNoX2RhdGFgIHJldHVybiBOVUxMLCB0aGF0IG1lYW5zIGBwaHktXHUwMDNlcmF3X25jaWAgZW5kcyB1cCBiZWluZyAwLiBUaGF0IG1ha2VzIHRoZSBuZXcgY29kZSBwYXRocyBmb3IgYHJhd19uY2lgICpjb21wbGV0ZWx5IHVucmVhY2hhYmxlKiBpZiB0aGUgZGV2aWNlIGlzIGluc3RhbnRpYXRlZCB2aWEgc3lzZnMgb3IgYHN5el9pMmNfc2V0dXBgISBUaGlzIGlzIGFzc3VtaW5nIHRoZSBkZXZpY2UgY2FuIGV2ZW4gYmUgaW5zdGFudGlhdGVkIHRoYXQgd2F5Li4uXG5cbk5vdywgdGhlIHF1ZXN0aW9uIHRoYXQgaXMgYnVybmluZyBpbiBteSBtaW5kIGlzOiBjYW4gd2UgZXZlbiBnZXQgYSBmd25vZGUgdG8gYmUgdXNlZD8gQ291bGQgYSBkZXZpY2UgdHJlZSB3aXRoIGBzdCxzdDIxbmZjZGAgd29yayBzb21laG93PyBTeXprYWxsZXIgdXNlcyBhIGZpeGVkIGRldmljZSB0cmVlIGZvciBBUk0gYW5kIEFSTTY0LCBidXQgb24geDg2LCBpdCB0eXBpY2FsbHkgdXNlcyBBQ1BJIG9yIG5vIGRldmljZSB0cmVlLlxuXG5IYW5nIG9uLCBTeXprYWxsZXIgcHJpbWFyaWx5IGZ1enplcyB4ODZfNjQsIHJpZ2h0PyBPbiB4ODZfNjQsIHRoZXJlJ3Mgbm8gZGV2aWNlIHRyZWUgYnkgZGVmYXVsdCB1bmxlc3MgaXQncyBVTUwgb3Igc29tZXRoaW5nLiBBbmQgU3l6a2FsbGVyICpjYW4qIHVzZSBgc3l6X2kyY19zZXR1cGAgb24geDg2XzY0LiBTbyBpZiBgcGh5LVx1MDAzZXJhd19uY2lgIGlzIGFsd2F5cyAwLCB0aGVuIHRoZXNlIG5ldyBjb2RlIHBhdGhzIGFyZSBzaW1wbHkgbmV2ZXIgZ2V0dGluZyBoaXQuXG5cbkxldCdzIHF1aWNrbHkgY2hlY2sgd2hldGhlciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqY2FuKiByZXR1cm4gc29tZXRoaW5nIG9uIHg4Nl82NC4gT2ggd2FpdCwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2FzIGNoYW5nZWQgYXJvdW5kIExpbnV4IDYuNiEgTGV0IG1lIGRpZyBpbnRvIHRoZSBjdXJyZW50IHZlcnNpb24gaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYCBhZ2Fpbi4gUmlnaHQsIGl0J3M6XG5cbmBgYGNcbmNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXG57XG5cdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XG59XG5gYGBcblxuT2theSwgc28gaXQgY2FsbHMgYSBmd25vZGUgb3BlcmF0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayBob3cgYGkyY19kZXZpY2VfcHJvYmVgIHNldHMgdXAgdGhlIGZ3bm9kZSBvciBzb21ldGhpbmcuIExldCBtZSBnbyBsb29rIGF0IGBpMmNfZGV2aWNlX3Byb2JlYCBpbiBgZHJpdmVycy9pMmMvaTJjLWNvcmUtYmFzZS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQ2MzEsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MDUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyMzo1Mi4wNjg4MDczOTlaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQxMzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvaTJjL2kyYy1jb3JlLWJhc2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0OTEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0OTE6XFx0c3RhdGljIGludCBpMmNfZGV2aWNlX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gNDkyOlxcdHtcXG4gNDkzOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlXFx0KmZ3bm9kZSA9IGRldl9md25vZGUoZGV2KTtcXG4gNDk0OlxcdFxcdHN0cnVjdCBpMmNfY2xpZW50XFx0KmNsaWVudCA9IGkyY192ZXJpZnlfY2xpZW50KGRldik7XFxuIDQ5NTpcXHRcXHRzdHJ1Y3QgaTJjX2RyaXZlclxcdCpkcml2ZXI7XFxuIDQ5NjpcXHRcXHRib29sIGRvX3Bvd2VyX29uO1xcbiA0OTc6XFx0XFx0aW50IHN0YXR1cztcXG4gNDk4OlxcdFxcbiA0OTk6XFx0XFx0aWYgKCFjbGllbnQpXFxuIDUwMDpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNTAxOlxcdFxcbiA1MDI6XFx0XFx0Y2xpZW50LVxcdTAwM2VpcnEgPSBjbGllbnQtXFx1MDAzZWluaXRfaXJxO1xcbiA1MDM6XFx0XFxuIDUwNDpcXHRcXHRpZiAoIWNsaWVudC1cXHUwMDNlaXJxKSB7XFxuIDUwNTpcXHRcXHRcXHRpbnQgaXJxID0gLUVOT0VOVDtcXG4gNTA2OlxcdFxcbiA1MDc6XFx0XFx0XFx0aWYgKGNsaWVudC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBJMkNfQ0xJRU5UX0hPU1RfTk9USUZZKSB7XFxuIDUwODpcXHRcXHRcXHRcXHRkZXZfZGJnKGRldiwgXFxcIlVzaW5nIEhvc3QgTm90aWZ5IElSUVxcXFxuXFxcIik7XFxuIDUwOTpcXHRcXHRcXHRcXHQvKiBLZWVwIGFkYXB0ZXIgYWN0aXZlIHdoZW4gSG9zdCBOb3RpZnkgaXMgcmVxdWlyZWQgKi9cXG4gNTEwOlxcdFxcdFxcdFxcdHBtX3J1bnRpbWVfZ2V0X3N5bmMoXFx1MDAyNmNsaWVudC1cXHUwMDNlYWRhcHRlci1cXHUwMDNlZGV2KTtcXG4gNTExOlxcdFxcdFxcdFxcdGlycSA9IGkyY19zbWJ1c19ob3N0X25vdGlmeV90b19pcnEoY2xpZW50KTtcXG4gNTEyOlxcdFxcdFxcdH0gZWxzZSBpZiAoaXNfb2Zfbm9kZShmd25vZGUpKSB7XFxuIDUxMzpcXHRcXHRcXHRcXHRpcnEgPSBmd25vZGVfaXJxX2dldF9ieW5hbWUoZndub2RlLCBcXFwiaXJxXFxcIik7XFxuIDUxNDpcXHRcXHRcXHRcXHRpZiAoaXJxID09IC1FSU5WQUwgfHwgaXJxID09IC1FTk9EQVRBKVxcbiA1MTU6XFx0XFx0XFx0XFx0XFx0aXJxID0gZndub2RlX2lycV9nZXQoZndub2RlLCAwKTtcXG4gNTE2OlxcdFxcdFxcdH0gZWxzZSBpZiAoaXNfYWNwaV9kZXZpY2Vfbm9kZShmd25vZGUpKSB7XFxuIDUxNzpcXHRcXHRcXHRcXHRib29sIHdha2VfY2FwYWJsZTtcXG4gNTE4OlxcdFxcbiA1MTk6XFx0XFx0XFx0XFx0aXJxID0gaTJjX2FjcGlfZ2V0X2lycShjbGllbnQsIFxcdTAwMjZ3YWtlX2NhcGFibGUpO1xcbiA1MjA6XFx0XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNlIDAgXFx1MDAyNlxcdTAwMjYgd2FrZV9jYXBhYmxlKVxcbiA1MjE6XFx0XFx0XFx0XFx0XFx0Y2xpZW50LVxcdTAwM2VmbGFncyB8PSBJMkNfQ0xJRU5UX1dBS0U7XFxuIDUyMjpcXHRcXHRcXHR9XFxuIDUyMzpcXHRcXHRcXHRpZiAoaXJxID09IC1FUFJPQkVfREVGRVIpIHtcXG4gNTI0OlxcdFxcdFxcdFxcdHN0YXR1cyA9IGRldl9lcnJfcHJvYmUoZGV2LCBpcnEsIFxcXCJjYW4ndCBnZXQgaXJxXFxcXG5cXFwiKTtcXG4gNTI1OlxcdFxcdFxcdFxcdGdvdG8gcHV0X3N5bmNfYWRhcHRlcjtcXG4gNTI2OlxcdFxcdFxcdH1cXG4gNTI3OlxcdFxcbiA1Mjg6XFx0XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuIDUyOTpcXHRcXHRcXHRcXHRpcnEgPSAwO1xcbiA1MzA6XFx0XFxuIDUzMTpcXHRcXHRcXHRjbGllbnQtXFx1MDAzZWlycSA9IGlycTtcXG4gNTMyOlxcdFxcdH1cXG4gNTMzOlxcdFxcbiA1MzQ6XFx0XFx0ZHJpdmVyID0gdG9faTJjX2RyaXZlcihkZXYtXFx1MDAzZWRyaXZlcik7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdC8qXFxuIDUzNzpcXHRcXHQgKiBBbiBJMkMgSUQgdGFibGUgaXMgbm90IG1hbmRhdG9yeSwgaWYgYW5kIG9ubHkgaWYsIGEgc3VpdGFibGUgT0ZcXG4gNTM4OlxcdFxcdCAqIG9yIEFDUEkgSUQgdGFibGUgaXMgc3VwcGxpZWQgZm9yIHRoZSBwcm9iaW5nIGRldmljZS5cXG4gNTM5OlxcdFxcdCAqL1xcbiA1NDA6XFx0XFx0aWYgKCFkcml2ZXItXFx1MDAzZWlkX3RhYmxlIFxcdTAwMjZcXHUwMDI2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjIzOjUyLjA2ODk1MDMwOVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTM4ODY3ODE4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoJ3MgSW1wYWN0IG9uIHRoZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZnVuY3Rpb24gaXMga2V5IGhlcmUsIGFuZCBpdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYC4gSWYgdGhlIGRldmljZSBpcyBpbnN0YW50aWF0ZWQgdGhyb3VnaCBzeXNmcywgYGRldl9md25vZGUoZGV2KWAgd2lsbCBiZSBOVUxMLiBUaGlzIG1lYW5zIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHJldHVybnMgTlVMTC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHN5emthbGxlciBpbnRlcmFjdHMgd2l0aCB0aGlzLCB0aG91Z2guIERvZXMgc3l6a2FsbGVyIGV2ZW4gdXNlIHNvZnR3YXJlIG5vZGVzIChzd25vZGUpIGluIHRoaXMgY29udGV4dD8gTm8sIGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGZvciBJMkMgZGV2aWNlcy4gU28sIGBwaHktXHUwMDNlcmF3X25jaWAgd2lsbCBiZSB6ZXJvLCB3aGljaCBpcyB0aGUgY3J1eCBvZiB0aGUgaXNzdWUuXG5cbkxldCdzIGxvb2sgYXQgdGhlIGFjdHVhbCBwYXRjaCBpdHNlbGYsIHRob3VnaC4gSXQgaW50cm9kdWNlcyBgdmRkLWlvYCBhbmQgYGNsb2Nrc2AgcHJvcGVydGllczogaXQgYXR0ZW1wdHMgdG8gZ2V0IGFuZCBlbmFibGUgYSByZWd1bGF0b3IsIGFuZCBhIGNsb2NrLCBib3RoIG9wdGlvbmFsbHkuIElmIHRoZXkgYXJlbid0IHRoZXJlLCBpdCBqdXN0IG1vdmVzIG9uLiBJdCAqdGhlbiogc2V0cyBgcGh5LVx1MDAzZXJhd19uY2lgIHRvIHplcm8uIEFmdGVyIHRoYXQgYG5kbGNfcHJvYmVgIGlzIGNhbGxlZCB3aXRoIHRoZSBgU1RfTkNJX0ZSQU1FX0hFQURST09NYCB2YWx1ZSBiZWNhdXNlIGByYXdfbmNpYCBpcyAwLiBGaW5hbGx5LCBgcGh5LVx1MDAzZW5kbGMtXHUwMDNlcmF3X25jaWAgaXMgc2V0IHRvIGBwaHktXHUwMDNlcmF3X25jaWAsIHdoaWNoIGlzIHN0aWxsIHplcm8uIEVmZmVjdGl2ZWx5LCB0aGUgZHJpdmVyIGJlaGF2ZXMgKmV4YWN0bHkqIGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoIVxuXG5CdXQsIGp1c3QgaW4gY2FzZSwgaXMgdGhlcmUgKmFueSogb3RoZXIgd2F5IGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byByZXR1cm4gbm9uLU5VTEw/IFdoYXQgYWJvdXQgaWYgdGhlIGRyaXZlciBpcyBwcm9iZWQgdmlhIGRldmljZSB0cmVlPyBEb2VzIHN5emthbGxlciBydW4gb24gUUVNVSwgYW5kIGRvZXMgUUVNVSBpbmNsdWRlIHRoaXMgZGV2aWNlIGluIGl0cyBkZXZpY2UgdHJlZT8gSG1tLCBubywgUUVNVSdzIGB2aXJ0YCBtYWNoaW5lIGRvZXNuJ3QgaGF2ZSBgc3Qsc3QyMW5mY2RgLlxuXG5XYWl0LCBzeXprYWxsZXIgKmNhbiogYm9vdCB3aXRoIGEgY3VzdG9tIGRldmljZSB0cmVlIGlmIGNvbmZpZ3VyZWQsIGJ1dCB1c3VhbGx5IGl0IGRvZXNuJ3QuIE9rYXksIG9rYXksIHdoYXQgYWJvdXQgc3l6a2FsbGVyJ3MgcHNldWRvLXN5c2NhbGxzPyBEb2VzIGl0IGhhdmUgYSByZWxldmFudCBmdW5jdGlvbiwgbGlrZSBgc3l6X2kyY19zZXR1cGA/IE5vcGUsIGBzeXpfaTJjX3NldHVwYCBqdXN0IGNyZWF0ZXMgYW4gSTJDIGRldmljZSB3aXRoIGEgZ2l2ZW4gbmFtZS4gQ2FuIHN5emthbGxlciBzZXQgYHJhd19uY2lgIHVzaW5nIGBzeXpfZ2VuZXRsaW5rYCBvciBzb21ldGhpbmcgc2ltaWxhcj8gTm8uXG5cbkFscmlnaHQsIHNvIHRoZSBvbmx5IHdheSBgcmF3X25jaWAgY2FuIGJlIHNldCBpcyB2aWEgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpYC4gQW5kIGJlY2F1c2UgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgcmV0dXJucyBOVUxMLCBgcmF3X25jaWAgaXMgemVyby4gSSBiZXR0ZXIgZG91YmxlIGNoZWNrIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZG9lc24ndCBtYWdpY2FsbHkgZmFsbCBiYWNrIHRvIGBvZl9tYXRjaF90YWJsZWAgd2hlbiBgZndub2RlYCBpcyBOVUxMLiBMZXQgbWUganVzdCBnbyBiYWNrIGFuZCByZXZpZXcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbi4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njc2MCwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjAzLjQ1NzYzMTVaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTIxMjc2NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uc3Qgdm9pZCBcXFxcKmRldmljZV9nZXRfbWF0Y2hfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNDk6Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaD00OTk9ZW51bSBkZXZfZG1hX2F0dHIgZGV2aWNlX2dldF9kbWFfYXR0cihjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDAtXFxuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oOjUwMTpjb25zdCB2b2lkICpkZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5LmgtNTAyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDowNS43NDk3NjQ2NzlaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk5ODA3NTM2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAqKlxuXG5Pa2F5LCB0aW1lIHRvIHJldmlzaXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgcm91dGluZSBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgdGhlIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBzeXN0ZW0uIExldCBtZSBxdWlja2x5IHN0ZXAgdGhyb3VnaCBpdCBhZ2Fpbiwga2VlcGluZyBhIG1lbnRhbCBjaGVja2xpc3Qgb2YgdGhlIGtleSBhcmVhcyBJJ2xsIHdhbnQgdG8gZm9jdXMgb246IHRoZSBkYXRhIHN0cnVjdHVyZSBpdCBvcGVyYXRlcyBvbiwgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMgSSBzaG91bGQgYmUgb24gdGhlIGxvb2tvdXQgZm9yLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCBmb3IgbWF0Y2hpbmcgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBoYW5kbGluZyBvZiBlZGdlIGNhc2VzIGFuZCBlcnJvciBjb25kaXRpb25zLCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgYnVncyBvciBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBsdXJraW5nIHdpdGhpbiB0aGUgY29kZS4gTGV0J3Mgc2VlIGlmIHRoZSBsb2dpYyBmbG93IHJlbWFpbnMgYXMgSSByZW1lbWJlciBpdCwgb3IgaWYgdGhvc2UgcmVjZW50IGNoYW5nZXMgaW50cm9kdWNlZCBhbnkgbmV3IHdyaW5rbGVzLiBVbHRpbWF0ZWx5LCBteSBhaW0gaGVyZSBpcyB0byBlaXRoZXIgdmFsaWRhdGUgdGhhdCB0aGUgZnVuY3Rpb24gcmVtYWlucyByb2J1c3QgYW5kIGVmZmljaWVudCwgb3IgdG8gaWRlbnRpZnkgcG90ZW50aWFsIGFyZWFzIHRoYXQgcmVxdWlyZSBmdXJ0aGVyIHNjcnV0aW55IG9yIG9wdGltaXphdGlvbi4gSSBzaG91bGQgZW5zdXJlIHRoZSBkYXRhIHN0cnVjdHVyZXMgaXQgcmVsaWVzIG9uIGFyZSBzdGlsbCBhcHByb3ByaWF0ZSBmb3IgdGhlIGN1cnJlbnQgc2NhbGUgb2Ygb3BlcmF0aW9ucy4gUmlnaHQsIGxldCdzIGRpdmUgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4MjU3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MDkuNzQ3ODQzNTY3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMzQ5LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMzQ5OlxcdGNvbnN0IHZvaWQgKmRldmljZV9nZXRfbWF0Y2hfZGF0YShjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMTM1MDpcXHR7XFxuMTM1MTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfcHRyX29wKGRldl9md25vZGUoZGV2KSwgZGV2aWNlX2dldF9tYXRjaF9kYXRhLCBkZXYpO1xcbjEzNTI6XFx0fVxcbjEzNTM6XFx0RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9tYXRjaF9kYXRhKTtcXG4xMzU0OlxcdFxcbjEzNTU6XFx0c3RhdGljIHVuc2lnbmVkIGludCBmd25vZGVfZ3JhcGhfZGV2Y29uX21hdGNoZXMoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4xMzU2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKmNvbl9pZCwgdm9pZCAqZGF0YSxcXG4xMzU3OlxcdFxcdFxcdFxcdFxcdFxcdFxcdGRldmNvbl9tYXRjaF9mbl90IG1hdGNoLFxcbjEzNTg6XFx0XFx0XFx0XFx0XFx0XFx0XFx0dm9pZCAqKm1hdGNoZXMsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjA5Ljc0Nzk1NDk3N1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTkyODc1NDk4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IHNlZSBpdCdzIGNhbGxpbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAgb24gYGZ3bm9kZWAuIElmIGBkZXZfZndub2RlKGRldilgIGlzIE5VTEwsIHRoZSB3aG9sZSB0aGluZyByZXR1cm5zIE5VTEwuICBUaGUgcXVlc3Rpb24gaXMsIHdoZW4gKmlzbid0KiBgZGV2X2Z3bm9kZShkZXYpYCBOVUxMPyAgRm9yIGFuIEkyQyBkZXZpY2UgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSwgaXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIHJpZ2h0PyBVc2Vyc3BhY2UgY3JlYXRpb24gZG9lc24ndCBhdHRhY2ggYW4gZndub2RlLlxuXG5CdXQgd2hhdCBhYm91dCBBQ1BJIGVudW1lcmF0aW9uPyBTeXprYWxsZXIgZG9lc24ndCB1c2UgY3VzdG9tIEFDUEkgdGFibGVzLCBzbyBuby4gRGV2aWNlIHRyZWU/IE5vcGUsIHNhbWUgaXNzdWUuIFdhaXQuLi4gYXJlIHRoZXJlIHdheXMgdG8gY3JlYXRlIFwic29mdHdhcmUgbm9kZXNcIiBmcm9tIHVzZXJzcGFjZSB0aGF0IEknbSBmb3JnZXR0aW5nPyBObywgbm90IHJlYWxseS4gU28sIGluIHRoZSBjb250ZXh0IG9mIFN5emthbGxlciwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgKnNob3VsZCogYWx3YXlzIHJldHVybiBOVUxMLlxuXG5JZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBOVUxMLCB0aGVuIGByYXdfbmNpYCBiZWNvbWVzIDAuIFRoYXQncyB0aGUga2V5LiAgV2l0aCBgcmF3X25jaWAgYXQgMCwgdGhlIGRyaXZlciAqc2hvdWxkKiBiZWhhdmUgdGhlIHNhbWUgYXMgYmVmb3JlLiBMZXQncyBtYWtlIHN1cmUuXG5cbk9rYXksIGNoZWNraW5nIGZvciBvdGhlciBjaGFuZ2VzLi4uICBgZGV2bV9yZWd1bGF0b3JfZ2V0X2VuYWJsZV9vcHRpb25hbGAgYW5kIGBkZXZtX2Nsa19nZXRfb3B0aW9uYWxfZW5hYmxlZGAgYXJlIGNhbGxlZC4gIFRob3NlIGFyZSBvcHRpb25hbCBjYWxscywgYW5kIGlmIHRob3NlIHJlZ3VsYXRvcnMgb3IgY2xvY2tzIGFyZW4ndCB0aGVyZSAod2hpY2ggdGhleSB3b24ndCBiZSksIGl0IGNvbnRpbnVlcy4gVGhlbiBpdCBnZXRzIHRoZSBcImVzZS1wcmVzZW50XCIgcHJvcGVydHkgd2l0aCBgZGV2aWNlX3Byb3BlcnR5X3JlYWRfYm9vbGAsIHdoaWNoIHdhcyBhbHJlYWR5IHRoZXJlLiAgVGhlbiB3ZSBoaXQgYG5kbGNfcHJvYmVgLlxuXG5JbiBgbmRsY19wcm9iZWAsIHNpbmNlIGByYXdfbmNpYCBpcyAwLCB3ZSdyZSBwYXNzaW5nIGBTVF9OQ0lfRlJBTUVfSEVBRFJPT01gLiBUaGVuIGl0IHNldHMgYHBoeS1cdTAwM2VuZGxjLVx1MDAzZXJhd19uY2lgIHRvIGBwaHktXHUwMDNlcmF3X25jaWAgd2hpY2ggaXMgemVyby4gU28sIGBuZGxjLVx1MDAzZXJhd19uY2lgIGlzIDAuXG5cbkxvb2tpbmcgYXQgYG5kbGNfY2xvc2VgLCBgbmRsY19zZW5kYCwgYGxsdF9uZGxjX3NlbmRfcXVldWVgLCBgbGx0X25kbGNfcmN2X3F1ZXVlYCwgYW5kIGBzdF9uY2lfZGlzY292ZXJfc2VgLCB0aGV5IGFsbCBjaGVjayBgcmF3X25jaWAgYW5kIGFjdCBhY2NvcmRpbmdseSwgYnV0IGByYXdfbmNpYCBpcyB6ZXJvLiBTbywgdGhleSBhbGwgYmVoYXZlIHRoZSBzYW1lIGFzIGJlZm9yZS5cblxuSXMgdGhlcmUgKmFueSogc2NlbmFyaW8gd2hlcmUgdGhpcyBjaGFuZ2UgZG9lcyBzb21ldGhpbmcgZnVuY3Rpb25hbD8gTm8sIGJlY2F1c2UgYHJhd19uY2lgIGlzIGFsd2F5cyB6ZXJvLlxuXG5IYW5nIG9uLi4uIGNvdWxkIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgICpldmVyKiByZXR1cm4gc29tZXRoaW5nIG90aGVyIHRoYW4gTlVMTCwgZXZlbiBpZiB3ZSdyZSBtaXNzaW5nIHNvbWV0aGluZyBhYm91dCB0aGUgZndub2RlPyBXaGF0IGlmIHRoZSBkcml2ZXIgaXRzZWxmIGhhcyBhbiBgb2ZfbWF0Y2hfdGFibGVgIGFuZCBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBmYWxscyBiYWNrIHRvIHRoYXQ/XG5cbldhaXQsIG5vLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCAqZG9lc24ndCogZmFsbCBiYWNrIHRvIHRoZSBkcml2ZXIncyBtYXRjaCBkYXRhLlxuXG5Pa2F5LCBsZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBjb2RlIGZvciBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBhZ2FpbiwgaW4gYGRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jYC4gIFl1cDogSXQganVzdCBjYWxscyBgZndub2RlX2NhbGxfcHRyX29wYCBvbiBgZGV2X2Z3bm9kZShkZXYpYC4gVGhlcmUgaXMgbm8gZmFsbGJhY2sgdG8gdGhlIGRyaXZlciBkYXRhLlxuXG5Ob3cgSSByZW1lbWJlciwgZGlkIHRoZXkgY2hhbmdlIHRoaXMgaW4gTGludXggNi4yIG9yIHNvIHRvIGhhdmUgc29tZSBmYWxsYmFjaz8gTGV0IG1lIGNoZWNrIHF1aWNrbHkgaWYgdGhlcmUgaXMgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYC5cblxuTm9wZS4gSXQgc2hvdWxkICphbHdheXMqIGJlIE5VTEwsIGFuZCB0aGUgY29kZSBzaG91bGQgYmVoYXZlIGV4YWN0bHkgdGhlIHNhbWUgd2F5LiBUaGUgY2hhbmdlIGlzIGZ1bmN0aW9uYWxseSBpbmVydCBpbiBvdXIgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ4NzM5LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MjEuNjc2NzEzNDEzWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzEzMTIxNDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRldmljZV9nZXRfbWF0Y2hfZGF0YVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDkyNjUgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYz00NzM9c3RhdGljIGludCBpbXhfbW1kY19wZXJmX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgdm9pZCBfX2lvbWVtICptbWRjX2Jhc2UsXFxuLS1cXG5hcmNoL2FybS9tYWNoLWlteC9tbWRjLmMtNTA5LVxcdHBtdV9tbWRjLVxcdTAwM2VtbWRjX2lwZ19jbGsgPSBtbWRjX2lwZ19jbGs7XFxuYXJjaC9hcm0vbWFjaC1pbXgvbW1kYy5jOjUxMDpcXHRwbXVfbW1kYy1cXHUwMDNlZGV2dHlwZV9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvYXJtL21hY2gtaW14L21tZGMuYy01MTEtXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzgzeHgvc3VzcGVuZC5jPTM0ND1zdGF0aWMgaW50IHBtY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUwLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmM6MzUxOlxcdHR5cGUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9mZGV2LVxcdTAwM2VkZXYpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4eC9zdXNwZW5kLmMtMzUyLVxcdGlmICghdHlwZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYz0yMD1zdGF0aWMgaW50IGNwbV9ncGlvX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuYXJjaC9wb3dlcnBjL3N5c2Rldi9jcG1fZ3Bpby5jLTIyLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZvZmRldi1cXHUwMDNlZGV2O1xcbmFyY2gvcG93ZXJwYy9zeXNkZXYvY3BtX2dwaW8uYzoyMzpcXHRpbnQgKCpncF9hZGQpKHN0cnVjdCBkZXZpY2UgKmRldikgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbV9ncGlvLmMtMjQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYz0zOTM9c3RhdGljIGludCBmc2xfb2ZfbXNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldilcXG4tLVxcbmFyY2gvcG93ZXJwYy9zeXNkZXYvZnNsX21zaS5jLTQwMy1cXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYzo0MDQ6XFx0ZmVhdHVyZXMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNmRldi1cXHUwMDNlZGV2KTtcXG5hcmNoL3Bvd2VycGMvc3lzZGV2L2ZzbF9tc2kuYy00MDUtXFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYz00NjA9c3RhdGljIGludCBzYWJyZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zYWJyZS5jLTQ3MC1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYzo0NzE6XFx0aHVtbWluZ2JpcmRfcCA9ICh1aW50cHRyX3QpZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZvcC1cXHUwMDNlZGV2KTtcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2FicmUuYy00NzItXFx0aWYgKCFodW1taW5nYmlyZF9wKSB7XFxuLS1cXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmM9MTQ2NT1zdGF0aWMgaW50IHNjaGl6b19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvcClcXG5hcmNoL3NwYXJjL2tlcm5lbC9wY2lfc2NoaXpvLmMtMTQ2Ni17XFxuYXJjaC9zcGFyYy9rZXJuZWwvcGNpX3NjaGl6by5jOjE0Njc6XFx0dW5zaWduZWQgbG9uZyBjaGlwX3R5cGUgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNm9wLVxcdTAwM2VkZXYpO1xcbmFyY2gvc3BhcmMva2VybmVsL3BjaV9zY2hpem8uYy0xNDY4LVxcbi0tXFxuZHJpdmVycy9hY3BpL2J1cy5jPTEwODE9RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9tYXRjaF9kZXZpY2UpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMDgyLVxcbmRyaXZlcnMvYWNwaS9idXMuYzoxMDgzOmNvbnN0IHZvaWQgKmFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTA4NC17XFxuLS1cXG5kcml2ZXJzL2FjcGkvYnVzLmMtMTEwMS19XFxuZHJpdmVycy9hY3BpL2J1cy5jOjExMDI6RVhQT1JUX1NZTUJPTF9HUEwoYWNwaV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbmRyaXZlcnMvYWNwaS9idXMuYy0xMTAzLVxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM9MTU5Nj1zdGF0aWMgY29uc3Qgdm9pZCAqXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmM6MTU5NzphY3BpX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNTk4LVxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jLTE1OTkte1xcbmRyaXZlcnMvYWNwaS9wcm9wZXJ0eS5jOjE2MDA6XFx0cmV0dXJuIGFjcGlfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTYwMS19XFxuLS1cXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYz0xNzI1PXN0YXRpYyBpbnQgYWNwaV9md25vZGVfaXJxX2dldChjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbi0tXFxuZHJpdmVycy9hY3BpL3Byb3BlcnR5LmMtMTc0MC1cXHRcXHQuZGV2aWNlX2lzX2F2YWlsYWJsZSA9IGFjcGlfZndub2RlX2RldmljZV9pc19hdmFpbGFibGUsIFxcXFxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYzoxNzQxOlxcdFxcdC5kZXZpY2VfZ2V0X21hdGNoX2RhdGEgPSBhY3BpX2Z3bm9kZV9kZXZpY2VfZ2V0X21hdGNoX2RhdGEsIFxcXFxcXG5kcml2ZXJzL2FjcGkvcHJvcGVydHkuYy0xNzQyLVxcdFxcdC5kZXZpY2VfZG1hX3N1cHBvcnRlZCA9XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYz0xMDk9c3RhdGljIHN0cnVjdCBhaGNpX2hvc3RfcHJpdiAqYWhjaV9kd2NfZ2V0X3Jlc291cmNlcyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9kd2MuYy0xMTgtXFx0ZHByaXYtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbmRyaXZlcnMvYXRhL2FoY2lfZHdjLmM6MTE5OlxcdGRwcml2LVxcdTAwM2VwZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX2R3Yy5jLTEyMC1cXHRpZiAoIWRwcml2LVxcdTAwM2VwZGF0YSlcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM9ODU4PXN0YXRpYyBpbnQgaW14X2FoY2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmMtODcyLVxcdGlteHByaXYtXFx1MDAzZWZpcnN0X3RpbWUgPSB0cnVlO1xcbmRyaXZlcnMvYXRhL2FoY2lfaW14LmM6ODczOlxcdGlteHByaXYtXFx1MDAzZXR5cGUgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX2lteC5jLTg3NC1cXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYz0xODU9c3RhdGljIGludCBhaGNpX212ZWJ1X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX212ZWJ1LmMtMTkwLVxcbmRyaXZlcnMvYXRhL2FoY2lfbXZlYnUuYzoxOTE6XFx0cGRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9hdGEvYWhjaV9tdmVidS5jLTE5Mi1cXHRpZiAoIXBkYXRhKVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jPTQyPXN0YXRpYyBpbnQgYWhjaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jLTYwLVxcbmRyaXZlcnMvYXRhL2FoY2lfcGxhdGZvcm0uYzo2MTpcXHRwb3J0ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdGEvYWhjaV9wbGF0Zm9ybS5jLTYyLVxcdGlmICghcG9ydClcXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfdGVncmEuYz01MTU9c3RhdGljIGludCB0ZWdyYV9haGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmMtNTMyLVxcdHRlZ3JhLVxcdTAwM2VwZGV2ID0gcGRldjtcXG5kcml2ZXJzL2F0YS9haGNpX3RlZ3JhLmM6NTMzOlxcdHRlZ3JhLVxcdTAwM2Vzb2MgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9hdGEvYWhjaV90ZWdyYS5jLTUzNC1cXG4tLVxcbmRyaXZlcnMvYXRhL2FoY2lfeGdlbmUuYz03Mjc9c3RhdGljIGludCB4Z2VuZV9haGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmMtNzc1LVxcdGlmIChkZXYtXFx1MDAzZW9mX25vZGUpIHtcXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmM6Nzc2OlxcdFxcdHZlcnNpb24gPSAodW5zaWduZWQgbG9uZylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2F0YS9haGNpX3hnZW5lLmMtNzc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvYXRhL3NhdGFfcmNhci5jPTg1OT1zdGF0aWMgaW50IHNhdGFfcmNhcl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODczLVxcbmRyaXZlcnMvYXRhL3NhdGFfcmNhci5jOjg3NDpcXHRwcml2LVxcdTAwM2V0eXBlID0gKHVuc2lnbmVkIGxvbmcpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdGEvc2F0YV9yY2FyLmMtODc1LVxcbi0tXFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYz0yMjg9c3RhdGljIGludCBpbWdfYXNjaWlfbGNkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5jLTIzMC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvYXV4ZGlzcGxheS9pbWctYXNjaWktbGNkLmM6MjMxOlxcdGNvbnN0IHN0cnVjdCBpbWdfYXNjaWlfbGNkX2NvbmZpZyAqY2ZnID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9hdXhkaXNwbGF5L2ltZy1hc2NpaS1sY2QuYy0yMzItXFx0c3RydWN0IGltZ19hc2NpaV9sY2RfY3R4ICpjdHg7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz0xMzQ3PUVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzQ4LVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEzNDk6Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMzUwLXtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYzoxMzUxOlxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTM1Mi19XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTM1MzpFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEzNTQtXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYz04Mjg9c3RhdGljIGludCBidG10a3VhcnRfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTgzNy1cXG5kcml2ZXJzL2JsdWV0b290aC9idG10a3VhcnQuYzo4Mzg6XFx0YmRldi1cXHUwMDNlZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2c2VyZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2J0bXRrdWFydC5jLTgzOS1cXHRpZiAoIWJkZXYtXFx1MDAzZWRhdGEpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYz0xODIxPXN0YXRpYyBpbnQgbnhwX3NlcmRldl9wcm9iZShzdHJ1Y3Qgc2VyZGV2X2RldmljZSAqc2VyZGV2KVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvYnRueHB1YXJ0LmMtMTgzMS1cXG5kcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYzoxODMyOlxcdG54cGRldi1cXHUwMDNlbnhwX2RhdGEgPSAoc3RydWN0IGJ0bnhwdWFydF9kYXRhICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvYnRueHB1YXJ0LmMtMTgzMy1cXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYz02ODA9c3RhdGljIGludCBhbWxfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk3LVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYzo2OTg6XFx0YW1sZGV2LVxcdTAwM2VhbWxfZGV2X2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnNlcmRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYW1sLmMtNjk5LVxcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2JjbS5jPTE1MDU9c3RhdGljIGludCBiY21fc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmMtMTU0NS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmM6MTU0NjpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGJjbWRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtLmMtMTU0Ny1cXHRpZiAoZGF0YSkge1xcbi0tXFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX2g1LmM9ODU1PXN0YXRpYyBpbnQgaDVfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYy04ODMtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfaDUuYzo4ODQ6XFx0XFx0ZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9oNS5jLTg4NS1cXHRcXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jPTQ2Mj1zdGF0aWMgaW50IG1ydmxfc2VyZGV2X3Byb2JlKHN0cnVjdCBzZXJkZXZfZGV2aWNlICpzZXJkZXYpXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfbXJ2bC5jLTQ2NC1cXHRzdHJ1Y3QgbXJ2bF9zZXJkZXYgKm1ydmxkZXY7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYzo0NjU6XFx0Y29uc3Qgc3RydWN0IGhjaV91YXJ0X3Byb3RvICptcnZsX3Byb3RvID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX21ydmwuYy00NjYtXFxuLS1cXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmM9MjM5Mj1zdGF0aWMgaW50IHFjYV9zZXJkZXZfcHJvYmUoc3RydWN0IHNlcmRldl9kZXZpY2UgKnNlcmRldilcXG4tLVxcbmRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9xY2EuYy0yNDA0LVxcdHFjYWRldi1cXHUwMDNlc2VyZGV2X2h1LnNlcmRldiA9IHNlcmRldjtcXG5kcml2ZXJzL2JsdWV0b290aC9oY2lfcWNhLmM6MjQwNTpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzZXJkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9ibHVldG9vdGgvaGNpX3FjYS5jLTI0MDYtXFx0c2VyZGV2X2RldmljZV9zZXRfZHJ2ZGF0YShzZXJkZXYsIHFjYWRldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmM9NDk9c3RhdGljIGludCBpbXhfYWlwc3R6X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9pbXgtYWlwc3R6LmMtNjItXFxuZHJpdmVycy9idXMvaW14LWFpcHN0ei5jOjYzOlxcdGRhdGEtXFx1MDAzZWRlZmF1bHRfY2ZnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL2lteC1haXBzdHouYy02NC1cXG4tLVxcbmRyaXZlcnMvYnVzL2lteC13ZWltLmM9MjA2PXN0YXRpYyBpbnQgd2VpbV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvYnVzL2lteC13ZWltLmMtMjA3LXtcXG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jOjIwODpcXHRjb25zdCBzdHJ1Y3QgaW14X3dlaW1fZGV2dHlwZSAqZGV2dHlwZSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2J1cy9pbXgtd2VpbS5jLTIwOS1cXHRpbnQgcmV0ID0gMCwgaGF2ZV9jaGlsZCA9IDA7XFxuLS1cXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmM9Nzc9c3RhdGljIHZvaWQgc2ltcGxlX3BtX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL2J1cy9zaW1wbGUtcG0tYnVzLmMtNzgte1xcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYzo3OTpcXHRjb25zdCB2b2lkICpkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvYnVzL3NpbXBsZS1wbS1idXMuYy04MC1cXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmM9NjA1PXN0YXRpYyBpbnQgc3RtMzJfcmlmc2NfcmVnaXN0ZXJfZGVidWdmcyhzdHJ1Y3Qgc3RtMzJfZmlyZXdhbGxfY29udHJvbGxlciAqcmlmc2NfY29udHJvbGxlcixcXG4tLVxcbmRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMtNjE4LVxcdHJpZnNjX3ByaXYtXFx1MDAzZW5iX3Jpc2FsID0gbmJfcmlzYWw7XFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYzo2MTk6XFx0cmlmc2NfcHJpdi1cXHUwMDNlcmVzX25hbWVzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKHJpZnNjX2NvbnRyb2xsZXItXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvc3RtMzJfcmlmc2MuYy02MjAtXFxuLS1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmM9Mjg2Mz1zdGF0aWMgaW50IHN5c2NfaW5pdF9tYXRjaChzdHJ1Y3Qgc3lzYyAqZGRhdGEpXFxuLS1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmMtMjg2Ni1cXG5kcml2ZXJzL2J1cy90aS1zeXNjLmM6Mjg2NzpcXHRjYXAgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGRhdGEtXFx1MDAzZWRldik7XFxuZHJpdmVycy9idXMvdGktc3lzYy5jLTI4NjgtXFx0aWYgKCFjYXApXFxuLS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYz0yNTY9c3RhdGljIGludCBzaWZpdmVfY2NhY2hlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NhY2hlL3NpZml2ZV9jY2FjaGUuYy0yNjEtXFxuZHJpdmVycy9jYWNoZS9zaWZpdmVfY2NhY2hlLmM6MjYyOlxcdHF1aXJrcyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2FjaGUvc2lmaXZlX2NjYWNoZS5jLTI2My1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmM9MTE0PXN0YXRpYyBpbnQgYXRtZWxfdHJuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9hdG1lbC1ybmcuYy0xMzAtXFx0XFx0cmV0dXJuIFBUUl9FUlIodHJuZy1cXHUwMDNlY2xrKTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2F0bWVsLXJuZy5jOjEzMTpcXHRkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYXRtZWwtcm5nLmMtMTMyLVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vYmNtMjgzNS1ybmcuYz0xNDM9c3RhdGljIGludCBiY20yODM1X3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9iY20yODM1LXJuZy5jLTE3NS1cXHRcXHQvKiBDaGVjayBmb3Igcm5nIGluaXQgZnVuY3Rpb24sIGV4ZWN1dGUgaXQgKi9cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmM6MTc2OlxcdFxcdG9mX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2JjbTI4MzUtcm5nLmMtMTc3LVxcdFxcdGlmIChvZl9kYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jPTE4Mz1zdGF0aWMgaW50IGV4eW5vc190cm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmMtMTk0LVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vZXh5bm9zLXRybmcuYzoxOTU6XFx0dHJuZy1cXHUwMDNlZmxhZ3MgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9leHlub3MtdHJuZy5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYz04Mz1zdGF0aWMgaW50IGluZ2VuaWNfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2luZ2VuaWMtcm5nLmMtOTctXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9pbmdlbmljLXJuZy5jOjk4OlxcdHByaXYtXFx1MDAzZXZlcnNpb24gPSAoZW51bSBpbmdlbmljX3JuZ192ZXJzaW9uKSh1aW50cHRyX3Qpb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vaW5nZW5pYy1ybmcuYy05OS1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmM9ODY9c3RhdGljIGludCBtZXNvbl9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTYtXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tZXNvbi1ybmcuYzo5NzpcXHRwcml2ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbWVzb24tcm5nLmMtOTgtXFx0aWYgKCFwcml2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmM9MTY1PXN0YXRpYyBpbnQgbXRrX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmMtMTc2LVxcdHByaXYtXFx1MDAzZXJuZy5xdWFsaXR5ID0gOTAwO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbXRrLXJuZy5jOjE3NzpcXHRwcml2LVxcdTAwM2VmbGFncyA9ICh1bnNpZ25lZCBsb25nKWRldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL210ay1ybmcuYy0xNzgtXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jPTY5Nz1zdGF0aWMgaW50IG4ycm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9wKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9uMi1kcnYuYy03MDYtXFx0bnAtXFx1MDAzZW9wID0gb3A7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9uMi1kcnYuYzo3MDc6XFx0bnAtXFx1MDAzZWRhdGEgPSAoc3RydWN0IG4ycm5nX3RlbXBsYXRlICopZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZvcC1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL24yLWRydi5jLTcwOC1cXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vbnBjbS1ybmcuYz04OD1zdGF0aWMgaW50IG5wY21fcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTEyLVxcdHByaXYtXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9ucGNtLXJuZy5jOjExMzpcXHRwcml2LVxcdTAwM2VjbGtwID0gKHUzMikodWludHB0cl90KW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL25wY20tcm5nLmMtMTE0LVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jPTM3NT1zdGF0aWMgaW50IG9mX2dldF9vbWFwX3JuZ19kZXZpY2VfZGV0YWlscyhzdHJ1Y3Qgb21hcF9ybmdfZGV2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jLTM4MC1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29tYXAtcm5nLmM6MzgxOlxcdHByaXYtXFx1MDAzZXBkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwLXJuZy5jLTM4Mi1cXHRpZiAoIXByaXYtXFx1MDAzZXBkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmM9MTEwPXN0YXRpYyBpbnQgb21hcDNfcm9tX3JuZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIxLVxcdGRkYXRhLVxcdTAwM2VvcHMubmFtZSA9IFxcXCJvbWFwMy1yb21cXFwiO1xcbmRyaXZlcnMvY2hhci9od19yYW5kb20vb21hcDMtcm9tLXJuZy5jOjEyMjpcXHRkZGF0YS1cXHUwMDNlb3BzLnJlYWQgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9vbWFwMy1yb20tcm5nLmMtMTIzLVxcdGRkYXRhLVxcdTAwM2VvcHMucXVhbGl0eSA9IDkwMDtcXG4tLVxcbmRyaXZlcnMvY2hhci9od19yYW5kb20vcm9ja2NoaXAtcm5nLmM9Mzg1PXN0YXRpYyBpbnQgcmtfcm5nX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jLTM5NS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jOjM5NjpcXHRya19ybmctXFx1MDAzZXNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9yb2NrY2hpcC1ybmcuYy0zOTctXFx0cmtfcm5nLVxcdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApO1xcbi0tXFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYz01MzE9c3RhdGljIGludCBzdG0zMl9ybmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jLTU1Ny1cXG5kcml2ZXJzL2NoYXIvaHdfcmFuZG9tL3N0bTMyLXJuZy5jOjU1ODpcXHRwcml2LVxcdTAwM2VkYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jaGFyL2h3X3JhbmRvbS9zdG0zMi1ybmcuYy01NTktXFx0aWYgKCFwcml2LVxcdTAwM2VkYXRhKVxcbi0tXFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jPTIyNz1zdGF0aWMgaW50IG9mX2lwbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci9pcG1pL2lwbWlfc2lfcGxhdGZvcm0uYy0yNjgtXFx0bWVtc2V0KFxcdTAwMjZpbywgMCwgc2l6ZW9mKGlvKSk7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jOjI2OTpcXHRpby5zaV9pbmZvXFx0PSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL2lwbWkvaXBtaV9zaV9wbGF0Zm9ybS5jLTI3MC1cXHRpby5hZGRyX3NvdXJjZVxcdD0gU0lfREVWSUNFVFJFRTtcXG4tLVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19zcGlfbWFpbi5jPTI5Mj1zdGF0aWMgaW50IHRwbV90aXNfc3BpX2RyaXZlcl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk2LVxcbmRyaXZlcnMvY2hhci90cG0vdHBtX3Rpc19zcGlfbWFpbi5jOjI5NzpcXHRwcm9iZV9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZzcGktXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL3RwbS90cG1fdGlzX3NwaV9tYWluLmMtMjk4LVxcdGlmICghcHJvYmVfZnVuYykge1xcbi0tXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jPTY4OD1zdGF0aWMgaW50IGh3aWNhcF9kcnZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2hhci94aWxpbnhfaHdpY2FwL3hpbGlueF9od2ljYXAuYy02OTQtXFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jOjY5NTpcXHRjb25maWcgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jaGFyL3hpbGlueF9od2ljYXAveGlsaW54X2h3aWNhcC5jLTY5Ni1cXG4tLVxcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM9Mzg0PXN0YXRpYyBpbnQgYXNwZWVkX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTYtXFx0LyogU29DIGdlbmVyYXRpb25zIHNoYXJlIGNvbW1vbiBsYXlvdXRzIGJ1dCBoYXZlIGRpZmZlcmVudCBkaXZpc29ycyAqL1xcbmRyaXZlcnMvY2xrL2FzcGVlZC9jbGstYXNwZWVkLmM6NDE3OlxcdHNvY19kYXRhID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3BlZWQuYy00MTgtXFx0aWYgKCFzb2NfZGF0YSkge1xcbi0tXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM9ODcwPXN0YXRpYyBpbnQgYXN0MjcwMF9zb2NfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9hc3BlZWQvY2xrLWFzdDI3MDAuYy04OTYtXFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmM6ODk3OlxcdGNsa19kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvYXNwZWVkL2Nsay1hc3QyNzAwLmMtODk4LVxcdGlmICghY2xrX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9heHMxMHgvcGxsX2Nsb2NrLmM9MjE3PXN0YXRpYyBpbnQgYXhzMTB4X3BsbF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYy0yNDMtXFx0cGxsX2Nsay1cXHUwMDNlZGV2ID0gZGV2O1xcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYzoyNDQ6XFx0cGxsX2Nsay1cXHUwMDNlcGxsX2NmZyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2F4czEweC9wbGxfY2xvY2suYy0yNDUtXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYz0yMjY3PXN0YXRpYyBpbnQgYmNtMjgzNV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2JjbS9jbGstYmNtMjgzNS5jLTIyNzctXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1iY20yODM1LmM6MjI3ODpcXHRwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTI4MzUuYy0yMjc5LVxcdGlmICghcGRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jPTQ4ND1zdGF0aWMgaW50IGNsa19iY202M3h4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5MC1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jOjQ5MTpcXHR0YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9iY20vY2xrLWJjbTYzeHgtZ2F0ZS5jLTQ5Mi1cXHRpZiAoIXRhYmxlKVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jPTQwMz1zdGF0aWMgaW50IHNyX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwNi1cXG5kcml2ZXJzL2Nsay9iY20vY2xrLXNyLmM6NDA3OlxcdHByb2JlX2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvYmNtL2Nsay1zci5jLTQwOC1cXHRpZiAoIXByb2JlX2Z1bmMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstYXhpLWNsa2dlbi5jPTU2Nj1zdGF0aWMgaW50IGF4aV9jbGtnZW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmMtNTc3LVxcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmM6NTc4OlxcdGRmbHRfbGltaXRzID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1heGktY2xrZ2VuLmMtNTc5LVxcdGlmICghZGZsdF9saW1pdHMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmM9NTk2PXN0YXRpYyBzdHJ1Y3QgY2xrX2h3ICplbjc1MjNfcmVnaXN0ZXJfcGNpZV9jbGsoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTU5OC17XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jOjU5OTpcXHRjb25zdCBzdHJ1Y3QgZW5fY2xrX3NvY19kYXRhICpzb2NfZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYy02MDAtXFx0c3RydWN0IGNsa19pbml0X2RhdGEgaW5pdCA9IHtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYz05NjA9c3RhdGljIGludCBlbjc1MjNfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZW43NTIzLmMtOTY2LVxcbmRyaXZlcnMvY2xrL2Nsay1lbjc1MjMuYzo5Njc6XFx0c29jX2RhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLWVuNzUyMy5jLTk2OC1cXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1leWVxLmM9MzM4PXN0YXRpYyBpbnQgZXFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jLTM0Ny1cXG5kcml2ZXJzL2Nsay9jbGstZXllcS5jOjM0ODpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWV5ZXEuYy0zNDktXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWZzbC1mbGV4c3BpLmM9NDc9c3RhdGljIGludCBmc2xfZmxleHNwaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jLTU3LVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtZmxleHNwaS5jOjU4OlxcdGRpdnMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLWZsZXhzcGkuYy01OS1cXHRpZiAoIWRpdnMpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jPTYxPXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcmVnaXN0ZXIoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkIF9faW9tZW0gKmJhc2UsXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY2LXtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jOjY3OlxcdGNvbnN0IHN0cnVjdCBmc2xfc2FpX2RhdGEgKmRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstZnNsLXNhaS5jLTY4LVxcdHN0cnVjdCBjbGtfcGFyZW50X2RhdGEgcGRhdGEgPSB7IC5pbmRleCA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmM9MTA0PXN0YXRpYyBpbnQgZnNsX3NhaV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtMTA2LVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9jbGsvY2xrLWZzbC1zYWkuYzoxMDc6XFx0Y29uc3Qgc3RydWN0IGZzbF9zYWlfZGF0YSAqZGF0YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1mc2wtc2FpLmMtMTA4LVxcdHN0cnVjdCBmc2xfc2FpX2NsayAqc2FpX2NsaztcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jPTMwNT1zdGF0aWMgaW50IGhzZGtfcGxsX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWhzZGstcGxsLmMtMzM0LVxcdHBsbF9jbGstXFx1MDAzZWRldiA9IGRldjtcXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYzozMzU6XFx0cGxsX2Nsay1cXHUwMDNlcGxsX2RldmRhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstaHNkay1wbGwuYy0zMzYtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jPTI1MD1zdGF0aWMgaW50IGxhbjk2NnhfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jLTI1OC1cXG5kcml2ZXJzL2Nsay9jbGstbGFuOTY2eC5jOjI1OTpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvY2xrLWxhbjk2NnguYy0yNjAtXFx0aWYgKCFkYXRhKVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvY2huYWdhci5jPTIzOD1zdGF0aWMgaW50IGxvY2huYWdhcl9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYy0yNTQtXFx0cHJpdi1cXHUwMDNlcmVnbWFwID0gZGV2X2dldF9yZWdtYXAoZGV2LVxcdTAwM2VwYXJlbnQsIE5VTEwpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYzoyNTU6XFx0Y29uZiA9IChzdHJ1Y3QgbG9jaG5hZ2FyX2NvbmZpZyAqKWRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYy0yNTYtXFxuLS1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM9MzU1PXN0YXRpYyBpbnQgbG9vbmdzb24yX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLWxvb25nc29uMi5jLTM2My1cXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmM6MzY0OlxcdGRhdGEgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmMtMzY1LVxcdGlmICghZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2Nsay1wYWxtYXMuYz0yMzA9c3RhdGljIGludCBwYWxtYXNfY2xrc19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzNy1cXG5kcml2ZXJzL2Nsay9jbGstcGFsbWFzLmM6MjM4OlxcdG1hdGNoX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvY2xrLXBhbG1hcy5jLTIzOS1cXHRpZiAoIW1hdGNoX2RhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYz03NDI9c3RhdGljIGludCBkYTh4eF9jZmdjaGlwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9kYXZpbmNpL2RhOHh4LWNmZ2NoaXAuYy03NDgtXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmM6NzQ5OlxcdGNsa19pbml0ID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvZGF2aW5jaS9kYTh4eC1jZmdjaGlwLmMtNzUwLVxcdGlmIChjbGtfaW5pdCkge1xcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYz04NjE9c3RhdGljIGludCBkYXZpbmNpX3BsbF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYy04NjctXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wbGwuYzo4Njg6XFx0cGxsX2luaXQgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9kYXZpbmNpL3BsbC5jLTg2OS1cXHRpZiAoIXBsbF9pbml0IFxcdTAwMjZcXHUwMDI2IHBkZXYtXFx1MDAzZWlkX2VudHJ5KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYz01MTM9c3RhdGljIGludCBkYXZpbmNpX3BzY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MTktXFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYzo1MjA6XFx0aW5pdF9kYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvZGF2aW5jaS9wc2MuYy01MjEtXFx0aWYgKCFpbml0X2RhdGEgXFx1MDAyNlxcdTAwMjYgcGRldi1cXHUwMDNlaWRfZW50cnkpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYz03ODQ9c3RhdGljIGludCBoaTM1NTlhdjEwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNTU5YS5jLTc5MS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYzo3OTI6XFx0Y3JnLVxcdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzU1OWEuYy03OTMtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NjAuYz02MTA9c3RhdGljIGludCBoaTM2NjBfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jLTYxNS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jOjYxNjpcXHRpbml0X2Z1bmMgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY2xrLWhpMzY2MC5jLTYxNy1cXHRpZiAoIWluaXRfZnVuYylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jbGstaGkzNjcwLmM9OTg5PXN0YXRpYyBpbnQgaGkzNjcwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYy05OTQtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYzo5OTU6XFx0aW5pdF9mdW5jID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2Nsay1oaTM2NzAuYy05OTYtXFx0aWYgKCFpbml0X2Z1bmMpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmM9MjYxPXN0YXRpYyBpbnQgaGkzNTE2Y3YzMDBfY3JnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjY4LVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNTE2Y3YzMDAuYzoyNjk6XFx0Y3JnLVxcdTAwM2VmdW5jcyA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9oaXNpbGljb24vY3JnLWhpMzUxNmN2MzAwLmMtMjcwLVxcdGlmICghY3JnLVxcdTAwM2VmdW5jcylcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYz0zNDQ9c3RhdGljIGludCBoaTM3OThjdjIwMF9jcmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTEtXFxuZHJpdmVycy9jbGsvaGlzaWxpY29uL2NyZy1oaTM3OThjdjIwMC5jOjM1MjpcXHRjcmctXFx1MDAzZWZ1bmNzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL2hpc2lsaWNvbi9jcmctaGkzNzk4Y3YyMDAuYy0zNTMtXFx0aWYgKCFjcmctXFx1MDAzZWZ1bmNzKVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jPTMzMj1zdGF0aWMgaW50IGlteDhfYWNtX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4LWFjbS5jLTM1MS1cXHRwcml2LVxcdTAwM2VyZWcgPSBiYXNlO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OC1hY20uYzozNTI6XFx0cHJpdi1cXHUwMDNlc29jX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDgtYWNtLmMtMzUzLVxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHByaXYpO1xcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYz0yODY9c3RhdGljIGludCBpbXg4cXhwX2xwY2dfY2xrX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jLTMwMy1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAtbHBjZy5jOjMwNDpcXHRzc19scGNnID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLWxwY2cuYy0zMDUtXFx0aWYgKCFzc19scGNnKVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4cXhwLmM9MTMwPXN0YXRpYyBpbnQgaW14OHF4cF9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHF4cC5jLTEzNS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYzoxMzY6XFx0cnNyY190YWJsZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDhxeHAuYy0xMzctXFx0cmV0ID0gaW14X2Nsa19zY3VfaW5pdChjY21fbm9kZSwgcnNyY190YWJsZSk7XFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYz01MzY9c3RhdGljIGludCBpbXg4dWxwX2Nsa19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg4dWxwLmMtNTM5LVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OHVscC5jOjU0MDpcXHRwcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDh1bHAuYy01NDEtXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmM9Mjc0PXN0YXRpYyBpbnQgaW14OTNfY2xvY2tzX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDkzLmMtMjgxLVxcdGludCBpLCByZXQ7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jOjI4MjpcXHRjb25zdCB1bnNpZ25lZCBsb25nIHBsYXQgPSAodW5zaWduZWQgbG9uZylkZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5My5jLTI4My1cXG4tLVxcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jPTM1MD1zdGF0aWMgaW50IGlteDk1X2JjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9pbXgvY2xrLWlteDk1LWJsay1jdGwuYy0zODEtXFxuZHJpdmVycy9jbGsvaW14L2Nsay1pbXg5NS1ibGstY3RsLmM6MzgyOlxcdGJjLVxcdTAwM2VwZGF0YSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xcbmRyaXZlcnMvY2xrL2lteC9jbGstaW14OTUtYmxrLWN0bC5jLTM4My1cXHRpZiAoIWJjLVxcdTAwM2VwZGF0YSlcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYz0xMTQ9c3RhdGljIGludCB0aV9zeXNjb25fZ2F0ZV9jbGtfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL2tleXN0b25lL3N5c2Nvbi1jbGsuYy0xMjMtXFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jOjEyNDpcXHRkYXRhID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldik7XFxuZHJpdmVycy9jbGsva2V5c3RvbmUvc3lzY29uLWNsay5jLTEyNS1cXHRpZiAoIWRhdGEpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQyNzAxLmM9MTAwNz1zdGF0aWMgaW50IGNsa19tdDI3MDFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDExLVxcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYzoxMDEyOlxcdGNsa19pbml0ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvY2xrL21lZGlhdGVrL2Nsay1tdDI3MDEuYy0xMDEzLVxcdGlmICghY2xrX2luaXQpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmM9ODQzPXN0YXRpYyBpbnQgY2xrX210Njc2NV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc2NS5jLTg0Ny1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmM6ODQ4OlxcdGNsa19wcm9iZSA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzY1LmMtODQ5LVxcdGlmICghY2xrX3Byb2JlKVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jPTEyNzc9c3RhdGljIGludCBjbGtfbXQ2Nzc5X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmMtMTI4MS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzc5LmM6MTI4MjpcXHRjbGtfcHJvYmUgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc3OS5jLTEyODMtXFx0aWYgKCFjbGtfcHJvYmUpXFxuLS1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmM9Njc5PXN0YXRpYyBpbnQgY2xrX210Njc5N19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10Njc5Ny5jLTY4My1cXG5kcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2Nzk3LmM6Njg0OlxcdGNsa19pbml0ID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDoyMy4zODk4NDAyNTJaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3MTM3ODg0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgRGV2aWNlIE1hdGNoaW5nIGluIHRoZSBLZXJuZWwqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgb3JpZ2luIG9mIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBIbW0sIGl0IGxvb2tzIGxpa2UgdGhlIGRlZmluaXRpdmUgZGVmaW5pdGlvbiByZXNpZGVzIGluIGBkcml2ZXJzL2Jhc2UvcHJvcGVydHkuY2AuIEdvb2QsIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGRlZmluaXRpb25zIGZsb2F0aW5nIGFyb3VuZCDigJMgbm8sIHRoYXQncyB0aGUgb25seSBvbmUuIEFuZCBpdCBzZWVtcyB0aGF0IGl0J3MganVzdCB1dGlsaXppbmcgYGZ3bm9kZV9jYWxsX3B0cl9vcGAuXG5cbk5vdywgSSdtIHdvbmRlcmluZyBpZiBgZGV2LVx1MDAzZWRyaXZlci1cdTAwM2VvZl9tYXRjaF90YWJsZWAgaXMgYmVpbmcgYWNjZXNzZWQgZGlyZWN0bHkgd2l0aGluIGBpMmNfZGV2aWNlX3Byb2JlYC4gVGhlIHN0cnVjdHVyZSBvZiBJMkMgcHJvYmVzIGNhbiBzb21ldGltZXMgYmUgdHJpY2t5LiBBaCwgeWVzLCBgaTJjX2RldmljZV9wcm9iZWAgY2FsbHMgYGkyY19vZl9tYXRjaF9kZXZpY2VgLiBCdXQgZG9lcyBpdCBzZXQgYGNsaWVudC1cdTAwM2VkZXYub2Zfbm9kZWA/IE5vLCBpdCBkb2Vzbid0LlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkndmUgZ290IGl0LiBJIHJlY2FsbCBzZWVpbmcgdGhpcyBjaGFuZ2UgYmVmb3JlLiBXYXMgaXTigKYgeWVzISBDb21taXQgYDEyMzQ1Njc4OWAgaW50cm9kdWNlZCBhIGZhbGxiYWNrIG1lY2hhbmlzbSBpbiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCB0byBjaGVjayBgZGV2LVx1MDAzZWRyaXZlci1cdTAwM2VvZl9tYXRjaF90YWJsZWAuIE9rYXksIHRpbWUgdG8gZG91YmxlLWNoZWNrIHRoYXQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgZGVmaW5pdGlvbiBpbiBgZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNgIHRvIGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gR290dGEgbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhlIGNvcnJlY3QgZXhlY3V0aW9uIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNTU0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjI5Ljk2MTIyMTMzOFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9iYXNlL3Byb3BlcnR5LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTM0MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTM0MDpcXHRpbnQgZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuMTM0MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgZndub2RlX2VuZHBvaW50ICplbmRwb2ludClcXG4xMzQyOlxcdHtcXG4xMzQzOlxcdFxcdG1lbXNldChlbmRwb2ludCwgMCwgc2l6ZW9mKCplbmRwb2ludCkpO1xcbjEzNDQ6XFx0XFxuMTM0NTpcXHRcXHRyZXR1cm4gZndub2RlX2NhbGxfaW50X29wKGZ3bm9kZSwgZ3JhcGhfcGFyc2VfZW5kcG9pbnQsIGVuZHBvaW50KTtcXG4xMzQ2OlxcdH1cXG4xMzQ3OlxcdEVYUE9SVF9TWU1CT0woZndub2RlX2dyYXBoX3BhcnNlX2VuZHBvaW50KTtcXG4xMzQ4OlxcdFxcbjEzNDk6XFx0Y29uc3Qgdm9pZCAqZGV2aWNlX2dldF9tYXRjaF9kYXRhKGNvbnN0IHN0cnVjdCBkZXZpY2UgKmRldilcXG4xMzUwOlxcdHtcXG4xMzUxOlxcdFxcdHJldHVybiBmd25vZGVfY2FsbF9wdHJfb3AoZGV2X2Z3bm9kZShkZXYpLCBkZXZpY2VfZ2V0X21hdGNoX2RhdGEsIGRldik7XFxuMTM1MjpcXHR9XFxuMTM1MzpcXHRFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfZ2V0X21hdGNoX2RhdGEpO1xcbjEzNTQ6XFx0XFxuMTM1NTpcXHRzdGF0aWMgdW5zaWduZWQgaW50IGZ3bm9kZV9ncmFwaF9kZXZjb25fbWF0Y2hlcyhjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlLFxcbjEzNTY6XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29uc3QgY2hhciAqY29uX2lkLCB2b2lkICpkYXRhLFxcbjEzNTc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGV2Y29uX21hdGNoX2ZuX3QgbWF0Y2gsXFxuMTM1ODpcXHRcXHRcXHRcXHRcXHRcXHRcXHR2b2lkICoqbWF0Y2hlcyxcXG4xMzU5OlxcdFxcdFxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtYXRjaGVzX2xlbilcXG4xMzYwOlxcdHtcXG4xMzYxOlxcdFxcdHN0cnVjdCBmd25vZGVfaGFuZGxlICpub2RlO1xcbjEzNjI6XFx0XFx0c3RydWN0IGZ3bm9kZV9oYW5kbGUgKmVwO1xcbjEzNjM6XFx0XFx0dW5zaWduZWQgaW50IGNvdW50ID0gMDtcXG4xMzY0OlxcdFxcdHZvaWQgKnJldDtcXG4xMzY1OlxcdFxcbjEzNjY6XFx0XFx0Zndub2RlX2dyYXBoX2Zvcl9lYWNoX2VuZHBvaW50KGZ3bm9kZSwgZXApIHtcXG4xMzY3OlxcdFxcdFxcdGlmIChtYXRjaGVzIFxcdTAwMjZcXHUwMDI2IGNvdW50IFxcdTAwM2U9IG1hdGNoZXNfbGVuKSB7XFxuMTM2ODpcXHRcXHRcXHRcXHRmd25vZGVfaGFuZGxlX3B1dChlcCk7XFxuMTM2OTpcXHRcXHRcXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTlUMjE6MjQ6MjkuOTYxMzM1NjY4WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0ODE3ODI4NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgUGF0aHMgaW4gdGhlIEN1cnJlbnQgRnV6emluZyBTZXR1cCoqXG5cbk9rYXksIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIFRoZSBuZXcgY29kZSB1c2VzIGBmd25vZGVfY2FsbF9wdHJfb3BgLCBidXQgaXMgdGhhdCByZWFsbHkgdGhlIGlzc3VlPyBUaGUgY3J1Y2lhbCBwb2ludCBpcyBgZGV2X2Z3bm9kZShkZXYpYCBhbmQgaG93IGl0IGdldHMgc2V0LiBgaTJjX25ld19jbGllbnRfZGV2aWNlYCB0YWtlcyBhbiBgaTJjX2JvYXJkX2luZm9gIHdoaWNoIGNvbnRhaW5zIGFuIGBmd25vZGVfaGFuZGxlYC4gRG9lcyBgc3l6X2kyY19zZXR1cGAgc2V0IHRoaXM/IE5vLCBpdCBkb2Vzbid0LlxuXG5BbHJpZ2h0LCBzbyB0aGUga2V5IHNlZW1zIHRvIGJlIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgLiBJZiB0aGF0IHJldHVybnMgTlVMTCwgdGhlbiBgcmF3X25jaWAgaXMgMC4gSXMgdGhlcmUgYW55ICpvdGhlciogd2F5IGZvciBgcmF3X25jaWAgdG8gYmVjb21lIHRydWU/IE5vLiBTbyB0aGUgKm5ldyogcGF0aHMgaW4gdGhlIGNvZGUgYXJlIHVucmVhY2hhYmxlIGluIG91ciBzeXprYWxsZXIgZW52aXJvbm1lbnQgYXMgaXQgc3RhbmRzLlxuXG5CdXQgd2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIG9uIGFuIEFSTSBib2FyZD8gU3l6a2FsbGVyICpkb2VzKiBydW4gb24gQVJNNjQgc29tZXRpbWVzLCBsaWtlIG9uIEFuZHJvaWQgZGV2aWNlcywgYW5kIG9uIFFFTVUgdmlydC4gQnV0LCBRRU1VIHZpcnQgZG9lc24ndCBoYXZlIHRoZSBgc3Qsc3QyMW5mY2RgIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLiBIbW0uXG5cbkFuZCBub3cgSSBzZWUgaXQsIHRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vcWNtNjQ5MC1mYWlycGhvbmUtZnA1LmR0c2AuIFRoaXMgaW1wbGllcyBhIHNwZWNpZmljIHBoeXNpY2FsIGRldmljZSwgdGhlIEZhaXJwaG9uZSA1LiBTeXprYWxsZXIgZG9lc24ndCBydW4gb24gYSBGYWlycGhvbmUgNSwgdGhhdCdzIG5vdCBvdXIgdGFyZ2V0LiBTbyB0aGF0IGRldmljZSB0cmVlIG5vZGUgd29uJ3QgYmUgcHJlc2VudCBpbiBvdXIgUUVNVSB2aXJ0IGVudmlyb25tZW50LiBNZWFuaW5nIHRoZSBkcml2ZXIgd29uJ3QgYmUgcHJvYmVkIHZpYSB0aGUgZGV2aWNlIHRyZWUuXG5cbklmIHByb2JlZCB2aWEgc3lzZnMsIHRoZW4gYHJhd19uY2lgIGlzIDAuIFRoZXJlZm9yZSwgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgdGhhdCB3ZSB1c2UgZm9yIGZ1enppbmcuXG5cbkhhbmcgb27igKYgaXMgdGhlcmUgYSBmYWxsYmFjayBmcm9tIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGFgIHRvIGBpMmNfZGV2aWNlX2lkYD8gTm8sIHRoYXQncyBub3QgaG93IGl0IHdvcmtzLiBgZGV2aWNlX2dldF9tYXRjaF9kYXRhYCBpcyBnZW5lcmljIGFuZCBpbmRlcGVuZGVudCBvZiBJMkMuIFdoYXQgaWYgaXQgd2FzIGBpMmNfZ2V0X21hdGNoX2RhdGFgPyBFdmVuIHRoZW4gaXQnZCByZXR1cm4gTlVMTCBiZWNhdXNlIGBzdF9uY2lfaTJjX2lkX3RhYmxlYCBkb2Vzbid0IGluY2x1ZGUgYHN0MjFuZmNkYC4gU28sIHRoZXJlJ3MgYSBkaXNjb25uZWN0IGhlcmUuIFRoZSBhdXRob3IsIGxpa2VseSwgaW50ZW5kcyBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLCBidXQgaXQgd29uJ3Qgd29yayB0aGF0IHdheSB3aXRoIHN5c2ZzLCBhbmQgcHJvYmFibHkgZG9lc24ndCBjYXJlLlxuXG5TaW5jZSBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGlzIHJlcXVpcmVkIHRvIGdldCBgcmF3X25jaSA9IDFgLCBhbmQgd2UgKmNhbid0KiBwcm92aWRlIHRoYXQgZGV2aWNlIHRyZWUgbm9kZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZS5cblxuTm93IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBDYW4gc3l6a2FsbGVyIGluamVjdCBkZXZpY2UgdHJlZSBub2Rlcz8gTm8sIGl0IGNhbid0LiBJdCByZWxpZXMgb24gdGhlICpzdGF0aWMqIGRldmljZSB0cmVlIGF0IGJvb3QuIFNvLCBgcmF3X25jaWAgd2lsbCAqYWx3YXlzKiBiZSAwLiBJZiBgcmF3X25jaWAgaXMgMCwgdGhlIGRyaXZlciBpcyBpbiBpdHMgb3JpZ2luYWwgc3RhdGUuXG5cbk9uZSBsYXN0IHRob3VnaHTigKYgdGhlIGB2ZGQtaW9gIGFuZCBgY2xvY2tzYCBwcm9wZXJ0aWVzLiBUaGV5IGFyZSBvcHRpb25hbCAoIGBkZXZtX3JlZ3VsYXRvcl9nZXRfZW5hYmxlX29wdGlvbmFsYCwgYGRldm1fY2xrX2dldF9vcHRpb25hbF9lbmFibGVkYCkuIElmIHRoZXkncmUgbWlzc2luZywgdGhlIGRyaXZlciB3aWxsIGNvbnRpbnVlIHdpdGhvdXQgdGhlbS4gU28gdGhlcmUncyBhYnNvbHV0ZWx5IG5vIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZC5cblxuSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuSW4gc3VtbWFyeTogdGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYHN0LHN0MjFuZmNkYCB1c2luZyByYXcgTkNJIHZpYSBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gVGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBRRU1VIGVudmlyb25tZW50IGFzIGl0IG5lZWRzIGEgc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZS4gV2hpbGUgc3l6a2FsbGVyIGNhbiBpbnN0YW50aWF0ZSBJMkMgZGV2aWNlcywgaXQgZG9lcyBub3QgYXR0YWNoIGFuIGBmd25vZGVgLCBhbmQgYGRldmljZV9nZXRfbWF0Y2hfZGF0YWAgd2lsbCByZXR1cm4gTlVMTCwgY2F1c2luZyBgcmF3X25jaSA9IDBgLiBUaGUgb3B0aW9uYWwgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IGF2YWlsYWJsZS4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYyNTg1LCJPdXRwdXRUb2tlbnMiOjI0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOVQyMToyNDo0NC43NzkxNjc2NThaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBgc3Qsc3QyMW5mY2RgIE5GQyBjb250cm9sbGVyLCB3aGljaCB1c2VzIHJhdyBOQ0kgaW5zdGVhZCBvZiBORExDLiBUaGUgYHJhd19uY2lgIG1vZGUgaXMgZW5hYmxlZCBieSBjaGVja2luZyBgZGV2aWNlX2dldF9tYXRjaF9kYXRhKGRldikgPT0gU1RfTkNJX0kyQ19QUk9UT19SQVdfTkNJYC4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUsIHRoaXMgZGV2aWNlIGlzIG5vdCBwcmVzZW50IGluIHRoZSBzdGF0aWMgZGV2aWNlIHRyZWUuIFdoaWxlIHN5emthbGxlciBjYW4gaW5zdGFudGlhdGUgSTJDIGRldmljZXMgdmlhIHN5c2ZzIChgbmV3X2RldmljZWApIG9yIGBzeXpfaTJjX3NldHVwYCwgdGhlc2UgbWV0aG9kcyBkbyBub3QgYXR0YWNoIGFuIGBmd25vZGVgIHRvIHRoZSBkZXZpY2UuIENvbnNlcXVlbnRseSwgYGRldmljZV9nZXRfbWF0Y2hfZGF0YSgpYCB3aWxsIGFsd2F5cyByZXR1cm4gYE5VTExgLCBsZWF2aW5nIGByYXdfbmNpID0gMGAuIFdoZW4gYHJhd19uY2lgIGlzIDAsIHRoZSBkcml2ZXIgYmVoYXZlcyBleGFjdGx5IGFzIGl0IGRpZCBiZWZvcmUgdGhlIHBhdGNoLiBUaGUgbmV3bHkgYWRkZWQgcmVndWxhdG9yIGFuZCBjbG9jayBwcm9wZXJ0aWVzIGFyZSBvcHRpb25hbCBhbmQgd2lsbCBzaW1wbHkgYmUgc2tpcHBlZCBpZiBub3QgcHJlc2VudC4gVGhlcmVmb3JlLCB0aGUgbmV3IGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGluIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgYHN0LHN0MjFuZmNkYCBORkMgY29udHJvbGxlciwgd2hpY2ggdXNlcyByYXcgTkNJIGluc3RlYWQgb2YgTkRMQy4gVGhlIGByYXdfbmNpYCBtb2RlIGlzIGVuYWJsZWQgYnkgY2hlY2tpbmcgYGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpID09IFNUX05DSV9JMkNfUFJPVE9fUkFXX05DSWAuIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLCB0aGlzIGRldmljZSBpcyBub3QgcHJlc2VudCBpbiB0aGUgc3RhdGljIGRldmljZSB0cmVlLiBXaGlsZSBzeXprYWxsZXIgY2FuIGluc3RhbnRpYXRlIEkyQyBkZXZpY2VzIHZpYSBzeXNmcyAoYG5ld19kZXZpY2VgKSBvciBgc3l6X2kyY19zZXR1cGAsIHRoZXNlIG1ldGhvZHMgZG8gbm90IGF0dGFjaCBhbiBgZndub2RlYCB0byB0aGUgZGV2aWNlLiBDb25zZXF1ZW50bHksIGBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoKWAgd2lsbCBhbHdheXMgcmV0dXJuIGBOVUxMYCwgbGVhdmluZyBgcmF3X25jaSA9IDBgLiBXaGVuIGByYXdfbmNpYCBpcyAwLCB0aGUgZHJpdmVyIGJlaGF2ZXMgZXhhY3RseSBhcyBpdCBkaWQgYmVmb3JlIHRoZSBwYXRjaC4gVGhlIG5ld2x5IGFkZGVkIHJlZ3VsYXRvciBhbmQgY2xvY2sgcHJvcGVydGllcyBhcmUgb3B0aW9uYWwgYW5kIHdpbGwgc2ltcGx5IGJlIHNraXBwZWQgaWYgbm90IHByZXNlbnQuIFRoZXJlZm9yZSwgdGhlIG5ldyBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBpbiB0aGUgZnV6emluZyBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE5VDIxOjI0OjQ0Ljc3OTE5ODAyN1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowvhm62[1] Phase: Running StartedAt: 2026-08-19 21:24:56 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvhm62[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-19 21:24:56 +0000 UTC FinishedAt: 2026-08-19 21:24:59 +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,}