Name: series-workflowdbd8h Phase: Failed StartedAt: 2026-09-09 12:04:02 +0000 UTC FinishedAt: 2026-09-09 12:32:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdbd8h[0] Phase: Succeeded StartedAt: 2026-09-09 12:04:02 +0000 UTC FinishedAt: 2026-09-09 12:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdbd8h[0].run-triage Phase: Succeeded StartedAt: 2026-09-09 12:04:02 +0000 UTC FinishedAt: 2026-09-09 12:32: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+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgyZjBhODEyYzkyMTk4MDBjN2I4ZTM3OTM5ZWI1M2VkMDE5N2VkZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjMyOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTczNiw3ICYjNDM7NzM3LDggQEAgZ21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuIFx0bWFwcGluZyA9IGFkZHIgXHUwMDI2IFBBR0VfTUFTSztcbiBcbiBcdGlmICghZ2V0aC1cdTAwM2VmcmVlcV9wYWdlcykge1xuLVx0XHRkZXZfZXJyKGdldGgtXHUwMDNlZGV2LCBcJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcXG5cJiMzNDspO1xuJiM0MztcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7dHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTQ0MSw3ICYjNDM7MTQ0Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG4gfVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuLVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgKmZyZWVxX2NvbnN1bWVkKVxuJiM0MztcdFx0XHQgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCwgYm9vbCAqcmVzY2hlZHVsZSlcbiB7XG4gXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXJ4cV9vcmRlcikgLSAxO1xuQEAgLTE0NDksNiAmIzQzOzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuIFx0dW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LVx1MDAzZXJ4X2ZyYWdfbnI7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcG9ydC1cdTAwM2VyeF9za2I7XG4mIzQzO1x0LyogQm91bmQgbWFsZm9ybWVkIGNoYWlucyB3aGlsZSBhbGxvd2luZyBtYXhpbXVtIGZyYWdtZW50cyBwZXIgZnJhbWUuICovXG4mIzQzO1x0dW5zaWduZWQgaW50IGRlc2NfbGltaXQgPSBidWRnZXQgKiBNQVhfU0tCX0ZSQUdTO1xuIFx0dW5zaWduZWQgaW50IGNvbnN1bWVkID0gMDtcbiBcdHVuc2lnbmVkIGludCBmcmFtZV9sZW4sIGZyYWdfbGVuO1xuIFx0c3RydWN0IGdtYWNfcnhkZXNjICpyeCA9IE5VTEw7XG5AQCAtMTQ3NSw3ICYjNDM7MTQ3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0ciA9IHJ3LmJpdHMucnB0cjtcbiBcdHcgPSBydy5iaXRzLndwdHI7XG4gXG4tXHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbiYjNDM7XHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiBjb25zdW1lZCBcdTAwM2MgZGVzY19saW1pdCBcdTAwMjZcdTAwMjYgdyAhPSByKSB7XG4gXHRcdHBhZ2UgPSBOVUxMO1xuIFx0XHRyeCA9IHBvcnQtXHUwMDNlcnhxX3JpbmcgJiM0MzsgcjtcbiBcdFx0d29yZDAgPSByeC1cdTAwM2V3b3JkMDtcbkBAIC0xNTAyLDE1ICYjNDM7MTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoIW1hcHBpbmcpIHtcbi1cdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbi1cdFx0XHRcdCAgIFwmIzM0O3J4cVsldV06IEhXIEJVRzogemVybyBETUEgZGVzY1xcblwmIzM0Oywgcik7XG4mIzQzO1x0XHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4mIzQzO1x0XHRcdFx0bmV0ZGV2X2VycihuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICByKTtcbiBcdFx0XHRnb3RvIGVycl9kcm9wO1xuIFx0XHR9XG4gXG4gXHRcdC8qIEZyZWVxIHBvaW50ZXJzIGFyZSBvbmUgcGFnZSBvZmYgKi9cbiBcdFx0Z3BhZ2UgPSBnbWFjX2dldF9xdWV1ZV9wYWdlKGdldGgsIHBvcnQsIG1hcHBpbmcgJiM0MzsgUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFncGFnZSkge1xuLVx0XHRcdGRldl9lcnIoZ2V0aC1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgIFwmIzM0O2NvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXG5cJiMzNDspO1xuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXHRcdH1cbiBcdFx0cGFnZSA9IGdwYWdlLVx1MDAzZXBhZ2U7XG5AQCAtMTUzNSw3ICYjNDM7MTU0Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0XHRpZiAoZnJhZ19uciA9PSBNQVhfU0tCX0ZSQUdTKVxuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXG4tXHRcdGlmIChmcmFnX2xlbiA9PSAwKVxuJiM0MztcdFx0aWYgKGZyYWdfbGVuID09IDAgXHUwMDI2XHUwMDI2IG5ldF9yYXRlbGltaXQoKSlcbiBcdFx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7UmVjZWl2ZWQgZnJhZ21lbnQgd2l0aCBsZW4gPSAwXFxuXCYjMzQ7KTtcbiBcbiBcdFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgZnJhZ19uciwgcGFnZSwgcGFnZV9vZmZzLCBmcmFnX2xlbik7XG5AQCAtMTU3OSw2ICYjNDM7MTU4Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0cG9ydC1cdTAwM2VyeF9mcmFnX25yID0gZnJhZ19ucjtcbiBcdHBvcnQtXHUwMDNlcnhfZHJvcHBpbmcgPSBkcm9wcGluZztcbiBcdCpmcmVlcV9jb25zdW1lZCA9IGNvbnN1bWVkO1xuJiM0MztcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHI7XG4gXHR3cml0ZXcociwgcHRyX3JlZyk7XG4gXHRyZXR1cm4gcmVjZWl2ZWQ7XG4gfVxuQEAgLTE1OTAsMTIgJiM0MzsxNTk4LDEzIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcbiBcdHVuc2lnbmVkIGludCBmcmVlcV9jb25zdW1lZDtcbiBcdHVuc2lnbmVkIGludCByZWNlaXZlZDtcbiYjNDM7XHRib29sIHJlc2NoZWR1bGU7XG4gXG4gXHRmcmVlcV90aHJlc2hvbGQgPSAxIFx1MDAzY1x1MDAzYyAoZ2V0aC1cdTAwM2VmcmVlcV9vcmRlciAtIDEpO1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZwb3J0LVx1MDAzZXJ4X3N0YXRzX3N5bmNwKTtcbiBcbi1cdHJlY2VpdmVkID0gZ21hY19yeChuYXBpLVx1MDAzZWRldiwgYnVkZ2V0LCBcdTAwMjZmcmVlcV9jb25zdW1lZCk7XG4tXHRpZiAocmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldClcbiYjNDM7XHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQsIFx1MDAyNnJlc2NoZWR1bGUpO1xuJiM0MztcdGlmICghcmVzY2hlZHVsZSBcdTAwMjZcdTAwMjYgcmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldClcbiBcdFx0JiM0MzsmIzQzO3BvcnQtXHUwMDNlcnhfbmFwaV9leGl0cztcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnBvcnQtXHUwMDNlcnhfc3RhdHNfc3luY3ApO1xuQEAgLTE2MDYsMTAgJiM0MzsxNjE1LDExIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRnZXRoX2ZpbGxfZnJlZXEoZ2V0aCwgdHJ1ZSk7XG4gXHR9XG4gXG4tXHRpZiAocmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSlcbiYjNDM7XHRpZiAoIXJlc2NoZWR1bGUgXHUwMDI2XHUwMDI2IHJlY2VpdmVkIFx1MDAzYyBidWRnZXQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXG4gXHRcdGdtYWNfZW5hYmxlX3J4X2lycShuYXBpLVx1MDAzZWRldiwgMSk7XG4gXG4tXHRyZXR1cm4gcmVjZWl2ZWQ7XG4mIzQzO1x0cmV0dXJuIHJlc2NoZWR1bGUgPyBidWRnZXQgOiByZWNlaXZlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ21hY19kdW1wX2RtYV9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuQEAgLTE3OTgsNyAmIzQzOzE4MDgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZ21hY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbiBcbiBcdGlmICh2YWwgXHUwMDI2IChHTUFDMF9SWF9PVkVSUlVOX0lOVF9CSVQgXHUwMDNjXHUwMDNjIChuZXRkZXYtXHUwMDNlZGV2X2lkICogOCkpKSB7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZnZXRoLVx1MDAzZWlycV9sb2NrKTtcbi1cdFx0d3JpdGVsKEdNQUMwX1JYREVSUl9JTlRfQklUIFx1MDAzY1x1MDAzYyAobmV0ZGV2LVx1MDAzZWRldl9pZCAqIDgpLFxuJiM0MztcdFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbiBcdFx0ICAgICAgIGdldGgtXHUwMDNlYmFzZSAmIzQzOyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cG9ydC1cdTAwM2Vpcl9zdGF0c19zeW5jcCk7XG4gXHRcdCYjNDM7JiM0Mztwb3J0LVx1MDAzZXN0YXRzLnJ4X2ZpZm9fZXJyb3JzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAxMjozMjowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jCmluZGV4IGYwOGRlNjIzZTZmN2MuLjJmZTdmZDAyMDJkMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYwpAQCAtMTYsNiAmIzQzOzE2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwpAQCAtNzM2LDcgJiM0Mzs3MzcsOCBAQCBnbWFjX2dldF9xdWV1ZV9wYWdlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsCiAJbWFwcGluZyA9IGFkZHIgJmFtcDsgUEFHRV9NQVNLOwogCiAJaWYgKCFnZXRoLSZndDtmcmVlcV9wYWdlcykgewotCQlkZXZfZXJyKGdldGgtJmd0O2RldiwgJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcbiYjMzQ7KTsKJiM0MzsJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZ2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgICAgJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcbiYjMzQ7KTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0xNDQxLDcgJiM0MzsxNDQzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnbWFjX3NrYl9pZl9nb29kX2ZyYW1lKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCwKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsCi0JCQkgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCkKJiM0MzsJCQkgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCwgYm9vbCAqcmVzY2hlZHVsZSkKIHsKIAlzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwogCXVuc2lnbmVkIHNob3J0IG0gPSAoMSAmbHQ7Jmx0OyBwb3J0LSZndDtyeHFfb3JkZXIpIC0gMTsKQEAgLTE0NDksNiAmIzQzOzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAl2b2lkIF9faW9tZW0gKnB0cl9yZWcgPSBwb3J0LSZndDtyeHFfcndwdHI7CiAJdW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LSZndDtyeF9mcmFnX25yOwogCXN0cnVjdCBza19idWZmICpza2IgPSBwb3J0LSZndDtyeF9za2I7CiYjNDM7CS8qIEJvdW5kIG1hbGZvcm1lZCBjaGFpbnMgd2hpbGUgYWxsb3dpbmcgbWF4aW11bSBmcmFnbWVudHMgcGVyIGZyYW1lLiAqLwomIzQzOwl1bnNpZ25lZCBpbnQgZGVzY19saW1pdCA9IGJ1ZGdldCAqIE1BWF9TS0JfRlJBR1M7CiAJdW5zaWduZWQgaW50IGNvbnN1bWVkID0gMDsKIAl1bnNpZ25lZCBpbnQgZnJhbWVfbGVuLCBmcmFnX2xlbjsKIAlzdHJ1Y3QgZ21hY19yeGRlc2MgKnJ4ID0gTlVMTDsKQEAgLTE0NzUsNyAmIzQzOzE0NzksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAlyID0gcncuYml0cy5ycHRyOwogCXcgPSBydy5iaXRzLndwdHI7CiAKLQl3aGlsZSAoYnVkZ2V0ICZhbXA7JmFtcDsgdyAhPSByKSB7CiYjNDM7CXdoaWxlIChidWRnZXQgJmFtcDsmYW1wOyBjb25zdW1lZCAmbHQ7IGRlc2NfbGltaXQgJmFtcDsmYW1wOyB3ICE9IHIpIHsKIAkJcGFnZSA9IE5VTEw7CiAJCXJ4ID0gcG9ydC0mZ3Q7cnhxX3JpbmcgJiM0MzsgcjsKIAkJd29yZDAgPSByeC0mZ3Q7d29yZDA7CkBAIC0xNTAyLDE1ICYjNDM7MTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAkJfQogCiAJCWlmICghbWFwcGluZykgewotCQkJbmV0ZGV2X2VycihuZXRkZXYsCi0JCQkJICAgJiMzNDtyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcbiYjMzQ7LCByKTsKJiM0MzsJCQlpZiAobmV0X3JhdGVsaW1pdCgpKQomIzQzOwkJCQluZXRkZXZfZXJyKG5ldGRldiwKJiM0MzsJCQkJCSAgICYjMzQ7cnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXG4mIzM0OywKJiM0MzsJCQkJCSAgIHIpOwogCQkJZ290byBlcnJfZHJvcDsKIAkJfQogCiAJCS8qIEZyZWVxIHBvaW50ZXJzIGFyZSBvbmUgcGFnZSBvZmYgKi8KIAkJZ3BhZ2UgPSBnbWFjX2dldF9xdWV1ZV9wYWdlKGdldGgsIHBvcnQsIG1hcHBpbmcgJiM0MzsgUEFHRV9TSVpFKTsKIAkJaWYgKCFncGFnZSkgewotCQkJZGV2X2VycihnZXRoLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IGZpbmQgbWFwcGluZ1xuJiMzNDspOwomIzQzOwkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZ2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkJICAgICYjMzQ7Y291bGQgbm90IGZpbmQgbWFwcGluZ1xuJiMzNDspOwogCQkJZ290byBlcnJfZHJvcDsKIAkJfQogCQlwYWdlID0gZ3BhZ2UtJmd0O3BhZ2U7CkBAIC0xNTM1LDcgJiM0MzsxNTQyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsCiAJCWlmIChmcmFnX25yID09IE1BWF9TS0JfRlJBR1MpCiAJCQlnb3RvIGVycl9kcm9wOwogCi0JCWlmIChmcmFnX2xlbiA9PSAwKQomIzQzOwkJaWYgKGZyYWdfbGVuID09IDAgJmFtcDsmYW1wOyBuZXRfcmF0ZWxpbWl0KCkpCiAJCQluZXRkZXZfZXJyKG5ldGRldiwgJiMzNDtSZWNlaXZlZCBmcmFnbWVudCB3aXRoIGxlbiA9IDBcbiYjMzQ7KTsKIAogCQlza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCBmcmFnX25yLCBwYWdlLCBwYWdlX29mZnMsIGZyYWdfbGVuKTsKQEAgLTE1NzksNiAmIzQzOzE1ODYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAlwb3J0LSZndDtyeF9mcmFnX25yID0gZnJhZ19ucjsKIAlwb3J0LSZndDtyeF9kcm9wcGluZyA9IGRyb3BwaW5nOwogCSpmcmVlcV9jb25zdW1lZCA9IGNvbnN1bWVkOwomIzQzOwkqcmVzY2hlZHVsZSA9IGJ1ZGdldCAmYW1wOyZhbXA7IHcgIT0gcjsKIAl3cml0ZXcociwgcHRyX3JlZyk7CiAJcmV0dXJuIHJlY2VpdmVkOwogfQpAQCAtMTU5MCwxMiAmIzQzOzE1OTgsMTMgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJdW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDsKIAl1bnNpZ25lZCBpbnQgZnJlZXFfY29uc3VtZWQ7CiAJdW5zaWduZWQgaW50IHJlY2VpdmVkOwomIzQzOwlib29sIHJlc2NoZWR1bGU7CiAKIAlmcmVlcV90aHJlc2hvbGQgPSAxICZsdDsmbHQ7IChnZXRoLSZndDtmcmVlcV9vcmRlciAtIDEpOwogCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtwb3J0LSZndDtyeF9zdGF0c19zeW5jcCk7CiAKLQlyZWNlaXZlZCA9IGdtYWNfcngobmFwaS0mZ3Q7ZGV2LCBidWRnZXQsICZhbXA7ZnJlZXFfY29uc3VtZWQpOwotCWlmIChyZWNlaXZlZCAmbHQ7IGJ1ZGdldCkKJiM0MzsJcmVjZWl2ZWQgPSBnbWFjX3J4KG5hcGktJmd0O2RldiwgYnVkZ2V0LCAmYW1wO2ZyZWVxX2NvbnN1bWVkLCAmYW1wO3Jlc2NoZWR1bGUpOwomIzQzOwlpZiAoIXJlc2NoZWR1bGUgJmFtcDsmYW1wOyByZWNlaXZlZCAmbHQ7IGJ1ZGdldCkKIAkJJiM0MzsmIzQzO3BvcnQtJmd0O3J4X25hcGlfZXhpdHM7CiAKIAl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3BvcnQtJmd0O3J4X3N0YXRzX3N5bmNwKTsKQEAgLTE2MDYsMTAgJiM0MzsxNjE1LDExIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQlnZXRoX2ZpbGxfZnJlZXEoZ2V0aCwgdHJ1ZSk7CiAJfQogCi0JaWYgKHJlY2VpdmVkICZsdDsgYnVkZ2V0ICZhbXA7JmFtcDsgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSkKJiM0MzsJaWYgKCFyZXNjaGVkdWxlICZhbXA7JmFtcDsgcmVjZWl2ZWQgJmx0OyBidWRnZXQgJmFtcDsmYW1wOwomIzQzOwkgICAgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSkKIAkJZ21hY19lbmFibGVfcnhfaXJxKG5hcGktJmd0O2RldiwgMSk7CiAKLQlyZXR1cm4gcmVjZWl2ZWQ7CiYjNDM7CXJldHVybiByZXNjaGVkdWxlID8gYnVkZ2V0IDogcmVjZWl2ZWQ7CiB9CiAKIHN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKQEAgLTE3OTgsNyAmIzQzOzE4MDgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZ21hY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIAogCWlmICh2YWwgJmFtcDsgKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCAmbHQ7Jmx0OyAobmV0ZGV2LSZndDtkZXZfaWQgKiA4KSkpIHsKIAkJc3Bpbl9sb2NrKCZhbXA7Z2V0aC0mZ3Q7aXJxX2xvY2spOwotCQl3cml0ZWwoR01BQzBfUlhERVJSX0lOVF9CSVQgJmx0OyZsdDsgKG5ldGRldi0mZ3Q7ZGV2X2lkICogOCksCiYjNDM7CQl3cml0ZWwoR01BQzBfUlhfT1ZFUlJVTl9JTlRfQklUICZsdDsmbHQ7IChuZXRkZXYtJmd0O2Rldl9pZCAqIDgpLAogCQkgICAgICAgZ2V0aC0mZ3Q7YmFzZSAmIzQzOyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7CiAJCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtwb3J0LSZndDtpcl9zdGF0c19zeW5jcCk7CiAJCSYjNDM7JiM0Mztwb3J0LSZndDtzdGF0cy5yeF9maWZvX2Vycm9yczsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0JiMzOTtzIGdvb2QgaW5mb3JtYXRpb24gdG8ga25vdy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AuIE5vdywgdGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSAmIzM0O2dlbWluaSYjMzQ7IGRyaXZlciBpcy4gV2hhdCBoYXJkd2FyZSBkb2VzIGl0IHN1cHBvcnQ/IEhvdyBpcyBpdCBjb25maWd1cmVkPyBJcyBpdCBhIHBsYXRmb3JtIGRldmljZSwgYSBQQ0kgZGV2aWNlLCBvciBzb21ldGhpbmcgZWxzZSBsaWtlIHZpcnRpbz8gS25vd2luZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIGRldmljZSYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIGNoYW5nZXMuCgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBvciBwZXJoYXBzIGp1c3QgdXNlIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2AuIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIGVzc2VudGlhbCBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBXaXRoIHRoZSBLY29uZmlnLCBJIGNhbiBkZXRlcm1pbmUgdGhlIHByZXJlcXVpc2l0ZXMgYW5kIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHBlcnRpbmVudCB0byB0aGlzIGNoYW5nZS4gT25jZSBJIGhhdmUgdGhlIEtjb25maWcgZGV0YWlscywgSSBjYW4gcHJvY2VlZCB3aXRoIGEgbXVjaCBjbGVhcmVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7R0VNSU5JfGdlbWluaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnPTEyPWlmIE5FVF9WRU5ET1JfQ09SVElOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnOjE0OmNvbmZpZyBHRU1JTklfRVRIRVJORVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0dlbWluaSBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0dFTUlOSV9FVEhFUk5FVCkgJiM0Mzs9IGdlbWluaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NDY6I2luY2x1ZGUgXCYjMzQ7Z2VtaW5pLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ4OiNkZWZpbmUgRFJWX05BTUVcdFx0XCYjMzQ7Z21hYy1nZW1pbmlcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz05Nz1zdHJ1Y3QgZ21hY190eHEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDQ6c3RydWN0IGdlbWluaV9ldGhlcm5ldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDY6c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA3LVx0dTggaWQ7IC8qIDAgb3IgMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEwOTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1NTpzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU2LVx0c3RydWN0IGRldmljZSAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTctXHR2b2lkIF9faW9tZW0gKmJhc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MC1cdGJvb2wgaW5pdGlhbGl6ZWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMzA9c3RhdGljIHZvaWQgZ21hY191cGRhdGVfY29uZmlnMF9yZWcoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNDY9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ5LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI2MT1zdGF0aWMgdm9pZCBnbWFjX2Rpc2FibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI3OD1zdGF0aWMgdm9pZCBnbWFjX3NldF9mbG93X2NvbnRyb2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgYm9vbCB0eCwgYm9vbCByeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjc5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjgwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjgxLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI5Nz1zdGF0aWMgdm9pZCBnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI5OTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTMwMC1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBuZXRkZXYtXHUwMDNlcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MzYyPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MzY0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzY1LVx0dW5pb24gZ21hY19zdGF0dXMgc3RhdHVzID0geyAuYml0czMyID0gMCB9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NDY2PXN0YXRpYyBpbnQgZ21hY19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQ2Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ2ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQ2OS1cdHVuaW9uIGdtYWNfY29uZmlnMCBjb25maWcwID0geyAuYml0cyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTU0Nj1zdGF0aWMgaW50IGdtYWNfc2V0dXBfdHhxcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NDcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NDktXHR1bnNpZ25lZCBpbnQgbl90eHEgPSBuZXRkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NTUwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNTUxLVx0c2l6ZV90IGVudHJpZXMgPSAxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXR4cV9vcmRlcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTYwND1zdGF0aWMgdm9pZCBnbWFjX2NsZWFuX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZ21hY190eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwNzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYwOC1cdHVuc2lnbmVkIGludCBtID0gKDEgXHUwMDNjXHUwMDNjIHBvcnQtXHUwMDNldHhxX29yZGVyKSAtIDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwOTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYxMC1cdHVuc2lnbmVkIGludCBjID0gdHhxLVx1MDAzZWNwdHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz02NzY9c3RhdGljIHZvaWQgZ21hY19jbGVhbnVwX3R4cXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjc3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Njc4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjc5LVx0dW5zaWduZWQgaW50IG5fdHhxID0gbmV0ZGV2LVx1MDAzZW51bV90eF9xdWV1ZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjY4MDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTY4MS1cdHZvaWQgX19pb21lbSAqcndwdHJfcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NzAyPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzAzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzA2LVx0c3RydWN0IG5vbnRvZV9xaGRyIF9faW9tZW0gKnFoZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03Mjc9c3RhdGljIHN0cnVjdCBnbWFjX3F1ZXVlX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3Mjg6Z21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3Mjk6XHRcdCAgICBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTczMC1cdFx0ICAgIGRtYV9hZGRyX3QgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTc1NT1zdGF0aWMgdm9pZCBnbWFjX2NsZWFudXBfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTc1Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjc1NzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjc1ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTc1OS1cdHN0cnVjdCBnbWFjX3J4ZGVzYyAqcnhkID0gcG9ydC1cdTAwM2VyeHFfcmluZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTgwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODA1OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0aF9mcmVlcV9hbGxvY19tYXBfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy04MDYtXHRcdFx0XHRcdCAgICAgIGludCBwbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTg3MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODcyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0aF9maWxsX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsIGJvb2wgcmVmaWxsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy04NzMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo5Mjc6c3RhdGljIGludCBnZXRoX3NldHVwX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy05OTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjk5OTpzdGF0aWMgdm9pZCBnZXRoX2NsZWFudXBfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDM4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDM5OnN0YXRpYyBpbnQgZ2V0aF9yZXNpemVfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0MTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNDItXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcG9ydC1cdTAwM2VuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEwNDM6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKm90aGVyX3BvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqb3RoZXJfbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEwNz1zdGF0aWMgdm9pZCBnbWFjX3R4X2lycV9lbmFibGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTEwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMTItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEzOT1zdGF0aWMgaW50IGdtYWNfbWFwX3R4X2J1ZnMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0My1cdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNrYl9zaSA9ICBza2Jfc2hpbmZvKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMTQ1LVx0c2hvcnQgZnJhZywgbGFzdF9mcmFnID0gc2tiX3NpLVx1MDAzZW5yX2ZyYWdzIC0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTE0NjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDctXHR1bnNpZ25lZCBpbnQgd29yZDEsIHdvcmQzLCBidWZsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMjc3PXN0YXRpYyBuZXRkZXZfdHhfdCBnbWFjX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEyNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMjgwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTI4MS1cdHVuc2lnbmVkIHNob3J0IG0gPSAoMSBcdTAwM2NcdTAwM2MgcG9ydC1cdTAwM2V0eHFfb3JkZXIpIC0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTEzNTc9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEzNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzU5Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTM2MDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEzNjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTM4Nj1zdGF0aWMgdm9pZCBnbWFjX2VuYWJsZV9yeF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM4Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEzODg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg5Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM5MC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNDA1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0MDYtXHRcdFx0XHRcdCAgICAgIHVuaW9uIGdtYWNfcnhkZXNjXzAgd29yZDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNDQ1PXN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQ0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE0NDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDQ5LVx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXJ4cV9vcmRlcikgLSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNDUwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQ1MS1cdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTU5ND1zdGF0aWMgaW50IGdtYWNfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTY6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuYXBpLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTc6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cdTAwM2VnZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTk4LVx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE2MjU9c3RhdGljIHZvaWQgZ21hY19kdW1wX2RtYV9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyNzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE2Mjg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cdTAwM2VnZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjI5LVx0dm9pZCBfX2lvbWVtICpwdHJfcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTY5Nj1zdGF0aWMgdm9pZCBnbWFjX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjk3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTY5ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2OTktXHR1bnNpZ25lZCBpbnQgcnhfZGlzY2FyZHMsIHJ4X21jYXN0LCByeF9iY2FzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTcwMDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MDEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTczMj1zdGF0aWMgdTMyIGdtYWNfZ2V0X2ludHJfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzM0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzYtXHR2b2lkIF9faW9tZW0gKmlycWlmX3JlZywgKmlycWVuX3JlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE3NTA9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdtYWNfY29hbGVzY2VfZGVsYXlfZXhwaXJlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzUyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTc1MzpcdFx0Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NTQtXHRcdFx0ICAgICByeF9jb2FsZXNjZV90aW1lcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzYwPXN0YXRpYyBpcnFyZXR1cm5fdCBnbWFjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTc2MjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzY0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2NS1cdHUzMiB2YWwsIG9yciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODIyOnN0YXRpYyB2b2lkIGdtYWNfc3RhcnRfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTgyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODQzOnN0YXRpYyB2b2lkIGdtYWNfc3RvcF9kbWEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE4NTQ9c3RhdGljIGludCBnbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTg1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE4NTY6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODU3LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE5MTE9c3RhdGljIGludCBnbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkxMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE5MTM6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTkzNT1zdGF0aWMgdm9pZCBnbWFjX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5MzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTM3Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkzOC1cdHVuaW9uIGdtYWNfcnhfZmx0ciBmaWx0ZXIgPSB7IC5iaXRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk3MD1zdGF0aWMgdm9pZCBnbWFjX3dyaXRlX21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTcyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk3My1cdF9fbGUzMiBhZGRyWzNdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk5Mz1zdGF0aWMgdm9pZCBnbWFjX2NsZWFyX2h3X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5OTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTk1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk5Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIwMDU9c3RhdGljIHZvaWQgZ21hY19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjAwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIwMDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDA5LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjA3ND1zdGF0aWMgaW50IGdtYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDc2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjA3NzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIwNzgtXHRpbnQgZW5hYmxlID0gZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjEwNT1zdGF0aWMgdm9pZCBnbWFjX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMTA3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjEwODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxMDktXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMTgwPXN0YXRpYyB2b2lkIGdtYWNfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxODIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMTgzOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjE4NC1cdHVuaW9uIGdtYWNfY29uZmlnMCBjb25maWcwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjIwNj1zdGF0aWMgdm9pZCBnbWFjX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjExOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyMjY9c3RhdGljIGludCBnbWFjX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjMxOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIzMi1cdGludCBlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjI0OT1zdGF0aWMgaW50IGdtYWNfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjUzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI1NDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjYzPXN0YXRpYyBpbnQgZ21hY19zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNjcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjY4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODE9c3RhdGljIHUzMiBnbWFjX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI4MzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjg4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBsZXZlbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI4OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyOTA6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdtYWNfMzUxeF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzY6c3RhdGljIGlycXJldHVybl90IGdlbWluaV9wb3J0X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzgtXHR1bnNpZ25lZCBsb25nIGlycW1hc2sgPSBTV0ZRX0VNUFRZX0lOVF9CSVQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzk6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzQwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzU4OnN0YXRpYyBpcnFyZXR1cm5fdCBnZW1pbmlfcG9ydF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM1OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzNjA6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzYxOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cdGlycXJldHVybl90IHJldCA9IElSUV9OT05FO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM4NzpzdGF0aWMgdm9pZCBnZW1pbmlfcG9ydF9yZW1vdmUoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzOTc6c3RhdGljIHZvaWQgZ2VtaW5pX2V0aGVybmV0X2luaXQoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDQ5OnN0YXRpYyB2b2lkIGdlbWluaV9wb3J0X3NhdmVfbWFjX2FkZHIoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDUwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI0NTk6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NjItXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cdTAwM2VkZXYub2Zfbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ2MzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2NC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDY1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2Ni1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTI5LVx0LyogTWF5YmUgdGhlcmUgaXMgYSBuaWNlIGV0aGVybmV0IGFkZHJlc3Mgd2Ugc2hvdWxkIHVzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTMwOlx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjUzMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NDgtXHQvKiBUaGlzIHdpbGwganVzdCBiZSBkb25lIG9uY2UgYm90aCBwb3J0cyBhcmUgdXAgYW5kIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1NDk6XHRnZW1pbmlfZXRoZXJuZXRfaW5pdChnZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjU1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTItXHRcdFx0XHRcdHBvcnQtXHUwMDNlaXJxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTkzOlx0XHRcdFx0XHRnZW1pbmlfcG9ydF9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1OTQ6XHRcdFx0XHRcdGdlbWluaV9wb3J0X2lycV90aHJlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTUtXHRcdFx0XHRcdElSUUZfU0hBUkVELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYxOTpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjE6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyMzpcdGdlbWluaV9wb3J0X3JlbW92ZShwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNy1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyODpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjI5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MzQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZ2VtaW5pX2V0aGVybmV0X3BvcnRfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM1LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNjpcdFx0Lm5hbWUgPSBcJiMzNDtnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzgtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM5Olx0LnByb2JlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDA6XHQucmVtb3ZlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjQxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDM6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDUtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0NjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDctXHR1bnNpZ25lZCBpbnQgcmV0cnkgPSA1O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY4MjpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2ODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjg0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MjpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk5LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcwMC1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzAyLVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMzpcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwNDpcdC5yZW1vdmUgPSBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MDc6c3RhdGljIGludCBfX2luaXQgZ2VtaW5pX2V0aGVybmV0X21vZHVsZV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcxMTpcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZnZW1pbmlfZXRoZXJuZXRfcG9ydF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTU6XHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Z2VtaW5pX2V0aGVybmV0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTc6XHRcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzIyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyMzptb2R1bGVfaW5pdChnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzI1OnN0YXRpYyB2b2lkIF9fZXhpdCBnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3Mjc6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW1pbmlfZXRoZXJuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyODpcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzMwOm1vZHVsZV9leGl0KGdlbWluaV9ldGhlcm5ldF9tb2R1bGVfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC04LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5OiNpZm5kZWYgX0dFTUlOSV9FVEhFUk5FVF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oOjEwOiNkZWZpbmUgX0dFTUlOSV9FVEhFUk5FVF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmg9OTUzPXN0cnVjdCBub250b2VfcWhkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oOjk1ODojZW5kaWYgLyogX0dFTUlOSV9FVEhFUk5FVF9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBDb3J0aW5hIEdFTUlOSSBFdGhlcm5ldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBCZWZvcmUgZGl2aW5nIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEdFTUlOSSBFdGhlcm5ldCBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBzbyBsZXQmIzM5O3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyB0aGlzIGBHRU1JTklfRVRIRVJORVRgIG9wdGlvbiByZWxpZXMgb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbnkgcHJvcGVyIHVuZGVyc3RhbmRpbmcuIFRoaXMgd2lsbCBoZWxwIG1lIGRlYnVnIGFueSBidWlsZCBmYWlsdXJlcyBvciB1bmRlcnN0YW5kIHdoZXJlIHRoZSBob29rcyBhcmUuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIEkgY2FuIGNoZWNrIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIENvcnRpbmEgZXRoZXJuZXQgZGV2aWNlc1xuICAgMzpcdFxuICAgNDpcdGNvbmZpZyBORVRfVkVORE9SX0NPUlRJTkFcbiAgIDU6XHRcdGJvb2wgXCYjMzQ7Q29ydGluYSBHZW1pbmkgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0ZGVmYXVsdCB5XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZXG4gICA5Olx0XHQgIGFuZCByZWFkIHRoZSBFdGhlcm5ldC1IT1dUTywgYXZhaWxhYmxlIGZyb21cbiAgMTA6XHRcdCAgXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXHUwMDNlLlxuICAxMTpcdFxuICAxMjpcdGlmIE5FVF9WRU5ET1JfQ09SVElOQVxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBHRU1JTklfRVRIRVJORVRcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbWluaSBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMTc6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gIDE4Olx0XHRzZWxlY3QgUEhZTElCXG4gIDE5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldC5cbiAgMjI6XHRcbiAgMjM6XHRlbmRpZiAjIE5FVF9WRU5ET1JfQ09SVElOQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzYxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgR2VtaW5pIEV0aGVybmV0JiMzOTtzIFBsYXRmb3JtIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBnZW1pbmkuY2AsIHdoaWNoIGlzIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBTdG9yTGluayBTTDM1MXggKEdlbWluaSkgZHVhbCBHaWdhYml0IEV0aGVybmV0IFNvQyBoYXJkd2FyZS4gSXQmIzM5O3MgZ290IHRob3NlIGRldmljZSB0cmVlIHN0cmluZ3MsIGAmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0JiMzNDtgIGFuZCBgJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0JiMzNDtgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGRyaXZlciB0aWdodGx5IGNvdXBsZWQgdG8gc3BlY2lmaWMgR2VtaW5pIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXVsYXRlZCBvciBhdCBsZWFzdCBwcm9iZWQgaW4gYSBtb3JlIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgYSBRRU1VIGFtZDY0IHNldHVwPyBUbyBmaW5kIG91dCwgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2suIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBgJiMzNDtjb3J0aW5hLGdlbWluaSYjMzQ7YCBhY3Jvc3MgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgZGV2aWNlIHRyZWUgc291cmNlIGZpbGVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBzY29wZSBhbmQgcG9ydGFiaWxpdHkuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGhvdyBmYXIgSSBoYXZlIHRvIGdvIHRvIGFzc2VzcyBpdCYjMzk7cyBmdWxsIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbD0xNz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTE4LSAgY29tcGF0aWJsZTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxOTogICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMjAtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sPTM3PXBhdHRlcm5Qcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC00NS0gICAgICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ2OiAgICAgICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC00Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9ODU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTEwMy0gICAgZXRoZXJuZXRANjAwMDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjEwNDogICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMDUtICAgICAgICByZWcgPSBcdTAwM2MweDYwMDAwMDAwIDB4NDAwMFx1MDAzZSwgLyogR2xvYmFsIHJlZ2lzdGVycywgcXVldWUgKi9cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTEyLSAgICAgICAgZ21hYzA6IGV0aGVybmV0LXBvcnRAMCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw6MTEzOiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7Y29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMTQtICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXHUwMDNlLCAvKiBQb3J0IDAgRE1BL1RPRSAqL1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjUtICAgICAgICBnbWFjMTogZXRoZXJuZXQtcG9ydEAxIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxMjY6ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTEyNy0gICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg2MDAwYzAwMCAweDIwMDBcdTAwM2UsIC8qIFBvcnQgMSBETUEvVE9FICovXG4tLVxuTUFJTlRBSU5FUlM9Mjg4Mj1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nZW1pbmkueWFtbFxuTUFJTlRBSU5FUlM6Mjg4MzpGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUy0yODg0LUY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9jb3J0aW5hLGdlbWluaS1waW5jdHJsLnR4dFxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNTk9XHRcdGV0aGVybmV0OiBldGhlcm5ldEA2MDAwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k6MzYwOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNjEtXHRcdFx0cmVnID0gXHUwMDNjMHg2MDAwMDAwMCAweDQwMDBcdTAwM2UsIC8qIEdsb2JhbCByZWdpc3RlcnMsIHF1ZXVlICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpPTM3MT1cdFx0XHRnbWFjMDogZXRoZXJuZXQtcG9ydEAwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaTozNzI6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7Y29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNzMtXHRcdFx0XHRyZWcgPSBcdTAwM2MweDYwMDA4MDAwIDB4MjAwMFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cbi0tXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k9MzgyPVx0XHRcdGdtYWMxOiBldGhlcm5ldC1wb3J0QDEge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM4MzpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpLTM4NC1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4NjAwMGMwMDAgMHgyMDAwXHUwMDNlLCAvKiBQb3J0IDEgRE1BL1RPRSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjYyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjI3LVx0e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjI4Olx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjY5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MjpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2ODIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgR2VtaW5pIERUUyoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgdHJlZSBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmksIHNwZWNpZmljYWxseSB0aGUgU3RvckxpbmsgU0wzNTE2IEFSTSBTb0Mg4oCTIHRoYXQgbWVhbnMgYGFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTt2ZSBnb3QgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aGluZyBpcyBzdHJ1Y3R1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIHByb2JlIGZ1bmN0aW9uOyBJIG5lZWQgdG8gZHJpbGwgaW50byB3aGF0IHJlc291cmNlcyBpdCBhY3R1YWxseSByZXF1ZXN0cyBhbmQgcmVsaWVzIG9uLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0NTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ1NTpcdFx0cG9ydC1cdTAwM2VtYWNfYWRkclsyXSA9XG4yNDU2Olx0XHRcdGNwdV90b19sZTMyKHJlYWRsKHBvcnQtXHUwMDNlZ21hY19iYXNlICYjNDM7IEdNQUNfU1RBX0FERDIpKTtcbjI0NTc6XHR9XG4yNDU4Olx0XG4yNDU5Olx0c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMjQ2MDpcdHtcbjI0NjE6XHRcdGNoYXIgKnBvcnRfbmFtZXNbMl0gPSB7IFwmIzM0O2V0aGVybmV0MFwmIzM0OywgXCYjMzQ7ZXRoZXJuZXQxXCYjMzQ7IH07XG4yNDYyOlx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cdTAwM2VkZXYub2Zfbm9kZTtcbjI0NjM6XHRcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbjI0NjQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMjQ2NTpcdFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbjI0NjY6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4yNDY3Olx0XHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7XG4yNDY4Olx0XHR1OCBtYWNbRVRIX0FMRU5dO1xuMjQ2OTpcdFx0dW5zaWduZWQgaW50IGlkO1xuMjQ3MDpcdFx0aW50IGlycTtcbjI0NzE6XHRcdGludCByZXQ7XG4yNDcyOlx0XG4yNDczOlx0XHRwYXJlbnQgPSBkZXYtXHUwMDNlcGFyZW50O1xuMjQ3NDpcdFx0Z2V0aCA9IGRldl9nZXRfZHJ2ZGF0YShwYXJlbnQpO1xuMjQ3NTpcdFxuMjQ3NjpcdFx0aWYgKCFzdHJjbXAoZGV2X25hbWUoZGV2KSwgXCYjMzQ7NjAwMDgwMDAuZXRoZXJuZXQtcG9ydFwmIzM0OykpXG4yNDc3Olx0XHRcdGlkID0gMDtcbjI0Nzg6XHRcdGVsc2UgaWYgKCFzdHJjbXAoZGV2X25hbWUoZGV2KSwgXCYjMzQ7NjAwMGMwMDAuZXRoZXJuZXQtcG9ydFwmIzM0OykpXG4yNDc5Olx0XHRcdGlkID0gMTtcbjI0ODA6XHRcdGVsc2VcbjI0ODE6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4yNDgyOlx0XG4yNDgzOlx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O3Byb2JlICVzIElEICVkXFxuXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBpZCk7XG4yNDg0Olx0XG4yNDg1Olx0XHRuZXRkZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2X21xcyhkZXYsIHNpemVvZigqcG9ydCksIFRYX1FVRVVFX05VTSwgVFhfUVVFVUVfTlVNKTtcbjI0ODY6XHRcdGlmICghbmV0ZGV2KSB7XG4yNDg3Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtDYW4mIzM5O3QgYWxsb2NhdGUgZXRoZXJuZXQgZGV2aWNlICMlZFxcblwmIzM0OywgaWQpO1xuMjQ4ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjI0ODk6XHRcdH1cbjI0OTA6XHRcbjI0OTE6XHRcdHBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMjQ5MjpcdFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBkZXYpO1xuMjQ5MzpcdFx0cG9ydC1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4yNDk0Olx0XHRwb3J0LVx1MDAzZWlkID0gaWQ7XG4yNDk1Olx0XHRwb3J0LVx1MDAzZWdldGggPSBnZXRoO1xuMjQ5NjpcdFx0cG9ydC1cdTAwM2VkZXYgPSBkZXY7XG4yNDk3Olx0XHRwb3J0LVx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgREVGQVVMVF9NU0dfRU5BQkxFKTtcbjI0OTg6XHRcbjI0OTk6XHRcdC8qIERNQSBtZW1vcnkgKi9cbjI1MDA6XHRcdHBvcnQtXHUwMDNlZG1hX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBOVUxMKTtcbjI1MDE6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VkbWFfYmFzZSkpIHtcbjI1MDI6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2dldCBETUEgYWRkcmVzcyBmYWlsZWRcXG5cJiMzNDspO1xuMjUwMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihwb3J0LVx1MDAzZWRtYV9iYXNlKTtcbjI1MDQ6XHRcdH1cbjI1MDU6XHRcbjI1MDY6XHRcdC8qIEdNQUMgY29uZmlnIG1lbW9yeSAqL1xuMjUwNzpcdFx0cG9ydC1cdTAwM2VnbWFjX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxLCBOVUxMKTtcbjI1MDg6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VnbWFjX2Jhc2UpKSB7XG4yNTA5Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtnZXQgR01BQyBhZGRyZXNzIGZhaWxlZFxcblwmIzM0Oyk7XG4yNTEwOlx0XHRcdHJldHVybiBQVFJfRVJSKHBvcnQtXHUwMDNlZ21hY19iYXNlKTtcbjI1MTE6XHRcdH1cbjI1MTI6XHRcbjI1MTM6XHRcdC8qIEludGVycnVwdCAqL1xuMjUxNDpcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcbjI1MTU6XHRcdGlmIChpcnEgXHUwMDNjIDApXG4yNTE2Olx0XHRcdHJldHVybiBpcnE7XG4yNTE3Olx0XHRwb3J0LVx1MDAzZWlycSA9IGlycTtcbjI1MTg6XHRcbjI1MTk6XHRcdC8qIENsb2NrIHRoZSBwb3J0ICovXG4yNTIwOlx0XHRwb3J0LVx1MDAzZXBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcJiMzNDtQQ0xLXCYjMzQ7KTtcbjI1MjE6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VwY2xrKSkge1xuMjUyMjpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bm8gUENMS1xcblwmIzM0Oyk7XG4yNTIzOlx0XHRcdHJldHVybiBQVFJfRVJSKHBvcnQtXHUwMDNlcGNsayk7XG4yNTI0Olx0XHR9XG4yNTI1Olx0XHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocG9ydC1cdTAwM2VwY2xrKTtcbjI1MjY6XHRcdGlmIChyZXQpXG4yNTI3Olx0XHRcdHJldHVybiByZXQ7XG4yNTI4Olx0XG4yNTI5Olx0XHQvKiBNYXliZSB0aGVyZSBpcyBhIG5pY2UgZXRoZXJuZXQgYWRkcmVzcyB3ZSBzaG91bGQgdXNlICovXG4yNTMwOlx0XHRnZW1pbmlfcG9ydF9zYXZlX21hY19hZGRyKHBvcnQpO1xuMjUzMTpcdFxuMjUzMjpcdFx0LyogUmVzZXQgdGhlIHBvcnQgKi9cbjI1MzM6XHRcdHBvcnQtXHUwMDNlcmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsIE5VTEwpO1xuMjUzNDpcdFx0aWYgKElTX0VSUihwb3J0LVx1MDAzZXJlc2V0KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRGV2aWNlIElkZW50aWZpY2F0aW9uIExvZ2ljIGluIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBMaW5lIDI0NzYsIHJpZ2h0LiBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgYGdlbWluaV9ldGhlcm5ldF9wcm9iZWAgZnVuY3Rpb24gaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIEl0IGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlc2UgRXRoZXJuZXQgaW50ZXJmYWNlcy4gVGhlIGNvZGUgdXNlcyBgc3RyY21wYCB0byBjb21wYXJlIHRoZSBkZXZpY2UgbmFtZSBvYnRhaW5lZCBieSBgZGV2X25hbWUoZGV2KWAgYWdhaW5zdCBoYXJkY29kZWQgc3RyaW5ncy4gSSBpbW1lZGlhdGVseSBzcG90IHRoZSBwb3RlbnRpYWwgZm9yIGZyYWdpbGl0eSBoZXJlLiBUaGlzIGFwcHJvYWNoIHRpZXMgdGhlIGRyaXZlciB2ZXJ5IHRpZ2h0bHkgdG8gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBuYW1lcy4KCklmIHRoZSBuYW1lIGlzICYjMzQ7NjAwMDgwMDAuZXRoZXJuZXQtcG9ydCYjMzQ7LCB0aGUgYGlkYCBpcyBzZXQgdG8gMC4gSWYgaXQmIzM5O3MgJiMzNDs2MDAwYzAwMC5ldGhlcm5ldC1wb3J0JiMzNDssIHRoZW4gYGlkYCBiZWNvbWVzIDEuIE90aGVyd2lzZSwgaXQgcmV0dXJucyAtRU5PREVWLCBzaWduYWxpbmcgdGhhdCB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IHJlY29nbml6ZSB0aGUgZGV2aWNlLgoKSSB3b3VsZCBoYXZlIHByZWZlcnJlZCBhIG1vcmUgcm9idXN0IGlkZW50aWZpY2F0aW9uIG1ldGhvZCwgbWF5YmUgdXNpbmcgZGV2aWNlIGlkZW50aWZpZXJzIG9yIGNvbXBhdGlibGUgc3RyaW5ncyBpbiB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGlzIGlzIHNvbWV0aGluZyBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGZpeGluZyBvciByZWZhY3RvcmluZy4gSG93ZXZlciwgSSBuZWVkIHRvIGxvb2sgYXQgd2hhdCBgaWRgIHJlcHJlc2VudHMgaW4gdGhlIGxhcmdlciBjb250ZXh0LiBJcyBpdCBhbiBpbmRleCBpbnRvIHNvbWUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgaWRgIGFzc2lnbm1lbnQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0MDpcdFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3JlbW92ZSxcbjI2NDE6XHR9O1xuMjY0MjpcdFxuMjY0MzpcdHN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4yNjQ0Olx0e1xuMjY0NTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4yNjQ2Olx0XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xuMjY0NzpcdFx0dW5zaWduZWQgaW50IHJldHJ5ID0gNTtcbjI2NDg6XHRcdHUzMiB2YWw7XG4yNjQ5Olx0XG4yNjUwOlx0XHQvKiBHbG9iYWwgcmVnaXN0ZXJzICovXG4yNjUxOlx0XHRnZXRoID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpnZXRoKSwgR0ZQX0tFUk5FTCk7XG4yNjUyOlx0XHRpZiAoIWdldGgpXG4yNjUzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjY1NDpcdFx0Z2V0aC1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgTlVMTCk7XG4yNjU1Olx0XHRpZiAoSVNfRVJSKGdldGgtXHUwMDNlYmFzZSkpXG4yNjU2Olx0XHRcdHJldHVybiBQVFJfRVJSKGdldGgtXHUwMDNlYmFzZSk7XG4yNjU3Olx0XHRnZXRoLVx1MDAzZWRldiA9IGRldjtcbjI2NTg6XHRcbjI2NTk6XHRcdC8qIFdhaXQgZm9yIHBvcnRzIHRvIHN0YWJpbGl6ZSAqL1xuMjY2MDpcdFx0ZG8ge1xuMjY2MTpcdFx0XHR1ZGVsYXkoMik7XG4yNjYyOlx0XHRcdHZhbCA9IHJlYWRsKGdldGgtXHUwMDNlYmFzZSAmIzQzOyBHTE9CQUxfVE9FX1ZFUlNJT05fUkVHKTtcbjI2NjM6XHRcdFx0YmFycmllcigpO1xuMjY2NDpcdFx0fSB3aGlsZSAoIXZhbCBcdTAwMjZcdTAwMjYgLS1yZXRyeSk7XG4yNjY1Olx0XHRpZiAoIXJldHJ5KSB7XG4yNjY2Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzZXQgZXRoZXJuZXRcXG5cJiMzNDspO1xuMjY2NzpcdFx0XHRyZXR1cm4gLUVJTztcbjI2Njg6XHRcdH1cbjI2Njk6XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7RXRoZXJuZXQgZGV2aWNlIElEOiAweCUwM3gsIHJldmlzaW9uIDB4JTAxeFxcblwmIzM0OyxcbjI2NzA6XHRcdFx0ICh2YWwgXHUwMDNlXHUwMDNlIDQpIFx1MDAyNiAweEZGRlUsIHZhbCBcdTAwMjYgMHhGVSk7XG4yNjcxOlx0XG4yNjcyOlx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZnZXRoLVx1MDAzZWlycV9sb2NrKTtcbjI2NzM6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmdldGgtXHUwMDNlZnJlZXFfbG9jayk7XG4yNjc0Olx0XG4yNjc1Olx0XHQvKiBUaGUgY2hpbGRyZW4gd2lsbCB1c2UgdGhpcyAqL1xuMjY3NjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZ2V0aCk7XG4yNjc3Olx0XG4yNjc4Olx0XHQvKiBTcGF3biBjaGlsZCBkZXZpY2VzIGZvciB0aGUgdHdvIHBvcnRzICovXG4yNjc5Olx0XHRyZXR1cm4gZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYpO1xuMjY4MDpcdH1cbjI2ODE6XHRcbjI2ODI6XHRzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4yNjgzOlx0e1xuMjY4NDpcdFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM3OAoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiA2MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UgZm9yIEdlbWluaSBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMgb3V0bGluZXMgKndoZW4qIHdlIHNob3VsZCBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGtleSBoZXJlIGlzIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBLCYjMzQ7IGFuZCBpdCBsb29rcyBsaWtlIHdlJiMzOTt2ZSBoaXQgYSBmZXcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AsIGlzIGEgc2VyaW91cyBjb250ZW5kZXIgZm9yIGV4Y2x1c2lvbi4KClRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBidXQgdGhlIGNvZGUgaXMgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIFNvQyBFdGhlcm5ldCBjb250cm9sbGVyLiAgSXQmIzM5O3MgYW4gQVJNLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgYW5kIEkga25vdyB0aGlzIGtpbmQgb2YgdGhpbmcuICBJdCAqbmVlZHMqIE9wZW5GaXJtd2FyZSBEZXZpY2UgVHJlZSBub2RlcyAoYE9GYCksIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIChgMHg2MDAwMDAwMGApLCBkZXZpY2UgbmFtZXMgbGlrZSBgNjAwMDgwMDAuZXRoZXJuZXQtcG9ydGAsIGFuZCBhbHNvIHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBjbG9ja3MgYW5kIHJlc2V0IGNvbnRyb2xzLiAgQWxsIG9mIHRoaXMgc2NyZWFtcyAmIzM0O2hhcmR3YXJlLWRlcGVuZGVudCwmIzM0OyBhbmQgSSBhbHJlYWR5IGtub3cgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuICBJIGNhbiYjMzk7dCBpbWFnaW5lIHRoaXMgcnVubmluZyBuYXRpdmVseSB3aXRob3V0IGEgdmVyeSBzcGVjaWZpYyBzZXR1cCwgYW5kIGV2ZW4gdGhlbiwgSSBzdXNwZWN0IG5vdC4KCkxldCYjMzk7cyBkbyBhIGxpdHRsZSBzYW5pdHkgY2hlY2sganVzdCB0byBiZSBzdXJlLi4uIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMuIE9uIGFtZDY0LCBgQ09ORklHX09GYCBpcyBnZW5lcmFsbHkgZGlzYWJsZWQsIHVubGVzcyB3ZSBlbmFibGUgc29tZSB1bml0IHRlc3RzLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIGRlZmF1bHQuIEV2ZW4gaWYgYENPTkZJR19PRmAgKmlzKiBlbmFibGVkIGZvciBzb21lIHVuaXQgdGVzdGluZywgdGhlcmUmIzM5O3Mgbm8gdmlydHVhbCBkZXZpY2Ugb3IgUENJIGRldmljZSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlci4gSXQmIzM5O3MgZXhwZWN0aW5nIGhhcmRjb2RlZCBkZXZpY2UgcmVnaXN0ZXIgYmFzZSBuYW1lcyBhbmQgcGh5c2ljYWwgU29DIE1NSU8gcmVnaXN0ZXJzLgoKU28sIGluIGNvbmNsdXNpb24sIHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBhbmQgdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIGFyZSB1c2luZy4gSXQgaXMgZXhwZWN0aW5nIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiBwcm9jZWVkLgoKTXkgZmluYWwgY2hlY2sgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBsb29rcyBsaWtlIHRoaXM6CgoqICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWAKKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgYXJyYXkpCiogICBgRm9jdXNTeW1ib2xzYDogYFtdYCAoZW1wdHkgYXJyYXkpCiogICBgUmVhc29uaW5nYDogQ2xlYXJseSBleHBsYWluIHRoYXQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jYCBkcml2ZXIgaXMgcGxhdGZvcm0tc3BlY2lmaWMgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlciwgcmVxdWlyZXMgc3BlY2lmaWMgU29DIERUIG5vZGVzLCBhbmQgcGh5c2ljYWwgTU1JTyBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4KCk9rYXksIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIERvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjA1Ljk4NDcxOTc2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzIzNjA2Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDUuOTg0NzI0MzMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA1NDYzNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTI6MzI6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNcXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5AQCAtNzM2LDcgKzczNyw4IEBAIGdtYWNfZ2V0X3F1ZXVlX3BhZ2Uoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCxcXG4gXFx0bWFwcGluZyA9IGFkZHIgXFx1MDAyNiBQQUdFX01BU0s7XFxuIFxcbiBcXHRpZiAoIWdldGgtXFx1MDAzZWZyZWVxX3BhZ2VzKSB7XFxuLVxcdFxcdGRldl9lcnIoZ2V0aC1cXHUwMDNlZGV2LCBcXFwidHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxcXG5cXFwiKTtcXG4rXFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwidHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTE0NDEsNyArMTQ0Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXFxuIH1cXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbi1cXHRcXHRcXHQgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZClcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQsIGJvb2wgKnJlc2NoZWR1bGUpXFxuIHtcXG4gXFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXJ4cV9vcmRlcikgLSAxO1xcbkBAIC0xNDQ5LDYgKzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcXG4gXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnID0gcG9ydC1cXHUwMDNlcnhxX3J3cHRyO1xcbiBcXHR1bnNpZ25lZCBpbnQgZnJhZ19uciA9IHBvcnQtXFx1MDAzZXJ4X2ZyYWdfbnI7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBwb3J0LVxcdTAwM2VyeF9za2I7XFxuK1xcdC8qIEJvdW5kIG1hbGZvcm1lZCBjaGFpbnMgd2hpbGUgYWxsb3dpbmcgbWF4aW11bSBmcmFnbWVudHMgcGVyIGZyYW1lLiAqL1xcbitcXHR1bnNpZ25lZCBpbnQgZGVzY19saW1pdCA9IGJ1ZGdldCAqIE1BWF9TS0JfRlJBR1M7XFxuIFxcdHVuc2lnbmVkIGludCBjb25zdW1lZCA9IDA7XFxuIFxcdHVuc2lnbmVkIGludCBmcmFtZV9sZW4sIGZyYWdfbGVuO1xcbiBcXHRzdHJ1Y3QgZ21hY19yeGRlc2MgKnJ4ID0gTlVMTDtcXG5AQCAtMTQ3NSw3ICsxNDc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXFxuIFxcdHIgPSBydy5iaXRzLnJwdHI7XFxuIFxcdHcgPSBydy5iaXRzLndwdHI7XFxuIFxcbi1cXHR3aGlsZSAoYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHcgIT0gcikge1xcbitcXHR3aGlsZSAoYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IGNvbnN1bWVkIFxcdTAwM2MgZGVzY19saW1pdCBcXHUwMDI2XFx1MDAyNiB3ICE9IHIpIHtcXG4gXFx0XFx0cGFnZSA9IE5VTEw7XFxuIFxcdFxcdHJ4ID0gcG9ydC1cXHUwMDNlcnhxX3JpbmcgKyByO1xcbiBcXHRcXHR3b3JkMCA9IHJ4LVxcdTAwM2V3b3JkMDtcXG5AQCAtMTUwMiwxNSArMTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKCFtYXBwaW5nKSB7XFxuLVxcdFxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICBcXFwicnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXFxcXG5cXFwiLCByKTtcXG4rXFx0XFx0XFx0aWYgKG5ldF9yYXRlbGltaXQoKSlcXG4rXFx0XFx0XFx0XFx0bmV0ZGV2X2VycihuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHIpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9kcm9wO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBGcmVlcSBwb2ludGVycyBhcmUgb25lIHBhZ2Ugb2ZmICovXFxuIFxcdFxcdGdwYWdlID0gZ21hY19nZXRfcXVldWVfcGFnZShnZXRoLCBwb3J0LCBtYXBwaW5nICsgUEFHRV9TSVpFKTtcXG4gXFx0XFx0aWYgKCFncGFnZSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGdldGgtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjb3VsZCBub3QgZmluZCBtYXBwaW5nXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfZHJvcDtcXG4gXFx0XFx0fVxcbiBcXHRcXHRwYWdlID0gZ3BhZ2UtXFx1MDAzZXBhZ2U7XFxuQEAgLTE1MzUsNyArMTU0Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbiBcXHRcXHRpZiAoZnJhZ19uciA9PSBNQVhfU0tCX0ZSQUdTKVxcbiBcXHRcXHRcXHRnb3RvIGVycl9kcm9wO1xcbiBcXG4tXFx0XFx0aWYgKGZyYWdfbGVuID09IDApXFxuK1xcdFxcdGlmIChmcmFnX2xlbiA9PSAwIFxcdTAwMjZcXHUwMDI2IG5ldF9yYXRlbGltaXQoKSlcXG4gXFx0XFx0XFx0bmV0ZGV2X2VycihuZXRkZXYsIFxcXCJSZWNlaXZlZCBmcmFnbWVudCB3aXRoIGxlbiA9IDBcXFxcblxcXCIpO1xcbiBcXG4gXFx0XFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgZnJhZ19uciwgcGFnZSwgcGFnZV9vZmZzLCBmcmFnX2xlbik7XFxuQEAgLTE1NzksNiArMTU4Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbiBcXHRwb3J0LVxcdTAwM2VyeF9mcmFnX25yID0gZnJhZ19ucjtcXG4gXFx0cG9ydC1cXHUwMDNlcnhfZHJvcHBpbmcgPSBkcm9wcGluZztcXG4gXFx0KmZyZWVxX2NvbnN1bWVkID0gY29uc3VtZWQ7XFxuK1xcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHcgIT0gcjtcXG4gXFx0d3JpdGV3KHIsIHB0cl9yZWcpO1xcbiBcXHRyZXR1cm4gcmVjZWl2ZWQ7XFxuIH1cXG5AQCAtMTU5MCwxMiArMTU5OCwxMyBAQCBzdGF0aWMgaW50IGdtYWNfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcXG4gXFx0dW5zaWduZWQgaW50IGZyZWVxX2NvbnN1bWVkO1xcbiBcXHR1bnNpZ25lZCBpbnQgcmVjZWl2ZWQ7XFxuK1xcdGJvb2wgcmVzY2hlZHVsZTtcXG4gXFxuIFxcdGZyZWVxX3RocmVzaG9sZCA9IDEgXFx1MDAzY1xcdTAwM2MgKGdldGgtXFx1MDAzZWZyZWVxX29yZGVyIC0gMSk7XFxuIFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnBvcnQtXFx1MDAzZXJ4X3N0YXRzX3N5bmNwKTtcXG4gXFxuLVxcdHJlY2VpdmVkID0gZ21hY19yeChuYXBpLVxcdTAwM2VkZXYsIGJ1ZGdldCwgXFx1MDAyNmZyZWVxX2NvbnN1bWVkKTtcXG4tXFx0aWYgKHJlY2VpdmVkIFxcdTAwM2MgYnVkZ2V0KVxcbitcXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cXHUwMDNlZGV2LCBidWRnZXQsIFxcdTAwMjZmcmVlcV9jb25zdW1lZCwgXFx1MDAyNnJlc2NoZWR1bGUpO1xcbitcXHRpZiAoIXJlc2NoZWR1bGUgXFx1MDAyNlxcdTAwMjYgcmVjZWl2ZWQgXFx1MDAzYyBidWRnZXQpXFxuIFxcdFxcdCsrcG9ydC1cXHUwMDNlcnhfbmFwaV9leGl0cztcXG4gXFxuIFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZwb3J0LVxcdTAwM2VyeF9zdGF0c19zeW5jcCk7XFxuQEAgLTE2MDYsMTAgKzE2MTUsMTEgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuIFxcdFxcdGdldGhfZmlsbF9mcmVlcShnZXRoLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHJlY2VpdmVkIFxcdTAwM2MgYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXFxuK1xcdGlmICghcmVzY2hlZHVsZSBcXHUwMDI2XFx1MDAyNiByZWNlaXZlZCBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSlcXG4gXFx0XFx0Z21hY19lbmFibGVfcnhfaXJxKG5hcGktXFx1MDAzZWRldiwgMSk7XFxuIFxcbi1cXHRyZXR1cm4gcmVjZWl2ZWQ7XFxuK1xcdHJldHVybiByZXNjaGVkdWxlID8gYnVkZ2V0IDogcmVjZWl2ZWQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5AQCAtMTc5OCw3ICsxODA4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGdtYWNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuIFxcbiBcXHRpZiAodmFsIFxcdTAwMjYgKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSkpIHtcXG4gXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZnZXRoLVxcdTAwM2VpcnFfbG9jayk7XFxuLVxcdFxcdHdyaXRlbChHTUFDMF9SWERFUlJfSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSxcXG4rXFx0XFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSxcXG4gXFx0XFx0ICAgICAgIGdldGgtXFx1MDAzZWJhc2UgKyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnBvcnQtXFx1MDAzZWlyX3N0YXRzX3N5bmNwKTtcXG4gXFx0XFx0Kytwb3J0LVxcdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDYuNDk1OTA3NTQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyODgxMjQwNjk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMjozMjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbkBAIC03MzYsNyArNzM3LDggQEAgZ21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuIFx0bWFwcGluZyA9IGFkZHIgXHUwMDI2IFBBR0VfTUFTSztcbiBcbiBcdGlmICghZ2V0aC1cdTAwM2VmcmVlcV9wYWdlcykge1xuLVx0XHRkZXZfZXJyKGdldGgtXHUwMDNlZGV2LCBcInRyeSB0byBnZXQgcGFnZSB3aXRoIG5vIHBhZ2UgbGlzdFxcblwiKTtcbitcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVx1MDAzZWRldixcbitcdFx0XHRcdCAgICBcInRyeSB0byBnZXQgcGFnZSB3aXRoIG5vIHBhZ2UgbGlzdFxcblwiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTQ0MSw3ICsxNDQzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnbWFjX3NrYl9pZl9nb29kX2ZyYW1lKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCxcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXG4tXHRcdFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQpXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQsIGJvb2wgKnJlc2NoZWR1bGUpXG4ge1xuIFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiBcdHVuc2lnbmVkIHNob3J0IG0gPSAoMSBcdTAwM2NcdTAwM2MgcG9ydC1cdTAwM2VyeHFfb3JkZXIpIC0gMTtcbkBAIC0xNDQ5LDYgKzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuIFx0dW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LVx1MDAzZXJ4X2ZyYWdfbnI7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcG9ydC1cdTAwM2VyeF9za2I7XG4rXHQvKiBCb3VuZCBtYWxmb3JtZWQgY2hhaW5zIHdoaWxlIGFsbG93aW5nIG1heGltdW0gZnJhZ21lbnRzIHBlciBmcmFtZS4gKi9cbitcdHVuc2lnbmVkIGludCBkZXNjX2xpbWl0ID0gYnVkZ2V0ICogTUFYX1NLQl9GUkFHUztcbiBcdHVuc2lnbmVkIGludCBjb25zdW1lZCA9IDA7XG4gXHR1bnNpZ25lZCBpbnQgZnJhbWVfbGVuLCBmcmFnX2xlbjtcbiBcdHN0cnVjdCBnbWFjX3J4ZGVzYyAqcnggPSBOVUxMO1xuQEAgLTE0NzUsNyArMTQ3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0ciA9IHJ3LmJpdHMucnB0cjtcbiBcdHcgPSBydy5iaXRzLndwdHI7XG4gXG4tXHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbitcdHdoaWxlIChidWRnZXQgXHUwMDI2XHUwMDI2IGNvbnN1bWVkIFx1MDAzYyBkZXNjX2xpbWl0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbiBcdFx0cGFnZSA9IE5VTEw7XG4gXHRcdHJ4ID0gcG9ydC1cdTAwM2VyeHFfcmluZyArIHI7XG4gXHRcdHdvcmQwID0gcngtXHUwMDNld29yZDA7XG5AQCAtMTUwMiwxNSArMTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoIW1hcHBpbmcpIHtcbi1cdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbi1cdFx0XHRcdCAgIFwicnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXFxuXCIsIHIpO1xuK1x0XHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4rXHRcdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbitcdFx0XHRcdFx0ICAgXCJyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXG5cIixcbitcdFx0XHRcdFx0ICAgcik7XG4gXHRcdFx0Z290byBlcnJfZHJvcDtcbiBcdFx0fVxuIFxuIFx0XHQvKiBGcmVlcSBwb2ludGVycyBhcmUgb25lIHBhZ2Ugb2ZmICovXG4gXHRcdGdwYWdlID0gZ21hY19nZXRfcXVldWVfcGFnZShnZXRoLCBwb3J0LCBtYXBwaW5nICsgUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFncGFnZSkge1xuLVx0XHRcdGRldl9lcnIoZ2V0aC1cdTAwM2VkZXYsIFwiY291bGQgbm90IGZpbmQgbWFwcGluZ1xcblwiKTtcbitcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XHQgICAgXCJjb3VsZCBub3QgZmluZCBtYXBwaW5nXFxuXCIpO1xuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXHRcdH1cbiBcdFx0cGFnZSA9IGdwYWdlLVx1MDAzZXBhZ2U7XG5AQCAtMTUzNSw3ICsxNTQyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXG4gXHRcdGlmIChmcmFnX25yID09IE1BWF9TS0JfRlJBR1MpXG4gXHRcdFx0Z290byBlcnJfZHJvcDtcbiBcbi1cdFx0aWYgKGZyYWdfbGVuID09IDApXG4rXHRcdGlmIChmcmFnX2xlbiA9PSAwIFx1MDAyNlx1MDAyNiBuZXRfcmF0ZWxpbWl0KCkpXG4gXHRcdFx0bmV0ZGV2X2VycihuZXRkZXYsIFwiUmVjZWl2ZWQgZnJhZ21lbnQgd2l0aCBsZW4gPSAwXFxuXCIpO1xuIFxuIFx0XHRza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCBmcmFnX25yLCBwYWdlLCBwYWdlX29mZnMsIGZyYWdfbGVuKTtcbkBAIC0xNTc5LDYgKzE1ODYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHBvcnQtXHUwMDNlcnhfZnJhZ19uciA9IGZyYWdfbnI7XG4gXHRwb3J0LVx1MDAzZXJ4X2Ryb3BwaW5nID0gZHJvcHBpbmc7XG4gXHQqZnJlZXFfY29uc3VtZWQgPSBjb25zdW1lZDtcbitcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHI7XG4gXHR3cml0ZXcociwgcHRyX3JlZyk7XG4gXHRyZXR1cm4gcmVjZWl2ZWQ7XG4gfVxuQEAgLTE1OTAsMTIgKzE1OTgsMTMgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHR1bnNpZ25lZCBpbnQgZnJlZXFfdGhyZXNob2xkO1xuIFx0dW5zaWduZWQgaW50IGZyZWVxX2NvbnN1bWVkO1xuIFx0dW5zaWduZWQgaW50IHJlY2VpdmVkO1xuK1x0Ym9vbCByZXNjaGVkdWxlO1xuIFxuIFx0ZnJlZXFfdGhyZXNob2xkID0gMSBcdTAwM2NcdTAwM2MgKGdldGgtXHUwMDNlZnJlZXFfb3JkZXIgLSAxKTtcbiBcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cG9ydC1cdTAwM2VyeF9zdGF0c19zeW5jcCk7XG4gXG4tXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQpO1xuLVx0aWYgKHJlY2VpdmVkIFx1MDAzYyBidWRnZXQpXG4rXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQsIFx1MDAyNnJlc2NoZWR1bGUpO1xuK1x0aWYgKCFyZXNjaGVkdWxlIFx1MDAyNlx1MDAyNiByZWNlaXZlZCBcdTAwM2MgYnVkZ2V0KVxuIFx0XHQrK3BvcnQtXHUwMDNlcnhfbmFwaV9leGl0cztcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnBvcnQtXHUwMDNlcnhfc3RhdHNfc3luY3ApO1xuQEAgLTE2MDYsMTAgKzE2MTUsMTEgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdGdldGhfZmlsbF9mcmVlcShnZXRoLCB0cnVlKTtcbiBcdH1cbiBcbi1cdGlmIChyZWNlaXZlZCBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcmVjZWl2ZWQpKVxuK1x0aWYgKCFyZXNjaGVkdWxlIFx1MDAyNlx1MDAyNiByZWNlaXZlZCBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNlxuK1x0ICAgIG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXG4gXHRcdGdtYWNfZW5hYmxlX3J4X2lycShuYXBpLVx1MDAzZWRldiwgMSk7XG4gXG4tXHRyZXR1cm4gcmVjZWl2ZWQ7XG4rXHRyZXR1cm4gcmVzY2hlZHVsZSA/IGJ1ZGdldCA6IHJlY2VpdmVkO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnbWFjX2R1bXBfZG1hX3N0YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5AQCAtMTc5OCw3ICsxODA4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGdtYWNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4gXG4gXHRpZiAodmFsIFx1MDAyNiAoR01BQzBfUlhfT1ZFUlJVTl9JTlRfQklUIFx1MDAzY1x1MDAzYyAobmV0ZGV2LVx1MDAzZWRldl9pZCAqIDgpKSkge1xuIFx0XHRzcGluX2xvY2soXHUwMDI2Z2V0aC1cdTAwM2VpcnFfbG9jayk7XG4tXHRcdHdyaXRlbChHTUFDMF9SWERFUlJfSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbitcdFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbiBcdFx0ICAgICAgIGdldGgtXHUwMDNlYmFzZSArIEdMT0JBTF9JTlRFUlJVUFRfU1RBVFVTXzRfUkVHKTtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZwb3J0LVx1MDAzZWlyX3N0YXRzX3N5bmNwKTtcbiBcdFx0Kytwb3J0LVx1MDAzZXN0YXRzLnJ4X2ZpZm9fZXJyb3JzO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDYuNDk1OTEwNzAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTExMDk3NTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCdzIGdvb2QgaW5mb3JtYXRpb24gdG8ga25vdy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AuIE5vdywgdGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIFwiZ2VtaW5pXCIgZHJpdmVyIGlzLiBXaGF0IGhhcmR3YXJlIGRvZXMgaXQgc3VwcG9ydD8gSG93IGlzIGl0IGNvbmZpZ3VyZWQ/IElzIGl0IGEgcGxhdGZvcm0gZGV2aWNlLCBhIFBDSSBkZXZpY2UsIG9yIHNvbWV0aGluZyBlbHNlIGxpa2UgdmlydGlvPyBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgZGV2aWNlJ3MgY29uZmlndXJhdGlvbiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBvciBwZXJoYXBzIGp1c3QgdXNlIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2AuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZXNzZW50aWFsIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFdpdGggdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB0aGUgcHJlcmVxdWlzaXRlcyBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBoYXJkd2FyZSByZXF1aXJlbWVudHMgdGhhdCBhcmUgcGVydGluZW50IHRvIHRoaXMgY2hhbmdlLiBPbmNlIEkgaGF2ZSB0aGUgS2NvbmZpZyBkZXRhaWxzLCBJIGNhbiBwcm9jZWVkIHdpdGggYSBtdWNoIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjE1LjYwNjg5MjY0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg3MTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJHRU1JTkl8Z2VtaW5pXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnPTEyPWlmIE5FVF9WRU5ET1JfQ09SVElOQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL0tjb25maWc6MTQ6Y29uZmlnIEdFTUlOSV9FVEhFUk5FVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiR2VtaW5pIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0dFTUlOSV9FVEhFUk5FVCkgKz0gZ2VtaW5pLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo0NjojaW5jbHVkZSBcXFwiZ2VtaW5pLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ4OiNkZWZpbmUgRFJWX05BTUVcXHRcXHRcXFwiZ21hYy1nZW1pbmlcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9OTc9c3RydWN0IGdtYWNfdHhxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0OnN0cnVjdCBnZW1pbmlfZXRoZXJuZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDY6c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNy1cXHR1OCBpZDsgLyogMCBvciAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDk6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTU6c3RydWN0IGdlbWluaV9ldGhlcm5ldCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTYtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU3LVxcdHZvaWQgX19pb21lbSAqYmFzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1ODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTU5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjAtXFx0Ym9vbCBpbml0aWFsaXplZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMwPXN0YXRpYyB2b2lkIGdtYWNfdXBkYXRlX2NvbmZpZzBfcmVnKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNDY9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0OS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNjE9c3RhdGljIHZvaWQgZ21hY19kaXNhYmxlX3R4X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9Mjc4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X2Zsb3dfY29udHJvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBib29sIHR4LCBib29sIHJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI4MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjgxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI5Nz1zdGF0aWMgdm9pZCBnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Mjk5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zMDAtXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IG5ldGRldi1cXHUwMDNlcGh5ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0zNjI9c3RhdGljIGludCBnbWFjX3NldHVwX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzYzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzY1LVxcdHVuaW9uIGdtYWNfc3RhdHVzIHN0YXR1cyA9IHsgLmJpdHMzMiA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NDY2PXN0YXRpYyBpbnQgZ21hY19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00Njcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NDY4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00NjktXFx0dW5pb24gZ21hY19jb25maWcwIGNvbmZpZzAgPSB7IC5iaXRzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz01NDY9c3RhdGljIGludCBnbWFjX3NldHVwX3R4cXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTU0Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTU0OS1cXHR1bnNpZ25lZCBpbnQgbl90eHEgPSBuZXRkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NTA6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXFx1MDAzZWdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NTEtXFx0c2l6ZV90IGVudHJpZXMgPSAxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXR4cV9vcmRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NjA0PXN0YXRpYyB2b2lkIGdtYWNfY2xlYW5fdHhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBnbWFjX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NjA3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02MDgtXFx0dW5zaWduZWQgaW50IG0gPSAoMSBcXHUwMDNjXFx1MDAzYyBwb3J0LVxcdTAwM2V0eHFfb3JkZXIpIC0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwOTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYxMC1cXHR1bnNpZ25lZCBpbnQgYyA9IHR4cS1cXHUwMDNlY3B0cjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9Njc2PXN0YXRpYyB2b2lkIGdtYWNfY2xlYW51cF90eHFzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02Nzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Njc4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02NzktXFx0dW5zaWduZWQgaW50IG5fdHhxID0gbmV0ZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NjgwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjgxLVxcdHZvaWQgX19pb21lbSAqcndwdHJfcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03MDI9c3RhdGljIGludCBnbWFjX3NldHVwX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzAzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjcwNDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA1OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzA2LVxcdHN0cnVjdCBub250b2VfcWhkciBfX2lvbWVtICpxaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03Mjc9c3RhdGljIHN0cnVjdCBnbWFjX3F1ZXVlX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzI4OmdtYWNfZ2V0X3F1ZXVlX3BhZ2Uoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjcyOTpcXHRcXHQgICAgc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzMwLVxcdFxcdCAgICBkbWFfYWRkcl90IGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTc1NT1zdGF0aWMgdm9pZCBnbWFjX2NsZWFudXBfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy03NTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzU3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3NTg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXFx1MDAzZWdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy03NTktXFx0c3RydWN0IGdtYWNfcnhkZXNjICpyeGQgPSBwb3J0LVxcdTAwM2VyeHFfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODA1OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0aF9mcmVlcV9hbGxvY19tYXBfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODA2LVxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODcxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODcyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0aF9maWxsX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsIGJvb2wgcmVmaWxsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6OTI3OnN0YXRpYyBpbnQgZ2V0aF9zZXR1cF9mcmVlcShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTk4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6OTk5OnN0YXRpYyB2b2lkIGdldGhfY2xlYW51cF9mcmVlcShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwMzgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDM5OnN0YXRpYyBpbnQgZ2V0aF9yZXNpemVfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDQxOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA0Mi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcG9ydC1cXHUwMDNlbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0MzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKm90aGVyX3BvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDQ0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpvdGhlcl9uZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTExMDc9c3RhdGljIHZvaWQgZ21hY190eF9pcnFfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMTItXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEzOT1zdGF0aWMgaW50IGdtYWNfbWFwX3R4X2J1ZnMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQyOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMTQzLVxcdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNrYl9zaSA9ICBza2Jfc2hpbmZvKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDUtXFx0c2hvcnQgZnJhZywgbGFzdF9mcmFnID0gc2tiX3NpLVxcdTAwM2Vucl9mcmFncyAtIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQ2OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0Ny1cXHR1bnNpZ25lZCBpbnQgd29yZDEsIHdvcmQzLCBidWZsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTEyNzc9c3RhdGljIG5ldGRldl90eF90IGdtYWNfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMjc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEyODA6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEyODEtXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXR4cV9vcmRlcikgLSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMzU3PXN0YXRpYyB2b2lkIGdtYWNfZW5hYmxlX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzU5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzYwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM2MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMzg2PXN0YXRpYyB2b2lkIGdtYWNfZW5hYmxlX3J4X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM4Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM5MC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTQwNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdtYWNfc2tiX2lmX2dvb2RfZnJhbWUoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQwNi1cXHRcXHRcXHRcXHRcXHQgICAgICB1bmlvbiBnbWFjX3J4ZGVzY18wIHdvcmQwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNDQ1PXN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDQ3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE0NDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0NDktXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXJ4cV9vcmRlcikgLSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTQ1MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0NTEtXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnID0gcG9ydC1cXHUwMDNlcnhxX3J3cHRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNTk0PXN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTk2OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5hcGktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTk3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5OC1cXHR1bnNpZ25lZCBpbnQgZnJlZXFfdGhyZXNob2xkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNjI1PXN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyNzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MjktXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNjk2PXN0YXRpYyB2b2lkIGdtYWNfdXBkYXRlX2h3X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE2OTg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2OTktXFx0dW5zaWduZWQgaW50IHJ4X2Rpc2NhcmRzLCByeF9tY2FzdCwgcnhfYmNhc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzAwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTcwMS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzMyPXN0YXRpYyB1MzIgZ21hY19nZXRfaW50cl9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzYtXFx0dm9pZCBfX2lvbWVtICppcnFpZl9yZWcsICppcnFlbl9yZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE3NTA9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdtYWNfY29hbGVzY2VfZGVsYXlfZXhwaXJlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE3NTI6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE3NTM6XFx0XFx0Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzU0LVxcdFxcdFxcdCAgICAgcnhfY29hbGVzY2VfdGltZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzYwPXN0YXRpYyBpcnFyZXR1cm5fdCBnbWFjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzYyOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NjMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzY0OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzY1LVxcdHUzMiB2YWwsIG9yciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODIyOnN0YXRpYyB2b2lkIGdtYWNfc3RhcnRfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTg0MzpzdGF0aWMgdm9pZCBnbWFjX3N0b3BfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xODU0PXN0YXRpYyBpbnQgZ21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE4NTY6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4NTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTkxMT1zdGF0aWMgaW50IGdtYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTEzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xOTM1PXN0YXRpYyB2b2lkIGdtYWNfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5MzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTkzNzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkzOC1cXHR1bmlvbiBnbWFjX3J4X2ZsdHIgZmlsdGVyID0geyAuYml0cyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk3MD1zdGF0aWMgdm9pZCBnbWFjX3dyaXRlX21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE5NzI6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5NzMtXFx0X19sZTMyIGFkZHJbM107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE5OTM9c3RhdGljIHZvaWQgZ21hY19jbGVhcl9od19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk5NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTk1OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMDA1PXN0YXRpYyB2b2lkIGdtYWNfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjAwNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMDA4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDA5LVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjA3ND1zdGF0aWMgaW50IGdtYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIwNzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjA3NzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjA3OC1cXHRpbnQgZW5hYmxlID0gZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYQ1NVTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjEwNT1zdGF0aWMgdm9pZCBnbWFjX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxMDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjEwODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjEwOS1cXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIxODA9c3RhdGljIHZvaWQgZ21hY19nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMTgyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIxODM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxODQtXFx0dW5pb24gZ21hY19jb25maWcwIGNvbmZpZzA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyMDY9c3RhdGljIHZvaWQgZ21hY19nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjIxMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjIyNj1zdGF0aWMgaW50IGdtYWNfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyMzE6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMzItXFx0aW50IGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyNDk9c3RhdGljIGludCBnbWFjX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyNTQ6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyNjM9c3RhdGljIGludCBnbWFjX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjY3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyNjg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODE9c3RhdGljIHUzMiBnbWFjX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI4Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjgzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjg4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBsZXZlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyODkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI5MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdtYWNfMzUxeF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzY6c3RhdGljIGlycXJldHVybl90IGdlbWluaV9wb3J0X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzOC1cXHR1bnNpZ25lZCBsb25nIGlycW1hc2sgPSBTV0ZRX0VNUFRZX0lOVF9CSVQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzM5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzQwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzQxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzU4OnN0YXRpYyBpcnFyZXR1cm5fdCBnZW1pbmlfcG9ydF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cXHRpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzODc6c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM5NzpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfaW5pdChzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDQ5OnN0YXRpYyB2b2lkIGdlbWluaV9wb3J0X3NhdmVfbWFjX2FkZHIoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDU5OnN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDYyLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI0NjM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2NC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ2NTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2Ni1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTI5LVxcdC8qIE1heWJlIHRoZXJlIGlzIGEgbmljZSBldGhlcm5ldCBhZGRyZXNzIHdlIHNob3VsZCB1c2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1MzA6XFx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NDgtXFx0LyogVGhpcyB3aWxsIGp1c3QgYmUgZG9uZSBvbmNlIGJvdGggcG9ydHMgYXJlIHVwIGFuZCByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjU0OTpcXHRnZW1pbmlfZXRoZXJuZXRfaW5pdChnZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTItXFx0XFx0XFx0XFx0XFx0cG9ydC1cXHUwMDNlaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjU5MzpcXHRcXHRcXHRcXHRcXHRnZW1pbmlfcG9ydF9pcnEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTk0OlxcdFxcdFxcdFxcdFxcdGdlbWluaV9wb3J0X2lycV90aHJlYWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTk1LVxcdFxcdFxcdFxcdFxcdElSUUZfU0hBUkVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYxOTpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjIzOlxcdGdlbWluaV9wb3J0X3JlbW92ZShwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjctXFx0e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyODpcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYzMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfcG9ydF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM1LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM2OlxcdFxcdC5uYW1lID0gXFxcImdlbWluaS1ldGhlcm5ldC1wb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2Mzc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM4LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM5OlxcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0MDpcXHQucmVtb3ZlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0MS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDM6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0NS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0NjpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0Ny1cXHR1bnNpZ25lZCBpbnQgcmV0cnkgPSA1O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY4MjpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2ODQ6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjkxLVxcdHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTI6XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjk2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGdlbWluaV9ldGhlcm5ldF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5OS1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcwMC1cXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzAyLVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzAzOlxcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MDQ6XFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwNzpzdGF0aWMgaW50IF9faW5pdCBnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcxMTpcXHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzE1OlxcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2Z2VtaW5pX2V0aGVybmV0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzE2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTc6XFx0XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzE4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MjItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyMzptb2R1bGVfaW5pdChnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MjU6c3RhdGljIHZvaWQgX19leGl0IGdlbWluaV9ldGhlcm5ldF9tb2R1bGVfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzI3OlxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZnZW1pbmlfZXRoZXJuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3Mjg6XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzI5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MzA6bW9kdWxlX2V4aXQoZ2VtaW5pX2V0aGVybmV0X21vZHVsZV9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oLTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5OiNpZm5kZWYgX0dFTUlOSV9FVEhFUk5FVF9IXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDoxMDojZGVmaW5lIF9HRU1JTklfRVRIRVJORVRfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oPTk1Mz1zdHJ1Y3Qgbm9udG9lX3FoZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5NTg6I2VuZGlmIC8qIF9HRU1JTklfRVRIRVJORVRfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjozMjoxNS42NTI3NjkxNzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3NzUwNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIENvcnRpbmEgR0VNSU5JIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBHRU1JTkkgRXRoZXJuZXQgaW1wbGVtZW50YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgc28gbGV0J3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyB0aGlzIGBHRU1JTklfRVRIRVJORVRgIG9wdGlvbiByZWxpZXMgb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbnkgcHJvcGVyIHVuZGVyc3RhbmRpbmcuIFRoaXMgd2lsbCBoZWxwIG1lIGRlYnVnIGFueSBidWlsZCBmYWlsdXJlcyBvciB1bmRlcnN0YW5kIHdoZXJlIHRoZSBob29rcyBhcmUuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIEkgY2FuIGNoZWNrIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjozMjoxNy44NjA1MjIzMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjIENvcnRpbmEgZXRoZXJuZXQgZGV2aWNlc1xcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgTkVUX1ZFTkRPUl9DT1JUSU5BXFxuICAgNTpcXHRcXHRib29sIFxcXCJDb3J0aW5hIEdlbWluaSBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZXFxuICAgOTpcXHRcXHQgIGFuZCByZWFkIHRoZSBFdGhlcm5ldC1IT1dUTywgYXZhaWxhYmxlIGZyb21cXG4gIDEwOlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0b1xcdTAwM2UuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGlmIE5FVF9WRU5ET1JfQ09SVElOQVxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgR0VNSU5JX0VUSEVSTkVUXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VtaW5pIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAxODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIwOlxcdFxcdGhlbHBcXG4gIDIxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldC5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0NPUlRJTkFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MTcuODYwNTgyMTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0ODI4MDEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEdlbWluaSBFdGhlcm5ldCdzIFBsYXRmb3JtIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgZ2VtaW5pLmNgLCB3aGljaCBpcyB0aGUgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBTb0MgaGFyZHdhcmUuIEl0J3MgZ290IHRob3NlIGRldmljZSB0cmVlIHN0cmluZ3MsIGBcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XCJgIGFuZCBgXCJjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCJgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGRyaXZlciB0aWdodGx5IGNvdXBsZWQgdG8gc3BlY2lmaWMgR2VtaW5pIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXVsYXRlZCBvciBhdCBsZWFzdCBwcm9iZWQgaW4gYSBtb3JlIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgYSBRRU1VIGFtZDY0IHNldHVwPyBUbyBmaW5kIG91dCwgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2suIEknbSBnb2luZyB0byBydW4gYSBxdWljayBgZ3JlcGAgZm9yIGBcImNvcnRpbmEsZ2VtaW5pXCJgIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRpcmVjdG9yaWVzLCBkZXZpY2UgdHJlZSBzb3VyY2UgZmlsZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNjb3BlIGFuZCBwb3J0YWJpbGl0eS4gSSdtIGhvcGluZyB0byBxdWlja2x5IGRldGVybWluZSBob3cgZmFyIEkgaGF2ZSB0byBnbyB0byBhc3Nlc3MgaXQncyBmdWxsIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjIxLjEwODg2NTQyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ5Mzg0MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9MTc9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTgtICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxOTogICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTIwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sPTM3PXBhdHRlcm5Qcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTQ1LSAgICAgIGNvbXBhdGlibGU6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ2OiAgICAgICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtNDctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9ODU9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTAzLSAgICBldGhlcm5ldEA2MDAwMDAwMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjEwNDogICAgICAgIGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMDUtICAgICAgICByZWcgPSBcXHUwMDNjMHg2MDAwMDAwMCAweDQwMDBcXHUwMDNlLCAvKiBHbG9iYWwgcmVnaXN0ZXJzLCBxdWV1ZSAqL1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTExMi0gICAgICAgIGdtYWMwOiBldGhlcm5ldC1wb3J0QDAge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxMTM6ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFxcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTExNC0gICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjUtICAgICAgICBnbWFjMTogZXRoZXJuZXQtcG9ydEAxIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw6MTI2OiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjctICAgICAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDYwMDBjMDAwIDB4MjAwMFxcdTAwM2UsIC8qIFBvcnQgMSBETUEvVE9FICovXFxuLS1cXG5NQUlOVEFJTkVSUz0yODgyPUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nZW1pbmkueWFtbFxcbk1BSU5UQUlORVJTOjI4ODM6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWxcXG5NQUlOVEFJTkVSUy0yODg0LUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvY29ydGluYSxnZW1pbmktcGluY3RybC50eHRcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNTk9XFx0XFx0ZXRoZXJuZXQ6IGV0aGVybmV0QDYwMDAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k6MzYwOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNjEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMDAwMDAgMHg0MDAwXFx1MDAzZSwgLyogR2xvYmFsIHJlZ2lzdGVycywgcXVldWUgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNzE9XFx0XFx0XFx0Z21hYzA6IGV0aGVybmV0LXBvcnRAMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM3MjpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNzMtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zODI9XFx0XFx0XFx0Z21hYzE6IGV0aGVybmV0LXBvcnRAMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM4MzpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zODQtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMGMwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAxIERNQS9UT0UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjYyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNy1cXHR7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjI4OlxcdFxcdC5jb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyOS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNjkwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGdlbWluaV9ldGhlcm5ldF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cXHR7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjkyOlxcdFxcdC5jb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2OTMtXFx0fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjIuODU4MjU0NzY0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQxMzU5OTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIEdlbWluaSBEVFMqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSB0cmVlIGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSwgc3BlY2lmaWNhbGx5IHRoZSBTdG9yTGluayBTTDM1MTYgQVJNIFNvQyDigJMgdGhhdCBtZWFucyBgYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIEkndmUgZ290IHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGhpbmcgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRoZSBwcm9iZSBmdW5jdGlvbjsgSSBuZWVkIHRvIGRyaWxsIGludG8gd2hhdCByZXNvdXJjZXMgaXQgYWN0dWFsbHkgcmVxdWVzdHMgYW5kIHJlbGllcyBvbi4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjI2LjI3MTg1NzAyNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDU1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDU1OlxcdFxcdHBvcnQtXFx1MDAzZW1hY19hZGRyWzJdID1cXG4yNDU2OlxcdFxcdFxcdGNwdV90b19sZTMyKHJlYWRsKHBvcnQtXFx1MDAzZWdtYWNfYmFzZSArIEdNQUNfU1RBX0FERDIpKTtcXG4yNDU3OlxcdH1cXG4yNDU4OlxcdFxcbjI0NTk6XFx0c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjI0NjA6XFx0e1xcbjI0NjE6XFx0XFx0Y2hhciAqcG9ydF9uYW1lc1syXSA9IHsgXFxcImV0aGVybmV0MFxcXCIsIFxcXCJldGhlcm5ldDFcXFwiIH07XFxuMjQ2MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cXHUwMDNlZGV2Lm9mX25vZGU7XFxuMjQ2MzpcXHRcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQ7XFxuMjQ2NDpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI0NjU6XFx0XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG4yNDY2OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuMjQ2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7XFxuMjQ2ODpcXHRcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbjI0Njk6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbjI0NzA6XFx0XFx0aW50IGlycTtcXG4yNDcxOlxcdFxcdGludCByZXQ7XFxuMjQ3MjpcXHRcXG4yNDczOlxcdFxcdHBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbjI0NzQ6XFx0XFx0Z2V0aCA9IGRldl9nZXRfZHJ2ZGF0YShwYXJlbnQpO1xcbjI0NzU6XFx0XFxuMjQ3NjpcXHRcXHRpZiAoIXN0cmNtcChkZXZfbmFtZShkZXYpLCBcXFwiNjAwMDgwMDAuZXRoZXJuZXQtcG9ydFxcXCIpKVxcbjI0Nzc6XFx0XFx0XFx0aWQgPSAwO1xcbjI0Nzg6XFx0XFx0ZWxzZSBpZiAoIXN0cmNtcChkZXZfbmFtZShkZXYpLCBcXFwiNjAwMGMwMDAuZXRoZXJuZXQtcG9ydFxcXCIpKVxcbjI0Nzk6XFx0XFx0XFx0aWQgPSAxO1xcbjI0ODA6XFx0XFx0ZWxzZVxcbjI0ODE6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjQ4MjpcXHRcXG4yNDgzOlxcdFxcdGRldl9pbmZvKGRldiwgXFxcInByb2JlICVzIElEICVkXFxcXG5cXFwiLCBkZXZfbmFtZShkZXYpLCBpZCk7XFxuMjQ4NDpcXHRcXG4yNDg1OlxcdFxcdG5ldGRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXZfbXFzKGRldiwgc2l6ZW9mKCpwb3J0KSwgVFhfUVVFVUVfTlVNLCBUWF9RVUVVRV9OVU0pO1xcbjI0ODY6XFx0XFx0aWYgKCFuZXRkZXYpIHtcXG4yNDg3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiQ2FuJ3QgYWxsb2NhdGUgZXRoZXJuZXQgZGV2aWNlICMlZFxcXFxuXFxcIiwgaWQpO1xcbjI0ODg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjQ4OTpcXHRcXHR9XFxuMjQ5MDpcXHRcXG4yNDkxOlxcdFxcdHBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjI0OTI6XFx0XFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBkZXYpO1xcbjI0OTM6XFx0XFx0cG9ydC1cXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xcbjI0OTQ6XFx0XFx0cG9ydC1cXHUwMDNlaWQgPSBpZDtcXG4yNDk1OlxcdFxcdHBvcnQtXFx1MDAzZWdldGggPSBnZXRoO1xcbjI0OTY6XFx0XFx0cG9ydC1cXHUwMDNlZGV2ID0gZGV2O1xcbjI0OTc6XFx0XFx0cG9ydC1cXHUwMDNlbXNnX2VuYWJsZSA9IG5ldGlmX21zZ19pbml0KGRlYnVnLCBERUZBVUxUX01TR19FTkFCTEUpO1xcbjI0OTg6XFx0XFxuMjQ5OTpcXHRcXHQvKiBETUEgbWVtb3J5ICovXFxuMjUwMDpcXHRcXHRwb3J0LVxcdTAwM2VkbWFfYmFzZSA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDAsIE5VTEwpO1xcbjI1MDE6XFx0XFx0aWYgKElTX0VSUihwb3J0LVxcdTAwM2VkbWFfYmFzZSkpIHtcXG4yNTAyOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiZ2V0IERNQSBhZGRyZXNzIGZhaWxlZFxcXFxuXFxcIik7XFxuMjUwMzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwb3J0LVxcdTAwM2VkbWFfYmFzZSk7XFxuMjUwNDpcXHRcXHR9XFxuMjUwNTpcXHRcXG4yNTA2OlxcdFxcdC8qIEdNQUMgY29uZmlnIG1lbW9yeSAqL1xcbjI1MDc6XFx0XFx0cG9ydC1cXHUwMDNlZ21hY19iYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSwgTlVMTCk7XFxuMjUwODpcXHRcXHRpZiAoSVNfRVJSKHBvcnQtXFx1MDAzZWdtYWNfYmFzZSkpIHtcXG4yNTA5OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiZ2V0IEdNQUMgYWRkcmVzcyBmYWlsZWRcXFxcblxcXCIpO1xcbjI1MTA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocG9ydC1cXHUwMDNlZ21hY19iYXNlKTtcXG4yNTExOlxcdFxcdH1cXG4yNTEyOlxcdFxcbjI1MTM6XFx0XFx0LyogSW50ZXJydXB0ICovXFxuMjUxNDpcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xcbjI1MTU6XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuMjUxNjpcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbjI1MTc6XFx0XFx0cG9ydC1cXHUwMDNlaXJxID0gaXJxO1xcbjI1MTg6XFx0XFxuMjUxOTpcXHRcXHQvKiBDbG9jayB0aGUgcG9ydCAqL1xcbjI1MjA6XFx0XFx0cG9ydC1cXHUwMDNlcGNsayA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJQQ0xLXFxcIik7XFxuMjUyMTpcXHRcXHRpZiAoSVNfRVJSKHBvcnQtXFx1MDAzZXBjbGspKSB7XFxuMjUyMjpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIm5vIFBDTEtcXFxcblxcXCIpO1xcbjI1MjM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocG9ydC1cXHUwMDNlcGNsayk7XFxuMjUyNDpcXHRcXHR9XFxuMjUyNTpcXHRcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocG9ydC1cXHUwMDNlcGNsayk7XFxuMjUyNjpcXHRcXHRpZiAocmV0KVxcbjI1Mjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNTI4OlxcdFxcbjI1Mjk6XFx0XFx0LyogTWF5YmUgdGhlcmUgaXMgYSBuaWNlIGV0aGVybmV0IGFkZHJlc3Mgd2Ugc2hvdWxkIHVzZSAqL1xcbjI1MzA6XFx0XFx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcXG4yNTMxOlxcdFxcbjI1MzI6XFx0XFx0LyogUmVzZXQgdGhlIHBvcnQgKi9cXG4yNTMzOlxcdFxcdHBvcnQtXFx1MDAzZXJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBOVUxMKTtcXG4yNTM0OlxcdFxcdGlmIChJU19FUlIocG9ydC1cXHUwMDNlcmVzZXQpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjI2LjI3MTk5NjAzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzMxMzI5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEZXZpY2UgSWRlbnRpZmljYXRpb24gTG9naWMgaW4gRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGlzLiBMaW5lIDI0NzYsIHJpZ2h0LiBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBgZ2VtaW5pX2V0aGVybmV0X3Byb2JlYCBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSBpZGVudGlmaWNhdGlvbi4gSXQgYXBwZWFycyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiBicmluZ2luZyB1cCB0aGVzZSBFdGhlcm5ldCBpbnRlcmZhY2VzLiBUaGUgY29kZSB1c2VzIGBzdHJjbXBgIHRvIGNvbXBhcmUgdGhlIGRldmljZSBuYW1lIG9idGFpbmVkIGJ5IGBkZXZfbmFtZShkZXYpYCBhZ2FpbnN0IGhhcmRjb2RlZCBzdHJpbmdzLiBJIGltbWVkaWF0ZWx5IHNwb3QgdGhlIHBvdGVudGlhbCBmb3IgZnJhZ2lsaXR5IGhlcmUuIFRoaXMgYXBwcm9hY2ggdGllcyB0aGUgZHJpdmVyIHZlcnkgdGlnaHRseSB0byBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIG5hbWVzLlxuXG5JZiB0aGUgbmFtZSBpcyBcIjYwMDA4MDAwLmV0aGVybmV0LXBvcnRcIiwgdGhlIGBpZGAgaXMgc2V0IHRvIDAuIElmIGl0J3MgXCI2MDAwYzAwMC5ldGhlcm5ldC1wb3J0XCIsIHRoZW4gYGlkYCBiZWNvbWVzIDEuIE90aGVyd2lzZSwgaXQgcmV0dXJucyAtRU5PREVWLCBzaWduYWxpbmcgdGhhdCB0aGUgZHJpdmVyIGRvZXNuJ3QgcmVjb2duaXplIHRoZSBkZXZpY2UuXG5cbkkgd291bGQgaGF2ZSBwcmVmZXJyZWQgYSBtb3JlIHJvYnVzdCBpZGVudGlmaWNhdGlvbiBtZXRob2QsIG1heWJlIHVzaW5nIGRldmljZSBpZGVudGlmaWVycyBvciBjb21wYXRpYmxlIHN0cmluZ3MgaW4gdGhlIGRldmljZSB0cmVlLCBhbmQgdGhpcyBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGZpeGluZyBvciByZWZhY3RvcmluZy4gSG93ZXZlciwgSSBuZWVkIHRvIGxvb2sgYXQgd2hhdCBgaWRgIHJlcHJlc2VudHMgaW4gdGhlIGxhcmdlciBjb250ZXh0LiBJcyBpdCBhbiBpbmRleCBpbnRvIHNvbWUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgaWRgIGFzc2lnbm1lbnQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjQ5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjkuNjAzMzI3NzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NDAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NDA6XFx0XFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3JlbW92ZSxcXG4yNjQxOlxcdH07XFxuMjY0MjpcXHRcXG4yNjQzOlxcdHN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMjY0NDpcXHR7XFxuMjY0NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI2NDY6XFx0XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG4yNjQ3OlxcdFxcdHVuc2lnbmVkIGludCByZXRyeSA9IDU7XFxuMjY0ODpcXHRcXHR1MzIgdmFsO1xcbjI2NDk6XFx0XFxuMjY1MDpcXHRcXHQvKiBHbG9iYWwgcmVnaXN0ZXJzICovXFxuMjY1MTpcXHRcXHRnZXRoID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpnZXRoKSwgR0ZQX0tFUk5FTCk7XFxuMjY1MjpcXHRcXHRpZiAoIWdldGgpXFxuMjY1MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4yNjU0OlxcdFxcdGdldGgtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBOVUxMKTtcXG4yNjU1OlxcdFxcdGlmIChJU19FUlIoZ2V0aC1cXHUwMDNlYmFzZSkpXFxuMjY1NjpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihnZXRoLVxcdTAwM2ViYXNlKTtcXG4yNjU3OlxcdFxcdGdldGgtXFx1MDAzZWRldiA9IGRldjtcXG4yNjU4OlxcdFxcbjI2NTk6XFx0XFx0LyogV2FpdCBmb3IgcG9ydHMgdG8gc3RhYmlsaXplICovXFxuMjY2MDpcXHRcXHRkbyB7XFxuMjY2MTpcXHRcXHRcXHR1ZGVsYXkoMik7XFxuMjY2MjpcXHRcXHRcXHR2YWwgPSByZWFkbChnZXRoLVxcdTAwM2ViYXNlICsgR0xPQkFMX1RPRV9WRVJTSU9OX1JFRyk7XFxuMjY2MzpcXHRcXHRcXHRiYXJyaWVyKCk7XFxuMjY2NDpcXHRcXHR9IHdoaWxlICghdmFsIFxcdTAwMjZcXHUwMDI2IC0tcmV0cnkpO1xcbjI2NjU6XFx0XFx0aWYgKCFyZXRyeSkge1xcbjI2NjY6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVzZXQgZXRoZXJuZXRcXFxcblxcXCIpO1xcbjI2Njc6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjY2ODpcXHRcXHR9XFxuMjY2OTpcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJFdGhlcm5ldCBkZXZpY2UgSUQ6IDB4JTAzeCwgcmV2aXNpb24gMHglMDF4XFxcXG5cXFwiLFxcbjI2NzA6XFx0XFx0XFx0ICh2YWwgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEZGRlUsIHZhbCBcXHUwMDI2IDB4RlUpO1xcbjI2NzE6XFx0XFxuMjY3MjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2Z2V0aC1cXHUwMDNlaXJxX2xvY2spO1xcbjI2NzM6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmdldGgtXFx1MDAzZWZyZWVxX2xvY2spO1xcbjI2NzQ6XFx0XFxuMjY3NTpcXHRcXHQvKiBUaGUgY2hpbGRyZW4gd2lsbCB1c2UgdGhpcyAqL1xcbjI2NzY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZ2V0aCk7XFxuMjY3NzpcXHRcXG4yNjc4OlxcdFxcdC8qIFNwYXduIGNoaWxkIGRldmljZXMgZm9yIHRoZSB0d28gcG9ydHMgKi9cXG4yNjc5OlxcdFxcdHJldHVybiBkZXZtX29mX3BsYXRmb3JtX3BvcHVsYXRlKGRldik7XFxuMjY4MDpcXHR9XFxuMjY4MTpcXHRcXG4yNjgyOlxcdHN0YXRpYyB2b2lkIGdlbWluaV9ldGhlcm5ldF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4yNjgzOlxcdHtcXG4yNjg0OlxcdFxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjkuNjAzNDkwMDc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MDQ3OTg1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UgZm9yIEdlbWluaSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIG91dGxpbmVzICp3aGVuKiB3ZSBzaG91bGQgbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgXCJORUdBVElWRSBDUklURVJJQSxcIiBhbmQgaXQgbG9va3MgbGlrZSB3ZSd2ZSBoaXQgYSBmZXcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AsIGlzIGEgc2VyaW91cyBjb250ZW5kZXIgZm9yIGV4Y2x1c2lvbi5cblxuVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGJ1dCB0aGUgY29kZSBpcyBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgKFN0b3JMaW5rIFNMMzUxeCkgU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuICBJdCdzIGFuIEFSTS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBJIGtub3cgdGhpcyBraW5kIG9mIHRoaW5nLiAgSXQgKm5lZWRzKiBPcGVuRmlybXdhcmUgRGV2aWNlIFRyZWUgbm9kZXMgKGBPRmApLCBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIHJlZ2lzdGVycyAoYDB4NjAwMDAwMDBgKSwgZGV2aWNlIG5hbWVzIGxpa2UgYDYwMDA4MDAwLmV0aGVybmV0LXBvcnRgLCBhbmQgYWxzbyByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgY2xvY2tzIGFuZCByZXNldCBjb250cm9scy4gIEFsbCBvZiB0aGlzIHNjcmVhbXMgXCJoYXJkd2FyZS1kZXBlbmRlbnQsXCIgYW5kIEkgYWxyZWFkeSBrbm93IHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuICBJIGNhbid0IGltYWdpbmUgdGhpcyBydW5uaW5nIG5hdGl2ZWx5IHdpdGhvdXQgYSB2ZXJ5IHNwZWNpZmljIHNldHVwLCBhbmQgZXZlbiB0aGVuLCBJIHN1c3BlY3Qgbm90LlxuXG5MZXQncyBkbyBhIGxpdHRsZSBzYW5pdHkgY2hlY2sganVzdCB0byBiZSBzdXJlLi4uIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMuIE9uIGFtZDY0LCBgQ09ORklHX09GYCBpcyBnZW5lcmFsbHkgZGlzYWJsZWQsIHVubGVzcyB3ZSBlbmFibGUgc29tZSB1bml0IHRlc3RzLCBidXQgdGhhdCdzIG5vdCB0aGUgZGVmYXVsdC4gRXZlbiBpZiBgQ09ORklHX09GYCAqaXMqIGVuYWJsZWQgZm9yIHNvbWUgdW5pdCB0ZXN0aW5nLCB0aGVyZSdzIG5vIHZpcnR1YWwgZGV2aWNlIG9yIFBDSSBkZXZpY2UgdGhhdCB3b3VsZCB0cmlnZ2VyIHRoaXMgcGFydGljdWxhciBkcml2ZXIuIEl0J3MgZXhwZWN0aW5nIGhhcmRjb2RlZCBkZXZpY2UgcmVnaXN0ZXIgYmFzZSBuYW1lcyBhbmQgcGh5c2ljYWwgU29DIE1NSU8gcmVnaXN0ZXJzLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgd2UgYXJlIHVzaW5nLiBJdCBpcyBleHBlY3Rpbmcgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZS4gSSdtIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZC5cblxuTXkgZmluYWwgY2hlY2sgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBsb29rcyBsaWtlIHRoaXM6XG5cbiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgYXJyYXkpXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5IGFycmF5KVxuKiAgIGBSZWFzb25pbmdgOiBDbGVhcmx5IGV4cGxhaW4gdGhhdCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNgIGRyaXZlciBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgQVJNIFNvQyBFdGhlcm5ldCBjb250cm9sbGVyLCByZXF1aXJlcyBzcGVjaWZpYyBTb0MgRFQgbm9kZXMsIGFuZCBwaHlzaWNhbCBNTUlPIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LlxuXG5Pa2F5LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIERvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzc4LCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjM1LjMwODI5MDgwNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjM1LjMwODMxNjQ3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdbd8h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-09 12:04:02 +0000 UTC FinishedAt: 2026-09-09 12:32:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDgyZjBhODEyYzkyMTk4MDBjN2I4ZTM3OTM5ZWI1M2VkMDE5N2VkZGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIFNlcCA5IDEyOjMyOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuQEAgLTE2LDYgJiM0MzsxNiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgva2VybmVsLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9pbml0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9uZXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3BpbmxvY2suaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuQEAgLTczNiw3ICYjNDM7NzM3LDggQEAgZ21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuIFx0bWFwcGluZyA9IGFkZHIgXHUwMDI2IFBBR0VfTUFTSztcbiBcbiBcdGlmICghZ2V0aC1cdTAwM2VmcmVlcV9wYWdlcykge1xuLVx0XHRkZXZfZXJyKGdldGgtXHUwMDNlZGV2LCBcJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcXG5cJiMzNDspO1xuJiM0MztcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHQgICAgXCYjMzQ7dHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTQ0MSw3ICYjNDM7MTQ0Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG4gfVxuIFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuLVx0XHRcdCAgICB1bnNpZ25lZCBpbnQgKmZyZWVxX2NvbnN1bWVkKVxuJiM0MztcdFx0XHQgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCwgYm9vbCAqcmVzY2hlZHVsZSlcbiB7XG4gXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuIFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXJ4cV9vcmRlcikgLSAxO1xuQEAgLTE0NDksNiAmIzQzOzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuIFx0dW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LVx1MDAzZXJ4X2ZyYWdfbnI7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcG9ydC1cdTAwM2VyeF9za2I7XG4mIzQzO1x0LyogQm91bmQgbWFsZm9ybWVkIGNoYWlucyB3aGlsZSBhbGxvd2luZyBtYXhpbXVtIGZyYWdtZW50cyBwZXIgZnJhbWUuICovXG4mIzQzO1x0dW5zaWduZWQgaW50IGRlc2NfbGltaXQgPSBidWRnZXQgKiBNQVhfU0tCX0ZSQUdTO1xuIFx0dW5zaWduZWQgaW50IGNvbnN1bWVkID0gMDtcbiBcdHVuc2lnbmVkIGludCBmcmFtZV9sZW4sIGZyYWdfbGVuO1xuIFx0c3RydWN0IGdtYWNfcnhkZXNjICpyeCA9IE5VTEw7XG5AQCAtMTQ3NSw3ICYjNDM7MTQ3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0ciA9IHJ3LmJpdHMucnB0cjtcbiBcdHcgPSBydy5iaXRzLndwdHI7XG4gXG4tXHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbiYjNDM7XHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiBjb25zdW1lZCBcdTAwM2MgZGVzY19saW1pdCBcdTAwMjZcdTAwMjYgdyAhPSByKSB7XG4gXHRcdHBhZ2UgPSBOVUxMO1xuIFx0XHRyeCA9IHBvcnQtXHUwMDNlcnhxX3JpbmcgJiM0MzsgcjtcbiBcdFx0d29yZDAgPSByeC1cdTAwM2V3b3JkMDtcbkBAIC0xNTAyLDE1ICYjNDM7MTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoIW1hcHBpbmcpIHtcbi1cdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbi1cdFx0XHRcdCAgIFwmIzM0O3J4cVsldV06IEhXIEJVRzogemVybyBETUEgZGVzY1xcblwmIzM0Oywgcik7XG4mIzQzO1x0XHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4mIzQzO1x0XHRcdFx0bmV0ZGV2X2VycihuZXRkZXYsXG4mIzQzO1x0XHRcdFx0XHQgICBcJiMzNDtyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0XHQgICByKTtcbiBcdFx0XHRnb3RvIGVycl9kcm9wO1xuIFx0XHR9XG4gXG4gXHRcdC8qIEZyZWVxIHBvaW50ZXJzIGFyZSBvbmUgcGFnZSBvZmYgKi9cbiBcdFx0Z3BhZ2UgPSBnbWFjX2dldF9xdWV1ZV9wYWdlKGdldGgsIHBvcnQsIG1hcHBpbmcgJiM0MzsgUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFncGFnZSkge1xuLVx0XHRcdGRldl9lcnIoZ2V0aC1cdTAwM2VkZXYsIFwmIzM0O2NvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXHUwMDNlZGV2LFxuJiM0MztcdFx0XHRcdFx0ICAgIFwmIzM0O2NvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXG5cJiMzNDspO1xuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXHRcdH1cbiBcdFx0cGFnZSA9IGdwYWdlLVx1MDAzZXBhZ2U7XG5AQCAtMTUzNSw3ICYjNDM7MTU0Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0XHRpZiAoZnJhZ19uciA9PSBNQVhfU0tCX0ZSQUdTKVxuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXG4tXHRcdGlmIChmcmFnX2xlbiA9PSAwKVxuJiM0MztcdFx0aWYgKGZyYWdfbGVuID09IDAgXHUwMDI2XHUwMDI2IG5ldF9yYXRlbGltaXQoKSlcbiBcdFx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7UmVjZWl2ZWQgZnJhZ21lbnQgd2l0aCBsZW4gPSAwXFxuXCYjMzQ7KTtcbiBcbiBcdFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgZnJhZ19uciwgcGFnZSwgcGFnZV9vZmZzLCBmcmFnX2xlbik7XG5AQCAtMTU3OSw2ICYjNDM7MTU4Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0cG9ydC1cdTAwM2VyeF9mcmFnX25yID0gZnJhZ19ucjtcbiBcdHBvcnQtXHUwMDNlcnhfZHJvcHBpbmcgPSBkcm9wcGluZztcbiBcdCpmcmVlcV9jb25zdW1lZCA9IGNvbnN1bWVkO1xuJiM0MztcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHI7XG4gXHR3cml0ZXcociwgcHRyX3JlZyk7XG4gXHRyZXR1cm4gcmVjZWl2ZWQ7XG4gfVxuQEAgLTE1OTAsMTIgJiM0MzsxNTk4LDEzIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcbiBcdHVuc2lnbmVkIGludCBmcmVlcV9jb25zdW1lZDtcbiBcdHVuc2lnbmVkIGludCByZWNlaXZlZDtcbiYjNDM7XHRib29sIHJlc2NoZWR1bGU7XG4gXG4gXHRmcmVlcV90aHJlc2hvbGQgPSAxIFx1MDAzY1x1MDAzYyAoZ2V0aC1cdTAwM2VmcmVlcV9vcmRlciAtIDEpO1xuIFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZwb3J0LVx1MDAzZXJ4X3N0YXRzX3N5bmNwKTtcbiBcbi1cdHJlY2VpdmVkID0gZ21hY19yeChuYXBpLVx1MDAzZWRldiwgYnVkZ2V0LCBcdTAwMjZmcmVlcV9jb25zdW1lZCk7XG4tXHRpZiAocmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldClcbiYjNDM7XHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQsIFx1MDAyNnJlc2NoZWR1bGUpO1xuJiM0MztcdGlmICghcmVzY2hlZHVsZSBcdTAwMjZcdTAwMjYgcmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldClcbiBcdFx0JiM0MzsmIzQzO3BvcnQtXHUwMDNlcnhfbmFwaV9leGl0cztcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnBvcnQtXHUwMDNlcnhfc3RhdHNfc3luY3ApO1xuQEAgLTE2MDYsMTAgJiM0MzsxNjE1LDExIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuIFx0XHRnZXRoX2ZpbGxfZnJlZXEoZ2V0aCwgdHJ1ZSk7XG4gXHR9XG4gXG4tXHRpZiAocmVjZWl2ZWQgXHUwMDNjIGJ1ZGdldCBcdTAwMjZcdTAwMjYgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSlcbiYjNDM7XHRpZiAoIXJlc2NoZWR1bGUgXHUwMDI2XHUwMDI2IHJlY2VpdmVkIFx1MDAzYyBidWRnZXQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXG4gXHRcdGdtYWNfZW5hYmxlX3J4X2lycShuYXBpLVx1MDAzZWRldiwgMSk7XG4gXG4tXHRyZXR1cm4gcmVjZWl2ZWQ7XG4mIzQzO1x0cmV0dXJuIHJlc2NoZWR1bGUgPyBidWRnZXQgOiByZWNlaXZlZDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgZ21hY19kdW1wX2RtYV9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuQEAgLTE3OTgsNyAmIzQzOzE4MDgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZ21hY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbiBcbiBcdGlmICh2YWwgXHUwMDI2IChHTUFDMF9SWF9PVkVSUlVOX0lOVF9CSVQgXHUwMDNjXHUwMDNjIChuZXRkZXYtXHUwMDNlZGV2X2lkICogOCkpKSB7XG4gXHRcdHNwaW5fbG9jayhcdTAwMjZnZXRoLVx1MDAzZWlycV9sb2NrKTtcbi1cdFx0d3JpdGVsKEdNQUMwX1JYREVSUl9JTlRfQklUIFx1MDAzY1x1MDAzYyAobmV0ZGV2LVx1MDAzZWRldl9pZCAqIDgpLFxuJiM0MztcdFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbiBcdFx0ICAgICAgIGdldGgtXHUwMDNlYmFzZSAmIzQzOyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7XG4gXHRcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cG9ydC1cdTAwM2Vpcl9zdGF0c19zeW5jcCk7XG4gXHRcdCYjNDM7JiM0Mztwb3J0LVx1MDAzZXN0YXRzLnJ4X2ZpZm9fZXJyb3JzO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBTZXAgOSAxMjozMjowNSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jCmluZGV4IGYwOGRlNjIzZTZmN2MuLjJmZTdmZDAyMDJkMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYwpAQCAtMTYsNiAmIzQzOzE2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9rZXJuZWwuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9pbml0LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvbW9kdWxlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L25ldC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BsYXRmb3JtX2RldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NwaW5sb2NrLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwpAQCAtNzM2LDcgJiM0Mzs3MzcsOCBAQCBnbWFjX2dldF9xdWV1ZV9wYWdlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsCiAJbWFwcGluZyA9IGFkZHIgJmFtcDsgUEFHRV9NQVNLOwogCiAJaWYgKCFnZXRoLSZndDtmcmVlcV9wYWdlcykgewotCQlkZXZfZXJyKGdldGgtJmd0O2RldiwgJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcbiYjMzQ7KTsKJiM0MzsJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZ2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkgICAgJiMzNDt0cnkgdG8gZ2V0IHBhZ2Ugd2l0aCBubyBwYWdlIGxpc3RcbiYjMzQ7KTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCkBAIC0xNDQxLDcgJiM0MzsxNDQzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnbWFjX3NrYl9pZl9nb29kX2ZyYW1lKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCwKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsCi0JCQkgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCkKJiM0MzsJCQkgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZCwgYm9vbCAqcmVzY2hlZHVsZSkKIHsKIAlzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpOwogCXVuc2lnbmVkIHNob3J0IG0gPSAoMSAmbHQ7Jmx0OyBwb3J0LSZndDtyeHFfb3JkZXIpIC0gMTsKQEAgLTE0NDksNiAmIzQzOzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAl2b2lkIF9faW9tZW0gKnB0cl9yZWcgPSBwb3J0LSZndDtyeHFfcndwdHI7CiAJdW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LSZndDtyeF9mcmFnX25yOwogCXN0cnVjdCBza19idWZmICpza2IgPSBwb3J0LSZndDtyeF9za2I7CiYjNDM7CS8qIEJvdW5kIG1hbGZvcm1lZCBjaGFpbnMgd2hpbGUgYWxsb3dpbmcgbWF4aW11bSBmcmFnbWVudHMgcGVyIGZyYW1lLiAqLwomIzQzOwl1bnNpZ25lZCBpbnQgZGVzY19saW1pdCA9IGJ1ZGdldCAqIE1BWF9TS0JfRlJBR1M7CiAJdW5zaWduZWQgaW50IGNvbnN1bWVkID0gMDsKIAl1bnNpZ25lZCBpbnQgZnJhbWVfbGVuLCBmcmFnX2xlbjsKIAlzdHJ1Y3QgZ21hY19yeGRlc2MgKnJ4ID0gTlVMTDsKQEAgLTE0NzUsNyAmIzQzOzE0NzksNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAlyID0gcncuYml0cy5ycHRyOwogCXcgPSBydy5iaXRzLndwdHI7CiAKLQl3aGlsZSAoYnVkZ2V0ICZhbXA7JmFtcDsgdyAhPSByKSB7CiYjNDM7CXdoaWxlIChidWRnZXQgJmFtcDsmYW1wOyBjb25zdW1lZCAmbHQ7IGRlc2NfbGltaXQgJmFtcDsmYW1wOyB3ICE9IHIpIHsKIAkJcGFnZSA9IE5VTEw7CiAJCXJ4ID0gcG9ydC0mZ3Q7cnhxX3JpbmcgJiM0MzsgcjsKIAkJd29yZDAgPSByeC0mZ3Q7d29yZDA7CkBAIC0xNTAyLDE1ICYjNDM7MTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAkJfQogCiAJCWlmICghbWFwcGluZykgewotCQkJbmV0ZGV2X2VycihuZXRkZXYsCi0JCQkJICAgJiMzNDtyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcbiYjMzQ7LCByKTsKJiM0MzsJCQlpZiAobmV0X3JhdGVsaW1pdCgpKQomIzQzOwkJCQluZXRkZXZfZXJyKG5ldGRldiwKJiM0MzsJCQkJCSAgICYjMzQ7cnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXG4mIzM0OywKJiM0MzsJCQkJCSAgIHIpOwogCQkJZ290byBlcnJfZHJvcDsKIAkJfQogCiAJCS8qIEZyZWVxIHBvaW50ZXJzIGFyZSBvbmUgcGFnZSBvZmYgKi8KIAkJZ3BhZ2UgPSBnbWFjX2dldF9xdWV1ZV9wYWdlKGdldGgsIHBvcnQsIG1hcHBpbmcgJiM0MzsgUEFHRV9TSVpFKTsKIAkJaWYgKCFncGFnZSkgewotCQkJZGV2X2VycihnZXRoLSZndDtkZXYsICYjMzQ7Y291bGQgbm90IGZpbmQgbWFwcGluZ1xuJiMzNDspOwomIzQzOwkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZ2V0aC0mZ3Q7ZGV2LAomIzQzOwkJCQkJICAgICYjMzQ7Y291bGQgbm90IGZpbmQgbWFwcGluZ1xuJiMzNDspOwogCQkJZ290byBlcnJfZHJvcDsKIAkJfQogCQlwYWdlID0gZ3BhZ2UtJmd0O3BhZ2U7CkBAIC0xNTM1LDcgJiM0MzsxNTQyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsCiAJCWlmIChmcmFnX25yID09IE1BWF9TS0JfRlJBR1MpCiAJCQlnb3RvIGVycl9kcm9wOwogCi0JCWlmIChmcmFnX2xlbiA9PSAwKQomIzQzOwkJaWYgKGZyYWdfbGVuID09IDAgJmFtcDsmYW1wOyBuZXRfcmF0ZWxpbWl0KCkpCiAJCQluZXRkZXZfZXJyKG5ldGRldiwgJiMzNDtSZWNlaXZlZCBmcmFnbWVudCB3aXRoIGxlbiA9IDBcbiYjMzQ7KTsKIAogCQlza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCBmcmFnX25yLCBwYWdlLCBwYWdlX29mZnMsIGZyYWdfbGVuKTsKQEAgLTE1NzksNiAmIzQzOzE1ODYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCwKIAlwb3J0LSZndDtyeF9mcmFnX25yID0gZnJhZ19ucjsKIAlwb3J0LSZndDtyeF9kcm9wcGluZyA9IGRyb3BwaW5nOwogCSpmcmVlcV9jb25zdW1lZCA9IGNvbnN1bWVkOwomIzQzOwkqcmVzY2hlZHVsZSA9IGJ1ZGdldCAmYW1wOyZhbXA7IHcgIT0gcjsKIAl3cml0ZXcociwgcHRyX3JlZyk7CiAJcmV0dXJuIHJlY2VpdmVkOwogfQpAQCAtMTU5MCwxMiAmIzQzOzE1OTgsMTMgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpCiAJdW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDsKIAl1bnNpZ25lZCBpbnQgZnJlZXFfY29uc3VtZWQ7CiAJdW5zaWduZWQgaW50IHJlY2VpdmVkOwomIzQzOwlib29sIHJlc2NoZWR1bGU7CiAKIAlmcmVlcV90aHJlc2hvbGQgPSAxICZsdDsmbHQ7IChnZXRoLSZndDtmcmVlcV9vcmRlciAtIDEpOwogCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtwb3J0LSZndDtyeF9zdGF0c19zeW5jcCk7CiAKLQlyZWNlaXZlZCA9IGdtYWNfcngobmFwaS0mZ3Q7ZGV2LCBidWRnZXQsICZhbXA7ZnJlZXFfY29uc3VtZWQpOwotCWlmIChyZWNlaXZlZCAmbHQ7IGJ1ZGdldCkKJiM0MzsJcmVjZWl2ZWQgPSBnbWFjX3J4KG5hcGktJmd0O2RldiwgYnVkZ2V0LCAmYW1wO2ZyZWVxX2NvbnN1bWVkLCAmYW1wO3Jlc2NoZWR1bGUpOwomIzQzOwlpZiAoIXJlc2NoZWR1bGUgJmFtcDsmYW1wOyByZWNlaXZlZCAmbHQ7IGJ1ZGdldCkKIAkJJiM0MzsmIzQzO3BvcnQtJmd0O3J4X25hcGlfZXhpdHM7CiAKIAl1NjRfc3RhdHNfdXBkYXRlX2VuZCgmYW1wO3BvcnQtJmd0O3J4X3N0YXRzX3N5bmNwKTsKQEAgLTE2MDYsMTAgJiM0MzsxNjE1LDExIEBAIHN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KQogCQlnZXRoX2ZpbGxfZnJlZXEoZ2V0aCwgdHJ1ZSk7CiAJfQogCi0JaWYgKHJlY2VpdmVkICZsdDsgYnVkZ2V0ICZhbXA7JmFtcDsgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSkKJiM0MzsJaWYgKCFyZXNjaGVkdWxlICZhbXA7JmFtcDsgcmVjZWl2ZWQgJmx0OyBidWRnZXQgJmFtcDsmYW1wOwomIzQzOwkgICAgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSkKIAkJZ21hY19lbmFibGVfcnhfaXJxKG5hcGktJmd0O2RldiwgMSk7CiAKLQlyZXR1cm4gcmVjZWl2ZWQ7CiYjNDM7CXJldHVybiByZXNjaGVkdWxlID8gYnVkZ2V0IDogcmVjZWl2ZWQ7CiB9CiAKIHN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikKQEAgLTE3OTgsNyAmIzQzOzE4MDgsNyBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgZ21hY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKIAogCWlmICh2YWwgJmFtcDsgKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCAmbHQ7Jmx0OyAobmV0ZGV2LSZndDtkZXZfaWQgKiA4KSkpIHsKIAkJc3Bpbl9sb2NrKCZhbXA7Z2V0aC0mZ3Q7aXJxX2xvY2spOwotCQl3cml0ZWwoR01BQzBfUlhERVJSX0lOVF9CSVQgJmx0OyZsdDsgKG5ldGRldi0mZ3Q7ZGV2X2lkICogOCksCiYjNDM7CQl3cml0ZWwoR01BQzBfUlhfT1ZFUlJVTl9JTlRfQklUICZsdDsmbHQ7IChuZXRkZXYtJmd0O2Rldl9pZCAqIDgpLAogCQkgICAgICAgZ2V0aC0mZ3Q7YmFzZSAmIzQzOyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7CiAJCXU2NF9zdGF0c191cGRhdGVfYmVnaW4oJmFtcDtwb3J0LSZndDtpcl9zdGF0c19zeW5jcCk7CiAJCSYjNDM7JiM0Mztwb3J0LSZndDtzdGF0cy5yeF9maWZvX2Vycm9yczsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0MgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0JiMzOTtzIGdvb2QgaW5mb3JtYXRpb24gdG8ga25vdy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AuIE5vdywgdGhhdCYjMzk7cyB0aGUga2V5LiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoZSAmIzM0O2dlbWluaSYjMzQ7IGRyaXZlciBpcy4gV2hhdCBoYXJkd2FyZSBkb2VzIGl0IHN1cHBvcnQ/IEhvdyBpcyBpdCBjb25maWd1cmVkPyBJcyBpdCBhIHBsYXRmb3JtIGRldmljZSwgYSBQQ0kgZGV2aWNlLCBvciBzb21ldGhpbmcgZWxzZSBsaWtlIHZpcnRpbz8gS25vd2luZyB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhbmQgdGhlIGRldmljZSYjMzk7cyBjb25maWd1cmF0aW9uIGlzIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgdGhlIHBvdGVudGlhbCBpbXBhY3Qgb2YgdGhlIGNoYW5nZXMuCgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBvciBwZXJoYXBzIGp1c3QgdXNlIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2AuIFRoYXQmIzM5O2xsIGdpdmUgbWUgdGhlIGVzc2VudGlhbCBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBXaXRoIHRoZSBLY29uZmlnLCBJIGNhbiBkZXRlcm1pbmUgdGhlIHByZXJlcXVpc2l0ZXMgYW5kIHVuZGVyc3RhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHBlcnRpbmVudCB0byB0aGlzIGNoYW5nZS4gT25jZSBJIGhhdmUgdGhlIEtjb25maWcgZGV0YWlscywgSSBjYW4gcHJvY2VlZCB3aXRoIGEgbXVjaCBjbGVhcmVyIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7R0VNSU5JfGdlbWluaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnPTEyPWlmIE5FVF9WRU5ET1JfQ09SVElOQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnOjE0OmNvbmZpZyBHRU1JTklfRVRIRVJORVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0dlbWluaSBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlLTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0dFTUlOSV9FVEhFUk5FVCkgJiM0Mzs9IGdlbWluaS5vXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NDY6I2luY2x1ZGUgXCYjMzQ7Z2VtaW5pLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ4OiNkZWZpbmUgRFJWX05BTUVcdFx0XCYjMzQ7Z21hYy1nZW1pbmlcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz05Nz1zdHJ1Y3QgZ21hY190eHEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDQ6c3RydWN0IGdlbWluaV9ldGhlcm5ldDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDY6c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA3LVx0dTggaWQ7IC8qIDAgb3IgMSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEwOTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1NTpzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU2LVx0c3RydWN0IGRldmljZSAqZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTctXHR2b2lkIF9faW9tZW0gKmJhc2U7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MC1cdGJvb2wgaW5pdGlhbGl6ZWQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMzA9c3RhdGljIHZvaWQgZ21hY191cGRhdGVfY29uZmlnMF9yZWcoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNDY9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ5LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI2MT1zdGF0aWMgdm9pZCBnbWFjX2Rpc2FibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0LVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI3OD1zdGF0aWMgdm9pZCBnbWFjX3NldF9mbG93X2NvbnRyb2woc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgYm9vbCB0eCwgYm9vbCByeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjc5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjgwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjgxLVx0dW5zaWduZWQgbG9uZyBmbGFncztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI5Nz1zdGF0aWMgdm9pZCBnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI5OTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTMwMC1cdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBuZXRkZXYtXHUwMDNlcGh5ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MzYyPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzYzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MzY0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzY1LVx0dW5pb24gZ21hY19zdGF0dXMgc3RhdHVzID0geyAuYml0czMyID0gMCB9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NDY2PXN0YXRpYyBpbnQgZ21hY19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQ2Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ2ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTQ2OS1cdHVuaW9uIGdtYWNfY29uZmlnMCBjb25maWcwID0geyAuYml0cyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTU0Nj1zdGF0aWMgaW50IGdtYWNfc2V0dXBfdHhxcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NDcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NDktXHR1bnNpZ25lZCBpbnQgbl90eHEgPSBuZXRkZXYtXHUwMDNlbnVtX3R4X3F1ZXVlcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NTUwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNTUxLVx0c2l6ZV90IGVudHJpZXMgPSAxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXR4cV9vcmRlcjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTYwND1zdGF0aWMgdm9pZCBnbWFjX2NsZWFuX3R4cShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBzdHJ1Y3QgZ21hY190eHEgKnR4cSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwNzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYwOC1cdHVuc2lnbmVkIGludCBtID0gKDEgXHUwMDNjXHUwMDNjIHBvcnQtXHUwMDNldHhxX29yZGVyKSAtIDE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwOTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYxMC1cdHVuc2lnbmVkIGludCBjID0gdHhxLVx1MDAzZWNwdHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz02NzY9c3RhdGljIHZvaWQgZ21hY19jbGVhbnVwX3R4cXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjc3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Njc4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjc5LVx0dW5zaWduZWQgaW50IG5fdHhxID0gbmV0ZGV2LVx1MDAzZW51bV90eF9xdWV1ZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjY4MDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTY4MS1cdHZvaWQgX19pb21lbSAqcndwdHJfcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NzAyPXN0YXRpYyBpbnQgZ21hY19zZXR1cF9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzAzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzA2LVx0c3RydWN0IG5vbnRvZV9xaGRyIF9faW9tZW0gKnFoZHI7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03Mjc9c3RhdGljIHN0cnVjdCBnbWFjX3F1ZXVlX3BhZ2UgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3Mjg6Z21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3Mjk6XHRcdCAgICBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTczMC1cdFx0ICAgIGRtYV9hZGRyX3QgYWRkcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTc1NT1zdGF0aWMgdm9pZCBnbWFjX2NsZWFudXBfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTc1Ni17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjc1NzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjc1ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTc1OS1cdHN0cnVjdCBnbWFjX3J4ZGVzYyAqcnhkID0gcG9ydC1cdTAwM2VyeHFfcmluZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTgwNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODA1OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0aF9mcmVlcV9hbGxvY19tYXBfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy04MDYtXHRcdFx0XHRcdCAgICAgIGludCBwbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTg3MS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODcyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0aF9maWxsX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsIGJvb2wgcmVmaWxsKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy04NzMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo5Mjc6c3RhdGljIGludCBnZXRoX3NldHVwX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy05OTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjk5OTpzdGF0aWMgdm9pZCBnZXRoX2NsZWFudXBfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAwMC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDM4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDM5OnN0YXRpYyBpbnQgZ2V0aF9yZXNpemVfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDQwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0MTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNDItXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcG9ydC1cdTAwM2VuZXRkZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEwNDM6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKm90aGVyX3BvcnQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNDQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqb3RoZXJfbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEwNz1zdGF0aWMgdm9pZCBnbWFjX3R4X2lycV9lbmFibGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMDkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTEwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMTItXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEzOT1zdGF0aWMgaW50IGdtYWNfbWFwX3R4X2J1ZnMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0My1cdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNrYl9zaSA9ICBza2Jfc2hpbmZvKHNrYik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMTQ1LVx0c2hvcnQgZnJhZywgbGFzdF9mcmFnID0gc2tiX3NpLVx1MDAzZW5yX2ZyYWdzIC0gMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTE0NjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDctXHR1bnNpZ25lZCBpbnQgd29yZDEsIHdvcmQzLCBidWZsZW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMjc3PXN0YXRpYyBuZXRkZXZfdHhfdCBnbWFjX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEyNzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMjgwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTI4MS1cdHVuc2lnbmVkIHNob3J0IG0gPSAoMSBcdTAwM2NcdTAwM2MgcG9ydC1cdTAwM2V0eHFfb3JkZXIpIC0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTEzNTc9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfaXJxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBlbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEzNTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzU5Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTM2MDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEzNjEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTM4Nj1zdGF0aWMgdm9pZCBnbWFjX2VuYWJsZV9yeF9pcnEoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGVuYWJsZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM4Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEzODg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg5Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM5MC1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNDA1OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0MDYtXHRcdFx0XHRcdCAgICAgIHVuaW9uIGdtYWNfcnhkZXNjXzAgd29yZDAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNDQ1PXN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQ0Ny17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE0NDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDQ5LVx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFx1MDAzY1x1MDAzYyBwb3J0LVx1MDAzZXJ4cV9vcmRlcikgLSAxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNDUwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXHUwMDNlZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQ1MS1cdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTU5ND1zdGF0aWMgaW50IGdtYWNfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTY6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuYXBpLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1OTc6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cdTAwM2VnZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTk4LVx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE2MjU9c3RhdGljIHZvaWQgZ21hY19kdW1wX2RtYV9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyNzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE2Mjg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cdTAwM2VnZXRoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjI5LVx0dm9pZCBfX2lvbWVtICpwdHJfcmVnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTY5Nj1zdGF0aWMgdm9pZCBnbWFjX3VwZGF0ZV9od19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjk3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTY5ODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2OTktXHR1bnNpZ25lZCBpbnQgcnhfZGlzY2FyZHMsIHJ4X21jYXN0LCByeF9iY2FzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTcwMDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MDEtXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTczMj1zdGF0aWMgdTMyIGdtYWNfZ2V0X2ludHJfZmxhZ3Moc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IGkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzM0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNTpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVx1MDAzZWdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzYtXHR2b2lkIF9faW9tZW0gKmlycWlmX3JlZywgKmlycWVuX3JlZztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE3NTA9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdtYWNfY29hbGVzY2VfZGVsYXlfZXhwaXJlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzUyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTc1MzpcdFx0Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NTQtXHRcdFx0ICAgICByeF9jb2FsZXNjZV90aW1lcik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzYwPXN0YXRpYyBpcnFyZXR1cm5fdCBnbWFjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzYxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTc2MjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzY0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2NS1cdHUzMiB2YWwsIG9yciA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODIyOnN0YXRpYyB2b2lkIGdtYWNfc3RhcnRfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTgyMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODQzOnN0YXRpYyB2b2lkIGdtYWNfc3RvcF9kbWEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQ0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE4NTQ9c3RhdGljIGludCBnbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTg1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE4NTY6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODU3LVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE5MTE9c3RhdGljIGludCBnbWFjX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkxMi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE5MTM6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTE0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTkzNT1zdGF0aWMgdm9pZCBnbWFjX3NldF9yeF9tb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5MzYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTM3Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkzOC1cdHVuaW9uIGdtYWNfcnhfZmx0ciBmaWx0ZXIgPSB7IC5iaXRzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk3MD1zdGF0aWMgdm9pZCBnbWFjX3dyaXRlX21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5NzEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTcyOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk3My1cdF9fbGUzMiBhZGRyWzNdO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk5Mz1zdGF0aWMgdm9pZCBnbWFjX2NsZWFyX2h3X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5OTQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTk1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk5Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIwMDU9c3RhdGljIHZvaWQgZ21hY19nZXRfc3RhdHM2NChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjAwNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIwMDg6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDA5LVx0dW5zaWduZWQgaW50IHN0YXJ0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjA3ND1zdGF0aWMgaW50IGdtYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDc2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjA3NzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIwNzgtXHRpbnQgZW5hYmxlID0gZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhDU1VNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjEwNT1zdGF0aWMgdm9pZCBnbWFjX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMTA3LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjEwODpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxMDktXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMTgwPXN0YXRpYyB2b2lkIGdtYWNfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxODIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMTgzOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjE4NC1cdHVuaW9uIGdtYWNfY29uZmlnMCBjb25maWcwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjIwNj1zdGF0aWMgdm9pZCBnbWFjX2dldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjExOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIxMi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyMjY9c3RhdGljIGludCBnbWFjX3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMzAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjMxOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIzMi1cdGludCBlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjI0OT1zdGF0aWMgaW50IGdtYWNfZ2V0X2NvYWxlc2NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjUzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI1NDpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjYzPXN0YXRpYyBpbnQgZ21hY19zZXRfY29hbGVzY2Uoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNjcte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjY4Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI2OS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODE9c3RhdGljIHUzMiBnbWFjX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjgyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI4MzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyODQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjg4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBsZXZlbClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI4OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyOTA6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjkxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdtYWNfMzUxeF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzY6c3RhdGljIGlycXJldHVybl90IGdlbWluaV9wb3J0X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzgtXHR1bnNpZ25lZCBsb25nIGlycW1hc2sgPSBTV0ZRX0VNUFRZX0lOVF9CSVQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzk6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzQwOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM0MS1cdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzU4OnN0YXRpYyBpcnFyZXR1cm5fdCBnZW1pbmlfcG9ydF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM1OS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzNjA6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzYxOlx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cdGlycXJldHVybl90IHJldCA9IElSUV9OT05FO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM4NzpzdGF0aWMgdm9pZCBnZW1pbmlfcG9ydF9yZW1vdmUoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzg4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzOTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzOTc6c3RhdGljIHZvaWQgZ2VtaW5pX2V0aGVybmV0X2luaXQoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDQ4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDQ5OnN0YXRpYyB2b2lkIGdlbWluaV9wb3J0X3NhdmVfbWFjX2FkZHIoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDUwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI0NTk6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDYwLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NjItXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cdTAwM2VkZXYub2Zfbm9kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ2MzpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2NC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDY1Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2Ni1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTI5LVx0LyogTWF5YmUgdGhlcmUgaXMgYSBuaWNlIGV0aGVybmV0IGFkZHJlc3Mgd2Ugc2hvdWxkIHVzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTMwOlx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjUzMS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NDgtXHQvKiBUaGlzIHdpbGwganVzdCBiZSBkb25lIG9uY2UgYm90aCBwb3J0cyBhcmUgdXAgYW5kIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1NDk6XHRnZW1pbmlfZXRoZXJuZXRfaW5pdChnZXRoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjU1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTItXHRcdFx0XHRcdHBvcnQtXHUwMDNlaXJxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTkzOlx0XHRcdFx0XHRnZW1pbmlfcG9ydF9pcnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1OTQ6XHRcdFx0XHRcdGdlbWluaV9wb3J0X2lycV90aHJlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTUtXHRcdFx0XHRcdElSUUZfU0hBUkVELFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYxOTpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyMC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjE6XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyMzpcdGdlbWluaV9wb3J0X3JlbW92ZShwb3J0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNy1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyODpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjI5LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzEtfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MzQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZ2VtaW5pX2V0aGVybmV0X3BvcnRfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM1LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNjpcdFx0Lm5hbWUgPSBcJiMzNDtnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNzpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MzgtXHR9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM5Olx0LnByb2JlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcHJvYmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDA6XHQucmVtb3ZlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjQxLX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDM6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDUtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0NjpcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDctXHR1bnNpZ25lZCBpbnQgcmV0cnkgPSA1O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY4MjpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2ODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjg0Olx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjg1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MjpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTY6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk5LVx0LmRyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcwMC1cdFx0Lm5hbWUgPSBEUlZfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzAyLVx0fSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMzpcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwNDpcdC5yZW1vdmUgPSBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA1LX07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MDc6c3RhdGljIGludCBfX2luaXQgZ2VtaW5pX2V0aGVybmV0X21vZHVsZV9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcxMTpcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZnZW1pbmlfZXRoZXJuZXRfcG9ydF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEyLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTU6XHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Z2VtaW5pX2V0aGVybmV0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTYtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTc6XHRcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTgtXHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzIyLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyMzptb2R1bGVfaW5pdChnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzI1OnN0YXRpYyB2b2lkIF9fZXhpdCBnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3Mjc6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZnZW1pbmlfZXRoZXJuZXRfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyODpcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MjktfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzMwOm1vZHVsZV9leGl0KGdlbWluaV9ldGhlcm5ldF9tb2R1bGVfZXhpdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MzEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC04LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5OiNpZm5kZWYgX0dFTUlOSV9FVEhFUk5FVF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oOjEwOiNkZWZpbmUgX0dFTUlOSV9FVEhFUk5FVF9IXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmg9OTUzPXN0cnVjdCBub250b2VfcWhkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oOjk1ODojZW5kaWYgLyogX0dFTUlOSV9FVEhFUk5FVF9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNDQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBDb3J0aW5hIEdFTUlOSSBFdGhlcm5ldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBCZWZvcmUgZGl2aW5nIGludG8gdGhlIHNwZWNpZmljcyBvZiB0aGlzIEdFTUlOSSBFdGhlcm5ldCBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gQmVzdCBwbGFjZSB0byBzdGFydCBpcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBzbyBsZXQmIzM5O3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyB0aGlzIGBHRU1JTklfRVRIRVJORVRgIG9wdGlvbiByZWxpZXMgb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbnkgcHJvcGVyIHVuZGVyc3RhbmRpbmcuIFRoaXMgd2lsbCBoZWxwIG1lIGRlYnVnIGFueSBidWlsZCBmYWlsdXJlcyBvciB1bmRlcnN0YW5kIHdoZXJlIHRoZSBob29rcyBhcmUuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIEkgY2FuIGNoZWNrIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjIENvcnRpbmEgZXRoZXJuZXQgZGV2aWNlc1xuICAgMzpcdFxuICAgNDpcdGNvbmZpZyBORVRfVkVORE9SX0NPUlRJTkFcbiAgIDU6XHRcdGJvb2wgXCYjMzQ7Q29ydGluYSBHZW1pbmkgZGV2aWNlc1wmIzM0O1xuICAgNjpcdFx0ZGVmYXVsdCB5XG4gICA3Olx0XHRoZWxwXG4gICA4Olx0XHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZXG4gICA5Olx0XHQgIGFuZCByZWFkIHRoZSBFdGhlcm5ldC1IT1dUTywgYXZhaWxhYmxlIGZyb21cbiAgMTA6XHRcdCAgXHUwMDNjaHR0cHM6Ly93d3cudGxkcC5vcmcvZG9jcy5odG1sI2hvd3RvXHUwMDNlLlxuICAxMTpcdFxuICAxMjpcdGlmIE5FVF9WRU5ET1JfQ09SVElOQVxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBHRU1JTklfRVRIRVJORVRcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbWluaSBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnRcJiMzNDtcbiAgMTY6XHRcdGRlcGVuZHMgb24gT0ZcbiAgMTc6XHRcdGRlcGVuZHMgb24gSEFTX0lPTUVNXG4gIDE4Olx0XHRzZWxlY3QgUEhZTElCXG4gIDE5Olx0XHRzZWxlY3QgQ1JDMzJcbiAgMjA6XHRcdGhlbHBcbiAgMjE6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldC5cbiAgMjI6XHRcbiAgMjM6XHRlbmRpZiAjIE5FVF9WRU5ET1JfQ09SVElOQVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NzYxCgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgR2VtaW5pIEV0aGVybmV0JiMzOTtzIFBsYXRmb3JtIERlcGVuZGVuY3kqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBnZW1pbmkuY2AsIHdoaWNoIGlzIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHRoZSBTdG9yTGluayBTTDM1MXggKEdlbWluaSkgZHVhbCBHaWdhYml0IEV0aGVybmV0IFNvQyBoYXJkd2FyZS4gSXQmIzM5O3MgZ290IHRob3NlIGRldmljZSB0cmVlIHN0cmluZ3MsIGAmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0JiMzNDtgIGFuZCBgJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0JiMzNDtgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGRyaXZlciB0aWdodGx5IGNvdXBsZWQgdG8gc3BlY2lmaWMgR2VtaW5pIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXVsYXRlZCBvciBhdCBsZWFzdCBwcm9iZWQgaW4gYSBtb3JlIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgYSBRRU1VIGFtZDY0IHNldHVwPyBUbyBmaW5kIG91dCwgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2suIEkmIzM5O20gZ29pbmcgdG8gcnVuIGEgcXVpY2sgYGdyZXBgIGZvciBgJiMzNDtjb3J0aW5hLGdlbWluaSYjMzQ7YCBhY3Jvc3MgdGhlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBkaXJlY3RvcmllcywgZGV2aWNlIHRyZWUgc291cmNlIGZpbGVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgY29uZmlndXJhdGlvbiBmaWxlcy4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGl0cyBzY29wZSBhbmQgcG9ydGFiaWxpdHkuIEkmIzM5O20gaG9waW5nIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGhvdyBmYXIgSSBoYXZlIHRvIGdvIHRvIGFzc2VzcyBpdCYjMzk7cyBmdWxsIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0zLS0tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ6JGlkOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvc2NoZW1hcy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC01LSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbD0xNz1wcm9wZXJ0aWVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTE4LSAgY29tcGF0aWJsZTpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxOTogICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMjAtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sPTM3PXBhdHRlcm5Qcm9wZXJ0aWVzOlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC00NS0gICAgICBjb21wYXRpYmxlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ2OiAgICAgICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC00Ny1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9ODU9ZXhhbXBsZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTEwMy0gICAgZXRoZXJuZXRANjAwMDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjEwNDogICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMDUtICAgICAgICByZWcgPSBcdTAwM2MweDYwMDAwMDAwIDB4NDAwMFx1MDAzZSwgLyogR2xvYmFsIHJlZ2lzdGVycywgcXVldWUgKi9cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTEyLSAgICAgICAgZ21hYzA6IGV0aGVybmV0LXBvcnRAMCB7XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw6MTEzOiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXCYjMzQ7Y29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OztcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMTQtICAgICAgICAgICAgICAgIHJlZyA9IFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXHUwMDNlLCAvKiBQb3J0IDAgRE1BL1RPRSAqL1xuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjUtICAgICAgICBnbWFjMTogZXRoZXJuZXQtcG9ydEAxIHtcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxMjY6ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7O1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTEyNy0gICAgICAgICAgICAgICAgcmVnID0gXHUwMDNjMHg2MDAwYzAwMCAweDIwMDBcdTAwM2UsIC8qIFBvcnQgMSBETUEvVE9FICovXG4tLVxuTUFJTlRBSU5FUlM9Mjg4Mj1GOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nZW1pbmkueWFtbFxuTUFJTlRBSU5FUlM6Mjg4MzpGOlx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sXG5NQUlOVEFJTkVSUy0yODg0LUY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9jb3J0aW5hLGdlbWluaS1waW5jdHJsLnR4dFxuLS1cbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNTk9XHRcdGV0aGVybmV0OiBldGhlcm5ldEA2MDAwMDAwMCB7XG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k6MzYwOlx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNjEtXHRcdFx0cmVnID0gXHUwMDNjMHg2MDAwMDAwMCAweDQwMDBcdTAwM2UsIC8qIEdsb2JhbCByZWdpc3RlcnMsIHF1ZXVlICovXG4tLVxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpPTM3MT1cdFx0XHRnbWFjMDogZXRoZXJuZXQtcG9ydEAwIHtcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaTozNzI6XHRcdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7Y29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFwmIzM0OztcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNzMtXHRcdFx0XHRyZWcgPSBcdTAwM2MweDYwMDA4MDAwIDB4MjAwMFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cbi0tXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k9MzgyPVx0XHRcdGdtYWMxOiBldGhlcm5ldC1wb3J0QDEge1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM4MzpcdFx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCYjMzQ7O1xuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpLTM4NC1cdFx0XHRcdHJlZyA9IFx1MDAzYzB4NjAwMGMwMDAgMHgyMDAwXHUwMDNlLCAvKiBQb3J0IDEgRE1BL1RPRSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjYyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjI3LVx0e1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjI4Olx0XHQuY29tcGF0aWJsZSA9IFwmIzM0O2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjY5MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cdHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5MjpcdFx0LmNvbXBhdGlibGUgPSBcJiMzNDtjb3J0aW5hLGdlbWluaS1ldGhlcm5ldFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cdH0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2ODIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipEaXZpbmcgaW50byB0aGUgR2VtaW5pIERUUyoqCgpPa2F5LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgdHJlZSBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmksIHNwZWNpZmljYWxseSB0aGUgU3RvckxpbmsgU0wzNTE2IEFSTSBTb0Mg4oCTIHRoYXQgbWVhbnMgYGFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LiBJJiMzOTt2ZSBnb3QgdG8gZmlndXJlIG91dCBob3cgdGhpcyB0aGluZyBpcyBzdHJ1Y3R1cmVkLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgdGhlIHByb2JlIGZ1bmN0aW9uOyBJIG5lZWQgdG8gZHJpbGwgaW50byB3aGF0IHJlc291cmNlcyBpdCBhY3R1YWxseSByZXF1ZXN0cyBhbmQgcmVsaWVzIG9uLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0NTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQ1NTpcdFx0cG9ydC1cdTAwM2VtYWNfYWRkclsyXSA9XG4yNDU2Olx0XHRcdGNwdV90b19sZTMyKHJlYWRsKHBvcnQtXHUwMDNlZ21hY19iYXNlICYjNDM7IEdNQUNfU1RBX0FERDIpKTtcbjI0NTc6XHR9XG4yNDU4Olx0XG4yNDU5Olx0c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuMjQ2MDpcdHtcbjI0NjE6XHRcdGNoYXIgKnBvcnRfbmFtZXNbMl0gPSB7IFwmIzM0O2V0aGVybmV0MFwmIzM0OywgXCYjMzQ7ZXRoZXJuZXQxXCYjMzQ7IH07XG4yNDYyOlx0XHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cdTAwM2VkZXYub2Zfbm9kZTtcbjI0NjM6XHRcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcbjI0NjQ6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuMjQ2NTpcdFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcbjI0NjY6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG4yNDY3Olx0XHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7XG4yNDY4Olx0XHR1OCBtYWNbRVRIX0FMRU5dO1xuMjQ2OTpcdFx0dW5zaWduZWQgaW50IGlkO1xuMjQ3MDpcdFx0aW50IGlycTtcbjI0NzE6XHRcdGludCByZXQ7XG4yNDcyOlx0XG4yNDczOlx0XHRwYXJlbnQgPSBkZXYtXHUwMDNlcGFyZW50O1xuMjQ3NDpcdFx0Z2V0aCA9IGRldl9nZXRfZHJ2ZGF0YShwYXJlbnQpO1xuMjQ3NTpcdFxuMjQ3NjpcdFx0aWYgKCFzdHJjbXAoZGV2X25hbWUoZGV2KSwgXCYjMzQ7NjAwMDgwMDAuZXRoZXJuZXQtcG9ydFwmIzM0OykpXG4yNDc3Olx0XHRcdGlkID0gMDtcbjI0Nzg6XHRcdGVsc2UgaWYgKCFzdHJjbXAoZGV2X25hbWUoZGV2KSwgXCYjMzQ7NjAwMGMwMDAuZXRoZXJuZXQtcG9ydFwmIzM0OykpXG4yNDc5Olx0XHRcdGlkID0gMTtcbjI0ODA6XHRcdGVsc2VcbjI0ODE6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4yNDgyOlx0XG4yNDgzOlx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O3Byb2JlICVzIElEICVkXFxuXCYjMzQ7LCBkZXZfbmFtZShkZXYpLCBpZCk7XG4yNDg0Olx0XG4yNDg1Olx0XHRuZXRkZXYgPSBkZXZtX2FsbG9jX2V0aGVyZGV2X21xcyhkZXYsIHNpemVvZigqcG9ydCksIFRYX1FVRVVFX05VTSwgVFhfUVVFVUVfTlVNKTtcbjI0ODY6XHRcdGlmICghbmV0ZGV2KSB7XG4yNDg3Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtDYW4mIzM5O3QgYWxsb2NhdGUgZXRoZXJuZXQgZGV2aWNlICMlZFxcblwmIzM0OywgaWQpO1xuMjQ4ODpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjI0ODk6XHRcdH1cbjI0OTA6XHRcbjI0OTE6XHRcdHBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xuMjQ5MjpcdFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBkZXYpO1xuMjQ5MzpcdFx0cG9ydC1cdTAwM2VuZXRkZXYgPSBuZXRkZXY7XG4yNDk0Olx0XHRwb3J0LVx1MDAzZWlkID0gaWQ7XG4yNDk1Olx0XHRwb3J0LVx1MDAzZWdldGggPSBnZXRoO1xuMjQ5NjpcdFx0cG9ydC1cdTAwM2VkZXYgPSBkZXY7XG4yNDk3Olx0XHRwb3J0LVx1MDAzZW1zZ19lbmFibGUgPSBuZXRpZl9tc2dfaW5pdChkZWJ1ZywgREVGQVVMVF9NU0dfRU5BQkxFKTtcbjI0OTg6XHRcbjI0OTk6XHRcdC8qIERNQSBtZW1vcnkgKi9cbjI1MDA6XHRcdHBvcnQtXHUwMDNlZG1hX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBOVUxMKTtcbjI1MDE6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VkbWFfYmFzZSkpIHtcbjI1MDI6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2dldCBETUEgYWRkcmVzcyBmYWlsZWRcXG5cJiMzNDspO1xuMjUwMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihwb3J0LVx1MDAzZWRtYV9iYXNlKTtcbjI1MDQ6XHRcdH1cbjI1MDU6XHRcbjI1MDY6XHRcdC8qIEdNQUMgY29uZmlnIG1lbW9yeSAqL1xuMjUwNzpcdFx0cG9ydC1cdTAwM2VnbWFjX2Jhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAxLCBOVUxMKTtcbjI1MDg6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VnbWFjX2Jhc2UpKSB7XG4yNTA5Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtnZXQgR01BQyBhZGRyZXNzIGZhaWxlZFxcblwmIzM0Oyk7XG4yNTEwOlx0XHRcdHJldHVybiBQVFJfRVJSKHBvcnQtXHUwMDNlZ21hY19iYXNlKTtcbjI1MTE6XHRcdH1cbjI1MTI6XHRcbjI1MTM6XHRcdC8qIEludGVycnVwdCAqL1xuMjUxNDpcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTtcbjI1MTU6XHRcdGlmIChpcnEgXHUwMDNjIDApXG4yNTE2Olx0XHRcdHJldHVybiBpcnE7XG4yNTE3Olx0XHRwb3J0LVx1MDAzZWlycSA9IGlycTtcbjI1MTg6XHRcbjI1MTk6XHRcdC8qIENsb2NrIHRoZSBwb3J0ICovXG4yNTIwOlx0XHRwb3J0LVx1MDAzZXBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCBcJiMzNDtQQ0xLXCYjMzQ7KTtcbjI1MjE6XHRcdGlmIChJU19FUlIocG9ydC1cdTAwM2VwY2xrKSkge1xuMjUyMjpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7bm8gUENMS1xcblwmIzM0Oyk7XG4yNTIzOlx0XHRcdHJldHVybiBQVFJfRVJSKHBvcnQtXHUwMDNlcGNsayk7XG4yNTI0Olx0XHR9XG4yNTI1Olx0XHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocG9ydC1cdTAwM2VwY2xrKTtcbjI1MjY6XHRcdGlmIChyZXQpXG4yNTI3Olx0XHRcdHJldHVybiByZXQ7XG4yNTI4Olx0XG4yNTI5Olx0XHQvKiBNYXliZSB0aGVyZSBpcyBhIG5pY2UgZXRoZXJuZXQgYWRkcmVzcyB3ZSBzaG91bGQgdXNlICovXG4yNTMwOlx0XHRnZW1pbmlfcG9ydF9zYXZlX21hY19hZGRyKHBvcnQpO1xuMjUzMTpcdFxuMjUzMjpcdFx0LyogUmVzZXQgdGhlIHBvcnQgKi9cbjI1MzM6XHRcdHBvcnQtXHUwMDNlcmVzZXQgPSBkZXZtX3Jlc2V0X2NvbnRyb2xfZ2V0X2V4Y2x1c2l2ZShkZXYsIE5VTEwpO1xuMjUzNDpcdFx0aWYgKElTX0VSUihwb3J0LVx1MDAzZXJlc2V0KSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDI0OQoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDEwNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgRGV2aWNlIElkZW50aWZpY2F0aW9uIExvZ2ljIGluIEV0aGVybmV0IERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGlzLiBMaW5lIDI0NzYsIHJpZ2h0LiBJJiMzOTttIGxvb2tpbmcgYXQgaG93IHRoaXMgYGdlbWluaV9ldGhlcm5ldF9wcm9iZWAgZnVuY3Rpb24gaGFuZGxlcyBkZXZpY2UgaWRlbnRpZmljYXRpb24uIEl0IGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIHN0ZXAgaW4gYnJpbmdpbmcgdXAgdGhlc2UgRXRoZXJuZXQgaW50ZXJmYWNlcy4gVGhlIGNvZGUgdXNlcyBgc3RyY21wYCB0byBjb21wYXJlIHRoZSBkZXZpY2UgbmFtZSBvYnRhaW5lZCBieSBgZGV2X25hbWUoZGV2KWAgYWdhaW5zdCBoYXJkY29kZWQgc3RyaW5ncy4gSSBpbW1lZGlhdGVseSBzcG90IHRoZSBwb3RlbnRpYWwgZm9yIGZyYWdpbGl0eSBoZXJlLiBUaGlzIGFwcHJvYWNoIHRpZXMgdGhlIGRyaXZlciB2ZXJ5IHRpZ2h0bHkgdG8gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZSBuYW1lcy4KCklmIHRoZSBuYW1lIGlzICYjMzQ7NjAwMDgwMDAuZXRoZXJuZXQtcG9ydCYjMzQ7LCB0aGUgYGlkYCBpcyBzZXQgdG8gMC4gSWYgaXQmIzM5O3MgJiMzNDs2MDAwYzAwMC5ldGhlcm5ldC1wb3J0JiMzNDssIHRoZW4gYGlkYCBiZWNvbWVzIDEuIE90aGVyd2lzZSwgaXQgcmV0dXJucyAtRU5PREVWLCBzaWduYWxpbmcgdGhhdCB0aGUgZHJpdmVyIGRvZXNuJiMzOTt0IHJlY29nbml6ZSB0aGUgZGV2aWNlLgoKSSB3b3VsZCBoYXZlIHByZWZlcnJlZCBhIG1vcmUgcm9idXN0IGlkZW50aWZpY2F0aW9uIG1ldGhvZCwgbWF5YmUgdXNpbmcgZGV2aWNlIGlkZW50aWZpZXJzIG9yIGNvbXBhdGlibGUgc3RyaW5ncyBpbiB0aGUgZGV2aWNlIHRyZWUsIGFuZCB0aGlzIGlzIHNvbWV0aGluZyBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGZpeGluZyBvciByZWZhY3RvcmluZy4gSG93ZXZlciwgSSBuZWVkIHRvIGxvb2sgYXQgd2hhdCBgaWRgIHJlcHJlc2VudHMgaW4gdGhlIGxhcmdlciBjb250ZXh0LiBJcyBpdCBhbiBpbmRleCBpbnRvIHNvbWUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgaWRgIGFzc2lnbm1lbnQgaXMgY3JpdGljYWwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0MDpcdFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3JlbW92ZSxcbjI2NDE6XHR9O1xuMjY0MjpcdFxuMjY0MzpcdHN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4yNjQ0Olx0e1xuMjY0NTpcdFx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4yNjQ2Olx0XHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xuMjY0NzpcdFx0dW5zaWduZWQgaW50IHJldHJ5ID0gNTtcbjI2NDg6XHRcdHUzMiB2YWw7XG4yNjQ5Olx0XG4yNjUwOlx0XHQvKiBHbG9iYWwgcmVnaXN0ZXJzICovXG4yNjUxOlx0XHRnZXRoID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpnZXRoKSwgR0ZQX0tFUk5FTCk7XG4yNjUyOlx0XHRpZiAoIWdldGgpXG4yNjUzOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuMjY1NDpcdFx0Z2V0aC1cdTAwM2ViYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMCwgTlVMTCk7XG4yNjU1Olx0XHRpZiAoSVNfRVJSKGdldGgtXHUwMDNlYmFzZSkpXG4yNjU2Olx0XHRcdHJldHVybiBQVFJfRVJSKGdldGgtXHUwMDNlYmFzZSk7XG4yNjU3Olx0XHRnZXRoLVx1MDAzZWRldiA9IGRldjtcbjI2NTg6XHRcbjI2NTk6XHRcdC8qIFdhaXQgZm9yIHBvcnRzIHRvIHN0YWJpbGl6ZSAqL1xuMjY2MDpcdFx0ZG8ge1xuMjY2MTpcdFx0XHR1ZGVsYXkoMik7XG4yNjYyOlx0XHRcdHZhbCA9IHJlYWRsKGdldGgtXHUwMDNlYmFzZSAmIzQzOyBHTE9CQUxfVE9FX1ZFUlNJT05fUkVHKTtcbjI2NjM6XHRcdFx0YmFycmllcigpO1xuMjY2NDpcdFx0fSB3aGlsZSAoIXZhbCBcdTAwMjZcdTAwMjYgLS1yZXRyeSk7XG4yNjY1Olx0XHRpZiAoIXJldHJ5KSB7XG4yNjY2Olx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzZXQgZXRoZXJuZXRcXG5cJiMzNDspO1xuMjY2NzpcdFx0XHRyZXR1cm4gLUVJTztcbjI2Njg6XHRcdH1cbjI2Njk6XHRcdGRldl9pbmZvKGRldiwgXCYjMzQ7RXRoZXJuZXQgZGV2aWNlIElEOiAweCUwM3gsIHJldmlzaW9uIDB4JTAxeFxcblwmIzM0OyxcbjI2NzA6XHRcdFx0ICh2YWwgXHUwMDNlXHUwMDNlIDQpIFx1MDAyNiAweEZGRlUsIHZhbCBcdTAwMjYgMHhGVSk7XG4yNjcxOlx0XG4yNjcyOlx0XHRzcGluX2xvY2tfaW5pdChcdTAwMjZnZXRoLVx1MDAzZWlycV9sb2NrKTtcbjI2NzM6XHRcdHNwaW5fbG9ja19pbml0KFx1MDAyNmdldGgtXHUwMDNlZnJlZXFfbG9jayk7XG4yNjc0Olx0XG4yNjc1Olx0XHQvKiBUaGUgY2hpbGRyZW4gd2lsbCB1c2UgdGhpcyAqL1xuMjY3NjpcdFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZ2V0aCk7XG4yNjc3Olx0XG4yNjc4Olx0XHQvKiBTcGF3biBjaGlsZCBkZXZpY2VzIGZvciB0aGUgdHdvIHBvcnRzICovXG4yNjc5Olx0XHRyZXR1cm4gZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZShkZXYpO1xuMjY4MDpcdH1cbjI2ODE6XHRcbjI2ODI6XHRzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4yNjgzOlx0e1xuMjY4NDpcdFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOSAxMjozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM3OAoJCQkJCQkJb3V0cHV0OiAxMzgKCQkJCQkJCXRob3VnaHRzOiA2MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UgZm9yIEdlbWluaSBFdGhlcm5ldCBEcml2ZXIqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMgb3V0bGluZXMgKndoZW4qIHdlIHNob3VsZCBtYXJrIHNvbWV0aGluZyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIGtleSBoZXJlIGlzIHRoZSAmIzM0O05FR0FUSVZFIENSSVRFUklBLCYjMzQ7IGFuZCBpdCBsb29rcyBsaWtlIHdlJiMzOTt2ZSBoaXQgYSBmZXcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AsIGlzIGEgc2VyaW91cyBjb250ZW5kZXIgZm9yIGV4Y2x1c2lvbi4KClRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBidXQgdGhlIGNvZGUgaXMgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIFNvQyBFdGhlcm5ldCBjb250cm9sbGVyLiAgSXQmIzM5O3MgYW4gQVJNLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciwgYW5kIEkga25vdyB0aGlzIGtpbmQgb2YgdGhpbmcuICBJdCAqbmVlZHMqIE9wZW5GaXJtd2FyZSBEZXZpY2UgVHJlZSBub2RlcyAoYE9GYCksIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIChgMHg2MDAwMDAwMGApLCBkZXZpY2UgbmFtZXMgbGlrZSBgNjAwMDgwMDAuZXRoZXJuZXQtcG9ydGAsIGFuZCBhbHNvIHJlbGllcyBvbiBoYXJkd2FyZS1zcGVjaWZpYyBjbG9ja3MgYW5kIHJlc2V0IGNvbnRyb2xzLiAgQWxsIG9mIHRoaXMgc2NyZWFtcyAmIzM0O2hhcmR3YXJlLWRlcGVuZGVudCwmIzM0OyBhbmQgSSBhbHJlYWR5IGtub3cgdGhpcyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuICBJIGNhbiYjMzk7dCBpbWFnaW5lIHRoaXMgcnVubmluZyBuYXRpdmVseSB3aXRob3V0IGEgdmVyeSBzcGVjaWZpYyBzZXR1cCwgYW5kIGV2ZW4gdGhlbiwgSSBzdXNwZWN0IG5vdC4KCkxldCYjMzk7cyBkbyBhIGxpdHRsZSBzYW5pdHkgY2hlY2sganVzdCB0byBiZSBzdXJlLi4uIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMuIE9uIGFtZDY0LCBgQ09ORklHX09GYCBpcyBnZW5lcmFsbHkgZGlzYWJsZWQsIHVubGVzcyB3ZSBlbmFibGUgc29tZSB1bml0IHRlc3RzLCBidXQgdGhhdCYjMzk7cyBub3QgdGhlIGRlZmF1bHQuIEV2ZW4gaWYgYENPTkZJR19PRmAgKmlzKiBlbmFibGVkIGZvciBzb21lIHVuaXQgdGVzdGluZywgdGhlcmUmIzM5O3Mgbm8gdmlydHVhbCBkZXZpY2Ugb3IgUENJIGRldmljZSB0aGF0IHdvdWxkIHRyaWdnZXIgdGhpcyBwYXJ0aWN1bGFyIGRyaXZlci4gSXQmIzM5O3MgZXhwZWN0aW5nIGhhcmRjb2RlZCBkZXZpY2UgcmVnaXN0ZXIgYmFzZSBuYW1lcyBhbmQgcGh5c2ljYWwgU29DIE1NSU8gcmVnaXN0ZXJzLgoKU28sIGluIGNvbmNsdXNpb24sIHRoaXMgY29kZSBpcyAqc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlKiBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBhbmQgdGhlIHN0YW5kYXJkIGZ1enppbmcgZW52aXJvbm1lbnRzIHdlIGFyZSB1c2luZy4gSXQgaXMgZXhwZWN0aW5nIHNwZWNpZmljLCBub24tZW11bGF0ZWQgaGFyZHdhcmUuIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiBwcm9jZWVkLgoKTXkgZmluYWwgY2hlY2sgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBsb29rcyBsaWtlIHRoaXM6CgoqICAgYFdvcnRoRnV6emluZ2A6IGBmYWxzZWAKKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgYXJyYXkpCiogICBgRm9jdXNTeW1ib2xzYDogYFtdYCAoZW1wdHkgYXJyYXkpCiogICBgUmVhc29uaW5nYDogQ2xlYXJseSBleHBsYWluIHRoYXQgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jYCBkcml2ZXIgaXMgcGxhdGZvcm0tc3BlY2lmaWMgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlciwgcmVxdWlyZXMgc3BlY2lmaWMgU29DIERUIG5vZGVzLCBhbmQgcGh5c2ljYWwgTU1JTyBoYXJkd2FyZSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBvbiBhbWQ2NC4KCk9rYXksIGxldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuIERvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA5IDEyOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDkgMTI6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjA1Ljk4NDcxOTc2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5MzIzNjA2Mjc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDUuOTg0NzI0MzMxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA1NDYzNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgU2VwIDkgMTI6MzI6MDUgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNcXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXFxuQEAgLTE2LDYgKzE2LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvaW5pdC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbW9kdWxlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3BsYXRmb3JtX2RldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc3BpbmxvY2suaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NsYWIuaFxcdTAwM2VcXG5AQCAtNzM2LDcgKzczNyw4IEBAIGdtYWNfZ2V0X3F1ZXVlX3BhZ2Uoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCxcXG4gXFx0bWFwcGluZyA9IGFkZHIgXFx1MDAyNiBQQUdFX01BU0s7XFxuIFxcbiBcXHRpZiAoIWdldGgtXFx1MDAzZWZyZWVxX3BhZ2VzKSB7XFxuLVxcdFxcdGRldl9lcnIoZ2V0aC1cXHUwMDNlZGV2LCBcXFwidHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxcXG5cXFwiKTtcXG4rXFx0XFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVxcdTAwM2VkZXYsXFxuK1xcdFxcdFxcdFxcdCAgICBcXFwidHJ5IHRvIGdldCBwYWdlIHdpdGggbm8gcGFnZSBsaXN0XFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIE5VTEw7XFxuIFxcdH1cXG4gXFxuQEAgLTE0NDEsNyArMTQ0Myw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ21hY19za2JfaWZfZ29vZF9mcmFtZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQsXFxuIH1cXG4gXFxuIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbi1cXHRcXHRcXHQgICAgdW5zaWduZWQgaW50ICpmcmVlcV9jb25zdW1lZClcXG4rXFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQsIGJvb2wgKnJlc2NoZWR1bGUpXFxuIHtcXG4gXFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG4gXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXJ4cV9vcmRlcikgLSAxO1xcbkBAIC0xNDQ5LDYgKzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcXG4gXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnID0gcG9ydC1cXHUwMDNlcnhxX3J3cHRyO1xcbiBcXHR1bnNpZ25lZCBpbnQgZnJhZ19uciA9IHBvcnQtXFx1MDAzZXJ4X2ZyYWdfbnI7XFxuIFxcdHN0cnVjdCBza19idWZmICpza2IgPSBwb3J0LVxcdTAwM2VyeF9za2I7XFxuK1xcdC8qIEJvdW5kIG1hbGZvcm1lZCBjaGFpbnMgd2hpbGUgYWxsb3dpbmcgbWF4aW11bSBmcmFnbWVudHMgcGVyIGZyYW1lLiAqL1xcbitcXHR1bnNpZ25lZCBpbnQgZGVzY19saW1pdCA9IGJ1ZGdldCAqIE1BWF9TS0JfRlJBR1M7XFxuIFxcdHVuc2lnbmVkIGludCBjb25zdW1lZCA9IDA7XFxuIFxcdHVuc2lnbmVkIGludCBmcmFtZV9sZW4sIGZyYWdfbGVuO1xcbiBcXHRzdHJ1Y3QgZ21hY19yeGRlc2MgKnJ4ID0gTlVMTDtcXG5AQCAtMTQ3NSw3ICsxNDc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXFxuIFxcdHIgPSBydy5iaXRzLnJwdHI7XFxuIFxcdHcgPSBydy5iaXRzLndwdHI7XFxuIFxcbi1cXHR3aGlsZSAoYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHcgIT0gcikge1xcbitcXHR3aGlsZSAoYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IGNvbnN1bWVkIFxcdTAwM2MgZGVzY19saW1pdCBcXHUwMDI2XFx1MDAyNiB3ICE9IHIpIHtcXG4gXFx0XFx0cGFnZSA9IE5VTEw7XFxuIFxcdFxcdHJ4ID0gcG9ydC1cXHUwMDNlcnhxX3JpbmcgKyByO1xcbiBcXHRcXHR3b3JkMCA9IHJ4LVxcdTAwM2V3b3JkMDtcXG5AQCAtMTUwMiwxNSArMTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKCFtYXBwaW5nKSB7XFxuLVxcdFxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LFxcbi1cXHRcXHRcXHRcXHQgICBcXFwicnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXFxcXG5cXFwiLCByKTtcXG4rXFx0XFx0XFx0aWYgKG5ldF9yYXRlbGltaXQoKSlcXG4rXFx0XFx0XFx0XFx0bmV0ZGV2X2VycihuZXRkZXYsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIFxcXCJyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHIpO1xcbiBcXHRcXHRcXHRnb3RvIGVycl9kcm9wO1xcbiBcXHRcXHR9XFxuIFxcbiBcXHRcXHQvKiBGcmVlcSBwb2ludGVycyBhcmUgb25lIHBhZ2Ugb2ZmICovXFxuIFxcdFxcdGdwYWdlID0gZ21hY19nZXRfcXVldWVfcGFnZShnZXRoLCBwb3J0LCBtYXBwaW5nICsgUEFHRV9TSVpFKTtcXG4gXFx0XFx0aWYgKCFncGFnZSkge1xcbi1cXHRcXHRcXHRkZXZfZXJyKGdldGgtXFx1MDAzZWRldiwgXFxcImNvdWxkIG5vdCBmaW5kIG1hcHBpbmdcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCJjb3VsZCBub3QgZmluZCBtYXBwaW5nXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Z290byBlcnJfZHJvcDtcXG4gXFx0XFx0fVxcbiBcXHRcXHRwYWdlID0gZ3BhZ2UtXFx1MDAzZXBhZ2U7XFxuQEAgLTE1MzUsNyArMTU0Miw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbiBcXHRcXHRpZiAoZnJhZ19uciA9PSBNQVhfU0tCX0ZSQUdTKVxcbiBcXHRcXHRcXHRnb3RvIGVycl9kcm9wO1xcbiBcXG4tXFx0XFx0aWYgKGZyYWdfbGVuID09IDApXFxuK1xcdFxcdGlmIChmcmFnX2xlbiA9PSAwIFxcdTAwMjZcXHUwMDI2IG5ldF9yYXRlbGltaXQoKSlcXG4gXFx0XFx0XFx0bmV0ZGV2X2VycihuZXRkZXYsIFxcXCJSZWNlaXZlZCBmcmFnbWVudCB3aXRoIGxlbiA9IDBcXFxcblxcXCIpO1xcbiBcXG4gXFx0XFx0c2tiX2ZpbGxfcGFnZV9kZXNjKHNrYiwgZnJhZ19uciwgcGFnZSwgcGFnZV9vZmZzLCBmcmFnX2xlbik7XFxuQEAgLTE1NzksNiArMTU4Niw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbiBcXHRwb3J0LVxcdTAwM2VyeF9mcmFnX25yID0gZnJhZ19ucjtcXG4gXFx0cG9ydC1cXHUwMDNlcnhfZHJvcHBpbmcgPSBkcm9wcGluZztcXG4gXFx0KmZyZWVxX2NvbnN1bWVkID0gY29uc3VtZWQ7XFxuK1xcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IHcgIT0gcjtcXG4gXFx0d3JpdGV3KHIsIHB0cl9yZWcpO1xcbiBcXHRyZXR1cm4gcmVjZWl2ZWQ7XFxuIH1cXG5AQCAtMTU5MCwxMiArMTU5OCwxMyBAQCBzdGF0aWMgaW50IGdtYWNfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4gXFx0dW5zaWduZWQgaW50IGZyZWVxX3RocmVzaG9sZDtcXG4gXFx0dW5zaWduZWQgaW50IGZyZWVxX2NvbnN1bWVkO1xcbiBcXHR1bnNpZ25lZCBpbnQgcmVjZWl2ZWQ7XFxuK1xcdGJvb2wgcmVzY2hlZHVsZTtcXG4gXFxuIFxcdGZyZWVxX3RocmVzaG9sZCA9IDEgXFx1MDAzY1xcdTAwM2MgKGdldGgtXFx1MDAzZWZyZWVxX29yZGVyIC0gMSk7XFxuIFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnBvcnQtXFx1MDAzZXJ4X3N0YXRzX3N5bmNwKTtcXG4gXFxuLVxcdHJlY2VpdmVkID0gZ21hY19yeChuYXBpLVxcdTAwM2VkZXYsIGJ1ZGdldCwgXFx1MDAyNmZyZWVxX2NvbnN1bWVkKTtcXG4tXFx0aWYgKHJlY2VpdmVkIFxcdTAwM2MgYnVkZ2V0KVxcbitcXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cXHUwMDNlZGV2LCBidWRnZXQsIFxcdTAwMjZmcmVlcV9jb25zdW1lZCwgXFx1MDAyNnJlc2NoZWR1bGUpO1xcbitcXHRpZiAoIXJlc2NoZWR1bGUgXFx1MDAyNlxcdTAwMjYgcmVjZWl2ZWQgXFx1MDAzYyBidWRnZXQpXFxuIFxcdFxcdCsrcG9ydC1cXHUwMDNlcnhfbmFwaV9leGl0cztcXG4gXFxuIFxcdHU2NF9zdGF0c191cGRhdGVfZW5kKFxcdTAwMjZwb3J0LVxcdTAwM2VyeF9zdGF0c19zeW5jcCk7XFxuQEAgLTE2MDYsMTAgKzE2MTUsMTEgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXFxuIFxcdFxcdGdldGhfZmlsbF9mcmVlcShnZXRoLCB0cnVlKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKHJlY2VpdmVkIFxcdTAwM2MgYnVkZ2V0IFxcdTAwMjZcXHUwMDI2IG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXFxuK1xcdGlmICghcmVzY2hlZHVsZSBcXHUwMDI2XFx1MDAyNiByZWNlaXZlZCBcXHUwMDNjIGJ1ZGdldCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgbmFwaV9jb21wbGV0ZV9kb25lKG5hcGksIHJlY2VpdmVkKSlcXG4gXFx0XFx0Z21hY19lbmFibGVfcnhfaXJxKG5hcGktXFx1MDAzZWRldiwgMSk7XFxuIFxcbi1cXHRyZXR1cm4gcmVjZWl2ZWQ7XFxuK1xcdHJldHVybiByZXNjaGVkdWxlID8gYnVkZ2V0IDogcmVjZWl2ZWQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5AQCAtMTc5OCw3ICsxODA4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGdtYWNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuIFxcbiBcXHRpZiAodmFsIFxcdTAwMjYgKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSkpIHtcXG4gXFx0XFx0c3Bpbl9sb2NrKFxcdTAwMjZnZXRoLVxcdTAwM2VpcnFfbG9jayk7XFxuLVxcdFxcdHdyaXRlbChHTUFDMF9SWERFUlJfSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSxcXG4rXFx0XFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcXHUwMDNjXFx1MDAzYyAobmV0ZGV2LVxcdTAwM2VkZXZfaWQgKiA4KSxcXG4gXFx0XFx0ICAgICAgIGdldGgtXFx1MDAzZWJhc2UgKyBHTE9CQUxfSU5URVJSVVBUX1NUQVRVU180X1JFRyk7XFxuIFxcdFxcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXFx1MDAyNnBvcnQtXFx1MDAzZWlyX3N0YXRzX3N5bmNwKTtcXG4gXFx0XFx0Kytwb3J0LVxcdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDYuNDk1OTA3NTQxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyODgxMjQwNjk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgbW9kaWZpZWQgY29kZSBpcyBpbiBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIHRoZSBDb3J0aW5hIFN5c3RlbXMgR2VtaW5pIChTdG9yTGluayBTTDM1MXgpIEFSTSBTb0MgRXRoZXJuZXQgY29udHJvbGxlci4gSXQgcmVxdWlyZXMgc3BlY2lmaWMgT3BlbkZpcm13YXJlIC8gRGV2aWNlIFRyZWUgaGFyZHdhcmUgYmluZGluZ3MgYW5kIFNvQy1zcGVjaWZpYyBNTUlPIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXZhaWxhYmxlIG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoc3VjaCBhcyBRRU1VIG9yIEdDRSkgb24gYW1kNjQuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nIG9uIGFtZDY0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA4MmYwYTgxMmM5MjE5ODAwYzdiOGUzNzkzOWViNTNlZDAxOTdlZGRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBTZXAgOSAxMjozMjowNSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXG5pbmRleCBmMDhkZTYyM2U2ZjdjLi4yZmU3ZmQwMjAyZDI2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1xuQEAgLTE2LDYgKzE2LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2luaXQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NwaW5sb2NrLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbkBAIC03MzYsNyArNzM3LDggQEAgZ21hY19nZXRfcXVldWVfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxuIFx0bWFwcGluZyA9IGFkZHIgXHUwMDI2IFBBR0VfTUFTSztcbiBcbiBcdGlmICghZ2V0aC1cdTAwM2VmcmVlcV9wYWdlcykge1xuLVx0XHRkZXZfZXJyKGdldGgtXHUwMDNlZGV2LCBcInRyeSB0byBnZXQgcGFnZSB3aXRoIG5vIHBhZ2UgbGlzdFxcblwiKTtcbitcdFx0ZGV2X2Vycl9yYXRlbGltaXRlZChnZXRoLVx1MDAzZWRldixcbitcdFx0XHRcdCAgICBcInRyeSB0byBnZXQgcGFnZSB3aXRoIG5vIHBhZ2UgbGlzdFxcblwiKTtcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXHR9XG4gXG5AQCAtMTQ0MSw3ICsxNDQzLDcgQEAgc3RhdGljIHN0cnVjdCBza19idWZmICpnbWFjX3NrYl9pZl9nb29kX2ZyYW1lKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCxcbiB9XG4gXG4gc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXG4tXHRcdFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQpXG4rXHRcdFx0ICAgIHVuc2lnbmVkIGludCAqZnJlZXFfY29uc3VtZWQsIGJvb2wgKnJlc2NoZWR1bGUpXG4ge1xuIFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcbiBcdHVuc2lnbmVkIHNob3J0IG0gPSAoMSBcdTAwM2NcdTAwM2MgcG9ydC1cdTAwM2VyeHFfb3JkZXIpIC0gMTtcbkBAIC0xNDQ5LDYgKzE0NTEsOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHZvaWQgX19pb21lbSAqcHRyX3JlZyA9IHBvcnQtXHUwMDNlcnhxX3J3cHRyO1xuIFx0dW5zaWduZWQgaW50IGZyYWdfbnIgPSBwb3J0LVx1MDAzZXJ4X2ZyYWdfbnI7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcG9ydC1cdTAwM2VyeF9za2I7XG4rXHQvKiBCb3VuZCBtYWxmb3JtZWQgY2hhaW5zIHdoaWxlIGFsbG93aW5nIG1heGltdW0gZnJhZ21lbnRzIHBlciBmcmFtZS4gKi9cbitcdHVuc2lnbmVkIGludCBkZXNjX2xpbWl0ID0gYnVkZ2V0ICogTUFYX1NLQl9GUkFHUztcbiBcdHVuc2lnbmVkIGludCBjb25zdW1lZCA9IDA7XG4gXHR1bnNpZ25lZCBpbnQgZnJhbWVfbGVuLCBmcmFnX2xlbjtcbiBcdHN0cnVjdCBnbWFjX3J4ZGVzYyAqcnggPSBOVUxMO1xuQEAgLTE0NzUsNyArMTQ3OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxuIFx0ciA9IHJ3LmJpdHMucnB0cjtcbiBcdHcgPSBydy5iaXRzLndwdHI7XG4gXG4tXHR3aGlsZSAoYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbitcdHdoaWxlIChidWRnZXQgXHUwMDI2XHUwMDI2IGNvbnN1bWVkIFx1MDAzYyBkZXNjX2xpbWl0IFx1MDAyNlx1MDAyNiB3ICE9IHIpIHtcbiBcdFx0cGFnZSA9IE5VTEw7XG4gXHRcdHJ4ID0gcG9ydC1cdTAwM2VyeHFfcmluZyArIHI7XG4gXHRcdHdvcmQwID0gcngtXHUwMDNld29yZDA7XG5AQCAtMTUwMiwxNSArMTUwNiwxOCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdFx0fVxuIFxuIFx0XHRpZiAoIW1hcHBpbmcpIHtcbi1cdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbi1cdFx0XHRcdCAgIFwicnhxWyV1XTogSFcgQlVHOiB6ZXJvIERNQSBkZXNjXFxuXCIsIHIpO1xuK1x0XHRcdGlmIChuZXRfcmF0ZWxpbWl0KCkpXG4rXHRcdFx0XHRuZXRkZXZfZXJyKG5ldGRldixcbitcdFx0XHRcdFx0ICAgXCJyeHFbJXVdOiBIVyBCVUc6IHplcm8gRE1BIGRlc2NcXG5cIixcbitcdFx0XHRcdFx0ICAgcik7XG4gXHRcdFx0Z290byBlcnJfZHJvcDtcbiBcdFx0fVxuIFxuIFx0XHQvKiBGcmVlcSBwb2ludGVycyBhcmUgb25lIHBhZ2Ugb2ZmICovXG4gXHRcdGdwYWdlID0gZ21hY19nZXRfcXVldWVfcGFnZShnZXRoLCBwb3J0LCBtYXBwaW5nICsgUEFHRV9TSVpFKTtcbiBcdFx0aWYgKCFncGFnZSkge1xuLVx0XHRcdGRldl9lcnIoZ2V0aC1cdTAwM2VkZXYsIFwiY291bGQgbm90IGZpbmQgbWFwcGluZ1xcblwiKTtcbitcdFx0XHRkZXZfZXJyX3JhdGVsaW1pdGVkKGdldGgtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XHQgICAgXCJjb3VsZCBub3QgZmluZCBtYXBwaW5nXFxuXCIpO1xuIFx0XHRcdGdvdG8gZXJyX2Ryb3A7XG4gXHRcdH1cbiBcdFx0cGFnZSA9IGdwYWdlLVx1MDAzZXBhZ2U7XG5AQCAtMTUzNSw3ICsxNTQyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnbWFjX3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCBidWRnZXQsXG4gXHRcdGlmIChmcmFnX25yID09IE1BWF9TS0JfRlJBR1MpXG4gXHRcdFx0Z290byBlcnJfZHJvcDtcbiBcbi1cdFx0aWYgKGZyYWdfbGVuID09IDApXG4rXHRcdGlmIChmcmFnX2xlbiA9PSAwIFx1MDAyNlx1MDAyNiBuZXRfcmF0ZWxpbWl0KCkpXG4gXHRcdFx0bmV0ZGV2X2VycihuZXRkZXYsIFwiUmVjZWl2ZWQgZnJhZ21lbnQgd2l0aCBsZW4gPSAwXFxuXCIpO1xuIFxuIFx0XHRza2JfZmlsbF9wYWdlX2Rlc2Moc2tiLCBmcmFnX25yLCBwYWdlLCBwYWdlX29mZnMsIGZyYWdfbGVuKTtcbkBAIC0xNTc5LDYgKzE1ODYsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdtYWNfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IGJ1ZGdldCxcbiBcdHBvcnQtXHUwMDNlcnhfZnJhZ19uciA9IGZyYWdfbnI7XG4gXHRwb3J0LVx1MDAzZXJ4X2Ryb3BwaW5nID0gZHJvcHBpbmc7XG4gXHQqZnJlZXFfY29uc3VtZWQgPSBjb25zdW1lZDtcbitcdCpyZXNjaGVkdWxlID0gYnVkZ2V0IFx1MDAyNlx1MDAyNiB3ICE9IHI7XG4gXHR3cml0ZXcociwgcHRyX3JlZyk7XG4gXHRyZXR1cm4gcmVjZWl2ZWQ7XG4gfVxuQEAgLTE1OTAsMTIgKzE1OTgsMTMgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHR1bnNpZ25lZCBpbnQgZnJlZXFfdGhyZXNob2xkO1xuIFx0dW5zaWduZWQgaW50IGZyZWVxX2NvbnN1bWVkO1xuIFx0dW5zaWduZWQgaW50IHJlY2VpdmVkO1xuK1x0Ym9vbCByZXNjaGVkdWxlO1xuIFxuIFx0ZnJlZXFfdGhyZXNob2xkID0gMSBcdTAwM2NcdTAwM2MgKGdldGgtXHUwMDNlZnJlZXFfb3JkZXIgLSAxKTtcbiBcdHU2NF9zdGF0c191cGRhdGVfYmVnaW4oXHUwMDI2cG9ydC1cdTAwM2VyeF9zdGF0c19zeW5jcCk7XG4gXG4tXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQpO1xuLVx0aWYgKHJlY2VpdmVkIFx1MDAzYyBidWRnZXQpXG4rXHRyZWNlaXZlZCA9IGdtYWNfcngobmFwaS1cdTAwM2VkZXYsIGJ1ZGdldCwgXHUwMDI2ZnJlZXFfY29uc3VtZWQsIFx1MDAyNnJlc2NoZWR1bGUpO1xuK1x0aWYgKCFyZXNjaGVkdWxlIFx1MDAyNlx1MDAyNiByZWNlaXZlZCBcdTAwM2MgYnVkZ2V0KVxuIFx0XHQrK3BvcnQtXHUwMDNlcnhfbmFwaV9leGl0cztcbiBcbiBcdHU2NF9zdGF0c191cGRhdGVfZW5kKFx1MDAyNnBvcnQtXHUwMDNlcnhfc3RhdHNfc3luY3ApO1xuQEAgLTE2MDYsMTAgKzE2MTUsMTEgQEAgc3RhdGljIGludCBnbWFjX25hcGlfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4gXHRcdGdldGhfZmlsbF9mcmVlcShnZXRoLCB0cnVlKTtcbiBcdH1cbiBcbi1cdGlmIChyZWNlaXZlZCBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNiBuYXBpX2NvbXBsZXRlX2RvbmUobmFwaSwgcmVjZWl2ZWQpKVxuK1x0aWYgKCFyZXNjaGVkdWxlIFx1MDAyNlx1MDAyNiByZWNlaXZlZCBcdTAwM2MgYnVkZ2V0IFx1MDAyNlx1MDAyNlxuK1x0ICAgIG5hcGlfY29tcGxldGVfZG9uZShuYXBpLCByZWNlaXZlZCkpXG4gXHRcdGdtYWNfZW5hYmxlX3J4X2lycShuYXBpLVx1MDAzZWRldiwgMSk7XG4gXG4tXHRyZXR1cm4gcmVjZWl2ZWQ7XG4rXHRyZXR1cm4gcmVzY2hlZHVsZSA/IGJ1ZGdldCA6IHJlY2VpdmVkO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBnbWFjX2R1bXBfZG1hX3N0YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG5AQCAtMTc5OCw3ICsxODA4LDcgQEAgc3RhdGljIGlycXJldHVybl90IGdtYWNfaXJxKGludCBpcnEsIHZvaWQgKmRhdGEpXG4gXG4gXHRpZiAodmFsIFx1MDAyNiAoR01BQzBfUlhfT1ZFUlJVTl9JTlRfQklUIFx1MDAzY1x1MDAzYyAobmV0ZGV2LVx1MDAzZWRldl9pZCAqIDgpKSkge1xuIFx0XHRzcGluX2xvY2soXHUwMDI2Z2V0aC1cdTAwM2VpcnFfbG9jayk7XG4tXHRcdHdyaXRlbChHTUFDMF9SWERFUlJfSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbitcdFx0d3JpdGVsKEdNQUMwX1JYX09WRVJSVU5fSU5UX0JJVCBcdTAwM2NcdTAwM2MgKG5ldGRldi1cdTAwM2VkZXZfaWQgKiA4KSxcbiBcdFx0ICAgICAgIGdldGgtXHUwMDNlYmFzZSArIEdMT0JBTF9JTlRFUlJVUFRfU1RBVFVTXzRfUkVHKTtcbiBcdFx0dTY0X3N0YXRzX3VwZGF0ZV9iZWdpbihcdTAwMjZwb3J0LVx1MDAzZWlyX3N0YXRzX3N5bmNwKTtcbiBcdFx0Kytwb3J0LVx1MDAzZXN0YXRzLnJ4X2ZpZm9fZXJyb3JzO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MDYuNDk1OTEwNzAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTExMDk3NTgzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JrIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCdzIGdvb2QgaW5mb3JtYXRpb24gdG8ga25vdy4gVGhlIHBhdGNoIHNwZWNpZmljYWxseSBtb2RpZmllcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AuIE5vdywgdGhhdCdzIHRoZSBrZXkuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIFwiZ2VtaW5pXCIgZHJpdmVyIGlzLiBXaGF0IGhhcmR3YXJlIGRvZXMgaXQgc3VwcG9ydD8gSG93IGlzIGl0IGNvbmZpZ3VyZWQ/IElzIGl0IGEgcGxhdGZvcm0gZGV2aWNlLCBhIFBDSSBkZXZpY2UsIG9yIHNvbWV0aGluZyBlbHNlIGxpa2UgdmlydGlvPyBLbm93aW5nIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIGFuZCB0aGUgZGV2aWNlJ3MgY29uZmlndXJhdGlvbiBpcyBjcml0aWNhbCB0byB1bmRlcnN0YW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9mIHRoZSBjaGFuZ2VzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gVGltZSB0byBwdWxsIHVwIGBncmVwcGVyYCBvciBwZXJoYXBzIGp1c3QgdXNlIGByZWFkLWZpbGVgIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2AuIFRoYXQnbGwgZ2l2ZSBtZSB0aGUgZXNzZW50aWFsIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMuIFdpdGggdGhlIEtjb25maWcsIEkgY2FuIGRldGVybWluZSB0aGUgcHJlcmVxdWlzaXRlcyBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBoYXJkd2FyZSByZXF1aXJlbWVudHMgdGhhdCBhcmUgcGVydGluZW50IHRvIHRoaXMgY2hhbmdlLiBPbmNlIEkgaGF2ZSB0aGUgS2NvbmZpZyBkZXRhaWxzLCBJIGNhbiBwcm9jZWVkIHdpdGggYSBtdWNoIGNsZWFyZXIgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDU0MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjE1LjYwNjg5MjY0OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg3MTg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJHRU1JTkl8Z2VtaW5pXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9LY29uZmlnPTEyPWlmIE5FVF9WRU5ET1JfQ09SVElOQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL0tjb25maWc6MTQ6Y29uZmlnIEdFTUlOSV9FVEhFUk5FVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiR2VtaW5pIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX0dFTUlOSV9FVEhFUk5FVCkgKz0gZ2VtaW5pLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo0NjojaW5jbHVkZSBcXFwiZ2VtaW5pLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjQ4OiNkZWZpbmUgRFJWX05BTUVcXHRcXHRcXFwiZ21hYy1nZW1pbmlcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9OTc9c3RydWN0IGdtYWNfdHhxIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0OnN0cnVjdCBnZW1pbmlfZXRoZXJuZXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDY6c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwNy1cXHR1OCBpZDsgLyogMCBvciAxICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDk6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTU6c3RydWN0IGdlbWluaV9ldGhlcm5ldCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNTYtXFx0c3RydWN0IGRldmljZSAqZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU3LVxcdHZvaWQgX19pb21lbSAqYmFzZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE1ODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTU5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjAtXFx0Ym9vbCBpbml0aWFsaXplZDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMwPXN0YXRpYyB2b2lkIGdtYWNfdXBkYXRlX2NvbmZpZzBfcmVnKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNDY9c3RhdGljIHZvaWQgZ21hY19lbmFibGVfdHhfcngoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0OS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNjE9c3RhdGljIHZvaWQgZ21hY19kaXNhYmxlX3R4X3J4KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjQtXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9Mjc4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X2Zsb3dfY29udHJvbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBib29sIHR4LCBib29sIHJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI4MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjgxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTI5Nz1zdGF0aWMgdm9pZCBnbWFjX2FkanVzdF9saW5rKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yOTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Mjk5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zMDAtXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IG5ldGRldi1cXHUwMDNlcGh5ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0zNjI9c3RhdGljIGludCBnbWFjX3NldHVwX3BoeShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzYzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMzY1LVxcdHVuaW9uIGdtYWNfc3RhdHVzIHN0YXR1cyA9IHsgLmJpdHMzMiA9IDAgfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NDY2PXN0YXRpYyBpbnQgZ21hY19pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00Njcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NDY4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy00NjktXFx0dW5pb24gZ21hY19jb25maWcwIGNvbmZpZzAgPSB7IC5iaXRzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz01NDY9c3RhdGljIGludCBnbWFjX3NldHVwX3R4cXMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTU0Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTU0OS1cXHR1bnNpZ25lZCBpbnQgbl90eHEgPSBuZXRkZXYtXFx1MDAzZW51bV90eF9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo1NTA6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXFx1MDAzZWdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy01NTEtXFx0c2l6ZV90IGVudHJpZXMgPSAxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXR4cV9vcmRlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9NjA0PXN0YXRpYyB2b2lkIGdtYWNfY2xlYW5fdHhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBnbWFjX3R4cSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02MDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NjA3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02MDgtXFx0dW5zaWduZWQgaW50IG0gPSAoMSBcXHUwMDNjXFx1MDAzYyBwb3J0LVxcdTAwM2V0eHFfb3JkZXIpIC0gMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjYwOTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTYxMC1cXHR1bnNpZ25lZCBpbnQgYyA9IHR4cS1cXHUwMDNlY3B0cjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9Njc2PXN0YXRpYyB2b2lkIGdtYWNfY2xlYW51cF90eHFzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02Nzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6Njc4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy02NzktXFx0dW5zaWduZWQgaW50IG5fdHhxID0gbmV0ZGV2LVxcdTAwM2VudW1fdHhfcXVldWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NjgwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNjgxLVxcdHZvaWQgX19pb21lbSAqcndwdHJfcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03MDI9c3RhdGljIGludCBnbWFjX3NldHVwX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzAzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjcwNDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzA1OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzA2LVxcdHN0cnVjdCBub250b2VfcWhkciBfX2lvbWVtICpxaGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz03Mjc9c3RhdGljIHN0cnVjdCBnbWFjX3F1ZXVlX3BhZ2UgKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzI4OmdtYWNfZ2V0X3F1ZXVlX3BhZ2Uoc3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjcyOTpcXHRcXHQgICAgc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtNzMwLVxcdFxcdCAgICBkbWFfYWRkcl90IGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTc1NT1zdGF0aWMgdm9pZCBnbWFjX2NsZWFudXBfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy03NTYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6NzU3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzo3NTg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBvcnQtXFx1MDAzZWdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy03NTktXFx0c3RydWN0IGdtYWNfcnhkZXNjICpyeGQgPSBwb3J0LVxcdTAwM2VyeHFfcmluZztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODA1OnN0YXRpYyBzdHJ1Y3QgcGFnZSAqZ2V0aF9mcmVlcV9hbGxvY19tYXBfcGFnZShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODA2LVxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODcxLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6ODcyOnN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0aF9maWxsX2ZyZWVxKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGgsIGJvb2wgcmVmaWxsKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtODczLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6OTI3OnN0YXRpYyBpbnQgZ2V0aF9zZXR1cF9mcmVlcShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtOTk4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6OTk5OnN0YXRpYyB2b2lkIGdldGhfY2xlYW51cF9mcmVlcShzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTAwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEwMzgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDM5OnN0YXRpYyBpbnQgZ2V0aF9yZXNpemVfZnJlZXEoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA0MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMDQxOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTA0Mi1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gcG9ydC1cXHUwMDNlbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTA0MzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKm90aGVyX3BvcnQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMDQ0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpvdGhlcl9uZXRkZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTExMDc9c3RhdGljIHZvaWQgZ21hY190eF9pcnFfZW5hYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTExMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExMTItXFx0dW5zaWduZWQgbG9uZyBmbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTEzOT1zdGF0aWMgaW50IGdtYWNfbWFwX3R4X2J1ZnMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQyOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMTQzLVxcdHN0cnVjdCBza2Jfc2hhcmVkX2luZm8gKnNrYl9zaSA9ICBza2Jfc2hpbmZvKHNrYik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTExNDUtXFx0c2hvcnQgZnJhZywgbGFzdF9mcmFnID0gc2tiX3NpLVxcdTAwM2Vucl9mcmFncyAtIDE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMTQ2OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTE0Ny1cXHR1bnNpZ25lZCBpbnQgd29yZDEsIHdvcmQzLCBidWZsZW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTEyNzc9c3RhdGljIG5ldGRldl90eF90IGdtYWNfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xMjc5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjEyODA6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTEyODEtXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXR4cV9vcmRlcikgLSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMzU3PXN0YXRpYyB2b2lkIGdtYWNfZW5hYmxlX2lycShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzU5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzYwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM2MS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xMzg2PXN0YXRpYyB2b2lkIGdtYWNfZW5hYmxlX3J4X2lycShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM4Ny17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxMzg5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTM5MC1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTQwNTpzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmdtYWNfc2tiX2lmX2dvb2RfZnJhbWUoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTQwNi1cXHRcXHRcXHRcXHRcXHQgICAgICB1bmlvbiBnbWFjX3J4ZGVzY18wIHdvcmQwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNDQ1PXN0YXRpYyB1bnNpZ25lZCBpbnQgZ21hY19yeChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgYnVkZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNDQ3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE0NDg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0NDktXFx0dW5zaWduZWQgc2hvcnQgbSA9ICgxIFxcdTAwM2NcXHUwMDNjIHBvcnQtXFx1MDAzZXJ4cV9vcmRlcikgLSAxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTQ1MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE0NTEtXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnID0gcG9ydC1cXHUwMDNlcnhxX3J3cHRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNTk0PXN0YXRpYyBpbnQgZ21hY19uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTk2OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5hcGktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNTk3OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTU5OC1cXHR1bnNpZ25lZCBpbnQgZnJlZXFfdGhyZXNob2xkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNjI1PXN0YXRpYyB2b2lkIGdtYWNfZHVtcF9kbWFfc3RhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyNzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTYyODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2MjktXFx0dm9pZCBfX2lvbWVtICpwdHJfcmVnO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNjk2PXN0YXRpYyB2b2lkIGdtYWNfdXBkYXRlX2h3X3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNjk3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE2OTg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE2OTktXFx0dW5zaWduZWQgaW50IHJ4X2Rpc2NhcmRzLCByeF9tY2FzdCwgcnhfYmNhc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzAwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwb3J0LVxcdTAwM2VnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTcwMS1cXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzMyPXN0YXRpYyB1MzIgZ21hY19nZXRfaW50cl9mbGFncyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgaSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTczNTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoID0gcG9ydC1cXHUwMDNlZ2V0aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3MzYtXFx0dm9pZCBfX2lvbWVtICppcnFpZl9yZWcsICppcnFlbl9yZWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE3NTA9c3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGdtYWNfY29hbGVzY2VfZGVsYXlfZXhwaXJlZChzdHJ1Y3QgaHJ0aW1lciAqdGltZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzUxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE3NTI6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE3NTM6XFx0XFx0Y29udGFpbmVyX29mKHRpbWVyLCBzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzU0LVxcdFxcdFxcdCAgICAgcnhfY29hbGVzY2VfdGltZXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xNzYwPXN0YXRpYyBpcnFyZXR1cm5fdCBnbWFjX2lycShpbnQgaXJxLCB2b2lkICpkYXRhKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTc2MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzYyOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE3NjMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxNzY0OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xNzY1LVxcdHUzMiB2YWwsIG9yciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4MjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxODIyOnN0YXRpYyB2b2lkIGdtYWNfc3RhcnRfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4MjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTg0MzpzdGF0aWMgdm9pZCBnbWFjX3N0b3BfZG1hKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4NDQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xODU0PXN0YXRpYyBpbnQgZ21hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xODU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE4NTY6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE4NTctXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTkxMT1zdGF0aWMgaW50IGdtYWNfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkxMi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTEzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0xOTM1PXN0YXRpYyB2b2lkIGdtYWNfc2V0X3J4X21vZGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5MzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MTkzNzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTkzOC1cXHR1bmlvbiBnbWFjX3J4X2ZsdHIgZmlsdGVyID0geyAuYml0cyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MTk3MD1zdGF0aWMgdm9pZCBnbWFjX3dyaXRlX21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjE5NzI6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTE5NzMtXFx0X19sZTMyIGFkZHJbM107XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTE5OTM9c3RhdGljIHZvaWQgZ21hY19jbGVhcl9od19zdGF0cyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMTk5NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoxOTk1OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0xOTk2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMDA1PXN0YXRpYyB2b2lkIGdtYWNfZ2V0X3N0YXRzNjQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjAwNy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMDA4OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMDA5LVxcdHVuc2lnbmVkIGludCBzdGFydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjA3ND1zdGF0aWMgaW50IGdtYWNfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIwNzYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjA3NzpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjA3OC1cXHRpbnQgZW5hYmxlID0gZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYQ1NVTTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjEwNT1zdGF0aWMgdm9pZCBnbWFjX2dldF9ldGh0b29sX3N0YXRzKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxMDcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjEwODpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjEwOS1cXHR1bnNpZ25lZCBpbnQgc3RhcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIxODA9c3RhdGljIHZvaWQgZ21hY19nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMTgyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIxODM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIxODQtXFx0dW5pb24gZ21hY19jb25maWcwIGNvbmZpZzA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyMDY9c3RhdGljIHZvaWQgZ21hY19nZXRfcmluZ3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjIxMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjIxMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjIyNj1zdGF0aWMgaW50IGdtYWNfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjMwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyMzE6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyMzItXFx0aW50IGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyNDk9c3RhdGljIGludCBnbWFjX2dldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjUzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyNTQ6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyNjM9c3RhdGljIGludCBnbWFjX3NldF9jb2FsZXNjZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjY3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIyNjg6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyNjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTIyODE9c3RhdGljIHUzMiBnbWFjX2dldF9tc2dsZXZlbChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI4Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMjgzOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMjg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yMjg4PXN0YXRpYyB2b2lkIGdtYWNfc2V0X21zZ2xldmVsKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHUzMiBsZXZlbClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIyODkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjI5MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjI5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjMxNT1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGdtYWNfMzUxeF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzMzY6c3RhdGljIGlycXJldHVybl90IGdlbWluaV9wb3J0X2lycV90aHJlYWQoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzMzcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjMzOC1cXHR1bnNpZ25lZCBsb25nIGlycW1hc2sgPSBTV0ZRX0VNUFRZX0lOVF9CSVQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzM5OlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydCA9IGRhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzQwOlxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzQxLVxcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyMzU4OnN0YXRpYyBpcnFyZXR1cm5fdCBnZW1pbmlfcG9ydF9pcnEoaW50IGlycSwgdm9pZCAqZGF0YSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzNTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MDpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBkYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM2MTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM2Mi1cXHRpcnFyZXR1cm5fdCByZXQgPSBJUlFfTk9ORTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjIzODc6c3RhdGljIHZvaWQgZ2VtaW5pX3BvcnRfcmVtb3ZlKHN0cnVjdCBnZW1pbmlfZXRoZXJuZXRfcG9ydCAqcG9ydClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTIzODgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yMzk2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjM5NzpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfaW5pdChzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjM5OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDQ5OnN0YXRpYyB2b2lkIGdlbWluaV9wb3J0X3NhdmVfbWFjX2FkZHIoc3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNDU5OnN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI0NjAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNDYyLVxcdHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI0NjM6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldF9wb3J0ICpwb3J0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2NC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjQ2NTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjQ2Ni1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTI5LVxcdC8qIE1heWJlIHRoZXJlIGlzIGEgbmljZSBldGhlcm5ldCBhZGRyZXNzIHdlIHNob3VsZCB1c2UgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI1MzA6XFx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NDgtXFx0LyogVGhpcyB3aWxsIGp1c3QgYmUgZG9uZSBvbmNlIGJvdGggcG9ydHMgYXJlIHVwIGFuZCByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjU0OTpcXHRnZW1pbmlfZXRoZXJuZXRfaW5pdChnZXRoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1NTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI1OTItXFx0XFx0XFx0XFx0XFx0cG9ydC1cXHUwMDNlaXJxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjU5MzpcXHRcXHRcXHRcXHRcXHRnZW1pbmlfcG9ydF9pcnEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNTk0OlxcdFxcdFxcdFxcdFxcdGdlbWluaV9wb3J0X2lycV90aHJlYWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNTk1LVxcdFxcdFxcdFxcdFxcdElSUUZfU0hBUkVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYxOTpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyMTpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjIzOlxcdGdlbWluaV9wb3J0X3JlbW92ZShwb3J0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjQtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjctXFx0e1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYyODpcXHRcXHQuY29tcGF0aWJsZSA9IFxcXCJjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2MjktXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYzMS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjYzNDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfcG9ydF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM1LVxcdC5kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM2OlxcdFxcdC5uYW1lID0gXFxcImdlbWluaS1ldGhlcm5ldC1wb3J0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2Mzc6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjM4LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjM5OlxcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0MDpcXHQucmVtb3ZlID0gZ2VtaW5pX2V0aGVybmV0X3BvcnRfcmVtb3ZlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0MS19O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2NDM6c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2NDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0NS1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY0NjpcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0ICpnZXRoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY0Ny1cXHR1bnNpZ25lZCBpbnQgcmV0cnkgPSA1O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY4MjpzdGF0aWMgdm9pZCBnZW1pbmlfZXRoZXJuZXRfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2ODQ6XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aCA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZ2VtaW5pX2V0aGVybmV0X29mX21hdGNoW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjkxLVxcdHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI2OTI6XFx0XFx0LmNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5My1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjk2Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGdlbWluaV9ldGhlcm5ldF9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNjk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjY5ODpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBnZW1pbmlfZXRoZXJuZXRfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5OS1cXHQuZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcwMC1cXHRcXHQubmFtZSA9IERSVl9OQU1FLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwMTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBnZW1pbmlfZXRoZXJuZXRfb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzAyLVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzAzOlxcdC5wcm9iZSA9IGdlbWluaV9ldGhlcm5ldF9wcm9iZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MDQ6XFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA1LX07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcwNzpzdGF0aWMgaW50IF9faW5pdCBnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MDgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcxMTpcXHRyZXQgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzEyLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzE1OlxcdHJldCA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2Z2VtaW5pX2V0aGVybmV0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzE2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MTc6XFx0XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzE4LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MjItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM6MjcyMzptb2R1bGVfaW5pdChnZW1pbmlfZXRoZXJuZXRfbW9kdWxlX2luaXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MjU6c3RhdGljIHZvaWQgX19leGl0IGdlbWluaV9ldGhlcm5ldF9tb2R1bGVfZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjcyNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNzI3OlxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZnZW1pbmlfZXRoZXJuZXRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3Mjg6XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmdlbWluaV9ldGhlcm5ldF9wb3J0X2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0yNzI5LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjI3MzA6bW9kdWxlX2V4aXQoZ2VtaW5pX2V0aGVybmV0X21vZHVsZV9leGl0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI3MzEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oLTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5OiNpZm5kZWYgX0dFTUlOSV9FVEhFUk5FVF9IXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDoxMDojZGVmaW5lIF9HRU1JTklfRVRIRVJORVRfSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5oPTk1Mz1zdHJ1Y3Qgbm9udG9lX3FoZHIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaC05NTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuaDo5NTg6I2VuZGlmIC8qIF9HRU1JTklfRVRIRVJORVRfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjozMjoxNS42NTI3NjkxNzhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMjA3NzUwNjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIENvcnRpbmEgR0VNSU5JIEV0aGVybmV0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBHRU1JTkkgRXRoZXJuZXQgaW1wbGVtZW50YXRpb24sIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIEJlc3QgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgc28gbGV0J3MgY2hlY2sgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvS2NvbmZpZ2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgb3RoZXIgY29tcG9uZW50cyBvciBzZXR0aW5ncyB0aGlzIGBHRU1JTklfRVRIRVJORVRgIG9wdGlvbiByZWxpZXMgb24uIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsIGZvciBhbnkgcHJvcGVyIHVuZGVyc3RhbmRpbmcuIFRoaXMgd2lsbCBoZWxwIG1lIGRlYnVnIGFueSBidWlsZCBmYWlsdXJlcyBvciB1bmRlcnN0YW5kIHdoZXJlIHRoZSBob29rcyBhcmUuIE9uY2UgSSB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMsIEkgY2FuIGNoZWNrIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYyNDQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOVQxMjozMjoxNy44NjA1MjIzMjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzYwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjIENvcnRpbmEgZXRoZXJuZXQgZGV2aWNlc1xcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgTkVUX1ZFTkRPUl9DT1JUSU5BXFxuICAgNTpcXHRcXHRib29sIFxcXCJDb3J0aW5hIEdlbWluaSBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0ZGVmYXVsdCB5XFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIElmIHlvdSBoYXZlIGEgbmV0d29yayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMgY2xhc3MsIHNheSBZXFxuICAgOTpcXHRcXHQgIGFuZCByZWFkIHRoZSBFdGhlcm5ldC1IT1dUTywgYXZhaWxhYmxlIGZyb21cXG4gIDEwOlxcdFxcdCAgXFx1MDAzY2h0dHBzOi8vd3d3LnRsZHAub3JnL2RvY3MuaHRtbCNob3d0b1xcdTAwM2UuXFxuICAxMTpcXHRcXG4gIDEyOlxcdGlmIE5FVF9WRU5ET1JfQ09SVElOQVxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgR0VNSU5JX0VUSEVSTkVUXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VtaW5pIEdpZ2FiaXQgRXRoZXJuZXQgc3VwcG9ydFxcXCJcXG4gIDE2OlxcdFxcdGRlcGVuZHMgb24gT0ZcXG4gIDE3OlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPTUVNXFxuICAxODpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIwOlxcdFxcdGhlbHBcXG4gIDIxOlxcdFxcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldC5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0ZW5kaWYgIyBORVRfVkVORE9SX0NPUlRJTkFcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MTcuODYwNTgyMTc0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzI0ODI4MDEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIEdlbWluaSBFdGhlcm5ldCdzIFBsYXRmb3JtIERlcGVuZGVuY3kqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgZ2VtaW5pLmNgLCB3aGljaCBpcyB0aGUgcGxhdGZvcm0gZHJpdmVyIGZvciB0aGUgU3RvckxpbmsgU0wzNTF4IChHZW1pbmkpIGR1YWwgR2lnYWJpdCBFdGhlcm5ldCBTb0MgaGFyZHdhcmUuIEl0J3MgZ290IHRob3NlIGRldmljZSB0cmVlIHN0cmluZ3MsIGBcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XCJgIGFuZCBgXCJjb3J0aW5hLGdlbWluaS1ldGhlcm5ldC1wb3J0XCJgLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzLCBpcyB0aGlzIGRyaXZlciB0aWdodGx5IGNvdXBsZWQgdG8gc3BlY2lmaWMgR2VtaW5pIGhhcmR3YXJlLCBvciBpcyB0aGVyZSBhIGNoYW5jZSBpdCBjb3VsZCBiZSBlbXVsYXRlZCBvciBhdCBsZWFzdCBwcm9iZWQgaW4gYSBtb3JlIHN0YW5kYXJkIGVudmlyb25tZW50IGxpa2UgYSBRRU1VIGFtZDY0IHNldHVwPyBUbyBmaW5kIG91dCwgSSBuZWVkIHRvIGRvIGEgdGhvcm91Z2ggY2hlY2suIEknbSBnb2luZyB0byBydW4gYSBxdWljayBgZ3JlcGAgZm9yIGBcImNvcnRpbmEsZ2VtaW5pXCJgIGFjcm9zcyB0aGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGRpcmVjdG9yaWVzLCBkZXZpY2UgdHJlZSBzb3VyY2UgZmlsZXMsIGFuZCBhbnkgb3RoZXIgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaXRzIHNjb3BlIGFuZCBwb3J0YWJpbGl0eS4gSSdtIGhvcGluZyB0byBxdWlja2x5IGRldGVybWluZSBob3cgZmFyIEkgaGF2ZSB0byBnbyB0byBhc3Nlc3MgaXQncyBmdWxsIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjc2MSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjIxLjEwODg2NTQyOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzQ5Mzg0MDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0zLS0tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDo0OiRpZDogaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTUtJHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9MTc9cHJvcGVydGllczpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTgtICBjb21wYXRpYmxlOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxOTogICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTIwLVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sPTM3PXBhdHRlcm5Qcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTQ1LSAgICAgIGNvbXBhdGlibGU6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjQ2OiAgICAgICAgY29uc3Q6IGNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtNDctXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw9ODU9ZXhhbXBsZXM6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWwtMTAzLSAgICBldGhlcm5ldEA2MDAwMDAwMCB7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sOjEwNDogICAgICAgIGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMDUtICAgICAgICByZWcgPSBcXHUwMDNjMHg2MDAwMDAwMCAweDQwMDBcXHUwMDNlLCAvKiBHbG9iYWwgcmVnaXN0ZXJzLCBxdWV1ZSAqL1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTExMi0gICAgICAgIGdtYWMwOiBldGhlcm5ldC1wb3J0QDAge1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbDoxMTM6ICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXQtcG9ydFxcXCI7XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWluaS1ldGhlcm5ldC55YW1sLTExNC0gICAgICAgICAgICAgICAgcmVnID0gXFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjUtICAgICAgICBnbWFjMTogZXRoZXJuZXQtcG9ydEAxIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWw6MTI2OiAgICAgICAgICAgICAgICBjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY29ydGluYSxnZW1pbmktZXRoZXJuZXQueWFtbC0xMjctICAgICAgICAgICAgICAgIHJlZyA9IFxcdTAwM2MweDYwMDBjMDAwIDB4MjAwMFxcdTAwM2UsIC8qIFBvcnQgMSBETUEvVE9FICovXFxuLS1cXG5NQUlOVEFJTkVSUz0yODgyPUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nZW1pbmkueWFtbFxcbk1BSU5UQUlORVJTOjI4ODM6RjpcXHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2NvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LnlhbWxcXG5NQUlOVEFJTkVSUy0yODg0LUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvY29ydGluYSxnZW1pbmktcGluY3RybC50eHRcXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNTk9XFx0XFx0ZXRoZXJuZXQ6IGV0aGVybmV0QDYwMDAwMDAwIHtcXG5hcmNoL2FybS9ib290L2R0cy9nZW1pbmkvZ2VtaW5pLmR0c2k6MzYwOlxcdFxcdFxcdGNvbXBhdGlibGUgPSBcXFwiY29ydGluYSxnZW1pbmktZXRoZXJuZXRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNjEtXFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMDAwMDAgMHg0MDAwXFx1MDAzZSwgLyogR2xvYmFsIHJlZ2lzdGVycywgcXVldWUgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zNzE9XFx0XFx0XFx0Z21hYzA6IGV0aGVybmV0LXBvcnRAMCB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM3MjpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zNzMtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMDgwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAwIERNQS9UT0UgKi9cXG4tLVxcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaT0zODI9XFx0XFx0XFx0Z21hYzE6IGV0aGVybmV0LXBvcnRAMSB7XFxuYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpOjM4MzpcXHRcXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiO1xcbmFyY2gvYXJtL2Jvb3QvZHRzL2dlbWluaS9nZW1pbmkuZHRzaS0zODQtXFx0XFx0XFx0XFx0cmVnID0gXFx1MDAzYzB4NjAwMGMwMDAgMHgyMDAwXFx1MDAzZSwgLyogUG9ydCAxIERNQS9UT0UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmM9MjYyNj1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyNy1cXHR7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjI4OlxcdFxcdC5jb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0LXBvcnRcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjYyOS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYz0yNjkwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGdlbWluaV9ldGhlcm5ldF9vZl9tYXRjaFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmMtMjY5MS1cXHR7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYzoyNjkyOlxcdFxcdC5jb21wYXRpYmxlID0gXFxcImNvcnRpbmEsZ2VtaW5pLWV0aGVybmV0XFxcIixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTI2OTMtXFx0fSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjIuODU4MjU0NzY0WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzQxMzU5OTMwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIEdlbWluaSBEVFMqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSB0cmVlIGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSwgc3BlY2lmaWNhbGx5IHRoZSBTdG9yTGluayBTTDM1MTYgQVJNIFNvQyDigJMgdGhhdCBtZWFucyBgYXJjaC9hcm0vYm9vdC9kdHMvZ2VtaW5pL2dlbWluaS5kdHNpYCBpcyB0aGUgcGxhY2UgdG8gc3RhcnQuIEkndmUgZ290IHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgdGhpbmcgaXMgc3RydWN0dXJlZC4gTXkgaW1tZWRpYXRlIGZvY3VzIGlzIHRoZSBwcm9iZSBmdW5jdGlvbjsgSSBuZWVkIHRvIGRyaWxsIGludG8gd2hhdCByZXNvdXJjZXMgaXQgYWN0dWFsbHkgcmVxdWVzdHMgYW5kIHJlbGllcyBvbi4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODY4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjI2LjI3MTg1NzAyNVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDU1LFxuICBcIkxpbmVDb3VudFwiOiA4MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDU1OlxcdFxcdHBvcnQtXFx1MDAzZW1hY19hZGRyWzJdID1cXG4yNDU2OlxcdFxcdFxcdGNwdV90b19sZTMyKHJlYWRsKHBvcnQtXFx1MDAzZWdtYWNfYmFzZSArIEdNQUNfU1RBX0FERDIpKTtcXG4yNDU3OlxcdH1cXG4yNDU4OlxcdFxcbjI0NTk6XFx0c3RhdGljIGludCBnZW1pbmlfZXRoZXJuZXRfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjI0NjA6XFx0e1xcbjI0NjE6XFx0XFx0Y2hhciAqcG9ydF9uYW1lc1syXSA9IHsgXFxcImV0aGVybmV0MFxcXCIsIFxcXCJldGhlcm5ldDFcXFwiIH07XFxuMjQ2MjpcXHRcXHRzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi1cXHUwMDNlZGV2Lm9mX25vZGU7XFxuMjQ2MzpcXHRcXHRzdHJ1Y3QgZ2VtaW5pX2V0aGVybmV0X3BvcnQgKnBvcnQ7XFxuMjQ2NDpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI0NjU6XFx0XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG4yNDY2OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XFxuMjQ2NzpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpwYXJlbnQ7XFxuMjQ2ODpcXHRcXHR1OCBtYWNbRVRIX0FMRU5dO1xcbjI0Njk6XFx0XFx0dW5zaWduZWQgaW50IGlkO1xcbjI0NzA6XFx0XFx0aW50IGlycTtcXG4yNDcxOlxcdFxcdGludCByZXQ7XFxuMjQ3MjpcXHRcXG4yNDczOlxcdFxcdHBhcmVudCA9IGRldi1cXHUwMDNlcGFyZW50O1xcbjI0NzQ6XFx0XFx0Z2V0aCA9IGRldl9nZXRfZHJ2ZGF0YShwYXJlbnQpO1xcbjI0NzU6XFx0XFxuMjQ3NjpcXHRcXHRpZiAoIXN0cmNtcChkZXZfbmFtZShkZXYpLCBcXFwiNjAwMDgwMDAuZXRoZXJuZXQtcG9ydFxcXCIpKVxcbjI0Nzc6XFx0XFx0XFx0aWQgPSAwO1xcbjI0Nzg6XFx0XFx0ZWxzZSBpZiAoIXN0cmNtcChkZXZfbmFtZShkZXYpLCBcXFwiNjAwMGMwMDAuZXRoZXJuZXQtcG9ydFxcXCIpKVxcbjI0Nzk6XFx0XFx0XFx0aWQgPSAxO1xcbjI0ODA6XFx0XFx0ZWxzZVxcbjI0ODE6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuMjQ4MjpcXHRcXG4yNDgzOlxcdFxcdGRldl9pbmZvKGRldiwgXFxcInByb2JlICVzIElEICVkXFxcXG5cXFwiLCBkZXZfbmFtZShkZXYpLCBpZCk7XFxuMjQ4NDpcXHRcXG4yNDg1OlxcdFxcdG5ldGRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXZfbXFzKGRldiwgc2l6ZW9mKCpwb3J0KSwgVFhfUVVFVUVfTlVNLCBUWF9RVUVVRV9OVU0pO1xcbjI0ODY6XFx0XFx0aWYgKCFuZXRkZXYpIHtcXG4yNDg3OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiQ2FuJ3QgYWxsb2NhdGUgZXRoZXJuZXQgZGV2aWNlICMlZFxcXFxuXFxcIiwgaWQpO1xcbjI0ODg6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMjQ4OTpcXHRcXHR9XFxuMjQ5MDpcXHRcXG4yNDkxOlxcdFxcdHBvcnQgPSBuZXRkZXZfcHJpdihuZXRkZXYpO1xcbjI0OTI6XFx0XFx0U0VUX05FVERFVl9ERVYobmV0ZGV2LCBkZXYpO1xcbjI0OTM6XFx0XFx0cG9ydC1cXHUwMDNlbmV0ZGV2ID0gbmV0ZGV2O1xcbjI0OTQ6XFx0XFx0cG9ydC1cXHUwMDNlaWQgPSBpZDtcXG4yNDk1OlxcdFxcdHBvcnQtXFx1MDAzZWdldGggPSBnZXRoO1xcbjI0OTY6XFx0XFx0cG9ydC1cXHUwMDNlZGV2ID0gZGV2O1xcbjI0OTc6XFx0XFx0cG9ydC1cXHUwMDNlbXNnX2VuYWJsZSA9IG5ldGlmX21zZ19pbml0KGRlYnVnLCBERUZBVUxUX01TR19FTkFCTEUpO1xcbjI0OTg6XFx0XFxuMjQ5OTpcXHRcXHQvKiBETUEgbWVtb3J5ICovXFxuMjUwMDpcXHRcXHRwb3J0LVxcdTAwM2VkbWFfYmFzZSA9IGRldm1fcGxhdGZvcm1fZ2V0X2FuZF9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDAsIE5VTEwpO1xcbjI1MDE6XFx0XFx0aWYgKElTX0VSUihwb3J0LVxcdTAwM2VkbWFfYmFzZSkpIHtcXG4yNTAyOlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiZ2V0IERNQSBhZGRyZXNzIGZhaWxlZFxcXFxuXFxcIik7XFxuMjUwMzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwb3J0LVxcdTAwM2VkbWFfYmFzZSk7XFxuMjUwNDpcXHRcXHR9XFxuMjUwNTpcXHRcXG4yNTA2OlxcdFxcdC8qIEdNQUMgY29uZmlnIG1lbW9yeSAqL1xcbjI1MDc6XFx0XFx0cG9ydC1cXHUwMDNlZ21hY19iYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRldiwgMSwgTlVMTCk7XFxuMjUwODpcXHRcXHRpZiAoSVNfRVJSKHBvcnQtXFx1MDAzZWdtYWNfYmFzZSkpIHtcXG4yNTA5OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiZ2V0IEdNQUMgYWRkcmVzcyBmYWlsZWRcXFxcblxcXCIpO1xcbjI1MTA6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocG9ydC1cXHUwMDNlZ21hY19iYXNlKTtcXG4yNTExOlxcdFxcdH1cXG4yNTEyOlxcdFxcbjI1MTM6XFx0XFx0LyogSW50ZXJydXB0ICovXFxuMjUxNDpcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxKHBkZXYsIDApO1xcbjI1MTU6XFx0XFx0aWYgKGlycSBcXHUwMDNjIDApXFxuMjUxNjpcXHRcXHRcXHRyZXR1cm4gaXJxO1xcbjI1MTc6XFx0XFx0cG9ydC1cXHUwMDNlaXJxID0gaXJxO1xcbjI1MTg6XFx0XFxuMjUxOTpcXHRcXHQvKiBDbG9jayB0aGUgcG9ydCAqL1xcbjI1MjA6XFx0XFx0cG9ydC1cXHUwMDNlcGNsayA9IGRldm1fY2xrX2dldChkZXYsIFxcXCJQQ0xLXFxcIik7XFxuMjUyMTpcXHRcXHRpZiAoSVNfRVJSKHBvcnQtXFx1MDAzZXBjbGspKSB7XFxuMjUyMjpcXHRcXHRcXHRkZXZfZXJyKGRldiwgXFxcIm5vIFBDTEtcXFxcblxcXCIpO1xcbjI1MjM6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIocG9ydC1cXHUwMDNlcGNsayk7XFxuMjUyNDpcXHRcXHR9XFxuMjUyNTpcXHRcXHRyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUocG9ydC1cXHUwMDNlcGNsayk7XFxuMjUyNjpcXHRcXHRpZiAocmV0KVxcbjI1Mjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yNTI4OlxcdFxcbjI1Mjk6XFx0XFx0LyogTWF5YmUgdGhlcmUgaXMgYSBuaWNlIGV0aGVybmV0IGFkZHJlc3Mgd2Ugc2hvdWxkIHVzZSAqL1xcbjI1MzA6XFx0XFx0Z2VtaW5pX3BvcnRfc2F2ZV9tYWNfYWRkcihwb3J0KTtcXG4yNTMxOlxcdFxcbjI1MzI6XFx0XFx0LyogUmVzZXQgdGhlIHBvcnQgKi9cXG4yNTMzOlxcdFxcdHBvcnQtXFx1MDAzZXJlc2V0ID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9leGNsdXNpdmUoZGV2LCBOVUxMKTtcXG4yNTM0OlxcdFxcdGlmIChJU19FUlIocG9ydC1cXHUwMDNlcmVzZXQpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjI2LjI3MTk5NjAzNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzMxMzI5NTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBEZXZpY2UgSWRlbnRpZmljYXRpb24gTG9naWMgaW4gRXRoZXJuZXQgRHJpdmVyKipcblxuT2theSwgbGV0J3MgZGlzc2VjdCB0aGlzLiBMaW5lIDI0NzYsIHJpZ2h0LiBJJ20gbG9va2luZyBhdCBob3cgdGhpcyBgZ2VtaW5pX2V0aGVybmV0X3Byb2JlYCBmdW5jdGlvbiBoYW5kbGVzIGRldmljZSBpZGVudGlmaWNhdGlvbi4gSXQgYXBwZWFycyB0byBiZSBhIGNydWNpYWwgc3RlcCBpbiBicmluZ2luZyB1cCB0aGVzZSBFdGhlcm5ldCBpbnRlcmZhY2VzLiBUaGUgY29kZSB1c2VzIGBzdHJjbXBgIHRvIGNvbXBhcmUgdGhlIGRldmljZSBuYW1lIG9idGFpbmVkIGJ5IGBkZXZfbmFtZShkZXYpYCBhZ2FpbnN0IGhhcmRjb2RlZCBzdHJpbmdzLiBJIGltbWVkaWF0ZWx5IHNwb3QgdGhlIHBvdGVudGlhbCBmb3IgZnJhZ2lsaXR5IGhlcmUuIFRoaXMgYXBwcm9hY2ggdGllcyB0aGUgZHJpdmVyIHZlcnkgdGlnaHRseSB0byBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlIG5hbWVzLlxuXG5JZiB0aGUgbmFtZSBpcyBcIjYwMDA4MDAwLmV0aGVybmV0LXBvcnRcIiwgdGhlIGBpZGAgaXMgc2V0IHRvIDAuIElmIGl0J3MgXCI2MDAwYzAwMC5ldGhlcm5ldC1wb3J0XCIsIHRoZW4gYGlkYCBiZWNvbWVzIDEuIE90aGVyd2lzZSwgaXQgcmV0dXJucyAtRU5PREVWLCBzaWduYWxpbmcgdGhhdCB0aGUgZHJpdmVyIGRvZXNuJ3QgcmVjb2duaXplIHRoZSBkZXZpY2UuXG5cbkkgd291bGQgaGF2ZSBwcmVmZXJyZWQgYSBtb3JlIHJvYnVzdCBpZGVudGlmaWNhdGlvbiBtZXRob2QsIG1heWJlIHVzaW5nIGRldmljZSBpZGVudGlmaWVycyBvciBjb21wYXRpYmxlIHN0cmluZ3MgaW4gdGhlIGRldmljZSB0cmVlLCBhbmQgdGhpcyBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGNvbnNpZGVyIGZpeGluZyBvciByZWZhY3RvcmluZy4gSG93ZXZlciwgSSBuZWVkIHRvIGxvb2sgYXQgd2hhdCBgaWRgIHJlcHJlc2VudHMgaW4gdGhlIGxhcmdlciBjb250ZXh0LiBJcyBpdCBhbiBpbmRleCBpbnRvIHNvbWUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBvciBzb21ldGhpbmcgZWxzZT8gVW5kZXJzdGFuZGluZyB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgb2YgdGhpcyBgaWRgIGFzc2lnbm1lbnQgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjQ5LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjkuNjAzMzI3NzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NDAsXG4gIFwiTGluZUNvdW50XCI6IDQ1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NDA6XFx0XFx0LnJlbW92ZSA9IGdlbWluaV9ldGhlcm5ldF9wb3J0X3JlbW92ZSxcXG4yNjQxOlxcdH07XFxuMjY0MjpcXHRcXG4yNjQzOlxcdHN0YXRpYyBpbnQgZ2VtaW5pX2V0aGVybmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuMjY0NDpcXHR7XFxuMjY0NTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbjI2NDY6XFx0XFx0c3RydWN0IGdlbWluaV9ldGhlcm5ldCAqZ2V0aDtcXG4yNjQ3OlxcdFxcdHVuc2lnbmVkIGludCByZXRyeSA9IDU7XFxuMjY0ODpcXHRcXHR1MzIgdmFsO1xcbjI2NDk6XFx0XFxuMjY1MDpcXHRcXHQvKiBHbG9iYWwgcmVnaXN0ZXJzICovXFxuMjY1MTpcXHRcXHRnZXRoID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpnZXRoKSwgR0ZQX0tFUk5FTCk7XFxuMjY1MjpcXHRcXHRpZiAoIWdldGgpXFxuMjY1MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4yNjU0OlxcdFxcdGdldGgtXFx1MDAzZWJhc2UgPSBkZXZtX3BsYXRmb3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZShwZGV2LCAwLCBOVUxMKTtcXG4yNjU1OlxcdFxcdGlmIChJU19FUlIoZ2V0aC1cXHUwMDNlYmFzZSkpXFxuMjY1NjpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihnZXRoLVxcdTAwM2ViYXNlKTtcXG4yNjU3OlxcdFxcdGdldGgtXFx1MDAzZWRldiA9IGRldjtcXG4yNjU4OlxcdFxcbjI2NTk6XFx0XFx0LyogV2FpdCBmb3IgcG9ydHMgdG8gc3RhYmlsaXplICovXFxuMjY2MDpcXHRcXHRkbyB7XFxuMjY2MTpcXHRcXHRcXHR1ZGVsYXkoMik7XFxuMjY2MjpcXHRcXHRcXHR2YWwgPSByZWFkbChnZXRoLVxcdTAwM2ViYXNlICsgR0xPQkFMX1RPRV9WRVJTSU9OX1JFRyk7XFxuMjY2MzpcXHRcXHRcXHRiYXJyaWVyKCk7XFxuMjY2NDpcXHRcXHR9IHdoaWxlICghdmFsIFxcdTAwMjZcXHUwMDI2IC0tcmV0cnkpO1xcbjI2NjU6XFx0XFx0aWYgKCFyZXRyeSkge1xcbjI2NjY6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gcmVzZXQgZXRoZXJuZXRcXFxcblxcXCIpO1xcbjI2Njc6XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjY2ODpcXHRcXHR9XFxuMjY2OTpcXHRcXHRkZXZfaW5mbyhkZXYsIFxcXCJFdGhlcm5ldCBkZXZpY2UgSUQ6IDB4JTAzeCwgcmV2aXNpb24gMHglMDF4XFxcXG5cXFwiLFxcbjI2NzA6XFx0XFx0XFx0ICh2YWwgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEZGRlUsIHZhbCBcXHUwMDI2IDB4RlUpO1xcbjI2NzE6XFx0XFxuMjY3MjpcXHRcXHRzcGluX2xvY2tfaW5pdChcXHUwMDI2Z2V0aC1cXHUwMDNlaXJxX2xvY2spO1xcbjI2NzM6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmdldGgtXFx1MDAzZWZyZWVxX2xvY2spO1xcbjI2NzQ6XFx0XFxuMjY3NTpcXHRcXHQvKiBUaGUgY2hpbGRyZW4gd2lsbCB1c2UgdGhpcyAqL1xcbjI2NzY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgZ2V0aCk7XFxuMjY3NzpcXHRcXG4yNjc4OlxcdFxcdC8qIFNwYXduIGNoaWxkIGRldmljZXMgZm9yIHRoZSB0d28gcG9ydHMgKi9cXG4yNjc5OlxcdFxcdHJldHVybiBkZXZtX29mX3BsYXRmb3JtX3BvcHVsYXRlKGRldik7XFxuMjY4MDpcXHR9XFxuMjY4MTpcXHRcXG4yNjgyOlxcdHN0YXRpYyB2b2lkIGdlbWluaV9ldGhlcm5ldF9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4yNjgzOlxcdHtcXG4yNjg0OlxcdFxcdHN0cnVjdCBnZW1pbmlfZXRoZXJuZXQgKmdldGggPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDlUMTI6MzI6MjkuNjAzNDkwMDc5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU3MDQ3OTg1NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogV29ydGhGdXp6aW5nID0gRmFsc2UgZm9yIEdlbWluaSBFdGhlcm5ldCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zIG91dGxpbmVzICp3aGVuKiB3ZSBzaG91bGQgbWFyayBzb21ldGhpbmcgYXMgYFdvcnRoRnV6emluZz1mYWxzZWAuIFRoZSBrZXkgaGVyZSBpcyB0aGUgXCJORUdBVElWRSBDUklURVJJQSxcIiBhbmQgaXQgbG9va3MgbGlrZSB3ZSd2ZSBoaXQgYSBmZXcuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IHRoaXMgZHJpdmVyLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuY2AsIGlzIGEgc2VyaW91cyBjb250ZW5kZXIgZm9yIGV4Y2x1c2lvbi5cblxuVGhlIHRhcmdldCBhcmNoaXRlY3R1cmUgaXMgYW1kNjQsIGJ1dCB0aGUgY29kZSBpcyBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgKFN0b3JMaW5rIFNMMzUxeCkgU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuICBJdCdzIGFuIEFSTS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIsIGFuZCBJIGtub3cgdGhpcyBraW5kIG9mIHRoaW5nLiAgSXQgKm5lZWRzKiBPcGVuRmlybXdhcmUgRGV2aWNlIFRyZWUgbm9kZXMgKGBPRmApLCBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIHJlZ2lzdGVycyAoYDB4NjAwMDAwMDBgKSwgZGV2aWNlIG5hbWVzIGxpa2UgYDYwMDA4MDAwLmV0aGVybmV0LXBvcnRgLCBhbmQgYWxzbyByZWxpZXMgb24gaGFyZHdhcmUtc3BlY2lmaWMgY2xvY2tzIGFuZCByZXNldCBjb250cm9scy4gIEFsbCBvZiB0aGlzIHNjcmVhbXMgXCJoYXJkd2FyZS1kZXBlbmRlbnQsXCIgYW5kIEkgYWxyZWFkeSBrbm93IHRoaXMgaXNuJ3QgZ29pbmcgdG8gYmUgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0Ugb24gYW1kNjQuICBJIGNhbid0IGltYWdpbmUgdGhpcyBydW5uaW5nIG5hdGl2ZWx5IHdpdGhvdXQgYSB2ZXJ5IHNwZWNpZmljIHNldHVwLCBhbmQgZXZlbiB0aGVuLCBJIHN1c3BlY3Qgbm90LlxuXG5MZXQncyBkbyBhIGxpdHRsZSBzYW5pdHkgY2hlY2sganVzdCB0byBiZSBzdXJlLi4uIEkgcXVpY2tseSBnbGFuY2VkIGF0IHRoZSBLY29uZmlnIG9wdGlvbnMuIE9uIGFtZDY0LCBgQ09ORklHX09GYCBpcyBnZW5lcmFsbHkgZGlzYWJsZWQsIHVubGVzcyB3ZSBlbmFibGUgc29tZSB1bml0IHRlc3RzLCBidXQgdGhhdCdzIG5vdCB0aGUgZGVmYXVsdC4gRXZlbiBpZiBgQ09ORklHX09GYCAqaXMqIGVuYWJsZWQgZm9yIHNvbWUgdW5pdCB0ZXN0aW5nLCB0aGVyZSdzIG5vIHZpcnR1YWwgZGV2aWNlIG9yIFBDSSBkZXZpY2UgdGhhdCB3b3VsZCB0cmlnZ2VyIHRoaXMgcGFydGljdWxhciBkcml2ZXIuIEl0J3MgZXhwZWN0aW5nIGhhcmRjb2RlZCBkZXZpY2UgcmVnaXN0ZXIgYmFzZSBuYW1lcyBhbmQgcGh5c2ljYWwgU29DIE1NSU8gcmVnaXN0ZXJzLlxuXG5TbywgaW4gY29uY2x1c2lvbiwgdGhpcyBjb2RlIGlzICpzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUqIG9uIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgd2UgYXJlIHVzaW5nLiBJdCBpcyBleHBlY3Rpbmcgc3BlY2lmaWMsIG5vbi1lbXVsYXRlZCBoYXJkd2FyZS4gSSdtIGNvbmZpZGVudCB3ZSBjYW4gcHJvY2VlZC5cblxuTXkgZmluYWwgY2hlY2sgb2YgdGhlIHJlcXVpcmVtZW50cyBmb3IgYHNldC1yZXN1bHRzYCBsb29rcyBsaWtlIHRoaXM6XG5cbiogICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuKiAgIGBFbmFibGVDb25maWdzYDogYFtdYCAoZW1wdHkgYXJyYXkpXG4qICAgYEZvY3VzU3ltYm9sc2A6IGBbXWAgKGVtcHR5IGFycmF5KVxuKiAgIGBSZWFzb25pbmdgOiBDbGVhcmx5IGV4cGxhaW4gdGhhdCB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2NvcnRpbmEvZ2VtaW5pLmNgIGRyaXZlciBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBmb3IgdGhlIENvcnRpbmEgU3lzdGVtcyBHZW1pbmkgQVJNIFNvQyBFdGhlcm5ldCBjb250cm9sbGVyLCByZXF1aXJlcyBzcGVjaWZpYyBTb0MgRFQgbm9kZXMsIGFuZCBwaHlzaWNhbCBNTUlPIGhhcmR3YXJlIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIG9uIGFtZDY0LlxuXG5Pa2F5LCBsZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuIERvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzc4LCJPdXRwdXRUb2tlbnMiOjEzOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjM1LjMwODI5MDgwNVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIG1vZGlmaWVkIGNvZGUgaXMgaW4gZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYywgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciB0aGUgQ29ydGluYSBTeXN0ZW1zIEdlbWluaSAoU3RvckxpbmsgU0wzNTF4KSBBUk0gU29DIEV0aGVybmV0IGNvbnRyb2xsZXIuIEl0IHJlcXVpcmVzIHNwZWNpZmljIE9wZW5GaXJtd2FyZSAvIERldmljZSBUcmVlIGhhcmR3YXJlIGJpbmRpbmdzIGFuZCBTb0Mtc3BlY2lmaWMgTU1JTyByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKHN1Y2ggYXMgUUVNVSBvciBHQ0UpIG9uIGFtZDY0LiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZyBvbiBhbWQ2NC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA5VDEyOjMyOjM1LjMwODMxNjQ3NVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdbd8h[1] Phase: Running StartedAt: 2026-09-09 12:32:46 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdbd8h[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-09 12:32:46 +0000 UTC FinishedAt: 2026-09-09 12:32:50 +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,}