[PATCH] p2p: Implement P2P Listen APIs and iwctl client support
Shailesh Rathod/LGSI Secure & Connected Task <[email protected]> Tue, 16 Jun 2026 10:59:22 +0000
| Newsgroups | dev.linux.lists.iwd |
|---|---|
| Message-ID | <SE1P216MB2647CB70C541A5FA0DAD5B7FF0E52@SE1P216MB2647.KORP216.PROD.OUTLOOK.COM> |
RnJvbSA5Yjc3OGU0ZjY3ZDRkZmM2ZTU5YThmMzI4YjJkOTczZmFiMGMyZjA2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGFpbGVzaCByYXRob2QgPHNoYWlsZXNoLnJhdGhvZEBsZ2Uu Y29tPgpEYXRlOiBUdWUsIDE2IEp1biAyMDI2IDA5OjAwOjI5ICswMDAwClN1YmplY3Q6IFtQQVRD SF0gcDJwOiBJbXBsZW1lbnQgUDJQIExpc3RlbiBBUElzIGFuZCBpd2N0bCBjbGllbnQgc3VwcG9y dAoKRXhwb3NlIEQtQnVzIEFQSXMgYW5kIGl3Y3RsIENMSSBjb250cm9scyB0byBleHBsaWNpdGx5 IG1hbmFnZQp0aGUgUDJQIExpc3RlbiBzdGF0ZS4gVGhpcyBlbmFibGVzIHVzZSBjYXNlcyBzdWNo IGFzIE1pcmFjYXN0CnNpbmsgbW9kZSB3aGVyZSB0aGUgZGV2aWNlIG5lZWRzIHRvIHJlbWFpbiBk aXNjb3ZlcmFibGUKd2l0aG91dCBwZXJmb3JtaW5nIGFjdGl2ZSBzY2Fucy4KLSBBZGRlZCBSZXF1 ZXN0TGlzdGVuL1JlbGVhc2VMaXN0ZW4gbWV0aG9kcyBhbmQgTGlzdGVuQ2hhbm5lbCBwcm9wZXJ0 eQrCoCBvbiB0aGUgbmV0LmNvbm5tYW4uaXdkLnAycC5EZXZpY2UgaW50ZXJmYWNlLgotIEltcGxl bWVudGVkIHAycF9kZXZpY2VfbGlzdGVuX3N0YXJ0L3N0b3AgYW5kIGEgZGVkaWNhdGVkIFJPQy1s b29waW5nCsKgIHRpbWVvdXQgKHAycF9kZXZpY2VfbGlzdGVuX3JvY190aW1lb3V0KSB0byBoYW5k bGUgcmVtYWluLW9uLWNoYW5uZWwKwqAgY2hhaW5pbmcgb24gc29jaWFsIGNoYW5uZWxzLgotIEVu Zm9yY2VkIG11dHVhbCBleGNsdXNpb24gYmV0d2VlbiBhY3RpdmUgRGlzY292ZXJ5IGFuZCBMaXN0 ZW4gb3BlcmF0aW9ucy4KLSBBdXRvbWF0aWNhbGx5IHJlbGVhc2UgdGhlIGxpc3RlbiBzdGF0ZSB1 cG9uIGNsaWVudCBkaXNjb25uZWN0IHZpYQrCoCBkaXNjb25uZWN0IHdhdGNoZXMuCi0gQ3JlYXRl ZCBjbGllbnQvcDJwLmMgdG8gc3VwcG9ydCAncDJwIGxpc3Qvc2hvdy9saXN0ZW4vc3RvcC1saXN0 ZW4nCsKgIGNvbW1hbmRzIGluIGl3Y3RsLgotLS0KwqBNYWtlZmlsZS5hbSDCoCDCoCDCoCDCoCB8 IMKgIDEgKwrCoGNsaWVudC9kYnVzLXByb3h5LmggfCDCoCAxICsKwqBjbGllbnQvcDJwLmMgwqAg wqAgwqAgwqB8IDM1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwrCoHNyYy9wMnAuYyDCoCDCoCDCoCDCoCDCoCB8IDI3OCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCsKgNCBmaWxlcyBjaGFuZ2VkLCA2MzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxl dGlvbigtKQrCoGNyZWF0ZSBtb2RlIDEwMDY0NCBjbGllbnQvcDJwLmMKCmRpZmYgLS1naXQgYS9N YWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCmluZGV4IDY4ZDkwMzIuLjRiZjYyNjQgMTAwNjQ0Ci0t LSBhL01ha2VmaWxlLmFtCisrKyBiL01ha2VmaWxlLmFtCkBAIC0zMTMsNiArMzEzLDcgQEAgY2xp ZW50X2l3Y3RsX1NPVVJDRVMgPSBjbGllbnQvbWFpbi5jIFwKwqDigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigIJjbGllbnQvYWdlbnQtbWFuYWdlci5oIGNs aWVudC9hZ2VudC1tYW5hZ2VyLmMgXArCoOKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgmNsaWVudC9hZC1ob2MuYyBcCsKg4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCY2xpZW50L2FwLmMgXAor4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCY2xpZW50L3AycC5jIFwK wqDigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJjbGll bnQvY29tbWFuZC5oIGNsaWVudC9jb21tYW5kLmMgXArCoOKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgmNsaWVudC9kYnVzLXByb3h5LmggY2xpZW50L2Ri dXMtcHJveHkuYyBcCsKg4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCY2xpZW50L2RldmljZS5oIGNsaWVudC9kZXZpY2UuYyBcCmRpZmYgLS1naXQgYS9j bGllbnQvZGJ1cy1wcm94eS5oIGIvY2xpZW50L2RidXMtcHJveHkuaAppbmRleCAzMjMwMGY0Li4w Njg4YzlmIDEwMDY0NAotLS0gYS9jbGllbnQvZGJ1cy1wcm94eS5oCisrKyBiL2NsaWVudC9kYnVz LXByb3h5LmgKQEAgLTQyLDYgKzQyLDcgQEAgc3RydWN0IHByb3h5X2ludGVyZmFjZTsKwqAjZGVm aW5lIElXRF9EUFBfUEtFWF9JTlRFUkZBQ0UgXArCoOKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgiJuZXQuY29ubm1hbi5p d2QuU2hhcmVkQ29kZURldmljZVByb3Zpc2lvbmluZyIKwqAjZGVmaW5lIElXRF9CU1NfSU5URVJG QUNFIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIm5ldC5jb25ubWFuLml3ZC5CYXNpY1NlcnZpY2VT ZXQiCisjZGVmaW5lIElXRF9QMlBfSU5URVJGQUNFIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIm5l dC5jb25ubWFuLml3ZC5wMnAuRGV2aWNlIgrCoArCoHR5cGVkZWYgYm9vbCAoKnByb3h5X3Byb3Bl cnR5X21hdGNoX2Z1bmNfdCkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpOwrCoApkaWZm IC0tZ2l0IGEvY2xpZW50L3AycC5jIGIvY2xpZW50L3AycC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjA4YmVhNTcKLS0tIC9kZXYvbnVsbAorKysgYi9jbGllbnQvcDJwLmMK QEAgLTAsMCArMSwzNTQgQEAKKy8qCisgKgorICogwqBXaXJlbGVzcyBkYWVtb24gZm9yIExpbnV4 CisgKgorICogwqBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSDCoEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIMKgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogwqBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiDCoExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog wqB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiDCoFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogwqBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogwqBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIMKgU2VlIHRoZSBHTlUK KyAqIMKgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiDCoFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIMKgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogwqBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgwqAwMjExMC0xMzAxIMKgVVNB CisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSA8Y29uZmlnLmg+Cisj ZW5kaWYKKworI2luY2x1ZGUgPGVsbC9lbGwuaD4KKworI2luY2x1ZGUgImNsaWVudC9jb21tYW5k LmgiCisjaW5jbHVkZSAiY2xpZW50L2RidXMtcHJveHkuaCIKKyNpbmNsdWRlICJjbGllbnQvZGV2 aWNlLmgiCisjaW5jbHVkZSAiY2xpZW50L2Rpc3BsYXkuaCIKKworc3RydWN0IHAycF9kZXYgewor 4oCC4oCC4oCC4oCC4oCCYm9vbCBlbmFibGVkOwor4oCC4oCC4oCC4oCC4oCCY2hhciAqbmFtZTsK K+KAguKAguKAguKAguKAgnVpbnQxNl90IGF2YWlsX2Nvbm5zOwor4oCC4oCC4oCC4oCC4oCCdWlu dDhfdCBsaXN0ZW5fY2hhbm5lbDsKK307CisKK3N0YXRpYyB2b2lkICpwMnBfY3JlYXRlKHZvaWQp Cit7CivigILigILigILigILigIJyZXR1cm4gbF9uZXcoc3RydWN0IHAycF9kZXYsIDEpOworfQor CitzdGF0aWMgdm9pZCBwMnBfZGVzdHJveSh2b2lkICpkYXRhKQorewor4oCC4oCC4oCC4oCC4oCC c3RydWN0IHAycF9kZXYgKnAycCA9IGRhdGE7CisKK+KAguKAguKAguKAguKAgmlmIChwMnAtPm5h bWUpCivigILigILigILigILigILigILigILigILigILigILigIJsX2ZyZWUocDJwLT5uYW1lKTsK Kwor4oCC4oCC4oCC4oCC4oCCbF9mcmVlKHAycCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg cHJveHlfaW50ZXJmYWNlX3R5cGVfb3BzIHAycF9vcHMgPSB7CivigILigILigILigILigIIuY3Jl YXRlID0gcDJwX2NyZWF0ZSwKK+KAguKAguKAguKAguKAgi5kZXN0cm95ID0gcDJwX2Rlc3Ryb3ks Cit9OworCitzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2VuYWJsZWRfdG9zdHIoY29uc3Qgdm9pZCAq ZGF0YSkKK3sKK+KAguKAguKAguKAguKAgmNvbnN0IHN0cnVjdCBwMnBfZGV2ICpwMnAgPSBkYXRh OworCivigILigILigILigILigIJyZXR1cm4gcDJwLT5lbmFibGVkID8gInllcyIgOiAibm8iOwor fQorCitzdGF0aWMgdm9pZCB1cGRhdGVfZW5hYmxlZCh2b2lkICpkYXRhLCBzdHJ1Y3QgbF9kYnVz X21lc3NhZ2VfaXRlciAqdmFyaWFudCkKK3sKK+KAguKAguKAguKAguKAgnN0cnVjdCBwMnBfZGV2 ICpwMnAgPSBkYXRhOwor4oCC4oCC4oCC4oCC4oCCYm9vbCB2YWx1ZTsKKwor4oCC4oCC4oCC4oCC 4oCCaWYgKCFsX2RidXNfbWVzc2FnZV9pdGVyX2dldF92YXJpYW50KHZhcmlhbnQsICJiIiwgJnZh bHVlKSkgewor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwLT5lbmFibGVkID0g ZmFsc2U7CivigILigILigILigILigILigILigILigILigILigILigIJyZXR1cm47CivigILigILi gILigILigIJ9CisKK+KAguKAguKAguKAguKAgnAycC0+ZW5hYmxlZCA9IHZhbHVlOworfQorCitz dGF0aWMgY29uc3QgY2hhciAqZ2V0X25hbWVfdG9zdHIoY29uc3Qgdm9pZCAqZGF0YSkKK3sKK+KA guKAguKAguKAguKAgmNvbnN0IHN0cnVjdCBwMnBfZGV2ICpwMnAgPSBkYXRhOworCivigILigILi gILigILigIJpZiAoIXAycC0+bmFtZSkKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA gnJldHVybiAiIjsKKwor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIHAycC0+bmFtZTsKK30KKworc3Rh dGljIHZvaWQgdXBkYXRlX25hbWUodm9pZCAqZGF0YSwgc3RydWN0IGxfZGJ1c19tZXNzYWdlX2l0 ZXIgKnZhcmlhbnQpCit7CivigILigILigILigILigIJzdHJ1Y3QgcDJwX2RldiAqcDJwID0gZGF0 YTsKK+KAguKAguKAguKAguKAgmNvbnN0IGNoYXIgKm5hbWU7CisKK+KAguKAguKAguKAguKAgmlm IChwMnAtPm5hbWUpCivigILigILigILigILigILigILigILigILigILigILigIJsX2ZyZWUocDJw LT5uYW1lKTsKKwor4oCC4oCC4oCC4oCC4oCCaWYgKCFsX2RidXNfbWVzc2FnZV9pdGVyX2dldF92 YXJpYW50KHZhcmlhbnQsICJzIiwgJm5hbWUpKSB7CivigILigILigILigILigILigILigILigILi gILigILigIJwMnAtPm5hbWUgPSBOVUxMOwor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCCcmV0dXJuOwor4oCC4oCC4oCC4oCC4oCCfQorCivigILigILigILigILigIJwMnAtPm5hbWUg PSBsX3N0cmR1cChuYW1lKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmdldF9hdmFpbF9jb25u c190b3N0cihjb25zdCB2b2lkICpkYXRhKQorewor4oCC4oCC4oCC4oCC4oCCY29uc3Qgc3RydWN0 IHAycF9kZXYgKnAycCA9IGRhdGE7CivigILigILigILigILigIJzdGF0aWMgY2hhciBzdHJbNl07 CisKK+KAguKAguKAguKAguKAgnNucHJpbnRmKHN0ciwgc2l6ZW9mKHN0ciksICIldSIsIHAycC0+ YXZhaWxfY29ubnMpOwor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIHN0cjsKK30KKworc3RhdGljIHZv aWQgdXBkYXRlX2F2YWlsX2Nvbm5zKHZvaWQgKmRhdGEsIHN0cnVjdCBsX2RidXNfbWVzc2FnZV9p dGVyICp2YXJpYW50KQorewor4oCC4oCC4oCC4oCC4oCCc3RydWN0IHAycF9kZXYgKnAycCA9IGRh dGE7CivigILigILigILigILigIJ1aW50MTZfdCB2YWx1ZTsKKwor4oCC4oCC4oCC4oCC4oCCaWYg KCFsX2RidXNfbWVzc2FnZV9pdGVyX2dldF92YXJpYW50KHZhcmlhbnQsICJxIiwgJnZhbHVlKSkg ewor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwLT5hdmFpbF9jb25ucyA9IDA7 CivigILigILigILigILigILigILigILigILigILigILigIJyZXR1cm47CivigILigILigILigILi gIJ9CisKK+KAguKAguKAguKAguKAgnAycC0+YXZhaWxfY29ubnMgPSB2YWx1ZTsKK30KKworc3Rh dGljIGNvbnN0IGNoYXIgKmdldF9saXN0ZW5fY2hhbm5lbF90b3N0cihjb25zdCB2b2lkICpkYXRh KQorewor4oCC4oCC4oCC4oCC4oCCY29uc3Qgc3RydWN0IHAycF9kZXYgKnAycCA9IGRhdGE7Civi gILigILigILigILigIJzdGF0aWMgY2hhciBzdHJbNF07CisKK+KAguKAguKAguKAguKAgnNucHJp bnRmKHN0ciwgc2l6ZW9mKHN0ciksICIldSIsIHAycC0+bGlzdGVuX2NoYW5uZWwpOwor4oCC4oCC 4oCC4oCC4oCCcmV0dXJuIHN0cjsKK30KKworc3RhdGljIHZvaWQgdXBkYXRlX2xpc3Rlbl9jaGFu bmVsKHZvaWQgKmRhdGEsIHN0cnVjdCBsX2RidXNfbWVzc2FnZV9pdGVyICp2YXJpYW50KQorewor 4oCC4oCC4oCC4oCC4oCCc3RydWN0IHAycF9kZXYgKnAycCA9IGRhdGE7CivigILigILigILigILi gIJ1aW50OF90IHZhbHVlOworCivigILigILigILigILigIJpZiAoIWxfZGJ1c19tZXNzYWdlX2l0 ZXJfZ2V0X3ZhcmlhbnQodmFyaWFudCwgInkiLCAmdmFsdWUpKSB7CivigILigILigILigILigILi gILigILigILigILigILigIJwMnAtPmxpc3Rlbl9jaGFubmVsID0gMDsKK+KAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgnJldHVybjsKK+KAguKAguKAguKAguKAgn0KKwor4oCC4oCC4oCC 4oCC4oCCcDJwLT5saXN0ZW5fY2hhbm5lbCA9IHZhbHVlOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IHByb3h5X2ludGVyZmFjZV9wcm9wZXJ0eSBwMnBfcHJvcGVydGllc1tdID0gewor4oCC4oCC 4oCC4oCC4oCCeyAiRW5hYmxlZCIsIMKgImIiLCB1cGRhdGVfZW5hYmxlZCwgwqBnZXRfZW5hYmxl ZF90b3N0ciB9LAor4oCC4oCC4oCC4oCC4oCCeyAiTmFtZSIsIMKgIMKgICJzIiwgdXBkYXRlX25h bWUsIMKgIMKgIGdldF9uYW1lX3Rvc3RyIH0sCivigILigILigILigILigIJ7ICJBdmFpbGFibGVD b25uZWN0aW9ucyIsICJxIiwgdXBkYXRlX2F2YWlsX2Nvbm5zLCBnZXRfYXZhaWxfY29ubnNfdG9z dHIgfSwKK+KAguKAguKAguKAguKAgnsgIkxpc3RlbkNoYW5uZWwiLCAieSIsIHVwZGF0ZV9saXN0 ZW5fY2hhbm5lbCwgZ2V0X2xpc3Rlbl9jaGFubmVsX3Rvc3RyIH0sCivigILigILigILigILigIJ7 IH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcHJveHlfaW50ZXJmYWNlX3R5cGUgcDJwX2ludGVyZmFj ZV90eXBlID0gewor4oCC4oCC4oCC4oCC4oCCLmludGVyZmFjZSA9IElXRF9QMlBfSU5URVJGQUNF LAor4oCC4oCC4oCC4oCC4oCCLnByb3BlcnRpZXMgPSBwMnBfcHJvcGVydGllcywKK+KAguKAguKA guKAguKAgi5vcHMgPSAmcDJwX29wcywKK307CisKK3N0YXRpYyB2b2lkIGNoZWNrX2Vycm9yc19t ZXRob2RfY2FsbGJhY2soc3RydWN0IGxfZGJ1c19tZXNzYWdlICptZXNzYWdlLAor4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCdm9pZCAqdXNlcl9kYXRhKQorewor4oCC4oCC4oCC4oCC4oCCZGJ1 c19tZXNzYWdlX2hhc19lcnJvcihtZXNzYWdlKTsKK30KKworc3RhdGljIHZvaWQgZGlzcGxheV9w MnBfaW5saW5lKGNvbnN0IGNoYXIgKm1hcmdpbiwgY29uc3Qgdm9pZCAqZGF0YSkKK3sKK+KAguKA guKAguKAguKAgmNvbnN0IHN0cnVjdCBwcm94eV9pbnRlcmZhY2UgKnAycF9pID0gZGF0YTsKK+KA guKAguKAguKAguKAgmNvbnN0IHN0cnVjdCBwMnBfZGV2ICpwMnAgPSBwcm94eV9pbnRlcmZhY2Vf Z2V0X2RhdGEocDJwX2kpOwor4oCC4oCC4oCC4oCC4oCCc3RydWN0IHByb3h5X2ludGVyZmFjZSAq ZGV2aWNlX2kgPQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcHJveHlfaW50ZXJm YWNlX2ZpbmQoSVdEX0RFVklDRV9JTlRFUkZBQ0UsCivigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigIJwcm94eV9pbnRlcmZhY2VfZ2V0X3BhdGgocDJwX2kpKTsKK+KAguKAguKAguKAguKAgmNv bnN0IGNoYXIgKmlkZW50aXR5OworCivigILigILigILigILigIJpZiAoIWRldmljZV9pKQor4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcmV0dXJuOworCivigILigILigILigILigIJp ZGVudGl0eSA9IHByb3h5X2ludGVyZmFjZV9nZXRfaWRlbnRpdHlfc3RyKGRldmljZV9pKTsKK+KA guKAguKAguKAguKAgmlmICghaWRlbnRpdHkpCivigILigILigILigILigILigILigILigILigILi gILigIJyZXR1cm47CisKK+KAguKAguKAguKAguKAgmRpc3BsYXlfdGFibGVfcm93KG1hcmdpbiwg NCwKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgjIwLCBpZGVudGl0eSwKK+KAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgjgsIGdldF9lbmFibGVk X3Rvc3RyKHAycCksCivigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigIIxMCwgZ2V0X2xpc3Rlbl9jaGFubmVsX3Rvc3RyKHAy cCksCivigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigIIyMCwgZ2V0X2F2YWlsX2Nvbm5zX3Rvc3RyKHAycCkpOworfQorCitz dGF0aWMgZW51bSBjbWRfc3RhdHVzIGNtZF9saXN0KGNvbnN0IGNoYXIgKmRldmljZV9uYW1lLCBj aGFyICoqYXJndiwgaW50IGFyZ2MpCit7CivigILigILigILigILigIJjb25zdCBzdHJ1Y3QgbF9x dWV1ZV9lbnRyeSAqZW50cnk7CivigILigILigILigILigIJzdHJ1Y3QgbF9xdWV1ZSAqbWF0Y2gg PQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcHJveHlfaW50ZXJmYWNlX2ZpbmRf YWxsKElXRF9QMlBfSU5URVJGQUNFLCBOVUxMLCBOVUxMKTsKKwor4oCC4oCC4oCC4oCC4oCCZGlz cGxheV90YWJsZV9oZWFkZXIoIlAyUCBEZXZpY2VzIiwgTUFSR0lOICIlLSpzIMKgJS0qcyDCoCUt KnMgwqAlLSpzIiwKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAgjIwLCAiTmFtZSIsIDgsICJFbmFibGVkIiwgMTAsICJM aXN0ZW5DaGFuIiwgMjAsICJBdmFpbENvbm5zIik7CisKK+KAguKAguKAguKAguKAgmlmICghbWF0 Y2gpIHsKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmRpc3BsYXkoIk5vIFAyUCBk ZXZpY2VzIGF2YWlsYWJsZS5cbiIpOwor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC ZGlzcGxheV90YWJsZV9mb290ZXIoKTsKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA gnJldHVybiBDTURfU1RBVFVTX0RPTkU7CivigILigILigILigILigIJ9CisKK+KAguKAguKAguKA guKAgmZvciAoZW50cnkgPSBsX3F1ZXVlX2dldF9lbnRyaWVzKG1hdGNoKTsgZW50cnk7IGVudHJ5 ID0gZW50cnktPm5leHQpIHsKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmNvbnN0 IHN0cnVjdCBwcm94eV9pbnRlcmZhY2UgKnAycCA9IGVudHJ5LT5kYXRhOwor4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGlzcGxheV9wMnBfaW5saW5lKE1BUkdJTiwgcDJwKTsKK+KA guKAguKAguKAguKAgn0KKwor4oCC4oCC4oCC4oCC4oCCZGlzcGxheV90YWJsZV9mb290ZXIoKTsK K+KAguKAguKAguKAguKAgmxfcXVldWVfZGVzdHJveShtYXRjaCwgTlVMTCk7CisKK+KAguKAguKA guKAguKAgnJldHVybiBDTURfU1RBVFVTX0RPTkU7Cit9CisKK3N0YXRpYyBlbnVtIGNtZF9zdGF0 dXMgY21kX3Nob3coY29uc3QgY2hhciAqZGV2aWNlX25hbWUsIGNoYXIgKiphcmd2LCBpbnQgYXJn YykKK3sKK+KAguKAguKAguKAguKAgmNvbnN0IHN0cnVjdCBwcm94eV9pbnRlcmZhY2UgKnAycF9p ID0KK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmRldmljZV9wcm94eV9maW5kKGRl dmljZV9uYW1lLCBJV0RfUDJQX0lOVEVSRkFDRSk7CisKK+KAguKAguKAguKAguKAgmlmICghcDJw X2kpIHsKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmRpc3BsYXkoIk5vIFAyUCBk ZXZpY2U6ICclcydcbiIsIGRldmljZV9uYW1lKTsKK+KAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAgnJldHVybiBDTURfU1RBVFVTX0lOVkFMSURfVkFMVUU7CivigILigILigILigILigIJ9 CisKK+KAguKAguKAguKAguKAgnByb3h5X3Byb3BlcnRpZXNfZGlzcGxheShwMnBfaSwgIlAyUCBE ZXZpY2UgSW50ZXJmYWNlIiwgTUFSR0lOLCAyNCwgMjApOwor4oCC4oCC4oCC4oCC4oCCZGlzcGxh eV90YWJsZV9mb290ZXIoKTsKKwor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIENNRF9TVEFUVVNfRE9O RTsKK30KKworc3RhdGljIGVudW0gY21kX3N0YXR1cyBjbWRfbGlzdGVuKGNvbnN0IGNoYXIgKmRl dmljZV9uYW1lLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCit7CivigILigILigILigILigIJjb25z dCBzdHJ1Y3QgcHJveHlfaW50ZXJmYWNlICpwMnBfaSA9CivigILigILigILigILigILigILigILi gILigILigILigIJkZXZpY2VfcHJveHlfZmluZChkZXZpY2VfbmFtZSwgSVdEX1AyUF9JTlRFUkZB Q0UpOworCivigILigILigILigILigIJpZiAoIXAycF9pKSB7CivigILigILigILigILigILigILi gILigILigILigILigIJkaXNwbGF5KCJObyBQMlAgZGV2aWNlOiAnJXMnXG4iLCBkZXZpY2VfbmFt ZSk7CivigILigILigILigILigILigILigILigILigILigILigIJyZXR1cm4gQ01EX1NUQVRVU19J TlZBTElEX1ZBTFVFOwor4oCC4oCC4oCC4oCC4oCCfQorCivigILigILigILigILigIJwcm94eV9p bnRlcmZhY2VfbWV0aG9kX2NhbGwocDJwX2ksICJSZXF1ZXN0TGlzdGVuIiwgIiIsCivigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigIJjaGVja19lcnJvcnNfbWV0 aG9kX2NhbGxiYWNrKTsKKwor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIENNRF9TVEFUVVNfVFJJR0dF UkVEOworfQorCitzdGF0aWMgZW51bSBjbWRfc3RhdHVzIGNtZF9zdG9wX2xpc3Rlbihjb25zdCBj aGFyICpkZXZpY2VfbmFtZSwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQorewor4oCC4oCC4oCC4oCC 4oCCY29uc3Qgc3RydWN0IHByb3h5X2ludGVyZmFjZSAqcDJwX2kgPQor4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCZGV2aWNlX3Byb3h5X2ZpbmQoZGV2aWNlX25hbWUsIElXRF9QMlBf SU5URVJGQUNFKTsKKwor4oCC4oCC4oCC4oCC4oCCaWYgKCFwMnBfaSkgewor4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGlzcGxheSgiTm8gUDJQIGRldmljZTogJyVzJ1xuIiwgZGV2 aWNlX25hbWUpOwor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcmV0dXJuIENNRF9T VEFUVVNfSU5WQUxJRF9WQUxVRTsKK+KAguKAguKAguKAguKAgn0KKwor4oCC4oCC4oCC4oCC4oCC cHJveHlfaW50ZXJmYWNlX21ldGhvZF9jYWxsKHAycF9pLCAiUmVsZWFzZUxpc3RlbiIsICIiLAor 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCY2hlY2tfZXJy b3JzX21ldGhvZF9jYWxsYmFjayk7CisKK+KAguKAguKAguKAguKAgnJldHVybiBDTURfU1RBVFVT X1RSSUdHRVJFRDsKK30KKworc3RhdGljIGVudW0gY21kX3N0YXR1cyBjbWRfZGlzY292ZXJ5KGNv bnN0IGNoYXIgKmRldmljZV9uYW1lLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCit7CivigILigILi gILigILigIJjb25zdCBzdHJ1Y3QgcHJveHlfaW50ZXJmYWNlICpwMnBfaSA9CivigILigILigILi gILigILigILigILigILigILigILigIJkZXZpY2VfcHJveHlfZmluZChkZXZpY2VfbmFtZSwgSVdE X1AyUF9JTlRFUkZBQ0UpOworCivigILigILigILigILigIJpZiAoIXAycF9pKSB7CivigILigILi gILigILigILigILigILigILigILigILigIJkaXNwbGF5KCJObyBQMlAgZGV2aWNlOiAnJXMnXG4i LCBkZXZpY2VfbmFtZSk7CivigILigILigILigILigILigILigILigILigILigILigIJyZXR1cm4g Q01EX1NUQVRVU19JTlZBTElEX1ZBTFVFOwor4oCC4oCC4oCC4oCC4oCCfQorCivigILigILigILi gILigIJwcm94eV9pbnRlcmZhY2VfbWV0aG9kX2NhbGwocDJwX2ksICJSZXF1ZXN0RGlzY292ZXJ5 IiwgIiIsCivigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJj aGVja19lcnJvcnNfbWV0aG9kX2NhbGxiYWNrKTsKKwor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIENN RF9TVEFUVVNfVFJJR0dFUkVEOworfQorCitzdGF0aWMgZW51bSBjbWRfc3RhdHVzIGNtZF9zdG9w X2Rpc2NvdmVyeShjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgY2hhciAqKmFyZ3YsIGludCBhcmdj KQorewor4oCC4oCC4oCC4oCC4oCCY29uc3Qgc3RydWN0IHByb3h5X2ludGVyZmFjZSAqcDJwX2kg PQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGV2aWNlX3Byb3h5X2ZpbmQoZGV2 aWNlX25hbWUsIElXRF9QMlBfSU5URVJGQUNFKTsKKwor4oCC4oCC4oCC4oCC4oCCaWYgKCFwMnBf aSkgewor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGlzcGxheSgiTm8gUDJQIGRl dmljZTogJyVzJ1xuIiwgZGV2aWNlX25hbWUpOwor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCCcmV0dXJuIENNRF9TVEFUVVNfSU5WQUxJRF9WQUxVRTsKK+KAguKAguKAguKAguKAgn0K Kwor4oCC4oCC4oCC4oCC4oCCcHJveHlfaW50ZXJmYWNlX21ldGhvZF9jYWxsKHAycF9pLCAiUmVs ZWFzZURpc2NvdmVyeSIsICIiLAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCCY2hlY2tfZXJyb3JzX21ldGhvZF9jYWxsYmFjayk7CisKK+KAguKAguKAguKA guKAgnJldHVybiBDTURfU1RBVFVTX1RSSUdHRVJFRDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjb21tYW5kIHAycF9jb21tYW5kc1tdID0gewor4oCC4oCC4oCC4oCC4oCCeyBOVUxMLCAibGlz dCIsIE5VTEwsIGNtZF9saXN0LCAiTGlzdCBQMlAgZGV2aWNlcyIsIHRydWUgfSwKK+KAguKAguKA guKAguKAgnsgIjx3bGFuPiIsICJzaG93IiwgTlVMTCwgY21kX3Nob3csICJTaG93IFAyUCBkZXZp Y2UgZGV0YWlscyIsIHRydWUgfSwKK+KAguKAguKAguKAguKAgnsgIjx3bGFuPiIsICJsaXN0ZW4i LCBOVUxMLCBjbWRfbGlzdGVuLCAiUmVxdWVzdCBQMlAgTGlzdGVuIHN0YXRlIiB9LAor4oCC4oCC 4oCC4oCC4oCCeyAiPHdsYW4+IiwgInN0b3AtbGlzdGVuIiwgTlVMTCwgY21kX3N0b3BfbGlzdGVu LCAiUmVsZWFzZSBQMlAgTGlzdGVuIHN0YXRlIiB9LAor4oCC4oCC4oCC4oCC4oCCeyAiPHdsYW4+ IiwgImRpc2NvdmVyeSIsIE5VTEwsIGNtZF9kaXNjb3ZlcnksICJSZXF1ZXN0IFAyUCBEaXNjb3Zl cnkiIH0sCivigILigILigILigILigIJ7ICI8d2xhbj4iLCAic3RvcC1kaXNjb3ZlcnkiLCBOVUxM LCBjbWRfc3RvcF9kaXNjb3ZlcnksICJSZWxlYXNlIFAyUCBEaXNjb3ZlcnkiIH0sCivigILigILi gILigILigIJ7IH0KK307CisKK3N0YXRpYyBjaGFyICpmYW1pbHlfYXJnX2NvbXBsZXRpb24oY29u c3QgY2hhciAqdGV4dCwgaW50IHN0YXRlKQorewor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIGRldmlj ZV9hcmdfY29tcGxldGlvbih0ZXh0LCBzdGF0ZSwgcDJwX2NvbW1hbmRzLAor4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCSVdEX1AyUF9JTlRFUkZBQ0UpOwor fQorCitzdGF0aWMgY2hhciAqZW50aXR5X2FyZ19jb21wbGV0aW9uKGNvbnN0IGNoYXIgKnRleHQs IGludCBzdGF0ZSkKK3sKK+KAguKAguKAguKAguKAgnJldHVybiBjb21tYW5kX2VudGl0eV9hcmdf Y29tcGxldGlvbih0ZXh0LCBzdGF0ZSwgcDJwX2NvbW1hbmRzKTsKK30KKworc3RhdGljIHN0cnVj dCBjb21tYW5kX2ZhbWlseSBwMnBfY29tbWFuZF9mYW1pbHkgPSB7CivigILigILigILigILigIIu Y2FwdGlvbiA9ICJQZWVyLXRvLVBlZXIiLAor4oCC4oCC4oCC4oCC4oCCLm5hbWUgPSAicDJwIiwK K+KAguKAguKAguKAguKAgi5jb21tYW5kX2xpc3QgPSBwMnBfY29tbWFuZHMsCivigILigILigILi gILigIIuZmFtaWx5X2FyZ19jb21wbGV0aW9uID0gZmFtaWx5X2FyZ19jb21wbGV0aW9uLAor4oCC 4oCC4oCC4oCC4oCCLmVudGl0eV9hcmdfY29tcGxldGlvbiA9IGVudGl0eV9hcmdfY29tcGxldGlv biwKK307CisKK3N0YXRpYyBpbnQgcDJwX2NvbW1hbmRfZmFtaWx5X2luaXQodm9pZCkKK3sKK+KA guKAguKAguKAguKAgmNvbW1hbmRfZmFtaWx5X3JlZ2lzdGVyKCZwMnBfY29tbWFuZF9mYW1pbHkp Owor4oCC4oCC4oCC4oCC4oCCcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHAycF9jb21tYW5k X2ZhbWlseV9leGl0KHZvaWQpCit7CivigILigILigILigILigIJjb21tYW5kX2ZhbWlseV91bnJl Z2lzdGVyKCZwMnBfY29tbWFuZF9mYW1pbHkpOworfQorCitDT01NQU5EX0ZBTUlMWShwMnBfY29t bWFuZF9mYW1pbHksIHAycF9jb21tYW5kX2ZhbWlseV9pbml0LAor4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwX2NvbW1hbmRfZmFtaWx5X2V4aXQpCisK K3N0YXRpYyBpbnQgcDJwX2ludGVyZmFjZV9pbml0KHZvaWQpCit7CivigILigILigILigILigIJw cm94eV9pbnRlcmZhY2VfdHlwZV9yZWdpc3RlcigmcDJwX2ludGVyZmFjZV90eXBlKTsKK+KAguKA guKAguKAguKAgnJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBwMnBfaW50ZXJmYWNlX2V4aXQo dm9pZCkKK3sKK+KAguKAguKAguKAguKAgnByb3h5X2ludGVyZmFjZV90eXBlX3VucmVnaXN0ZXIo JnAycF9pbnRlcmZhY2VfdHlwZSk7Cit9CisKK0lOVEVSRkFDRV9UWVBFKHAycF9pbnRlcmZhY2Vf dHlwZSwgcDJwX2ludGVyZmFjZV9pbml0LCBwMnBfaW50ZXJmYWNlX2V4aXQpCmRpZmYgLS1naXQg YS9zcmMvcDJwLmMgYi9zcmMvcDJwLmMKaW5kZXggN2Q4OWRhMi4uYTNmZDRkMiAxMDA2NDQKLS0t IGEvc3JjL3AycC5jCisrKyBiL3NyYy9wMnAuYwpAQCAtODcsNiArODcsNyBAQCBzdHJ1Y3QgcDJw X2RldmljZSB7CsKg4oCC4oCC4oCC4oCC4oCCdWludDY0X3Qgcm9jX2Nvb2tpZTsKwqDigILigILi gILigILigIJ1bnNpZ25lZCBpbnQgbGlzdGVuX2R1cmF0aW9uOwrCoOKAguKAguKAguKAguKAgnN0 cnVjdCBsX3F1ZXVlICpkaXNjb3ZlcnlfdXNlcnM7CivigILigILigILigILigIJzdHJ1Y3QgbF9x dWV1ZSAqbGlzdGVuX3VzZXJzOwrCoOKAguKAguKAguKAguKAgnN0cnVjdCBsX3F1ZXVlICpwZWVy X2xpc3Q7CsKg4oCC4oCC4oCC4oCC4oCCdW5zaWduZWQgaW50IG5leHRfdGllX2JyZWFrZXI7CsKg CkBAIC0xMzUsNiArMTM2LDcgQEAgc3RydWN0IHAycF9kZXZpY2UgewrCoOKAguKAguKAguKAguKA gmJvb2wgaXNfZ28gOiAxOwrCoOKAguKAguKAguKAguKAgmJvb2wgY29ubl9nb190aWVfYnJlYWtl ciA6IDE7CsKg4oCC4oCC4oCC4oCC4oCCYm9vbCBjb25uX3BlZXJfYWRkZWQgOiAxOwor4oCC4oCC 4oCC4oCC4oCCYm9vbCBsaXN0ZW5pbmcgOiAxOwrCoH07CsKgCsKgc3RydWN0IHAycF9kaXNjb3Zl cnlfdXNlciB7CkBAIC0xNDMsNiArMTQ1LDEyIEBAIHN0cnVjdCBwMnBfZGlzY292ZXJ5X3VzZXIg ewrCoOKAguKAguKAguKAguKAgnVuc2lnbmVkIGludCBkaXNjb25uZWN0X3dhdGNoOwrCoH07CsKg CitzdHJ1Y3QgcDJwX2xpc3Rlbl91c2VyIHsKK+KAguKAguKAguKAguKAgmNoYXIgKmNsaWVudDsK K+KAguKAguKAguKAguKAgnN0cnVjdCBwMnBfZGV2aWNlICpkZXY7CivigILigILigILigILigIJ1 bnNpZ25lZCBpbnQgZGlzY29ubmVjdF93YXRjaDsKK307CisKwqBzdHJ1Y3QgcDJwX3BlZXIgewrC oOKAguKAguKAguKAguKAgnN0cnVjdCBzY2FuX2JzcyAqYnNzOwrCoOKAguKAguKAguKAguKAgnN0 cnVjdCBwMnBfZGV2aWNlICpkZXY7CkBAIC0yMjYsNiArMjM0LDI0IEBAIHN0YXRpYyB2b2lkIHAy cF9kaXNjb3ZlcnlfdXNlcl9mcmVlKHZvaWQgKmRhdGEpCsKg4oCC4oCC4oCC4oCC4oCCbF9mcmVl KHVzZXIpOwrCoH0KwqAKK3N0YXRpYyBib29sIHAycF9saXN0ZW5fdXNlcl9tYXRjaChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiKQorewor4oCC4oCC4oCC4oCC4oCCY29uc3Qgc3RydWN0IHAy cF9saXN0ZW5fdXNlciAqdXNlciA9IGE7CisKK+KAguKAguKAguKAguKAgnJldHVybiAhc3RyY21w KHVzZXItPmNsaWVudCwgYik7Cit9CisKK3N0YXRpYyB2b2lkIHAycF9saXN0ZW5fdXNlcl9mcmVl KHZvaWQgKmRhdGEpCit7CivigILigILigILigILigIJzdHJ1Y3QgcDJwX2xpc3Rlbl91c2VyICp1 c2VyID0gZGF0YTsKKwor4oCC4oCC4oCC4oCC4oCCaWYgKHVzZXItPmRpc2Nvbm5lY3Rfd2F0Y2gp CivigILigILigILigILigILigILigILigILigILigILigIJsX2RidXNfcmVtb3ZlX3dhdGNoKGRi dXNfZ2V0X2J1cygpLCB1c2VyLT5kaXNjb25uZWN0X3dhdGNoKTsKKwor4oCC4oCC4oCC4oCC4oCC bF9mcmVlKHVzZXItPmNsaWVudCk7CivigILigILigILigILigIJsX2ZyZWUodXNlcik7Cit9CisK wqBzdGF0aWMgaW5saW5lIGJvb2wgcDJwX3BlZXJfb3BlcmF0aW9uYWwoc3RydWN0IHAycF9wZWVy ICpwZWVyKQrCoHsKwqDigILigILigILigILigIJyZXR1cm4gcGVlciAmJiBwZWVyLT5kZXYtPmNv bm5fbmV0ZGV2ICYmICFwZWVyLT5kZXYtPmRpc2Nvbm5lY3RpbmcgJiYKQEAgLTI3OCw2ICszMDQs OCBAQCBzdGF0aWMgdm9pZCBwMnBfcGVlcl9wdXQodm9pZCAqdXNlcl9kYXRhKQrCoArCoHN0YXRp YyB2b2lkIHAycF9kZXZpY2VfZGlzY292ZXJ5X3N0YXJ0KHN0cnVjdCBwMnBfZGV2aWNlICpkZXYp OwrCoHN0YXRpYyB2b2lkIHAycF9kZXZpY2VfZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHAycF9kZXZp Y2UgKmRldik7CitzdGF0aWMgdm9pZCBwMnBfZGV2aWNlX2xpc3Rlbl9zdGFydChzdHJ1Y3QgcDJw X2RldmljZSAqZGV2KTsKK3N0YXRpYyB2b2lkIHAycF9kZXZpY2VfbGlzdGVuX3N0b3Aoc3RydWN0 IHAycF9kZXZpY2UgKmRldik7CsKgCsKgLyogQ2FsbGVycyBzaG91bGQgcmVzZXJ2ZSAzMiBieXRl cywgNjQgd2l0aCBub24tTlVMTCBAd2ZkX2NsaWVudHMgKi8KwqBzdGF0aWMgc2l6ZV90IHAycF9i dWlsZF93ZmRfaWUoY29uc3Qgc3RydWN0IHAycF93ZmRfcHJvcGVydGllcyAqd2ZkLApAQCAtNzQw LDYgKzc2OCw5IEBAIHN0YXRpYyB2b2lkIHAycF9jb25uZWN0aW9uX3Jlc2V0KHN0cnVjdCBwMnBf ZGV2aWNlICpkZXYpCsKg4oCC4oCC4oCC4oCC4oCCaWYgKGRldi0+ZW5hYmxlZCAmJiAhZGV2LT5z dGFydF9zdG9wX2NtZF9pZCAmJgrCoOKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgiFsX3F1ZXVlX2lzZW1wdHkoZGV2LT5kaXNjb3ZlcnlfdXNlcnMpKQrC oOKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9kZXZpY2VfZGlzY292ZXJ5X3N0 YXJ0KGRldik7CivigILigILigILigILigIJlbHNlIGlmIChkZXYtPmVuYWJsZWQgJiYgIWRldi0+ c3RhcnRfc3RvcF9jbWRfaWQgJiYKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgiFsX3F1ZXVlX2lzZW1wdHkoZGV2LT5saXN0ZW5fdXNlcnMpKQor4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwX2RldmljZV9saXN0ZW5fc3RhcnQoZGV2 KTsKwqB9CsKgCsKgc3RhdGljIHZvaWQgcDJwX2Nvbm5lY3RfZmFpbGVkKHN0cnVjdCBwMnBfZGV2 aWNlICpkZXYpCkBAIC00MTg2LDYgKzQyMTcsMTM0IEBAIHN0YXRpYyB2b2lkIHAycF9kZXZpY2Vf ZGlzY292ZXJ5X3N0b3Aoc3RydWN0IHAycF9kZXZpY2UgKmRldikKwqDigILigILigILigILigIJm cmFtZV93YXRjaF9ncm91cF9yZW1vdmUoZGV2LT53ZGV2X2lkLCBGUkFNRV9HUk9VUF9QMlBfTElT VEVOKTsKwqB9CsKgCitzdGF0aWMgdm9pZCBwMnBfZGV2aWNlX2xpc3Rlbl9yb2NfdGltZW91dChz dHJ1Y3QgbF90aW1lb3V0ICp0aW1lb3V0LAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCdm9pZCAqdXNlcl9kYXRhKQorewor4oCC4oCC4oCC4oCC4oCCc3Ry dWN0IHAycF9kZXZpY2UgKmRldiA9IHVzZXJfZGF0YTsKK+KAguKAguKAguKAguKAgnN0cnVjdCBs X2dlbmxfbXNnICptc2c7CivigILigILigILigILigIJ1aW50MzJfdCBsaXN0ZW5fZnJlcTsKK+KA guKAguKAguKAguKAgnVpbnQzMl90IGR1cmF0aW9uOwor4oCC4oCC4oCC4oCC4oCCdWludDMyX3Qg Y21kX2lkOworCivigILigILigILigILigIJsX3RpbWVvdXRfcmVtb3ZlKGRldi0+c2Nhbl90aW1l b3V0KTsKKwor4oCC4oCC4oCC4oCC4oCCLyoKK+KAguKAguKAguKAguKAgiAqIEluIGxpc3Rlbi1v bmx5IG1vZGUgd2UgY29udGludW91c2x5IGNoYWluIFJPQyBjb21tYW5kcwor4oCC4oCC4oCC4oCC 4oCCICogd2l0aG91dCBldmVyIGVudGVyaW5nIHRoZSBzY2FuIHN0YXRlLgor4oCC4oCC4oCC4oCC 4oCCICovCivigILigILigILigILigIJpZiAoIWRldi0+bGlzdGVuaW5nKQor4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCcmV0dXJuOworCivigILigILigILigILigIJkdXJhdGlvbiA9 IDEwMDA7CisKK+KAguKAguKAguKAguKAgmlmIChkdXJhdGlvbiA+IHdpcGh5X2dldF9tYXhfcm9j X2R1cmF0aW9uKGRldi0+d2lwaHkpKQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC ZHVyYXRpb24gPSB3aXBoeV9nZXRfbWF4X3JvY19kdXJhdGlvbihkZXYtPndpcGh5KTsKKwor4oCC 4oCC4oCC4oCC4oCCbGlzdGVuX2ZyZXEgPSBiYW5kX2NoYW5uZWxfdG9fZnJlcShkZXYtPmxpc3Rl bl9jaGFubmVsLAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCCQkFORF9GUkVRXzJfNF9HSFopOworCivigILigILigILigILigIJtc2cgPSBsX2dlbmxfbXNn X25ld19zaXplZChOTDgwMjExX0NNRF9SRU1BSU5fT05fQ0hBTk5FTCwgNjQpOwor4oCC4oCC4oCC 4oCC4oCCbF9nZW5sX21zZ19hcHBlbmRfYXR0cihtc2csIE5MODAyMTFfQVRUUl9XREVWLCA4LCAm ZGV2LT53ZGV2X2lkKTsKK+KAguKAguKAguKAguKAgmxfZ2VubF9tc2dfYXBwZW5kX2F0dHIobXNn LCBOTDgwMjExX0FUVFJfV0lQSFlfRlJFUSwgNCwKK+KAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgiZsaXN0ZW5fZnJlcSk7 CivigILigILigILigILigIJsX2dlbmxfbXNnX2FwcGVuZF9hdHRyKG1zZywgTkw4MDIxMV9BVFRS X0RVUkFUSU9OLCA0LCAmZHVyYXRpb24pOworCivigILigILigILigILigIJjbWRfaWQgPSBsX2dl bmxfZmFtaWx5X3NlbmQoZGV2LT5ubDgwMjExLCBtc2csIHAycF9kZXZpY2Vfcm9jX2NiLAor4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGV2LCBOVUxMKTsKK+KAguKAguKAguKAguKAgmlm ICghY21kX2lkKQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbF9nZW5sX21zZ191 bnJlZihtc2cpOworCivigILigILigILigILigIJkZXYtPnNjYW5fdGltZW91dCA9IGxfdGltZW91 dF9jcmVhdGVfbXMoZHVyYXRpb24sCivigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigIJwMnBfZGV2aWNlX2xpc3Rlbl9yb2NfdGltZW91dCwKK+KAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmRldiwKK+KAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9zY2FuX3RpbWVvdXRfZGVzdHJv eSk7CivigILigILigILigILigIJkZXYtPmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uOwor4oCC 4oCC4oCC4oCC4oCCZGV2LT5oYXZlX3JvY19jb29raWUgPSBmYWxzZTsKK30KKworc3RhdGljIHZv aWQgcDJwX2RldmljZV9saXN0ZW5fc3RhcnQoc3RydWN0IHAycF9kZXZpY2UgKmRldikKK3sKK+KA guKAguKAguKAguKAgnVpbnQzMl90IGxpc3Rlbl9mcmVxOwor4oCC4oCC4oCC4oCC4oCCc3RydWN0 IGxfZ2VubF9tc2cgKm1zZzsKK+KAguKAguKAguKAguKAgnVpbnQzMl90IGR1cmF0aW9uOwor4oCC 4oCC4oCC4oCC4oCCdWludDMyX3QgY21kX2lkOworCivigILigILigILigILigIJpZiAoZGV2LT5s aXN0ZW5pbmcpCivigILigILigILigILigILigILigILigILigILigILigIJyZXR1cm47CisKK+KA guKAguKAguKAguKAgi8qCivigILigILigILigILigIIgKiBXaS1GaSBQMlAgVGVjaG5pY2FsIFNw ZWNpZmljYXRpb24gdjEuNyBTZWN0aW9uIDMuMS4yLjEuMjoKK+KAguKAguKAguKAguKAgiAqICJU aGUgTGlzdGVuIENoYW5uZWwgc2hhbGwgYmUgY2hvc2VuIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl CivigILigILigILigILigIIgKiBJbi1iYW5kIERldmljZSBEaXNjb3ZlcnkiCivigILigILigILi gILigIIgKi8KK+KAguKAguKAguKAguKAgmRldi0+bGlzdGVuX2NoYW5uZWwgPSBjaGFubmVsc19z b2NpYWxbbF9nZXRyYW5kb21fdWludDMyKCkgJQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCTF9BUlJBWV9TSVpFKGNoYW5uZWxzX3NvY2lhbCldOworCivi gILigILigILigILigIJ3aXBoeV9nZXRfcmVnX2RvbWFpbl9jb3VudHJ5KGRldi0+d2lwaHksCivi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigIIoY2hhciAqKSBkZXYtPmxpc3Rlbl9jb3VudHJ5 KTsKK+KAguKAguKAguKAguKAgmRldi0+bGlzdGVuX2NvdW50cnlbMl0gPSA0O+KAguKAguKAgi8q IFRhYmxlIEUtNCAqLwor4oCC4oCC4oCC4oCC4oCCZGV2LT5saXN0ZW5fb3Blcl9jbGFzcyA9IDgx O+KAguKAgi8qIDIuNCBiYW5kICovCisKK+KAguKAguKAguKAguKAgmZyYW1lX3dhdGNoX2FkZChk ZXYtPndkZXZfaWQsIEZSQU1FX0dST1VQX1AyUF9MSVNURU4sIDB4MDA0MCwKK+KAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgih1aW50OF90ICopICIiLCAw LCBmYWxzZSwKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAgnAycF9kZXZpY2VfcHJvYmVfY2IsIGRldiwgTlVMTCk7CivigILigILigILigILigIJmcmFt ZV93YXRjaF9hZGQoZGV2LT53ZGV2X2lkLCBGUkFNRV9HUk9VUF9QMlBfTElTVEVOLCAweDAwZDAs CivigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJwMnBf ZnJhbWVfZ29fbmVnX3JlcS5kYXRhLCBwMnBfZnJhbWVfZ29fbmVnX3JlcS5sZW4sCivigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJmYWxzZSwgcDJwX2Rl dmljZV9nb19uZWdvdGlhdGlvbl9yZXFfY2IsIGRldiwgTlVMTCk7CisKK+KAguKAguKAguKAguKA gmRldi0+bGlzdGVuaW5nID0gdHJ1ZTsKKwor4oCC4oCC4oCC4oCC4oCCLyoKK+KAguKAguKAguKA guKAgiAqIFVzZSBhIGZpeGVkIGR1cmF0aW9uIGNhcHBlZCBieSBkcml2ZXIgbWF4LiBDb250aW51 b3VzbHkgY2hhaW4KK+KAguKAguKAguKAguKAgiAqIFJPQyBjb21tYW5kcyB2aWEgcDJwX2Rldmlj ZV9saXN0ZW5fcm9jX3RpbWVvdXQgc28gdGhlIGRldmljZQor4oCC4oCC4oCC4oCC4oCCICogc3Rh eXMgZGlzY292ZXJhYmxlLgor4oCC4oCC4oCC4oCC4oCCICovCivigILigILigILigILigIJkdXJh dGlvbiA9IDEwMDA7CisKK+KAguKAguKAguKAguKAgmlmIChkdXJhdGlvbiA+IHdpcGh5X2dldF9t YXhfcm9jX2R1cmF0aW9uKGRldi0+d2lwaHkpKQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCCZHVyYXRpb24gPSB3aXBoeV9nZXRfbWF4X3JvY19kdXJhdGlvbihkZXYtPndpcGh5KTsK Kwor4oCC4oCC4oCC4oCC4oCCbGlzdGVuX2ZyZXEgPSBiYW5kX2NoYW5uZWxfdG9fZnJlcShkZXYt Pmxpc3Rlbl9jaGFubmVsLAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCQkFORF9GUkVRXzJfNF9HSFopOworCivigILigILigILigILigIJtc2cgPSBsX2dl bmxfbXNnX25ld19zaXplZChOTDgwMjExX0NNRF9SRU1BSU5fT05fQ0hBTk5FTCwgNjQpOwor4oCC 4oCC4oCC4oCC4oCCbF9nZW5sX21zZ19hcHBlbmRfYXR0cihtc2csIE5MODAyMTFfQVRUUl9XREVW LCA4LCAmZGV2LT53ZGV2X2lkKTsKK+KAguKAguKAguKAguKAgmxfZ2VubF9tc2dfYXBwZW5kX2F0 dHIobXNnLCBOTDgwMjExX0FUVFJfV0lQSFlfRlJFUSwgNCwKK+KAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgiZsaXN0ZW5f ZnJlcSk7CivigILigILigILigILigIJsX2dlbmxfbXNnX2FwcGVuZF9hdHRyKG1zZywgTkw4MDIx MV9BVFRSX0RVUkFUSU9OLCA0LCAmZHVyYXRpb24pOworCivigILigILigILigILigIJjbWRfaWQg PSBsX2dlbmxfZmFtaWx5X3NlbmQoZGV2LT5ubDgwMjExLCBtc2csIHAycF9kZXZpY2Vfcm9jX2Ni LAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGV2LCBOVUxMKTsKK+KAguKAguKAguKA guKAgmlmICghY21kX2lkKQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbF9nZW5s X21zZ191bnJlZihtc2cpOworCivigILigILigILigILigIJkZXYtPnNjYW5fdGltZW91dCA9IGxf dGltZW91dF9jcmVhdGVfbXMoZHVyYXRpb24sCivigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigIJwMnBfZGV2aWNlX2xpc3Rlbl9yb2NfdGltZW91dCwKK+KAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmRldiwKK+KAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9zY2FuX3RpbWVvdXRf ZGVzdHJveSk7CivigILigILigILigILigIJkZXYtPmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9u Owor4oCC4oCC4oCC4oCC4oCCZGV2LT5oYXZlX3JvY19jb29raWUgPSBmYWxzZTsKKwor4oCC4oCC 4oCC4oCC4oCCbF9kZWJ1ZygiUDJQIExpc3RlbiBzdGFydGVkIG9uIGNoYW5uZWwgJXUgZm9yICV1 IG1zIiwKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgih1bnNpZ25lZCBpbnQpIGRl di0+bGlzdGVuX2NoYW5uZWwsIGR1cmF0aW9uKTsKK30KKworc3RhdGljIHZvaWQgcDJwX2Rldmlj ZV9saXN0ZW5fc3RvcChzdHJ1Y3QgcDJwX2RldmljZSAqZGV2KQorewor4oCC4oCC4oCC4oCC4oCC aWYgKCFkZXYtPmxpc3RlbmluZykKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnJl dHVybjsKKwor4oCC4oCC4oCC4oCC4oCCZGV2LT5saXN0ZW5pbmcgPSBmYWxzZTsKKwor4oCC4oCC 4oCC4oCC4oCCaWYgKGRldi0+c2Nhbl90aW1lb3V0KQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCbF90aW1lb3V0X3JlbW92ZShkZXYtPnNjYW5fdGltZW91dCk7CisKK+KAguKAguKA guKAguKAgnAycF9kZXZpY2Vfcm9jX2NhbmNlbChkZXYpOwor4oCC4oCC4oCC4oCC4oCCZnJhbWVf d2F0Y2hfZ3JvdXBfcmVtb3ZlKGRldi0+d2Rldl9pZCwgRlJBTUVfR1JPVVBfUDJQX0xJU1RFTik7 CisKK+KAguKAguKAguKAguKAgmxfZGVidWcoIlAyUCBMaXN0ZW4gc3RvcHBlZCIpOworfQorCsKg c3RhdGljIHZvaWQgcDJwX2RldmljZV9lbmFibGVfY2Ioc3RydWN0IGxfZ2VubF9tc2cgKm1zZywg dm9pZCAqdXNlcl9kYXRhKQrCoHsKwqDigILigILigILigILigIJzdHJ1Y3QgcDJwX2RldmljZSAq ZGV2ID0gdXNlcl9kYXRhOwpAQCAtNDIwMSw2ICs0MzYwLDggQEAgc3RhdGljIHZvaWQgcDJwX2Rl dmljZV9lbmFibGVfY2Ioc3RydWN0IGxfZ2VubF9tc2cgKm1zZywgdm9pZCAqdXNlcl9kYXRhKQrC oArCoOKAguKAguKAguKAguKAgmlmIChkZXYtPmVuYWJsZWQgJiYgIWxfcXVldWVfaXNlbXB0eShk ZXYtPmRpc2NvdmVyeV91c2VycykpCsKg4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC cDJwX2RldmljZV9kaXNjb3Zlcnlfc3RhcnQoZGV2KTsKK+KAguKAguKAguKAguKAgmVsc2UgaWYg KGRldi0+ZW5hYmxlZCAmJiAhbF9xdWV1ZV9pc2VtcHR5KGRldi0+bGlzdGVuX3VzZXJzKSkKK+KA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9kZXZpY2VfbGlzdGVuX3N0YXJ0KGRl dik7CsKgCsKgZG9uZToKwqDigILigILigILigILigIJkZXYtPnBlbmRpbmdfY29tcGxldGUoZGJ1 c19nZXRfYnVzKCksIG1lc3NhZ2UsCkBAIC00MjM3LDggKzQzOTgsMTAgQEAgc3RhdGljIHZvaWQg cDJwX2RldmljZV9zdGFydF9zdG9wKHN0cnVjdCBwMnBfZGV2aWNlICpkZXYsCsKgewrCoOKAguKA guKAguKAguKAgnN0cnVjdCBsX2dlbmxfbXNnICpjbWQ7CsKgCi3igILigILigILigILigIJpZiAo ZGV2LT5lbmFibGVkKQor4oCC4oCC4oCC4oCC4oCCaWYgKGRldi0+ZW5hYmxlZCkgewrCoOKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9kZXZpY2VfZGlzY292ZXJ5X3N0b3AoZGV2 KTsKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAycF9kZXZpY2VfbGlzdGVuX3N0 b3AoZGV2KTsKK+KAguKAguKAguKAguKAgn0KwqAKwqDigILigILigILigILigIJpZiAoIWRldi0+ ZW5hYmxlZCkKwqDigILigILigILigILigILigILigILigILigILigILigIJjbWQgPSBsX2dlbmxf bXNnX25ld19zaXplZChOTDgwMjExX0NNRF9TVEFSVF9QMlBfREVWSUNFLCAxNik7CkBAIC00NDU2 LDEwICs0NjE5LDEyIEBAIHN0YXRpYyB2b2lkIHAycF9kZXZpY2VfZnJlZSh2b2lkICp1c2VyX2Rh dGEpCsKg4oCC4oCC4oCC4oCC4oCCfQrCoArCoOKAguKAguKAguKAguKAgnAycF9kZXZpY2VfZGlz Y292ZXJ5X3N0b3AoZGV2KTsKK+KAguKAguKAguKAguKAgnAycF9kZXZpY2VfbGlzdGVuX3N0b3Ao ZGV2KTsKwqDigILigILigILigILigIJwMnBfY29ubmVjdGlvbl9yZXNldChkZXYpOwrCoOKAguKA guKAguKAguKAgmxfZGJ1c191bnJlZ2lzdGVyX29iamVjdChkYnVzX2dldF9idXMoKSwgcDJwX2Rl dmljZV9nZXRfcGF0aChkZXYpKTsKwqDigILigILigILigILigIJsX3F1ZXVlX2Rlc3Ryb3koZGV2 LT5wZWVyX2xpc3QsIHAycF9wZWVyX3B1dCk7CsKg4oCC4oCC4oCC4oCC4oCCbF9xdWV1ZV9kZXN0 cm95KGRldi0+ZGlzY292ZXJ5X3VzZXJzLCBwMnBfZGlzY292ZXJ5X3VzZXJfZnJlZSk7CivigILi gILigILigILigIJsX3F1ZXVlX2Rlc3Ryb3koZGV2LT5saXN0ZW5fdXNlcnMsIHAycF9saXN0ZW5f dXNlcl9mcmVlKTsKwqDigILigILigILigILigIJsX2dlbmxfZmFtaWx5X2ZyZWUoZGV2LT5ubDgw MjExKTsgLyogQ2FuY2VscyBkZXYtPnN0YXJ0X3N0b3BfY21kX2lkICovCsKg4oCC4oCC4oCC4oCC 4oCCc2Nhbl93ZGV2X3JlbW92ZShkZXYtPndkZXZfaWQpOwrCoOKAguKAguKAguKAguKAgmxfZnJl ZShkZXYpOwpAQCAtNDYzOCw2ICs0ODAzLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgbF9kYnVzX21lc3Nh Z2UgKnAycF9kZXZpY2VfcmVxdWVzdF9kaXNjb3Zlcnkoc3RydWN0IGxfZGJ1cyAqZGJ1cywKwqDi gILigILigILigILigIJpZiAoIWxfZGJ1c19tZXNzYWdlX2dldF9hcmd1bWVudHMobWVzc2FnZSwg IiIpKQrCoOKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnJldHVybiBkYnVzX2Vycm9y X2ludmFsaWRfYXJncyhtZXNzYWdlKTsKwqAKK+KAguKAguKAguKAguKAgi8qCivigILigILigILi gILigIIgKiBEaXNjb3ZlcnkgYW5kIExpc3RlbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiDCoEEg Y2xpZW50IHNob3VsZAor4oCC4oCC4oCC4oCC4oCCICogcmVsZWFzZSBsaXN0ZW4gYmVmb3JlIHJl cXVlc3RpbmcgZGlzY292ZXJ5IG1vZGUuCivigILigILigILigILigIIgKi8KK+KAguKAguKAguKA guKAgmlmICghbF9xdWV1ZV9pc2VtcHR5KGRldi0+bGlzdGVuX3VzZXJzKSkKK+KAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAgnJldHVybiBkYnVzX2Vycm9yX2J1c3kobWVzc2FnZSk7CisK wqDigILigILigILigILigIJpZiAobF9xdWV1ZV9maW5kKGRldi0+ZGlzY292ZXJ5X3VzZXJzLCBw MnBfZGlzY292ZXJ5X3VzZXJfbWF0Y2gsCsKg4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbF9kYnVzX21lc3NhZ2VfZ2V0 X3NlbmRlcihtZXNzYWdlKSkpCsKg4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcmV0 dXJuIGRidXNfZXJyb3JfYWxyZWFkeV9leGlzdHMobWVzc2FnZSk7CkBAIC00NjkxLDYgKzQ4NjMs MTA0IEBAIHN0YXRpYyBzdHJ1Y3QgbF9kYnVzX21lc3NhZ2UgKnAycF9kZXZpY2VfcmVsZWFzZV9k aXNjb3Zlcnkoc3RydWN0IGxfZGJ1cyAqZGJ1cywKwqDigILigILigILigILigIJyZXR1cm4gbF9k YnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obWVzc2FnZSk7CsKgfQrCoAorc3RhdGljIHZv aWQgcDJwX2RldmljZV9saXN0ZW5fZGlzY29ubmVjdChzdHJ1Y3QgbF9kYnVzICpkYnVzLCB2b2lk ICp1c2VyX2RhdGEpCit7CivigILigILigILigILigIJzdHJ1Y3QgcDJwX2xpc3Rlbl91c2VyICp1 c2VyID0gdXNlcl9kYXRhOwor4oCC4oCC4oCC4oCC4oCCc3RydWN0IHAycF9kZXZpY2UgKmRldiA9 IHVzZXItPmRldjsKKwor4oCC4oCC4oCC4oCC4oCCbF9kZWJ1ZygiUDJQIExpc3RlbiB1c2VyICVz IGRpc2Nvbm5lY3RlZCIsIHVzZXItPmNsaWVudCk7CisKK+KAguKAguKAguKAguKAgmxfcXVldWVf cmVtb3ZlKGRldi0+bGlzdGVuX3VzZXJzLCB1c2VyKTsKK+KAguKAguKAguKAguKAgnAycF9saXN0 ZW5fdXNlcl9mcmVlKHVzZXIpOworCivigILigILigILigILigIJpZiAobF9xdWV1ZV9pc2VtcHR5 KGRldi0+bGlzdGVuX3VzZXJzKSkKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnAy cF9kZXZpY2VfbGlzdGVuX3N0b3AoZGV2KTsKK30KKworc3RhdGljIHZvaWQgcDJwX2RldmljZV9s aXN0ZW5fZGVzdHJveSh2b2lkICp1c2VyX2RhdGEpCit7CivigILigILigILigILigIJzdHJ1Y3Qg cDJwX2xpc3Rlbl91c2VyICp1c2VyID0gdXNlcl9kYXRhOworCivigILigILigILigILigIJ1c2Vy LT5kaXNjb25uZWN0X3dhdGNoID0gMDsKK30KKworc3RhdGljIHN0cnVjdCBsX2RidXNfbWVzc2Fn ZSAqcDJwX2RldmljZV9yZXF1ZXN0X2xpc3RlbihzdHJ1Y3QgbF9kYnVzICpkYnVzLAor4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCc3RydWN0IGxfZGJ1c19t ZXNzYWdlICptZXNzYWdlLAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCdm9pZCAqdXNlcl9kYXRhKQorewor4oCC4oCC4oCC4oCC4oCCc3RydWN0IHAycF9k ZXZpY2UgKmRldiA9IHVzZXJfZGF0YTsKK+KAguKAguKAguKAguKAgnN0cnVjdCBwMnBfbGlzdGVu X3VzZXIgKnVzZXI7CivigILigILigILigILigIJib29sIGZpcnN0X3VzZXIgPSBsX3F1ZXVlX2lz ZW1wdHkoZGV2LT5saXN0ZW5fdXNlcnMpOworCivigILigILigILigILigIJpZiAoIWxfZGJ1c19t ZXNzYWdlX2dldF9hcmd1bWVudHMobWVzc2FnZSwgIiIpKQor4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCCcmV0dXJuIGRidXNfZXJyb3JfaW52YWxpZF9hcmdzKG1lc3NhZ2UpOworCivi gILigILigILigILigIIvKgor4oCC4oCC4oCC4oCC4oCCICogTGlzdGVuIGFuZCBEaXNjb3Zlcnkg YXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4gwqBBIGNsaWVudCBzaG91bGQKK+KAguKAguKAguKAguKA giAqIHJlbGVhc2UgZGlzY292ZXJ5IGJlZm9yZSByZXF1ZXN0aW5nIGxpc3RlbiBtb2RlLgor4oCC 4oCC4oCC4oCC4oCCICovCivigILigILigILigILigIJpZiAoIWxfcXVldWVfaXNlbXB0eShkZXYt PmRpc2NvdmVyeV91c2VycykpCivigILigILigILigILigILigILigILigILigILigILigIJyZXR1 cm4gZGJ1c19lcnJvcl9idXN5KG1lc3NhZ2UpOworCivigILigILigILigILigIJpZiAobF9xdWV1 ZV9maW5kKGRldi0+bGlzdGVuX3VzZXJzLCBwMnBfbGlzdGVuX3VzZXJfbWF0Y2gsCivigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigIJsX2RidXNfbWVzc2FnZV9nZXRfc2VuZGVyKG1lc3NhZ2UpKSkKK+KAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgnJldHVybiBkYnVzX2Vycm9yX2FscmVhZHlfZXhpc3RzKG1lc3Nh Z2UpOworCivigILigILigILigILigIJpZiAoIWRldi0+bGlzdGVuX3VzZXJzKQor4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCZGV2LT5saXN0ZW5fdXNlcnMgPSBsX3F1ZXVlX25ldygp OworCivigILigILigILigILigIJ1c2VyID0gbF9uZXcoc3RydWN0IHAycF9saXN0ZW5fdXNlciwg MSk7CivigILigILigILigILigIJ1c2VyLT5jbGllbnQgPSBsX3N0cmR1cChsX2RidXNfbWVzc2Fn ZV9nZXRfc2VuZGVyKG1lc3NhZ2UpKTsKK+KAguKAguKAguKAguKAgnVzZXItPmRldiA9IGRldjsK K+KAguKAguKAguKAguKAgnVzZXItPmRpc2Nvbm5lY3Rfd2F0Y2ggPSBsX2RidXNfYWRkX2Rpc2Nv bm5lY3Rfd2F0Y2goZGJ1cywKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAgnVzZXItPmNsaWVudCwKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgnAycF9kZXZpY2VfbGlzdGVuX2Rpc2Nvbm5lY3QsCivigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigIJ1c2VyLAor4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwX2RldmljZV9saXN0ZW5fZGVz dHJveSk7CivigILigILigILigILigIJsX3F1ZXVlX3B1c2hfdGFpbChkZXYtPmxpc3Rlbl91c2Vy cywgdXNlcik7CisKK+KAguKAguKAguKAguKAgmlmIChmaXJzdF91c2VyICYmICFkZXYtPmNvbm5f cGVlciAmJiBkZXYtPmVuYWJsZWQpCivigILigILigILigILigILigILigILigILigILigILigIJw MnBfZGV2aWNlX2xpc3Rlbl9zdGFydChkZXYpOworCivigILigILigILigILigIJyZXR1cm4gbF9k YnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obWVzc2FnZSk7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgbF9kYnVzX21lc3NhZ2UgKnAycF9kZXZpY2VfcmVsZWFzZV9saXN0ZW4oc3RydWN0IGxfZGJ1 cyAqZGJ1cywKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA gnN0cnVjdCBsX2RidXNfbWVzc2FnZSAqbWVzc2FnZSwKK+KAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAgnZvaWQgKnVzZXJfZGF0YSkKK3sKK+KAguKAguKAguKA guKAgnN0cnVjdCBwMnBfZGV2aWNlICpkZXYgPSB1c2VyX2RhdGE7CivigILigILigILigILigIJz dHJ1Y3QgcDJwX2xpc3Rlbl91c2VyICp1c2VyOworCivigILigILigILigILigIJpZiAoIWxfZGJ1 c19tZXNzYWdlX2dldF9hcmd1bWVudHMobWVzc2FnZSwgIiIpKQor4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCCcmV0dXJuIGRidXNfZXJyb3JfaW52YWxpZF9hcmdzKG1lc3NhZ2UpOwor CivigILigILigILigILigIJ1c2VyID0gbF9xdWV1ZV9yZW1vdmVfaWYoZGV2LT5saXN0ZW5fdXNl cnMsCivigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigIJwMnBfbGlzdGVuX3VzZXJfbWF0Y2gsCivigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJsX2Ri dXNfbWVzc2FnZV9nZXRfc2VuZGVyKG1lc3NhZ2UpKTsKK+KAguKAguKAguKAguKAgmlmICghdXNl cikKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgnJldHVybiBkYnVzX2Vycm9yX25v dF9mb3VuZChtZXNzYWdlKTsKKwor4oCC4oCC4oCC4oCC4oCCcDJwX2xpc3Rlbl91c2VyX2ZyZWUo dXNlcik7CisKK+KAguKAguKAguKAguKAgmlmIChsX3F1ZXVlX2lzZW1wdHkoZGV2LT5saXN0ZW5f dXNlcnMpICYmICFkZXYtPmNvbm5fcGVlcikKK+KAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAgnAycF9kZXZpY2VfbGlzdGVuX3N0b3AoZGV2KTsKKwor4oCC4oCC4oCC4oCC4oCCcmV0dXJu IGxfZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1lc3NhZ2UpOworfQorCitzdGF0aWMg Ym9vbCBwMnBfZGV2aWNlX2dldF9saXN0ZW5fY2hhbm5lbChzdHJ1Y3QgbF9kYnVzICpkYnVzLAor 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCc3RydWN0IGxfZGJ1c19tZXNzYWdlICptZXNz YWdlLAor4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCc3RydWN0IGxfZGJ1c19tZXNzYWdl X2J1aWxkZXIgKmJ1aWxkZXIsCivigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJ2b2lkICp1 c2VyX2RhdGEpCit7CivigILigILigILigILigIJzdHJ1Y3QgcDJwX2RldmljZSAqZGV2ID0gdXNl cl9kYXRhOwor4oCC4oCC4oCC4oCC4oCCdWludDhfdCBjaGFubmVsID0gZGV2LT5saXN0ZW5pbmcg PyBkZXYtPmxpc3Rlbl9jaGFubmVsIDogMDsKKwor4oCC4oCC4oCC4oCC4oCCbF9kYnVzX21lc3Nh Z2VfYnVpbGRlcl9hcHBlbmRfYmFzaWMoYnVpbGRlciwgJ3knLCAmY2hhbm5lbCk7CivigILigILi gILigILigIJyZXR1cm4gdHJ1ZTsKK30KKwrCoHN0YXRpYyB2b2lkIHAycF9pbnRlcmZhY2Vfc2V0 dXAoc3RydWN0IGxfZGJ1c19pbnRlcmZhY2UgKmludGVyZmFjZSkKwqB7CsKg4oCC4oCC4oCC4oCC 4oCCbF9kYnVzX2ludGVyZmFjZV9wcm9wZXJ0eShpbnRlcmZhY2UsICJFbmFibGVkIiwgMCwgImIi LApAQCAtNDcwMSwxMiArNDk3MSwxOCBAQCBzdGF0aWMgdm9pZCBwMnBfaW50ZXJmYWNlX3NldHVw KHN0cnVjdCBsX2RidXNfaW50ZXJmYWNlICppbnRlcmZhY2UpCsKg4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCCcDJwX2RldmljZV9zZXRfbmFtZSk7CsKg4oCC4oCC4oCC4oCC4oCCbF9kYnVz X2ludGVyZmFjZV9wcm9wZXJ0eShpbnRlcmZhY2UsICJBdmFpbGFibGVDb25uZWN0aW9ucyIsIDAs ICJxIiwKwqDigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigIJwMnBfZGV2aWNlX2dldF9hdmFp bF9jb25ucywgTlVMTCk7CivigILigILigILigILigIJsX2RidXNfaW50ZXJmYWNlX3Byb3BlcnR5 KGludGVyZmFjZSwgIkxpc3RlbkNoYW5uZWwiLCAwLCAieSIsCivigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigIJwMnBfZGV2aWNlX2dldF9saXN0ZW5fY2hhbm5lbCwgTlVMTCk7CsKg4oCC4oCC 4oCC4oCC4oCCbF9kYnVzX2ludGVyZmFjZV9tZXRob2QoaW50ZXJmYWNlLCAiR2V0UGVlcnMiLCAw LArCoOKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgnAycF9kZXZpY2VfZ2V0X3BlZXJzLCAiYShvbikiLCAiIiwgInBlZXJz Iik7CsKg4oCC4oCC4oCC4oCC4oCCbF9kYnVzX2ludGVyZmFjZV9tZXRob2QoaW50ZXJmYWNlLCAi UmVxdWVzdERpc2NvdmVyeSIsIDAsCsKg4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCcDJwX2RldmljZV9yZXF1ZXN0X2Rp c2NvdmVyeSwgIiIsICIiKTsKwqDigILigILigILigILigIJsX2RidXNfaW50ZXJmYWNlX21ldGhv ZChpbnRlcmZhY2UsICJSZWxlYXNlRGlzY292ZXJ5IiwgMCwKwqDigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJwMnBfZGV2 aWNlX3JlbGVhc2VfZGlzY292ZXJ5LCAiIiwgIiIpOwor4oCC4oCC4oCC4oCC4oCCbF9kYnVzX2lu dGVyZmFjZV9tZXRob2QoaW50ZXJmYWNlLCAiUmVxdWVzdExpc3RlbiIsIDAsCivigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIJwMnBfZGV2aWNlX3JlcXVlc3RfbGlzdGVuLCAiIiwgIiIpOwor4oCC4oCC4oCC4oCC4oCCbF9k YnVzX2ludGVyZmFjZV9tZXRob2QoaW50ZXJmYWNlLCAiUmVsZWFzZUxpc3RlbiIsIDAsCivigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigIJwMnBfZGV2aWNlX3JlbGVhc2VfbGlzdGVuLCAiIiwgIiIpOwrCoH0KwqAKwqBzdGF0 aWMgYm9vbCBwMnBfcGVlcl9nZXRfbmFtZShzdHJ1Y3QgbF9kYnVzICpkYnVzLAotLcKgCjIuMzQu MQoK