From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0792B6E14B for ; Thu, 4 Apr 2019 13:18:20 +0000 (UTC) From: Daniel Mrzyglod Date: Thu, 4 Apr 2019 15:18:05 +0200 Message-Id: <20190404131805.18110-4-daniel.t.mrzyglod@intel.com> In-Reply-To: <20190404131805.18110-1-daniel.t.mrzyglod@intel.com> References: <20190404131805.18110-1-daniel.t.mrzyglod@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 3/3] lib/intel_mmio: Remove global igt_global_mmio List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org List-ID: SW4gZnV0dXJlIHRlc3RzIHRoZXJlIHdpbGwgYmUgbXVsdGlwbGUgUENJIGRldmljZXMgcnVuIGF0 IG9uY2UuCkl0J3MgZ29vZCBmb3IgdGhlbSB0byBoYXZlIGRpZmZlcmVudCBtbWlvIHNwYWNlLgoK U2lnbmVkLW9mZi1ieTogRGFuaWVsIE1yenlnbG9kIDxkYW5pZWwudC5tcnp5Z2xvZEBpbnRlbC5j b20+Ci0tLQogYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jICAgICAgfCAgMTEgKy0KIGJlbmNobWFy a3MvZ2VtX3dzaW0uYyAgICAgICAgIHwgICA4ICstCiBsaWIvaW50ZWxfaW8uaCAgICAgICAgICAg ICAgICB8ICA5MyArKysrKysrLS0tLS0KIGxpYi9pbnRlbF9pb3NmLmMgICAgICAgICAgICAgIHwg IDgyICsrKysrKystLS0tCiBsaWIvaW50ZWxfbW1pby5jICAgICAgICAgICAgICB8IDIwNiArKysr KysrKysrKysrKystLS0tLS0tLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMgfCAg MTAgKy0KIHRlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyAgIHwgIDE0ICstCiB0ZXN0cy9pOTE1 L2k5MTVfcG1fbHBzcC5jICAgICB8ICAgOCArLQogdG9vbHMvaW50ZWxfYXVkaW9fZHVtcC5jICAg ICAgfCAyNjcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogdG9vbHMvaW50ZWxf YmFja2xpZ2h0LmMgICAgICAgfCAgMTMgKy0KIHRvb2xzL2ludGVsX2Rpc3BsYXlfcG9sbGVyLmMg IHwgIDEzICstCiB0b29scy9pbnRlbF9mb3JjZXdha2VkLmMgICAgICB8ICAxMSArLQogdG9vbHMv aW50ZWxfZ3B1X3RpbWUuYyAgICAgICAgfCAgIDcgKy0KIHRvb2xzL2ludGVsX2luZm9mcmFtZXMu YyAgICAgIHwgIDc0ICsrKysrLS0tLS0KIHRvb2xzL2ludGVsX2wzX3Bhcml0eS5jICAgICAgIHwg IDEyICstCiB0b29scy9pbnRlbF9saWQuYyAgICAgICAgICAgICB8ICAgNSArLQogdG9vbHMvaW50 ZWxfcGFuZWxfZml0dGVyLmMgICAgfCAgMjkgKystLQogdG9vbHMvaW50ZWxfcGVyZl9jb3VudGVy cy5jICAgfCAgMTEgKy0KIHRvb2xzL2ludGVsX3JlZy5jICAgICAgICAgICAgIHwgIDMzICsrKy0t CiB0b29scy9pbnRlbF9yZWdfY2hlY2tlci5jICAgICB8ICAgNiArLQogdG9vbHMvaW50ZWxfd2F0 ZXJtYXJrLmMgICAgICAgfCAgMzcgKystLS0KIDIxIGZpbGVzIGNoYW5nZWQsIDUyNyBpbnNlcnRp b25zKCspLCA0MjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fbGF0 ZW5jeS5jIGIvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCmluZGV4IGMzZmM0YmYwLi5lYTU4MDk4 ZCAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9nZW1fbGF0ZW5jeS5jCisrKyBiL2JlbmNobWFya3Mv Z2VtX2xhdGVuY3kuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHN5cy9wb2xsLmg+CiAj aW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CiAjaW5jbHVkZSAiZHJtLmgiCisjaW5jbHVkZSAiaWd0 X2RldmljZS5oIgogCiAjZGVmaW5lIExPQ0FMX0k5MTVfRVhFQ19GRU5DRV9JTiAgICAgICAgICAg ICAgKDE8PDE2KQogI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfRkVOQ0VfT1VUICAgICAgICAgICAg ICgxPDwxNykKQEAgLTU1LDkgKzU2LDEyIEBACiBzdGF0aWMgaW50IGRvbmU7CiBzdGF0aWMgaW50 IGZkOwogc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90ICp0aW1lc3RhbXBfcmVnOworc3RydWN0IG1t aW9fZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAKLSNkZWZpbmUgUkVHKHgpICh2b2xhdGlsZSB1aW50 MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHgpCi0jZGVmaW5lIFJF R19PRkZTRVQoeCkgKCh2b2xhdGlsZSBjaGFyICopKHgpIC0gKHZvbGF0aWxlIGNoYXIgKilpZ3Rf Z2xvYmFsX21taW8pCisjZGVmaW5lIFJFRyh4KSBcCisJKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2 b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvLmlndF9tbWlvICsgeCkKKyNkZWZpbmUgUkVH X09GRlNFVCh4KSBcCisJKCh2b2xhdGlsZSBjaGFyICopKHgpIC0gKHZvbGF0aWxlIGNoYXIgKilp Z3RfZ2xvYmFsX21taW8uaWd0X21taW8pCiAKICNpZiBkZWZpbmVkKF9fVVNFX1hPUEVOMkspICYm IGRlZmluZWQoZ2VuN19zYWZlX21taW8pCiBzdGF0aWMgcHRocmVhZF9zcGlubG9ja190IHRpbWVz dGFtcF9sb2NrOwpAQCAtNDU2LDcgKzQ2MCw4IEBAIHN0YXRpYyBpbnQgcnVuKGludCBzZWNvbmRz LAogCWlmIChnZW4gPCA2KQogCQlyZXR1cm4gSUdUX0VYSVRfU0tJUDsgLyogTmVlZHMgQkNTIHRp bWVzdGFtcCAqLwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpZ3RfZGV2 aWNlX2dldF9wY2lfZGV2aWNlKGZkKSwgZmFsc2UsIGZkLAorCQkJCSAgICZpZ3RfZ2xvYmFsX21t aW8pOwogCiAJaWYgKGdlbiA9PSA2KQogCQl0aW1lc3RhbXBfcmVnID0gUkVHKFJDU19USU1FU1RB TVApOwpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1f d3NpbS5jCmluZGV4IGFmYjk2NDRkLi4yNzQxODJhMyAxMDA2NDQKLS0tIGEvYmVuY2htYXJrcy9n ZW1fd3NpbS5jCisrKyBiL2JlbmNobWFya3MvZ2VtX3dzaW0uYwpAQCAtNTAsNiArNTAsNyBAQAog CiAjaW5jbHVkZSAiaW50ZWxfaW8uaCIKICNpbmNsdWRlICJpZ3RfYXV4LmgiCisjaW5jbHVkZSAi aWd0X2RldmljZS5oIgogI2luY2x1ZGUgImlndF9yYW5kLmgiCiAjaW5jbHVkZSAiaWd0X3BlcmYu aCIKICNpbmNsdWRlICJzd19zeW5jLmgiCkBAIC01Nyw2ICs1OCw3IEBACiAKICNpbmNsdWRlICJl d21hLmgiCiAKK3N0cnVjdCBtbWlvX2RhdGEgaWd0X2dsb2JhbF9tbWlvOwogI2RlZmluZSBMT0NB TF9JOTE1X0VYRUNfRkVOQ0VfSU4gICAgICAgICAgICAgICgxPDwxNikKICNkZWZpbmUgTE9DQUxf STkxNV9FWEVDX0ZFTkNFX09VVCAgICAgICAgICAgICAoMTw8MTcpCiAKQEAgLTIyOSw3ICsyMzEs OCBAQCBzdGF0aWMgaW50IGZkOwogI2RlZmluZSBTRVFOT19PRkZTRVQoZW5naW5lKSAoU0VRTk9f SURYKGVuZ2luZSkgKiBzaXplb2YodWludDMyX3QpKQogCiAjZGVmaW5lIFJDU19USU1FU1RBTVAg KDB4MjAwMCArIDB4MzU4KQotI2RlZmluZSBSRUcoeCkgKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2 b2xhdGlsZSBjaGFyICopaWd0X2dsb2JhbF9tbWlvICsgeCkKKyNkZWZpbmUgUkVHKHgpIFwKKwko dm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFsX21taW8uaWd0 X21taW8gKyB4KQogCiBzdGF0aWMgY29uc3QgY2hhciAqcmluZ19zdHJfbWFwW05VTV9FTkdJTkVT XSA9IHsKIAlbUkNTXSA9ICJSQ1MiLApAQCAtMjIyMyw3ICsyMjI2LDggQEAgc3RhdGljIHZvaWQg aW5pdF9jbG9ja3Modm9pZCkKIAl1aW50MzJfdCByY3Nfc3RhcnQsIHJjc19lbmQ7CiAJZG91Ymxl IG92ZXJoZWFkLCB0OwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3Bj aV9kZXZpY2UoKSwgZmFsc2UsIGZkKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpZ3Rf ZGV2aWNlX2dldF9wY2lfZGV2aWNlKGZkKSwgZmFsc2UsIGZkLAorCQkJCSAgICZpZ3RfZ2xvYmFs X21taW8pOwogCiAJaWYgKHZlcmJvc2UgPD0gMSkKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbGli L2ludGVsX2lvLmggYi9saWIvaW50ZWxfaW8uaAppbmRleCA2MDE0YzQ4NS4uMzVmYWI4ZTggMTAw NjQ0Ci0tLSBhL2xpYi9pbnRlbF9pby5oCisrKyBiL2xpYi9pbnRlbF9pby5oCkBAIC0zMCwzNyAr MzAsNjcgQEAKIAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHBjaWFjY2Vzcy5oPgor I2luY2x1ZGUgPHN0ZGJvb2wuaD4KIAogLyogcmVnaXN0ZXIgYWNjZXNzIGhlbHBlcnMgZnJvbSBp bnRlbF9tbWlvLmMgKi8KLWV4dGVybiB2b2lkICppZ3RfZ2xvYmFsX21taW87Ci12b2lkIGludGVs X21taW9fdXNlX3BjaV9iYXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYpOwotdm9pZCBpbnRl bF9tbWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSk7CiAKLWludCBpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCk7 Ci12b2lkIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKHZvaWQpOwotdWludDMyX3QgaW50ZWxf cmVnaXN0ZXJfcmVhZCh1aW50MzJfdCByZWcpOwotdm9pZCBpbnRlbF9yZWdpc3Rlcl93cml0ZSh1 aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX25l ZWRzX2Zha2V3YWtlKHZvaWQpOworc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlIHsKKwl1aW50 MzJfdCBiYXNlOworCXVpbnQzMl90IHNpemU7CisJdWludDMyX3QgZmxhZ3M7Cit9OworCitzdHJ1 Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKKwlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1h cDsKKwl1aW50MzJfdCB0b3A7CisJdWludDMyX3QgYWxpZ25tZW50X21hc2s7Cit9OworCitzdHJ1 Y3QgbW1pb19kYXRhIHsKKwlpbnQgaW5pdGVkOworCWJvb2wgc2FmZTsKKwl1aW50MzJfdCBpOTE1 X2RldmlkOworCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwOworCWludCBrZXk7CisJdm9p ZCAqaWd0X21taW87Cit9OwogCi11aW50MzJfdCBJTlJFRyh1aW50MzJfdCByZWcpOwotdWludDE2 X3QgSU5SRUcxNih1aW50MzJfdCByZWcpOwotdWludDhfdCBJTlJFRzgodWludDMyX3QgcmVnKTsK LXZvaWQgT1VUUkVHKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKTsKLXZvaWQgT1VUUkVHMTYo dWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpOwotdm9pZCBPVVRSRUc4KHVpbnQzMl90IHJlZywg dWludDhfdCB2YWwpOwordm9pZCBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHN0cnVjdCBwY2lfZGV2 aWNlICpwY2lfZGV2LCBpbnQgZmQsCisJCQkgICAgc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRh KTsKK3ZvaWQgaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9f ZGF0YSwgY2hhciAqZmlsZSk7CisKK2ludCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChzdHJ1 Y3QgcGNpX2RldmljZSAqcGNpX2RldiwgaW50IHNhZmUsIGludCBmZCwKKwkJCSAgICAgICBzdHJ1 Y3QgbW1pb19kYXRhICptbWlvX2RhdGEpOwordm9pZCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmlu aShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEpOwordWludDMyX3QgaW50ZWxfcmVnaXN0ZXJf cmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7Cit2b2lkIGlu dGVsX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3Qg cmVnLAorCQkJICB1aW50MzJfdCB2YWwpOworaW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVk c19mYWtld2FrZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEpOworCit1aW50MzJfdCBJTlJF RyhzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7Cit1aW50MTZfdCBJ TlJFRzE2KHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKTsKK3VpbnQ4 X3QgSU5SRUc4KHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnKTsKK3Zv aWQgT1VUUkVHKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50 MzJfdCB2YWwpOwordm9pZCBPVVRSRUcxNihzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVp bnQzMl90IHJlZywgdWludDE2X3QgdmFsKTsKK3ZvaWQgT1VUUkVHOChzdHJ1Y3QgbW1pb19kYXRh ICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywgdWludDhfdCB2YWwpOwogCiAvKiBzaWRlYmFuZCBh Y2Nlc3MgZnVuY3Rpb25zIGZyb20gaW50ZWxfaW9zZi5jICovCi11aW50MzJfdCBpbnRlbF9kcGlv X3JlZ19yZWFkKHVpbnQzMl90IHJlZywgaW50IHBoeSk7Ci12b2lkIGludGVsX2RwaW9fcmVnX3dy aXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsLCBpbnQgcGh5KTsKLXVpbnQzMl90IGludGVs X2ZsaXNkc2lfcmVnX3JlYWQodWludDMyX3QgcmVnKTsKLXZvaWQgaW50ZWxfZmxpc2RzaV9yZWdf d3JpdGUodWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwotdWludDMyX3QgaW50ZWxfaW9zZl9z Yl9yZWFkKHVpbnQzMl90IHBvcnQsIHVpbnQzMl90IHJlZyk7Ci12b2lkIGludGVsX2lvc2Zfc2Jf d3JpdGUodWludDMyX3QgcG9ydCwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwordWludDMy X3QgaW50ZWxfZHBpb19yZWdfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQz Ml90IHJlZywKKwkJCSAgICAgaW50IHBoeSk7Cit2b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHN0 cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICB1aW50MzJfdCB2 YWwsIGludCBwaHkpOwordWludDMyX3QgaW50ZWxfZmxpc2RzaV9yZWdfcmVhZChzdHJ1Y3QgbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZyk7Cit2b2lkIGludGVsX2ZsaXNkc2lfcmVn X3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLAorCQkJICAg ICB1aW50MzJfdCB2YWwpOwordWludDMyX3QgaW50ZWxfaW9zZl9zYl9yZWFkKHN0cnVjdCBtbWlv X2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9ydCwKKwkJCSAgICB1aW50MzJfdCByZWcpOwor dm9pZCBpbnRlbF9pb3NmX3NiX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWlu dDMyX3QgcG9ydCwKKwkJCSB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCk7CiAKLWludCBpbnRl bF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOwotaW50IGludGVsX3B1 bml0X3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7Ci1pbnQgaW50ZWxfbmNfcmVh ZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKLWludCBpbnRlbF9uY193cml0ZSh1aW50 MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwpOworaW50IGludGVsX3B1bml0X3JlYWQoc3RydWN0IG1t aW9fZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKTsKK2ludCBp bnRlbF9wdW5pdF93cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFk ZHIsIHVpbnQzMl90IHZhbCk7CitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICpt bWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpOworaW50IGludGVsX25jX3dy aXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3Qg dmFsKTsKIAogLyogcmVnaXN0ZXIgbWFwcyBmcm9tIGludGVsX3JlZ19tYXAuYyAqLwogI2lmbmRl ZiBfX0dUS19ET0NfSUdOT1JFX18KQEAgLTcxLDE5ICsxMDEsMTAgQEAgaW50IGludGVsX25jX3dy aXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCk7CiAjZGVmaW5lIElOVEVMX1JBTkdFX1JX CQkoSU5URUxfUkFOR0VfUkVBRCB8IElOVEVMX1JBTkdFX1dSSVRFKQogI2RlZmluZSBJTlRFTF9S QU5HRV9FTkQJCSgxPDwzMSkKIAotc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlIHsKLQl1aW50 MzJfdCBiYXNlOwotCXVpbnQzMl90IHNpemU7Ci0JdWludDMyX3QgZmxhZ3M7Ci19OwotCi1zdHJ1 Y3QgaW50ZWxfcmVnaXN0ZXJfbWFwIHsKLQlzdHJ1Y3QgaW50ZWxfcmVnaXN0ZXJfcmFuZ2UgKm1h cDsKLQl1aW50MzJfdCB0b3A7Ci0JdWludDMyX3QgYWxpZ25tZW50X21hc2s7Ci19Owogc3RydWN0 IGludGVsX3JlZ2lzdGVyX21hcCBpbnRlbF9nZXRfcmVnaXN0ZXJfbWFwKHVpbnQzMl90IGRldmlk KTsKLXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqaW50ZWxfZ2V0X3JlZ2lzdGVyX3Jhbmdl KHN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwLCB1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90 IG1vZGUpOworc3RydWN0IGludGVsX3JlZ2lzdGVyX3JhbmdlICppbnRlbF9nZXRfcmVnaXN0ZXJf cmFuZ2Uoc3RydWN0IGludGVsX3JlZ2lzdGVyX21hcAorCQkJCQkJICAgICAgbWFwLCB1aW50MzJf dCBvZmZzZXQsCisJCQkJCQkgICAgICB1aW50MzJfdCBtb2RlKTsKICNlbmRpZiAvKiBfX0dUS19E T0NfSUdOT1JFX18gKi8KIAogI2VuZGlmIC8qIElOVEVMX0dQVV9UT09MU19IICovCmRpZmYgLS1n aXQgYS9saWIvaW50ZWxfaW9zZi5jIGIvbGliL2ludGVsX2lvc2YuYwppbmRleCAzYjVhMTM3MC4u NTJhODg1ZjUgMTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9pb3NmLmMKKysrIGIvbGliL2ludGVsX2lv c2YuYwpAQCAtMTksOCArMTksOCBAQAogLyogUHJpdmF0ZSByZWdpc3RlciB3cml0ZSwgZG91Ymxl LXdvcmQgYWRkcmVzc2luZywgbm9uLXBvc3RlZCAqLwogI2RlZmluZSBTQl9DUldSREFfTlAgICAw eDA3CiAKLXN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQsIHVpbnQ4X3Qg b3Bjb2RlLCB1aW50MzJfdCBhZGRyLAotCQkJICAgdWludDMyX3QgKnZhbCkKK3N0YXRpYyBpbnQg dmx2X3NpZGViYW5kX3J3KHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcG9y dCwKKwkJCSAgIHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFsKQog ewogCWludCB0aW1lb3V0ID0gMDsKIAl1aW50MzJfdCBjbWQsIGRldmZuLCBiZSwgYmFyOwpAQCAt MzQsMjIgKzM0LDIzIEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHVpbnQzMl90IHBvcnQs IHVpbnQ4X3Qgb3Bjb2RlLCB1aW50MzJfdCBhZGRyLAogCQkocG9ydCA8PCBJT1NGX1BPUlRfU0hJ RlQpIHwgKGJlIDw8IElPU0ZfQllURV9FTkFCTEVTX1NISUZUKSB8CiAJCShiYXIgPDwgSU9TRl9C QVJfU0hJRlQpOwogCi0JaWYgKGludGVsX3JlZ2lzdGVyX3JlYWQoVkxWX0lPU0ZfRE9PUkJFTExf UkVRKSAmIElPU0ZfU0JfQlVTWSkgeworCWlmIChpbnRlbF9yZWdpc3Rlcl9yZWFkKG1taW9fZGF0 YSwgVkxWX0lPU0ZfRE9PUkJFTExfUkVRKSAmCisJCQkJSU9TRl9TQl9CVVNZKSB7CiAJCWlndF93 YXJuKCJ3YXJuaW5nOiBwY29kZSAoJXMpIG1haWxib3ggYWNjZXNzIGZhaWxlZFxuIiwgaXNfcmVh ZCA/ICJyZWFkIiA6ICJ3cml0ZSIpOwogCQlyZXR1cm4gLUVBR0FJTjsKIAl9CiAKLQlpbnRlbF9y ZWdpc3Rlcl93cml0ZShWTFZfSU9TRl9BRERSLCBhZGRyKTsKKwlpbnRlbF9yZWdpc3Rlcl93cml0 ZShtbWlvX2RhdGEsIFZMVl9JT1NGX0FERFIsIGFkZHIpOwogCWlmICghaXNfcmVhZCkKLQkJaW50 ZWxfcmVnaXN0ZXJfd3JpdGUoVkxWX0lPU0ZfREFUQSwgKnZhbCk7CisJCWludGVsX3JlZ2lzdGVy X3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfREFUQSwgKnZhbCk7CiAKLQlpbnRlbF9yZWdpc3Rl cl93cml0ZShWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CisJaW50ZWxfcmVnaXN0ZXJfd3Jp dGUobW1pb19kYXRhLCBWTFZfSU9TRl9ET09SQkVMTF9SRVEsIGNtZCk7CiAKIAlkbyB7CiAJCXVz bGVlcCgxKTsKIAkJdGltZW91dCsrOwotCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQoVkxW X0lPU0ZfRE9PUkJFTExfUkVRKSAmIElPU0ZfU0JfQlVTWSAmJgotCQkgdGltZW91dCA8IFRJTUVP VVRfVVMpOworCX0gd2hpbGUgKGludGVsX3JlZ2lzdGVyX3JlYWQobW1pb19kYXRhLCBWTFZfSU9T Rl9ET09SQkVMTF9SRVEpICYKKwkJCQkgICAgIElPU0ZfU0JfQlVTWSAmJiB0aW1lb3V0IDwgVElN RU9VVF9VUyk7CiAKIAlpZiAodGltZW91dCA+PSBUSU1FT1VUX1VTKSB7CiAJCWlndF93YXJuKCJ0 aW1lb3V0IHdhaXRpbmcgZm9yIHBjb2RlICVzICglZCkgdG8gZmluaXNoXG4iLCBpc19yZWFkID8g InJlYWQiIDogIndyaXRlIiwgYWRkcik7CkBAIC01NywxNCArNTgsMTUgQEAgc3RhdGljIGludCB2 bHZfc2lkZWJhbmRfcncodWludDMyX3QgcG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFk ZHIsCiAJfQogCiAJaWYgKGlzX3JlYWQpCi0JCSp2YWwgPSBpbnRlbF9yZWdpc3Rlcl9yZWFkKFZM Vl9JT1NGX0RBVEEpOwotCWludGVsX3JlZ2lzdGVyX3dyaXRlKFZMVl9JT1NGX0RBVEEsIDApOwor CQkqdmFsID0gaW50ZWxfcmVnaXN0ZXJfcmVhZChtbWlvX2RhdGEsIFZMVl9JT1NGX0RBVEEpOwor CWludGVsX3JlZ2lzdGVyX3dyaXRlKG1taW9fZGF0YSwgVkxWX0lPU0ZfREFUQSwgMCk7CiAKIAly ZXR1cm4gMDsKIH0KIAogLyoqCiAgKiBpbnRlbF9wdW5pdF9yZWFkOgorICogQG1taW9fZGF0YTog c3RydWN0dXJlIGRhdGEgZm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQogICogQGFkZHI6IHJlZ2lz dGVyIG9mZnNldAogICogQHZhbDogcG9pbnRlciB0byBzdG9yZSB0aGUgcmVhZCByZXN1bHQKICAq CkBAIC03MywxMyArNzUsMTQgQEAgc3RhdGljIGludCB2bHZfc2lkZWJhbmRfcncodWludDMyX3Qg cG9ydCwgdWludDhfdCBvcGNvZGUsIHVpbnQzMl90IGFkZHIsCiAgKiBSZXR1cm5zOgogICogMCB3 aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBuZWdhdGl2ZSBlcnJubyBjb2RlIG9u IGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9wdW5pdF9yZWFkKHVpbnQzMl90IGFkZHIsIHVpbnQz Ml90ICp2YWwpCitpbnQgaW50ZWxfcHVuaXRfcmVhZChzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2Rh dGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0dXJuIHZsdl9zaWRlYmFu ZF9ydyhJT1NGX1BPUlRfUFVOSVQsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFsKTsKKwlyZXR1cm4g dmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX1BVTklULCBTQl9DUlJEREFfTlAs IGFkZHIsIHZhbCk7CiB9CiAKIC8qKgogICogaW50ZWxfcHVuaXRfd3JpdGU6CisgKiBAbW1pb19k YXRhOiBzdHJ1Y3R1cmUgZGF0YSBmb3IgcGFydGljdWxhciBwY2kgZGV2aWNlCiAgKiBAYWRkcjog cmVnaXN0ZXIgb2Zmc2V0CiAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTg4LDEzICs5 MSwxNSBAQCBpbnQgaW50ZWxfcHVuaXRfcmVhZCh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCAqdmFs KQogICogUmV0dXJuczoKICAqIDAgd2hlbiB0aGUgcmVnaXN0ZXIgYWNjZXNzIHN1Y2NlZWRlZCwg bmVnYXRpdmUgZXJybm8gY29kZSBvbiBmYWlsdXJlLgogICovCi1pbnQgaW50ZWxfcHVuaXRfd3Jp dGUodWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQoraW50IGludGVsX3B1bml0X3dyaXRlKHN0 cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgYWRkciwgdWludDMyX3QgdmFsKQog ewotCXJldHVybiB2bHZfc2lkZWJhbmRfcncoSU9TRl9QT1JUX1BVTklULCBTQl9DUldSREFfTlAs IGFkZHIsICZ2YWwpOworCXJldHVybiB2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBJT1NGX1BP UlRfUFVOSVQsIFNCX0NSV1JEQV9OUCwgYWRkciwKKwkJCSAgICAgICAmdmFsKTsKIH0KIAogLyoq CiAgKiBpbnRlbF9uY19yZWFkOgorICogQG1taW9fZGF0YTogc3RydWN0dXJlIGRhdGEgZm9yIHBh cnRpY3VsYXIgcGNpIGRldmljZQogICogQGFkZHI6IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDog cG9pbnRlciB0byBzdGFyZ2UgZm9yIHRoZSByZWFkIHJlc3VsdAogICoKQEAgLTEwMywxMyArMTA4 LDE1IEBAIGludCBpbnRlbF9wdW5pdF93cml0ZSh1aW50MzJfdCBhZGRyLCB1aW50MzJfdCB2YWwp CiAgKiBSZXR1cm5zOgogICogMCB3aGVuIHRoZSByZWdpc3RlciBhY2Nlc3Mgc3VjY2VlZGVkLCBu ZWdhdGl2ZSBlcnJubyBjb2RlIG9uIGZhaWx1cmUuCiAgKi8KLWludCBpbnRlbF9uY19yZWFkKHVp bnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCitpbnQgaW50ZWxfbmNfcmVhZChzdHJ1Y3QgbW1p b19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQzMl90ICp2YWwpCiB7Ci0JcmV0 dXJuIHZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfTkMsIFNCX0NSUkREQV9OUCwgYWRkciwgdmFs KTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwgSU9TRl9QT1JUX05DLCBTQl9D UlJEREFfTlAsIGFkZHIsCisJCQkgICAgICAgdmFsKTsKIH0KIAogLyoqCiAgKiBpbnRlbF9uY193 cml0ZToKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBk ZXZpY2UKICAqIEBhZGRyOiByZWdpc3RlciBvZmZzZXQKICAqIEB2YWw6IHZhbHVlIHRvIHdyaXRl CiAgKgpAQCAtMTE4LDEzICsxMjUsMTUgQEAgaW50IGludGVsX25jX3JlYWQodWludDMyX3QgYWRk ciwgdWludDMyX3QgKnZhbCkKICAqIFJldHVybnM6CiAgKiAwIHdoZW4gdGhlIHJlZ2lzdGVyIGFj Y2VzcyBzdWNjZWVkZWQsIG5lZ2F0aXZlIGVycm5vIGNvZGUgb24gZmFpbHVyZS4KICAqLwotaW50 IGludGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKK2ludCBpbnRlbF9u Y193cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IGFkZHIsIHVpbnQz Ml90IHZhbCkKIHsKLQlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9OQywgU0JfQ1JX UkRBX05QLCBhZGRyLCAmdmFsKTsKKwlyZXR1cm4gdmx2X3NpZGViYW5kX3J3KG1taW9fZGF0YSwg SU9TRl9QT1JUX05DLCBTQl9DUldSREFfTlAsIGFkZHIsCisJCQkgICAgICAgJnZhbCk7CiB9CiAK IC8qKgogICogaW50ZWxfZHBpb19yZWdfcmVhZDoKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBk YXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBkZXZpY2UKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAog ICogQHBoeTogRFBJTyBQSFkgdG8gdXNlCiAgKgpAQCAtMTMzLDU3ICsxNDIsNjYgQEAgaW50IGlu dGVsX25jX3dyaXRlKHVpbnQzMl90IGFkZHIsIHVpbnQzMl90IHZhbCkKICAqIFJldHVybnM6CiAg KiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KICAqLwotdWludDMyX3QgaW50ZWxf ZHBpb19yZWdfcmVhZCh1aW50MzJfdCByZWcsIGludCBwaHkpCit1aW50MzJfdCBpbnRlbF9kcGlv X3JlZ19yZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCBpbnQg cGh5KQogewogCXVpbnQzMl90IHZhbDsKIAogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5k X3J3KElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFu ZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPLCBTQl9NUkRfTlAsIHJlZywKKwkJCQkmdmFs KTsKIAllbHNlCi0JCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBTQl9NUkRfTlAs IHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElP XzIsIFNCX01SRF9OUCwgcmVnLAorCQkJCSZ2YWwpOwogCXJldHVybiB2YWw7CiB9CiAKIC8qKgog ICogaW50ZWxfZHBpb19yZWdfd3JpdGU6CisgKiBAbW1pb19kYXRhOiBzdHJ1Y3R1cmUgZGF0YSBm b3IgcGFydGljdWxhciBwY2kgZGV2aWNlCiAgKiBAcmVnOiByZWdpc3RlciBvZmZzZXQKICAqIEB2 YWw6IHZhbHVlIHRvIHdyaXRlCiAgKiBAcGh5OiBkcGlvIFBIWSB0byB1c2UKICAqCiAgKiAzMi1i aXQgd3JpdGUgb2YgdGhlIHJlZ2lzdGVyIGF0IEBvZmZzZXQgdGhyb3VnaCB0aGUgRFBJTyBzaWRl YmFuZCBwb3J0LgogICovCi12b2lkIGludGVsX2RwaW9fcmVnX3dyaXRlKHVpbnQzMl90IHJlZywg dWludDMyX3QgdmFsLCBpbnQgcGh5KQordm9pZCBpbnRlbF9kcGlvX3JlZ193cml0ZShzdHJ1Y3Qg bW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZywKKwkJCSAgdWludDMyX3QgdmFsLCBp bnQgcGh5KQogewogCWlmIChwaHkgPT0gMCkKLQkJdmx2X3NpZGViYW5kX3J3KElPU0ZfUE9SVF9E UElPLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CisJCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEs IElPU0ZfUE9SVF9EUElPLCBTQl9NV1JfTlAsIHJlZywKKwkJCQkmdmFsKTsKIAllbHNlCi0JCXZs dl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRFBJT18yLCBTQl9NV1JfTlAsIHJlZywgJnZhbCk7CisJ CXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9EUElPXzIsIFNCX01XUl9OUCwg cmVnLAorCQkJCSZ2YWwpOwogfQogCi11aW50MzJfdCBpbnRlbF9mbGlzZHNpX3JlZ19yZWFkKHVp bnQzMl90IHJlZykKK3VpbnQzMl90IGludGVsX2ZsaXNkc2lfcmVnX3JlYWQoc3RydWN0IG1taW9f ZGF0YSAqbW1pb19kYXRhLCB1aW50MzJfdCByZWcpCiB7CiAJdWludDMyX3QgdmFsID0gMDsKIAot CXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRfRkxJU0RTSSwgU0JfQ1JSRERBX05QLCByZWcsICZ2 YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIElPU0ZfUE9SVF9GTElTRFNJLCBTQl9D UlJEREFfTlAsIHJlZywgJnZhbCk7CiAKIAlyZXR1cm4gdmFsOwogfQogCi12b2lkIGludGVsX2Zs aXNkc2lfcmVnX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3QgdmFsKQordm9pZCBpbnRlbF9m bGlzZHNpX3JlZ193cml0ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJl ZywKKwkJCSAgICAgdWludDMyX3QgdmFsKQogewotCXZsdl9zaWRlYmFuZF9ydyhJT1NGX1BPUlRf RkxJU0RTSSwgU0JfQ1JXUkRBX05QLCByZWcsICZ2YWwpOworCXZsdl9zaWRlYmFuZF9ydyhtbWlv X2RhdGEsIElPU0ZfUE9SVF9GTElTRFNJLCBTQl9DUldSREFfTlAsIHJlZywgJnZhbCk7CiB9CiAK LXVpbnQzMl90IGludGVsX2lvc2Zfc2JfcmVhZCh1aW50MzJfdCBwb3J0LCB1aW50MzJfdCByZWcp Cit1aW50MzJfdCBpbnRlbF9pb3NmX3NiX3JlYWQoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRh LCB1aW50MzJfdCBwb3J0LAorCQkJICAgIHVpbnQzMl90IHJlZykKIHsKIAl1aW50MzJfdCB2YWw7 CiAKLQl2bHZfc2lkZWJhbmRfcncocG9ydCwgU0JfQ1JSRERBX05QLCByZWcsICZ2YWwpOworCXZs dl9zaWRlYmFuZF9ydyhtbWlvX2RhdGEsIHBvcnQsIFNCX0NSUkREQV9OUCwgcmVnLCAmdmFsKTsK IAogCXJldHVybiB2YWw7CiB9CiAKLXZvaWQgaW50ZWxfaW9zZl9zYl93cml0ZSh1aW50MzJfdCBw b3J0LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgaW50ZWxfaW9zZl9zYl93cml0 ZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHBvcnQsCisJCQkgdWludDMy X3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0Jdmx2X3NpZGViYW5kX3J3KHBvcnQsIFNCX0NSV1JE QV9OUCwgcmVnLCAmdmFsKTsKKwl2bHZfc2lkZWJhbmRfcncobW1pb19kYXRhLCBwb3J0LCBTQl9D UldSREFfTlAsIHJlZywgJnZhbCk7CiB9CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfbW1pby5jIGIv bGliL2ludGVsX21taW8uYwppbmRleCBhNTQ1OGFlYi4uMDk5YzllZTUgMTAwNjQ0Ci0tLSBhL2xp Yi9pbnRlbF9tbWlvLmMKKysrIGIvbGliL2ludGVsX21taW8uYwpAQCAtNDUsNiArNDUsNyBAQAog I2luY2x1ZGUgImlndF9jb3JlLmgiCiAjaW5jbHVkZSAiaWd0X2d0LmgiCiAjaW5jbHVkZSAiaW50 ZWxfY2hpcHNldC5oIgorI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKIAogLyoqCiAgKiBTRUNUSU9O OmludGVsX2lvCkBAIC02NSwzMiArNjYsMTcgQEAKIAogI2RlZmluZSBGQUtFS0VZIDB4MjQ2OGFj ZTAKIAotLyoqCi0gKiBpZ3RfZ2xvYmFsX21taW86Ci0gKgotICogUG9pbnRlciB0byB0aGUgcmVn aXN0ZXIgcmFuZ2UsIGluaXRpYWxpemVkIHVzaW5nIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KCkKLSAqIG9yIGludGVsX21taW9fdXNlX2R1bXBfZmlsZSgpLiBJdCBpcyBub3QgcmVjb21tZW5k ZWQgdG8gdXNlIHRoaXMgZGlyZWN0bHkuCi0gKi8KLXZvaWQgKmlndF9nbG9iYWxfbW1pbzsKLQot c3RhdGljIHN0cnVjdCBfbW1pb19kYXRhIHsKLQlpbnQgaW5pdGVkOwotCWJvb2wgc2FmZTsKLQl1 aW50MzJfdCBpOTE1X2RldmlkOwotCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9tYXAgbWFwOwotCWlu dCBrZXk7Ci19IG1taW9fZGF0YTsKLQogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGU6 CiAgKiBAZmlsZTogbmFtZSBvZiB0aGUgcmVnaXN0ZXIgZHVtcCBmaWxlIHRvIG9wZW4KKyAqIEBt bWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBkZXZpY2UKICAqCi0g KiBTZXRzIHVwICNpZ3RfZ2xvYmFsX21taW8gdG8gcG9pbnQgYXQgdGhlIGRhdGEgY29udGFpbmVk IGluIEBmaWxlLiBUaGlzIGFsbG93cwotICogdGhlIHNhbWUgY29kZSB0byBnZXQgcmV1c2VkIGZv ciBkdW1waW5nIGFuZCBkZWNvZGluZyBmcm9tIHJ1bm5pbmcgaGFyZHdhcmUgYXMKLSAqIGZyb20g cmVnaXN0ZXIgZHVtcHMuCisgKiBTZXRzIHVwIG1taW9fZGF0YS0+aWd0X21taW8gdG8gcG9pbnQg YXQgdGhlIGRhdGEgY29udGFpbmVkIGluIEBmaWxlLiBUCisgKiBoaXMgYWxsb3dzIHRoZSBzYW1l IGNvZGUgdG8gZ2V0IHJldXNlZCBmb3IgZHVtcGluZyBhbmQgZGVjb2RpbmcgZnJvbSBydW5uaW5n CisgKiBoYXJkd2FyZSBhcyBmcm9tIHJlZ2lzdGVyIGR1bXBzLgogICovCiB2b2lkCi1pbnRlbF9t bWlvX3VzZV9kdW1wX2ZpbGUoY2hhciAqZmlsZSkKK2ludGVsX21taW9fdXNlX2R1bXBfZmlsZShz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIGNoYXIgKmZpbGUpCiB7CiAJaW50IGZkOwogCXN0 cnVjdCBzdGF0IHN0OwpAQCAtMTAwLDggKzg2LDkgQEAgaW50ZWxfbW1pb191c2VfZHVtcF9maWxl KGNoYXIgKmZpbGUpCiAJCSAgICAgICJDb3VsZG4ndCBvcGVuICVzXG4iLCBmaWxlKTsKIAogCWZz dGF0KGZkLCAmc3QpOwotCWlndF9nbG9iYWxfbW1pbyA9IG1tYXAoTlVMTCwgc3Quc3Rfc2l6ZSwg UFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9QUklWQVRFLCBmZCwgMCk7Ci0JaWd0X2ZhaWxfb25f ZihpZ3RfZ2xvYmFsX21taW8gPT0gTUFQX0ZBSUxFRCwKKwltbWlvX2RhdGEtPmlndF9tbWlvID0g bW1hcChOVUxMLCBzdC5zdF9zaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAorCQkJCSAgIE1B UF9QUklWQVRFLCBmZCwgMCk7CisJaWd0X2ZhaWxfb25fZihtbWlvX2RhdGEtPmlndF9tbWlvID09 IE1BUF9GQUlMRUQsCiAJCSAgICAgICJDb3VsZG4ndCBtbWFwICVzXG4iLCBmaWxlKTsKIAljbG9z ZShmZCk7CiB9CkBAIC0xMDksMTcgKzk2LDIwIEBAIGludGVsX21taW9fdXNlX2R1bXBfZmlsZShj aGFyICpmaWxlKQogLyoqCiAgKiBpbnRlbF9tbWlvX3VzZV9wY2lfYmFyOgogICogQHBjaV9kZXY6 IGludGVsIGdyYWNwaGlzIHBjaSBkZXZpY2UKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRh IGZvciBwYXJ0aWN1bGFyIHBjaSBkZXZpY2UKKyAqIEBmZDogb3BlbiBkZXZpY2Ugb3IgLTEgaWYg d2UgYXJlIGdvaW5nIG9sZCBwYXRoCiAgKgotICogU2V0cyB1cCAjaWd0X2dsb2JhbF9tbWlvIHRv IHBvaW50IGF0IHRoZSBtbWlvIGJhci4KKyAqIFNldHMgdXAgbW1pb19kYXRhLT5pZ3RfbW1pbyB0 byBwb2ludCBhdCB0aGUgbW1pbyBiYXIuCiAgKgogICogQHBjaV9kZXYgY2FuIGJlIG9idGFpbmVk IGZyb20gaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKS4KICAqLwogdm9pZAotaW50ZWxfbW1pb191c2Vf cGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldikKK2ludGVsX21taW9fdXNlX3BjaV9i YXIoc3RydWN0IHBjaV9kZXZpY2UgKnBjaV9kZXYsIGludCBmZCwKKwkJICAgICAgIHN0cnVjdCBt bWlvX2RhdGEgKm1taW9fZGF0YSkKIHsKIAl1aW50MzJfdCBkZXZpZCwgZ2VuOwogCWludCBtbWlv X2JhciwgbW1pb19zaXplOwotCWludCBlcnJvcjsKKwlpbnQgZXJyOwogCiAJZGV2aWQgPSBwY2lf ZGV2LT5kZXZpY2VfaWQ7CiAJaWYgKElTX0dFTjIoZGV2aWQpKQpAQCAtMTM1LDE0ICsxMjUsMjgg QEAgaW50ZWxfbW1pb191c2VfcGNpX2JhcihzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldikKIAll bHNlCiAJCW1taW9fc2l6ZSA9IDIqMTAyNCoxMDI0OwogCi0JZXJyb3IgPSBwY2lfZGV2aWNlX21h cF9yYW5nZSAocGNpX2RldiwKLQkJCQkgICAgICBwY2lfZGV2LT5yZWdpb25zW21taW9fYmFyXS5i YXNlX2FkZHIsCi0JCQkJICAgICAgbW1pb19zaXplLAotCQkJCSAgICAgIFBDSV9ERVZfTUFQX0ZM QUdfV1JJVEFCTEUsCi0JCQkJICAgICAgJmlndF9nbG9iYWxfbW1pbyk7CisJLyogSXQncyBmb3Ig c29tZSBsZWdhY3kgdG9vbHMgZXhpc3RpbmcgaW4gdHJlZSB0aGF0IHJlcXVpcmUKKwkgKiB3b3Jr aW5nIHdpdGhvdXQgZHJpdmVyCisJICovCisKKwlpZiAoZmQgPT0gLTEpIHsKKwkJZXJyID0gcGNp X2RldmljZV9tYXBfcmFuZ2UocGNpX2RldiwKKwkJCQkJICAgcGNpX2Rldi0+cmVnaW9uc1ttbWlv X2Jhcl0uYmFzZV9hZGRyLAorCQkJCQkgICBtbWlvX3NpemUsCisJCQkJCSAgIFBDSV9ERVZfTUFQ X0ZMQUdfV1JJVEFCTEUsCisJCQkJCSAgICZtbWlvX2RhdGEtPmlndF9tbWlvKTsKKworCQlpZ3Rf ZmFpbF9vbl9mKGVyciAhPSAwLAorCQkJICAgICAgIkNvdWxkbid0IG1hcCBNTUlPIHJlZ2lvblxu Iik7CisJfSBlbHNlIHsKKworCS8qIFRoaXMgbWV0aG9kIGlzIG11Y2ggbW9yZSBjb252ZW5pZW50 IHdoZW4gd2UgaGF2ZSBtYW55IGNvbmN1cnJlbnQKKwkgKiBQQ0kgZGV2aWNlcworCSAqLworCQlt bWlvX2RhdGEtPmlndF9tbWlvID0gaWd0X2RldmljZV9tYXBfcGNpX2Jhcl9yZWdpb24oZmQsIG1t aW9fYmFyLAorCQkJCQkJCSBtbWlvX3NpemUpOworCX0KIAotCWlndF9mYWlsX29uX2YoZXJyb3Ig IT0gMCwKLQkJICAgICAgIkNvdWxkbid0IG1hcCBNTUlPIHJlZ2lvblxuIik7CiB9CiAKIHN0YXRp YyB2b2lkCkBAIC0xNTUsODEgKzE1OSw4MyBAQCByZWxlYXNlX2ZvcmNld2FrZV9sb2NrKGludCBm ZCkKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0OgogICogQHBjaV9kZXY6IGludGVsIGdy YXBoaWNzIHBjaSBkZXZpY2UKICAqIEBzYWZlOiB1c2Ugc2FmZSByZWdpc3RlciBhY2Nlc3MgdGFi bGVzCisgKiBAZmQ6IG9wZW4gZGV2aWNlIG9yIC0xIGlmIHdlIGFyZSBnb2luZyBvbGQgcGF0aAor ICogQG1taW9fZGF0YTogc3RydWN0dXJlIGRhdGEgZm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQog ICoKICAqIFRoaXMgaW5pdGlhbGl6ZXMgdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgbGlicmFyeSwg d2hpY2ggc3VwcG9ydHMgZm9yY2V3YWtlCiAgKiBoYW5kbGluZyBhbmQgYWxzbyBhbGxvd3MgcmVn aXN0ZXIgYWNjZXNzIHRvIGJlIGNoZWNrZWQgd2l0aCBhbiBleHBsaWNpdAogICogd2hpdGVsaXN0 LgogICoKLSAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgI2lndF9nbG9iYWxfbW1pbyBsaWtlIGludGVs X21taW9fdXNlX3BjaV9iYXIoKS4KKyAqIEl0IGFsc28gaW5pdGlhbGl6ZXMgbW1pb19kYXRhLT5p Z3RfbW1pbyBsaWtlIGludGVsX21taW9fdXNlX3BjaV9iYXIoKS4KICAqCiAgKiBAcGNpX2RldiBj YW4gYmUgb2J0YWluZWQgZnJvbSBpbnRlbF9nZXRfcGNpX2RldmljZSgpLgogICovCiBpbnQKLWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHN0cnVjdCBwY2lfZGV2aWNlICpwY2lfZGV2LCBpbnQg c2FmZSwgaW50IGZkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoc3RydWN0IHBjaV9kZXZp Y2UgKnBjaV9kZXYsIGludCBzYWZlLCBpbnQgZmQsCisJCQkgICBzdHJ1Y3QgbW1pb19kYXRhICpt bWlvX2RhdGEpCiB7CiAJaW50IHJldDsKIAotCS8qIGFmdGVyIG9sZCBBUEkgaXMgZGVwcmVjYXRl ZCwgcmVtb3ZlIHRoaXMgKi8KLQlpZiAoaWd0X2dsb2JhbF9tbWlvID09IE5VTEwpCi0JCWludGVs X21taW9fdXNlX3BjaV9iYXIocGNpX2Rldik7Ci0KLQlpZ3RfYXNzZXJ0KGlndF9nbG9iYWxfbW1p byAhPSBOVUxMKTsKKwltZW1zZXQobW1pb19kYXRhLCAwLCBzaXplb2Yoc3RydWN0IG1taW9fZGF0 YSkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIocGNpX2RldiwgZmQsIG1taW9fZGF0YSk7CiAK LQlpZiAobW1pb19kYXRhLmluaXRlZCkKKwlpZiAobW1pb19kYXRhLT5pbml0ZWQpCiAJCXJldHVy biAtMTsKIAotCW1taW9fZGF0YS5zYWZlID0gKHNhZmUgIT0gMCAmJgorCW1taW9fZGF0YS0+c2Fm ZSA9IChzYWZlICE9IDAgJiYKIAkJCWludGVsX2dlbihwY2lfZGV2LT5kZXZpY2VfaWQpID49IDQp ID8gdHJ1ZSA6IGZhbHNlOwotCW1taW9fZGF0YS5pOTE1X2RldmlkID0gcGNpX2Rldi0+ZGV2aWNl X2lkOwotCWlmIChtbWlvX2RhdGEuc2FmZSkKLQkJbW1pb19kYXRhLm1hcCA9IGludGVsX2dldF9y ZWdpc3Rlcl9tYXAobW1pb19kYXRhLmk5MTVfZGV2aWQpOworCW1taW9fZGF0YS0+aTkxNV9kZXZp ZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKKwlpZiAobW1pb19kYXRhLT5zYWZlKQorCQltbWlvX2Rh dGEtPm1hcCA9IGludGVsX2dldF9yZWdpc3Rlcl9tYXAobW1pb19kYXRhLT5pOTE1X2RldmlkKTsK IAogCS8qIEZpbmQgd2hlcmUgdGhlIGZvcmNld2FrZSBsb2NrIGlzLiBGb3JjZXdha2UgZG9lc24n dCBleGlzdAogCSAqIGdlbiA8IDYsIGJ1dCB0aGUgZGVidWdmcyBzaG91bGQgZG8gdGhlIHJpZ2h0 IHRoaW5ncyBmb3IgdXMuCiAJICovCiAJcmV0ID0gaWd0X29wZW5fZm9yY2V3YWtlX2hhbmRsZShm ZCk7CiAJaWYgKHJldCA9PSAtMSkKLQkJbW1pb19kYXRhLmtleSA9IEZBS0VLRVk7CisJCW1taW9f ZGF0YS0+a2V5ID0gRkFLRUtFWTsKIAllbHNlCi0JCW1taW9fZGF0YS5rZXkgPSByZXQ7CisJCW1t aW9fZGF0YS0+a2V5ID0gcmV0OwogCi0JbW1pb19kYXRhLmluaXRlZCsrOworCW1taW9fZGF0YS0+ aW5pdGVkKys7CiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19uZWVkc193YWtlKHZvaWQpCitpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZShz dHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEpCiB7Ci0JcmV0dXJuIG1taW9fZGF0YS5rZXkgIT0g RkFLRUtFWTsKKwlyZXR1cm4gbW1pb19kYXRhLT5rZXkgIT0gRkFLRUtFWTsKIH0KIAogLyoqCiAg KiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfZmFrZXdha2U6Ci0gKgorICogQG1taW9fZGF0 YTogc3RydWN0dXJlIGRhdGEgZm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQogICogUmV0dXJuczoK ICAqIE5vbi16ZXJvIHdoZW4gZm9yY2V3YWtlIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KICAqLwot aW50IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZSh2b2lkKQoraW50IGludGVs X3JlZ2lzdGVyX2FjY2Vzc19uZWVkc19mYWtld2FrZShzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2Rh dGEpCiB7Ci0JcmV0dXJuIG1taW9fZGF0YS5rZXkgPT0gRkFLRUtFWTsKKwlyZXR1cm4gbW1pb19k YXRhLT5rZXkgPT0gRkFLRUtFWTsKIH0KIAogLyoqCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaToKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBk ZXZpY2UKICAqCiAgKiBDbGVhbiB1cCB0aGUgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpbml0aWFs aXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgogICovCiB2b2lkCi1p bnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSh2b2lkKQoraW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zp bmkoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRhKQogewotCWlmIChtbWlvX2RhdGEua2V5ICYm IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19uZWVkc193YWtlKCkpCi0JCXJlbGVhc2VfZm9yY2V3YWtl X2xvY2sobW1pb19kYXRhLmtleSk7Ci0JbW1pb19kYXRhLmluaXRlZC0tOworCWlmIChtbWlvX2Rh dGEtPmtleSAmJiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfbmVlZHNfd2FrZShtbWlvX2RhdGEpKQor CQlyZWxlYXNlX2ZvcmNld2FrZV9sb2NrKG1taW9fZGF0YS0+a2V5KTsKKwltbWlvX2RhdGEtPmlu aXRlZC0tOwogfQogCiAvKioKICAqIGludGVsX3JlZ2lzdGVyX3JlYWQ6CisgKiBAbW1pb19kYXRh OiBzdHJ1Y3R1cmUgZGF0YSBmb3IgcGFydGljdWxhciBwY2kgZGV2aWNlCiAgKiBAcmVnOiByZWdp c3RlciBvZmZzZXQKICAqCiAgKiAzMi1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgQG9mZnNl dC4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlIG5ldwpAQCAtMjQyLDIwICsyNDgs MjEgQEAgaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2Zpbmkodm9pZCkKICAqIFRoZSB2YWx1ZSByZWFk IGZyb20gdGhlIHJlZ2lzdGVyLgogICovCiB1aW50MzJfdAotaW50ZWxfcmVnaXN0ZXJfcmVhZCh1 aW50MzJfdCByZWcpCitpbnRlbF9yZWdpc3Rlcl9yZWFkKHN0cnVjdCBtbWlvX2RhdGEgKm1taW9f ZGF0YSwgdWludDMyX3QgcmVnKQogewogCXN0cnVjdCBpbnRlbF9yZWdpc3Rlcl9yYW5nZSAqcmFu Z2U7CisJdm9pZCAqaWd0X21taW8gPSBtbWlvX2RhdGEtPmlndF9tbWlvOwogCXVpbnQzMl90IHJl dDsKIAotCWlndF9hc3NlcnQobW1pb19kYXRhLmluaXRlZCk7CisJaWd0X2Fzc2VydChtbWlvX2Rh dGEtPmluaXRlZCk7CiAKLQlpZiAoaW50ZWxfZ2VuKG1taW9fZGF0YS5pOTE1X2RldmlkKSA+PSA2 KQotCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5rZXkgIT0gLTEpOworCWlmIChpbnRlbF9nZW4obW1p b19kYXRhLT5pOTE1X2RldmlkKSA+PSA2KQorCQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS0+a2V5ICE9 IC0xKTsKIAotCWlmICghbW1pb19kYXRhLnNhZmUpCisJaWYgKCFtbWlvX2RhdGEtPnNhZmUpCiAJ CWdvdG8gcmVhZF9vdXQ7CiAKLQlyYW5nZSA9IGludGVsX2dldF9yZWdpc3Rlcl9yYW5nZShtbWlv X2RhdGEubWFwLAorCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1taW9fZGF0YS0+ bWFwLAogCQkJCQkgcmVnLAogCQkJCQkgSU5URUxfUkFOR0VfUkVBRCk7CiAKQEAgLTI2NiwxMyAr MjczLDE0IEBAIGludGVsX3JlZ2lzdGVyX3JlYWQodWludDMyX3QgcmVnKQogCX0KIAogcmVhZF9v dXQ6Ci0JcmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9n bG9iYWxfbW1pbyArIHJlZyk7CisJcmV0ID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRp bGUgY2hhciAqKWlndF9tbWlvICsgcmVnKTsKIG91dDoKIAlyZXR1cm4gcmV0OwogfQogCiAvKioK ICAqIGludGVsX3JlZ2lzdGVyX3dyaXRlOgorICogQG1taW9fZGF0YTogc3RydWN0dXJlIGRhdGEg Zm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAgKiBA dmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTI4MywxOSArMjkxLDIwIEBAIG91dDoKICAqIHdo aXRlIGxpc3RzLgogICovCiB2b2lkCi1pbnRlbF9yZWdpc3Rlcl93cml0ZSh1aW50MzJfdCByZWcs IHVpbnQzMl90IHZhbCkKK2ludGVsX3JlZ2lzdGVyX3dyaXRlKHN0cnVjdCBtbWlvX2RhdGEgKm1t aW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7CiAJc3RydWN0IGludGVsX3Jl Z2lzdGVyX3JhbmdlICpyYW5nZTsKKwl2b2lkICppZ3RfbW1pbyA9IG1taW9fZGF0YS0+aWd0X21t aW87CiAKLQlpZ3RfYXNzZXJ0KG1taW9fZGF0YS5pbml0ZWQpOworCWlndF9hc3NlcnQobW1pb19k YXRhLT5pbml0ZWQpOwogCi0JaWYgKGludGVsX2dlbihtbWlvX2RhdGEuaTkxNV9kZXZpZCkgPj0g NikKLQkJaWd0X2Fzc2VydChtbWlvX2RhdGEua2V5ICE9IC0xKTsKKwlpZiAoaW50ZWxfZ2VuKG1t aW9fZGF0YS0+aTkxNV9kZXZpZCkgPj0gNikKKwkJaWd0X2Fzc2VydChtbWlvX2RhdGEtPmtleSAh PSAtMSk7CiAKLQlpZiAoIW1taW9fZGF0YS5zYWZlKQorCWlmICghbW1pb19kYXRhLT5zYWZlKQog CQlnb3RvIHdyaXRlX291dDsKIAotCXJhbmdlID0gaW50ZWxfZ2V0X3JlZ2lzdGVyX3JhbmdlKG1t aW9fZGF0YS5tYXAsCisJcmFuZ2UgPSBpbnRlbF9nZXRfcmVnaXN0ZXJfcmFuZ2UobW1pb19kYXRh LT5tYXAsCiAJCQkJCSByZWcsCiAJCQkJCSBJTlRFTF9SQU5HRV9XUklURSk7CiAKQEAgLTMwMyw2 MyArMzEyLDc0IEBAIGludGVsX3JlZ2lzdGVyX3dyaXRlKHVpbnQzMl90IHJlZywgdWludDMyX3Qg dmFsKQogCQkgICAgICAiUmVnaXN0ZXIgd3JpdGUgYmxvY2tlZCBmb3Igc2FmZXR5ICIiKCoweCUw OHggPSAweCV4KVxuIiwgcmVnLCB2YWwpOwogCiB3cml0ZV9vdXQ6Ci0JKih2b2xhdGlsZSB1aW50 MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7CisJ Kih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKSA9 IHZhbDsKIH0KIAogCiAvKioKICAqIElOUkVHOgorICogQG1taW9fZGF0YTogc3RydWN0dXJlIGRh dGEgZm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAg KgogICogMzItYml0IHJlYWQgb2YgdGhlIHJlZ2lzdGVyIGF0IG9mZnNldCBAcmVnLiBUaGlzIGZ1 bmN0aW9uIG9ubHkgd29ya3Mgd2hlbiB0aGUKICAqIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVy IGlzIGluaXRpYWxpemVkIHdpdGggaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoKS4KICAqCi0g KiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSAjaWd0X2dsb2JhbF9tbWlvIHdp dGhvdXQgc2FmZXR5IGNoZWNrcy4KKyAqIFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMg bWFwcGVkIG1lbW9yeSB3aXRob3V0IHNhZmV0eSBjaGVja3MuCiAgKgogICogUmV0dXJuczoKICAq IFRoZSB2YWx1ZSByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLgogICovCi11aW50MzJfdCBJTlJFRyh1 aW50MzJfdCByZWcpCit1aW50MzJfdCBJTlJFRyhzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEs IHVpbnQzMl90IHJlZykKIHsKLQlyZXR1cm4gKih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRp bGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZyk7CisJdm9pZCAqaWd0X21taW8gPSBtbWlv X2RhdGEtPmlndF9tbWlvOworCisJcmV0dXJuICoodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0 aWxlIGNoYXIgKilpZ3RfbW1pbyArIHJlZyk7CiB9CiAKIC8qKgogICogSU5SRUcxNjoKKyAqIEBt bWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBkZXZpY2UKICAqIEBy ZWc6IHJlZ2lzdGVyIG9mZnNldAogICoKICAqIDE2LWJpdCByZWFkIG9mIHRoZSByZWdpc3RlciBh dCBvZmZzZXQgQHJlZy4gVGhpcyBmdW5jdGlvbiBvbmx5IHdvcmtzIHdoZW4gdGhlCiAgKiBuZXcg cmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBpbml0aWFsaXplZCB3aXRoIGludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KCkuCiAgKgotICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0 aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCisgKiBUaGlzIGZ1bmN0 aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSBtYXBwZWQgbWVtb3J5IHdpdGhvdXQgc2FmZXR5IGNo ZWNrcy4KICAqCiAgKiBSZXR1cm5zOgogICogVGhlIHZhbHVlIHJlYWQgZnJvbSB0aGUgcmVnaXN0 ZXIuCiAgKi8KLXVpbnQxNl90IElOUkVHMTYodWludDMyX3QgcmVnKQordWludDE2X3QgSU5SRUcx NihzdHJ1Y3QgbW1pb19kYXRhICptbWlvX2RhdGEsIHVpbnQzMl90IHJlZykKIHsKLQlyZXR1cm4g Kih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyAr IHJlZyk7CisJdm9pZCAqaWd0X21taW8gPSBtbWlvX2RhdGEtPmlndF9tbWlvOworCisJcmV0dXJu ICoodm9sYXRpbGUgdWludDE2X3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfbW1pbyArIHJlZyk7 CiB9CiAKIC8qKgogICogSU5SRUc4OgorICogQG1taW9fZGF0YTogc3RydWN0dXJlIGRhdGEgZm9y IHBhcnRpY3VsYXIgcGNpIGRldmljZQogICogQHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAgKgogICog OC1iaXQgcmVhZCBvZiB0aGUgcmVnaXN0ZXIgYXQgb2Zmc2V0IEByZWcuIFRoaXMgZnVuY3Rpb24g b25seSB3b3JrcyB3aGVuIHRoZQogICogbmV3IHJlZ2lzdGVyIGFjY2VzcyBoZWxwZXIgaXMgaW5p dGlhbGl6ZWQgd2l0aCBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgogICoKLSAqIFRoaXMg ZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0aG91dCBz YWZldHkgY2hlY2tzLgorICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgbW1p b19kYXRhLT5pZ3RfbW1pbyB3aXRob3V0IHNhZmV0eQorICogY2hlY2tzLgogICoKICAqIFJldHVy bnM6CiAgKiBUaGUgdmFsdWUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KICAqLwotdWludDhfdCBJ TlJFRzgodWludDMyX3QgcmVnKQordWludDhfdCBJTlJFRzgoc3RydWN0IG1taW9fZGF0YSAqbW1p b19kYXRhLCB1aW50MzJfdCByZWcpCiB7Ci0JcmV0dXJuICooKHZvbGF0aWxlIHVpbnQ4X3QgKilp Z3RfZ2xvYmFsX21taW8gKyByZWcpOworCXZvaWQgKmlndF9tbWlvID0gbW1pb19kYXRhLT5pZ3Rf bW1pbzsKKworCXJldHVybiAqKCh2b2xhdGlsZSB1aW50OF90ICopaWd0X21taW8gKyByZWcpOwog fQogCiAvKioKICAqIE9VVFJFRzoKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBkYXRhIGZvciBw YXJ0aWN1bGFyIHBjaSBkZXZpY2UKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAogICogQHZhbDog dmFsdWUgdG8gd3JpdGUKICAqCkBAIC0zNjcsMTUgKzM4NywxOSBAQCB1aW50OF90IElOUkVHOCh1 aW50MzJfdCByZWcpCiAgKiB3aGVuIHRoZSBuZXcgcmVnaXN0ZXIgYWNjZXNzIGhlbHBlciBpcyBp bml0aWFsaXplZCB3aXRoCiAgKiBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdCgpLgogICoKLSAq IFRoaXMgZnVuY3Rpb24gZGlyZWN0bHkgYWNjZXNzZXMgdGhlICNpZ3RfZ2xvYmFsX21taW8gd2l0 aG91dCBzYWZldHkgY2hlY2tzLgorICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0 aGUgbW1pb19kYXRhLT5pZ3RfbW1pbyB3aXRob3V0IHNhZmV0eQorICogY2hlY2tzLgogICovCi12 b2lkIE9VVFJFRyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKK3ZvaWQgT1VUUkVHKHN0cnVj dCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpCiB7Ci0J Kih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9nbG9iYWxfbW1pbyAr IHJlZykgPSB2YWw7CisJdm9pZCAqaWd0X21taW8gPSBtbWlvX2RhdGEtPmlndF9tbWlvOworCisJ Kih2b2xhdGlsZSB1aW50MzJfdCAqKSgodm9sYXRpbGUgY2hhciAqKWlndF9tbWlvICsgcmVnKSA9 IHZhbDsKIH0KIAogLyoqCiAgKiBPVVRSRUcxNjoKKyAqIEBtbWlvX2RhdGE6IHN0cnVjdHVyZSBk YXRhIGZvciBwYXJ0aWN1bGFyIHBjaSBkZXZpY2UKICAqIEByZWc6IHJlZ2lzdGVyIG9mZnNldAog ICogQHZhbDogdmFsdWUgdG8gd3JpdGUKICAqCkBAIC0zODMsMTUgKzQwNywxOSBAQCB2b2lkIE9V VFJFRyh1aW50MzJfdCByZWcsIHVpbnQzMl90IHZhbCkKICAqIHdoZW4gdGhlIG5ldyByZWdpc3Rl ciBhY2Nlc3MgaGVscGVyIGlzIGluaXRpYWxpemVkIHdpdGgKICAqIGludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19pbml0KCkuCiAgKgotICogVGhpcyBmdW5jdGlvbiBkaXJlY3RseSBhY2Nlc3NlcyB0aGUg I2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBjaGVja3MuCisgKiBUaGlzIGZ1bmN0aW9u IGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSBtbWlvX2RhdGEtPmlndF9tbWlvIHdpdGhvdXQgc2FmZXR5 CisgKiBjaGVja3MuCiAgKi8KLXZvaWQgT1VUUkVHMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2 YWwpCit2b2lkIE9VVFJFRzE2KHN0cnVjdCBtbWlvX2RhdGEgKm1taW9fZGF0YSwgdWludDMyX3Qg cmVnLCB1aW50MTZfdCB2YWwpCiB7Ci0JKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUg Y2hhciAqKWlndF9nbG9iYWxfbW1pbyArIHJlZykgPSB2YWw7CisJdm9pZCAqaWd0X21taW8gPSBt bWlvX2RhdGEtPmlndF9tbWlvOworCisJKih2b2xhdGlsZSB1aW50MTZfdCAqKSgodm9sYXRpbGUg Y2hhciAqKWlndF9tbWlvICsgcmVnKSA9IHZhbDsKIH0KIAogLyoqCiAgKiBPVVRSRUc4OgorICog QG1taW9fZGF0YTogc3RydWN0dXJlIGRhdGEgZm9yIHBhcnRpY3VsYXIgcGNpIGRldmljZQogICog QHJlZzogcmVnaXN0ZXIgb2Zmc2V0CiAgKiBAdmFsOiB2YWx1ZSB0byB3cml0ZQogICoKQEAgLTM5 OSw5ICs0MjcsMTEgQEAgdm9pZCBPVVRSRUcxNih1aW50MzJfdCByZWcsIHVpbnQxNl90IHZhbCkK ICAqIHdoZW4gdGhlIG5ldyByZWdpc3RlciBhY2Nlc3MgaGVscGVyIGlzIGluaXRpYWxpemVkIHdp dGgKICAqIGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KCkuCiAgKgotICogVGhpcyBmdW5jdGlv biBkaXJlY3RseSBhY2Nlc3NlcyB0aGUgI2lndF9nbG9iYWxfbW1pbyB3aXRob3V0IHNhZmV0eSBj aGVja3MuCisgKiBUaGlzIGZ1bmN0aW9uIGRpcmVjdGx5IGFjY2Vzc2VzIHRoZSBtYXBwZWQgbWVt b3J5IHdpdGhvdXQgc2FmZXR5IGNoZWNrcy4KICAqLwotdm9pZCBPVVRSRUc4KHVpbnQzMl90IHJl ZywgdWludDhfdCB2YWwpCit2b2lkIE9VVFJFRzgoc3RydWN0IG1taW9fZGF0YSAqbW1pb19kYXRh LCB1aW50MzJfdCByZWcsIHVpbnQ4X3QgdmFsKQogewotCSooKHZvbGF0aWxlIHVpbnQ4X3QgKilp Z3RfZ2xvYmFsX21taW8gKyByZWcpID0gdmFsOworCXZvaWQgKmlndF9tbWlvID0gbW1pb19kYXRh LT5pZ3RfbW1pbzsKKworCSooKHZvbGF0aWxlIHVpbnQ4X3QgKilpZ3RfbW1pbyArIHJlZykgPSB2 YWw7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYyBiL3Rlc3Rz L2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jCmluZGV4IDM5ZjQ0MWQyLi42ZTYyZDI5OCAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKKysrIGIvdGVzdHMvaTkxNS9nZW1f ZXhlY19sYXRlbmN5LmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJkcm0uaCIKIAogI2lu Y2x1ZGUgImlndF9zeXNmcy5oIgorI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKICNpbmNsdWRlICJp Z3RfdmdlbS5oIgogI2luY2x1ZGUgImlndF9kdW1teWxvYWQuaCIKICNpbmNsdWRlICJpZ3Rfc3Rh dHMuaCIKQEAgLTYxLDYgKzYyLDcgQEAKIAogc3RhdGljIHVuc2lnbmVkIGludCByaW5nX3NpemU7 CiBzdGF0aWMgZG91YmxlIHJjc19jbG9jazsKK3N0cnVjdCBtbWlvX2RhdGEgaWd0X2dsb2JhbF9t bWlvOwogCiBzdGF0aWMgdm9pZAogcG9sbF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgY29u c3QgY2hhciAqbmFtZSkKQEAgLTEyOSw4ICsxMzEsOSBAQCBzdGF0aWMgdm9pZCBsYXRlbmN5X29u X3JpbmcoaW50IGZkLAogCXVpbnQ2NF90IG9mZnNldDsKIAlkb3VibGUgZ3B1X2xhdGVuY3k7CiAJ aW50IGksIGo7CisJdm9pZCAqaWd0X21taW8gPSBpZ3RfZ2xvYmFsX21taW8uaWd0X21taW87CiAK LQlyZWcgPSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZvbGF0aWxlIGNoYXIgKilpZ3RfZ2xvYmFs X21taW8gKyBSQ1NfVElNRVNUQU1QKTsKKwlyZWcgPSAodm9sYXRpbGUgdWludDMyX3QgKikoKHZv bGF0aWxlIGNoYXIgKilpZ3RfbW1pbyArIFJDU19USU1FU1RBTVApOwogCiAJbWVtc2V0KCZleGVj YnVmLCAwLCBzaXplb2YoZXhlY2J1ZikpOwogCWV4ZWNidWYuYnVmZmVyc19wdHIgPSB0b191c2Vy X3BvaW50ZXIoJm9ialsxXSk7CkBAIC02NDUsNyArNjQ4LDcgQEAgc3RhdGljIGRvdWJsZSBjbG9j a3JhdGUoaW50IGk5MTUsIGludCByZWcpCiAJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExf STkxNV9HRVRQQVJBTSwgJmdwKSA9PSAwKQogCQlyZXR1cm4gY3NfdGltZXN0YW1wX2ZyZXE7CiAK LQltbWlvID0gKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBjaGFyICopaWd0X2dsb2Jh bF9tbWlvICsgcmVnKTsKKwltbWlvID0gKHZvbGF0aWxlIHVpbnQzMl90ICopKCh2b2xhdGlsZSBj aGFyICopaWd0X2dsb2JhbF9tbWlvLmlndF9tbWlvICsgcmVnKTsKIAogCXRfc3RhcnQgPSBpZ3Rf bnNlY19lbGFwc2VkKCZ0dik7CiAJcl9zdGFydCA9ICptbWlvOwpAQCAtNjY2LDYgKzY2OSw3IEBA IGlndF9tYWluCiAJY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUgKmU7CiAJaW50 IGRldmljZSA9IC0xOwogCisKIAlpZ3RfZml4dHVyZSB7CiAJCWRldmljZSA9IGRybV9vcGVuX2Ry aXZlcihEUklWRVJfSU5URUwpOwogCQlpZ3RfcmVxdWlyZV9nZW0oZGV2aWNlKTsKQEAgLTY4MCw3 ICs2ODQsNyBAQCBpZ3RfbWFpbgogCQlpZiAocmluZ19zaXplID4gMTAyNCkKIAkJCXJpbmdfc2l6 ZSA9IDEwMjQ7CiAKLQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgZmFsc2UsIGRldmljZSk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGln dF9kZXZpY2VfZ2V0X3BjaV9kZXZpY2UoZGV2aWNlKSwgZmFsc2UsIGRldmljZSwgJmlndF9nbG9i YWxfbW1pbyk7CiAJCXJjc19jbG9jayA9IGNsb2NrcmF0ZShkZXZpY2UsIFJDU19USU1FU1RBTVAp OwogCQlpZ3RfaW5mbygiUkNTIHRpbWVzdGFtcCBjbG9jazogJS4wZktIeiwgJS4xZm5zXG4iLAog CQkJIHJjc19jbG9jayAvIDFlMywgMWU5IC8gcmNzX2Nsb2NrKTsKZGlmZiAtLWdpdCBhL3Rlc3Rz L2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFyc2UuYwppbmRl eCA2MmU4ZDBhNS4uNzliNDJhZjMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfcGFy c2UuYworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3BhcnNlLmMKQEAgLTI3LDcgKzI3LDcgQEAK ICNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5v Lmg+Ci0KKyNpbmNsdWRlICJpZ3RfZGV2aWNlLmgiCiAjaW5jbHVkZSA8ZHJtLmg+CiAKICNpZm5k ZWYgSTkxNV9QQVJBTV9DTURfUEFSU0VSX1ZFUlNJT04KQEAgLTU3LDYgKzU3LDcgQEAKICNkZWZp bmUgICBQSVBFX0NPTlRST0xfTFJJX1BPU1RfT1AgKDE8PDIzKQogCiBzdGF0aWMgaW50IHBhcnNl cl92ZXJzaW9uOworc3RydWN0IG1taW9fZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAKIHN0YXRpYyBp bnQgY29tbWFuZF9wYXJzZXJfdmVyc2lvbihpbnQgZmQpCiB7CkBAIC0yODQsOSArMjg1LDkgQEAg dGVzdF9scmkoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUsIHN0cnVjdCB0ZXN0X2xyaSAqdGVzdCkK IAkJICB0ZXN0LT5uYW1lLCB0ZXN0LT5yZWcsIHRlc3QtPnRlc3RfdmFsLAogCQkgIGV4cGVjdGVk X2Vycm5vLCBleHBlY3QpOwogCi0JaW50ZWxfcmVnaXN0ZXJfd3JpdGUodGVzdC0+cmVnLCB0ZXN0 LT5pbml0X3ZhbCk7CisJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoJmlndF9nbG9iYWxfbW1pbywgdGVz dC0+cmVnLCB0ZXN0LT5pbml0X3ZhbCk7CiAKLQlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVn aXN0ZXJfcmVhZCh0ZXN0LT5yZWcpICYKKwlpZ3RfYXNzZXJ0X2VxX3UzMigoaW50ZWxfcmVnaXN0 ZXJfcmVhZCgmaWd0X2dsb2JhbF9tbWlvLCB0ZXN0LT5yZWcpICYKIAkJCSAgIHRlc3QtPnJlYWRf bWFzayksCiAJCQkgIHRlc3QtPmluaXRfdmFsKTsKIApAQCAtMjk2LDcgKzI5Nyw3IEBAIHRlc3Rf bHJpKGludCBmZCwgdWludDMyX3QgaGFuZGxlLCBzdHJ1Y3QgdGVzdF9scmkgKnRlc3QpCiAJCSAg IGV4cGVjdGVkX2Vycm5vKTsKIAlnZW1fc3luYyhmZCwgaGFuZGxlKTsKIAotCWlndF9hc3NlcnRf ZXFfdTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKHRlc3QtPnJlZykgJgorCWlndF9hc3NlcnRfZXFf dTMyKChpbnRlbF9yZWdpc3Rlcl9yZWFkKCZpZ3RfZ2xvYmFsX21taW8sIHRlc3QtPnJlZykgJgog CQkJICAgdGVzdC0+cmVhZF9tYXNrKSwKIAkJCSAgZXhwZWN0KTsKIH0KQEAgLTQzMCw2ICs0MzEs NyBAQCBpZ3RfbWFpbgogCXVpbnQzMl90IGhhbmRsZTsKIAlpbnQgZmQ7CiAKKwogCWlndF9maXh0 dXJlIHsKIAkJZmQgPSBkcm1fb3Blbl9kcml2ZXIoRFJJVkVSX0lOVEVMKTsKIAkJaWd0X3JlcXVp cmVfZ2VtKGZkKTsKQEAgLTUzMCw3ICs1MzIsNyBAQCBpZ3RfbWFpbgogI3VuZGVmIFJFRwogCiAJ CWlndF9maXh0dXJlIHsKLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9w Y2lfZGV2aWNlKCksIDAsIGZkKTsKKwkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGlndF9k ZXZpY2VfZ2V0X3BjaV9kZXZpY2UoZmQpLCAwLCBmZCwgJmlndF9nbG9iYWxfbW1pbyk7CiAJCX0K IAogCQlmb3IgKGludCBpID0gMDsgaSA8IEFSUkFZX1NJWkUobHJpcyk7IGkrKykgewpAQCAtNTQz LDcgKzU0NSw3IEBAIGlndF9tYWluCiAJCX0KIAogCQlpZ3RfZml4dHVyZSB7Ci0JCQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCQkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJmln dF9nbG9iYWxfbW1pbyk7CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9w bV9scHNwLmMgYi90ZXN0cy9pOTE1L2k5MTVfcG1fbHBzcC5jCmluZGV4IGIzMTlkYmU5Li5iZmJk MjNkZCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX2xwc3AuYworKysgYi90ZXN0cy9p OTE1L2k5MTVfcG1fbHBzcC5jCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSA8ZmNudGwuaD4K ICNpbmNsdWRlIDx1bmlzdGQuaD4KIAorI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKK3N0cnVjdCBt bWlvX2RhdGEgaWd0X2dsb2JhbF9tbWlvOwogCiBzdGF0aWMgYm9vbCBzdXBwb3J0c19scHNwKHVp bnQzMl90IGRldmlkKQogewpAQCAtNDAsNyArNDIsNyBAQCBzdGF0aWMgYm9vbCBscHNwX2lzX2Vu YWJsZWQoaW50IGRybV9mZCkKIHsKIAl1aW50MzJfdCB2YWw7CiAKLQl2YWwgPSBJTlJFRyhIU1df UFdSX1dFTExfQ1RMMik7CisJdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgSFNXX1BXUl9X RUxMX0NUTDIpOwogCXJldHVybiAhKHZhbCAmIEhTV19QV1JfV0VMTF9TVEFURV9FTkFCTEVEKTsK IH0KIApAQCAtMjEwLDcgKzIxMiw3IEBAIGlndF9tYWluCiAKIAkJaWd0X3JlcXVpcmUoc3VwcG9y dHNfbHBzcChkZXZpZCkpOwogCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDAsIGRybV9mZCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGlndF9kZXZpY2VfZ2V0X3BjaV9kZXZpY2UoZHJtX2ZkKSwgMCwgZHJtX2ZkLCAmaWd0X2dsb2Jh bF9tbWlvKTsKIAogCQlrbXN0ZXN0X3NldF92dF9ncmFwaGljc19tb2RlKCk7CiAJfQpAQCAtMjI3 LDcgKzIyOSw3IEBAIGlndF9tYWluCiAJaWd0X2ZpeHR1cmUgewogCQlpbnQgaTsKIAotCQlpbnRl bF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgm aWd0X2dsb2JhbF9tbWlvKTsKIAkJZm9yIChpID0gMDsgaSA8IGRybV9yZXMtPmNvdW50X2Nvbm5l Y3RvcnM7IGkrKykKIAkJCWRybU1vZGVGcmVlQ29ubmVjdG9yKGRybV9jb25uZWN0b3JzW2ldKTsK IAkJZHJtTW9kZUZyZWVSZXNvdXJjZXMoZHJtX3Jlcyk7CmRpZmYgLS1naXQgYS90b29scy9pbnRl bF9hdWRpb19kdW1wLmMgYi90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKaW5kZXggOTAyNjBhMmYu LjVhNTUyMzVjIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9hdWRpb19kdW1wLmMKKysrIGIvdG9v bHMvaW50ZWxfYXVkaW9fZHVtcC5jCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiZHJtdGVz dC5oIgogCiBzdGF0aWMgdWludDMyX3QgZGV2aWQ7CitzdHJ1Y3QgbW1pb19kYXRhIGlndF9nbG9i YWxfbW1pbzsKIAogc3RhdGljIGludCBhdWRfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mg b2YgYXVkaW8gcmVnaXN0ZXJzICovCiBzdGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBi YXNlIGFkZHJlc3Mgb2YgZGlzcGxheSByZWdpc3RlcnMgKi8KQEAgLTY3LDIzICs2OCwyMyBAQCBz dGF0aWMgaW50IGRpc3BfcmVnX2Jhc2UgPSAwOwkvKiBiYXNlIGFkZHJlc3Mgb2YgZGlzcGxheSBy ZWdpc3RlcnMgKi8KIAogI2RlZmluZSBkdW1wX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJZG8gewkJ CQkJCQlcCi0JCWR3b3JkID0gSU5SRUcocmVnKTsJXAorCQlkd29yZCA9IElOUkVHKCZpZ3RfZ2xv YmFsX21taW8sIHJlZyk7CVwKIAkJcHJpbnRmKCIlLTIxcyglI3gpIDB4JTA4eCAgJXNcbiIsICMg cmVnLCByZWcsIGR3b3JkLCBkZXNjKTsJXAogCX0gd2hpbGUgKDApCiAKICNkZWZpbmUgZHVtcF9k aXNwX3JlZyhyZWcsIGRlc2MpCQkJCQlcCiAJZG8gewkJCQkJCQlcCi0JCWR3b3JkID0gSU5SRUco ZGlzcF9yZWdfYmFzZSArIHJlZyk7CVwKKwkJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlv LCBkaXNwX3JlZ19iYXNlICsgcmVnKTsJXAogCQlwcmludGYoIiUtMjFzKCUjeCkgMHglMDh4ICAl c1xuIiwgIyByZWcsIHJlZywgZHdvcmQsIGRlc2MpOwlcCiAJfSB3aGlsZSAoMCkKIAogI2RlZmlu ZSBkdW1wX2F1ZF9yZWcocmVnLCBkZXNjKQkJCQkJXAogCWRvIHsJCQkJCQkJXAotCQlkd29yZCA9 IElOUkVHKGF1ZF9yZWdfYmFzZSArIHJlZyk7CVwKKwkJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2Jh bF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyByZWcpOwlcCiAJCXByaW50ZigiJS0yMXMoJSN4KSAweCUw OHggICVzXG4iLCAjIHJlZywgcmVnLCBkd29yZCwgZGVzYyk7CVwKIAl9IHdoaWxlICgwKQogCi0j ZGVmaW5lIHJlYWRfYXVkX3JlZyhyZWcpCUlOUkVHKGF1ZF9yZWdfYmFzZSArIChyZWcpKQorI2Rl ZmluZSByZWFkX2F1ZF9yZWcocmVnKQlJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jh c2UgKyAocmVnKSkKIAogc3RhdGljIGludCBnZXRfbnVtX3BpcGVzKHZvaWQpCiB7CkBAIC01MzIs MzEgKzUzMywzMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCiAJcHJpbnRm KCJcbkRldGFpbHM6XG5cbiIpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfVklEX0RJRCk7CisJZHdv cmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfVklEX0RJRCk7CiAJcHJpbnRmKCJBVURf VklEX0RJRCB2ZW5kb3IgaWRcdFx0XHQweCV4XG4iLCBkd29yZCA+PiAxNik7CiAJcHJpbnRmKCJB VURfVklEX0RJRCBkZXZpY2UgaWRcdFx0XHQweCV4XG4iLCBkd29yZCAmIDB4ZmZmZik7CiAKLQlk d29yZCA9IElOUkVHKEFVRF9SSUQpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg QVVEX1JJRCk7CiAJcHJpbnRmKCJBVURfUklEIG1ham9yIHJldmlzaW9uXHRcdFx0MHglbHhcbiIs IEJJVFMoZHdvcmQsIDIzLCAyMCkpOwogCXByaW50ZigiQVVEX1JJRCBtaW5vciByZXZpc2lvblx0 XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFVRF9SSUQgcmV2 aXNpb24gaWRcdFx0XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgMTUsIDgpKTsKIAlwcmludGYo IkFVRF9SSUQgc3RlcHBpbmcgaWRcdFx0XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgNywgMCkp OwogCi0JZHdvcmQgPSBJTlJFRyhTRFZPQik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9t bWlvLCBTRFZPQik7CiAJcHJpbnRmKCJTRFZPQiBlbmFibGVcdFx0XHRcdCV1XG4iLCAgICAgICEh KGR3b3JkICYgU0RWT19FTkFCTEUpKTsKIAlwcmludGYoIlNEVk9CIEhETUkgZW5jb2RpbmdcdFx0 XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX0hETUkpKTsKIAlwcmludGYoIlNEVk9C IFNEVk8gZW5jb2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX1NEVk8p KTsKIAlwcmludGYoIlNEVk9CIG51bGwgcGFja2V0c1x0XHRcdCV1XG4iLCAgISEoZHdvcmQgJiBT RFZPX05VTExfUEFDS0VUU19EVVJJTkdfVlNZTkMpKTsKIAlwcmludGYoIlNEVk9CIGF1ZGlvIGVu YWJsZWRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElPX0VOQUJMRSkpOwogCi0JZHdv cmQgPSBJTlJFRyhTRFZPQyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBTRFZP Qyk7CiAJcHJpbnRmKCJTRFZPQyBlbmFibGVcdFx0XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYg U0RWT19FTkFCTEUpKTsKIAlwcmludGYoIlNEVk9DIEhETUkgZW5jb2RpbmdcdFx0XHQldVxuIiwg ISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX0hETUkpKTsKIAlwcmludGYoIlNEVk9DIFNEVk8gZW5j b2RpbmdcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0VOQ09ESU5HX1NEVk8pKTsKIAlwcmlu dGYoIlNEVk9DIG51bGwgcGFja2V0c1x0XHRcdCV1XG4iLCAgISEoZHdvcmQgJiBTRFZPX05VTExf UEFDS0VUU19EVVJJTkdfVlNZTkMpKTsKIAlwcmludGYoIlNEVk9DIGF1ZGlvIGVuYWJsZWRcdFx0 XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElPX0VOQUJMRSkpOwogCi0JZHdvcmQgPSBJTlJF RyhQT1JUX0hPVFBMVUdfRU4pOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgUE9S VF9IT1RQTFVHX0VOKTsKIAlwcmludGYoIlBPUlRfSE9UUExVR19FTiBEaXNwbGF5UG9ydC9IRE1J IHBvcnQgQlx0JWxkXG4iLCBCSVQoZHdvcmQsIDI5KSksCiAJcHJpbnRmKCJQT1JUX0hPVFBMVUdf RU4gRGlzcGxheVBvcnQvSERNSSBwb3J0IENcdCVsZFxuIiwgQklUKGR3b3JkLCAyOCkpLAogCXBy aW50ZigiUE9SVF9IT1RQTFVHX0VOIERpc3BsYXlQb3J0IHBvcnQgRFx0JWxkXG4iLCAgICAgIEJJ VChkd29yZCwgMjcpKSwKQEAgLTU2Niw3ICs1NjcsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xl bGFrZSh2b2lkKQogCXByaW50ZigiUE9SVF9IT1RQTFVHX0VOIFRWXHRcdFx0JWxkXG4iLCAgICBC SVQoZHdvcmQsIDIzKSksCiAJcHJpbnRmKCJQT1JUX0hPVFBMVUdfRU4gQ1JUXHRcdFx0JWxkXG4i LCAgIEJJVChkd29yZCwgOSkpLAogCi0JZHdvcmQgPSBJTlJFRyhWSURFT19ESVBfQ1RMKTsKKwlk d29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9DVEwpOwogCXByaW50Zigi VklERU9fRElQX0NUTCBlbmFibGUgZ3JhcGhpY3MgRElQXHQlbGRcbiIsICAgICBCSVQoZHdvcmQs IDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMIHBvcnQgc2VsZWN0XHRcdFsweCVseF0gJXNc biIsCiAJCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgZGlwX3BvcnRbQklUUyhkd29yZCwgMzAsIDI5 KV0pOwpAQCAtNTgxLDQ2ICs1ODIsNDYgQEAgc3RhdGljIHZvaWQgZHVtcF9lYWdsZWxha2Uodm9p ZCkKIAlwcmludGYoIlZJREVPX0RJUF9DVEwgRElQIGJ1ZmZlciBzaXplXHRcdCVsdVxuIiwgQklU Uyhkd29yZCwgMTEsIDgpKTsKIAlwcmludGYoIlZJREVPX0RJUF9DVEwgRElQIGFkZHJlc3NcdFx0 JWx1XG4iLCBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9DT05GSUcp OworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0NPTkZJRyk7CiAJcHJpbnRm KCJBVURfQ09ORklHIHBpeGVsIGNsb2NrXHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwg MTksIDE2KSwKIAkJCU9QTkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkpOwog CXByaW50ZigiQVVEX0NPTkZJRyBmYWJyaWNhdGlvbiBlbmFibGVkXHRcdCVsdVxuIiwgQklUUyhk d29yZCwgMiwgMikpOwogCXByaW50ZigiQVVEX0NPTkZJRyBwcm9mZXNzaW9uYWwgdXNlIGFsbG93 ZWRcdCVsdVxuIiwgQklUKGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfQ09ORklHIGZ1c2UgZW5h YmxlZFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9E RUJVRyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfREVCVUcpOwogCXBy aW50ZigiQVVEX0RFQlVHIGZ1bmN0aW9uIHJlc2V0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAwKSk7 CiAKLQlkd29yZCA9IElOUkVHKEFVRF9TVUJOX0NOVCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfU1VCTl9DTlQpOwogCXByaW50ZigiQVVEX1NVQk5fQ05UIHN0YXJ0aW5n IG5vZGUgbnVtYmVyXHQweCVseFxuIiwgIEJJVFMoZHdvcmQsIDIzLCAxNikpOwogCXByaW50Zigi QVVEX1NVQk5fQ05UIHRvdGFsIG51bWJlciBvZiBub2Rlc1x0MHglbHhcbiIsIEJJVFMoZHdvcmQs IDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1NVQk5fQ05UMik7CisJZHdvcmQgPSBJTlJF RygmaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VCTl9DTlQyKTsKIAlwcmludGYoIkFVRF9TVUJOX0NO VDIgc3RhcnRpbmcgbm9kZSBudW1iZXJcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjQsIDE2KSk7 CiAJcHJpbnRmKCJBVURfU1VCTl9DTlQyIHRvdGFsIG51bWJlciBvZiBub2Rlc1x0MHglbHhcbiIs IEJJVFMoZHdvcmQsIDcsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0ZVTkNfR1JQKTsKKwlk d29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9GVU5DX0dSUCk7CiAJcHJpbnRmKCJB VURfRlVOQ19HUlAgdW5zb2wgY2FwYWJsZVx0XHQlbHVcbiIsIEJJVChkd29yZCwgOCkpOwogCXBy aW50ZigiQVVEX0ZVTkNfR1JQIG5vZGUgdHlwZVx0XHRcdDB4JWx4XG4iLCBCSVRTKGR3b3JkLCA3 LCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9HUlBfQ0FQKTsKKwlkd29yZCA9IElOUkVHKCZp Z3RfZ2xvYmFsX21taW8sIEFVRF9HUlBfQ0FQKTsKIAlwcmludGYoIkFVRF9HUlBfQ0FQIGJlZXAg MFx0XHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAxNikpOwogCXByaW50ZigiQVVEX0dSUF9D QVAgaW5wdXQgZGVsYXlcdFx0XHQlbHVcbiIsICBCSVRTKGR3b3JkLCAxMSwgOCkpOwogCXByaW50 ZigiQVVEX0dSUF9DQVAgb3V0cHV0IGRlbGF5XHRcdCVsdVxuIiwgICBCSVRTKGR3b3JkLCAzLCAw KSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9QV1JTVCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfUFdSU1QpOwogCXByaW50ZigiQVVEX1BXUlNUIGRldmljZSBwb3dlciBz dGF0ZVx0XHQlc1xuIiwKIAkJCXBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDUsIDQpXSk7CiAJcHJp bnRmKCJBVURfUFdSU1QgZGV2aWNlIHBvd2VyIHN0YXRlIHNldHRpbmdcdCVzXG4iLAogCQkJcG93 ZXJfc3RhdGVbQklUUyhkd29yZCwgMSwgMCldKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1NVUFBX Uik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfU1VQUFdSKTsKIAlwcmlu dGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEMFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAwKSk7CiAJ cHJpbnRmKCJBVURfU1VQUFdSIHN1cHBvcnQgRDFcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMSkp OwogCXByaW50ZigiQVVEX1NVUFBXUiBzdXBwb3J0IEQyXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQs IDIpKTsKIAlwcmludGYoIkFVRF9TVVBQV1Igc3VwcG9ydCBEM1x0XHRcdCVsdVxuIiwgQklUKGR3 b3JkLCAzKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9PVVRfQ1dDQVApOworCWR3b3JkID0gSU5S RUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DV0NBUCk7CiAJcHJpbnRmKCJBVURfT1VUX0NX Q0FQIHdpZGdldCB0eXBlXHRcdDB4JWx4XG4iLCAgQklUUyhkd29yZCwgMjMsIDIwKSk7CiAJcHJp bnRmKCJBVURfT1VUX0NXQ0FQIHNhbXBsZSBkZWxheVx0XHQweCVseFxuIiwgQklUUyhkd29yZCwg MTksIDE2KSk7CiAJcHJpbnRmKCJBVURfT1VUX0NXQ0FQIGNoYW5uZWwgY291bnRcdFx0JWx1XG4i LApAQCAtNjM2LDcgKzYzNyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJ cHJpbnRmKCJBVURfT1VUX0NXQ0FQIG91dCBhbXAgcHJlc2VudFx0XHQlbHVcbiIsICBCSVQoZHdv cmQsIDIpKTsKIAlwcmludGYoIkFVRF9PVVRfQ1dDQVAgaW4gYW1wIHByZXNlbnRcdFx0JWx1XG4i LCAgIEJJVChkd29yZCwgMSkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19DTlZUKTsK Kwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NOVlQpOwogCXBy aW50ZigiQVVEX09VVF9ESUdfQ05WVCBTUERJRiBjYXRlZ29yeVx0XHQweCVseFxuIiwgQklUUyhk d29yZCwgMTQsIDgpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NOVlQgU1BESUYgbGV2ZWxcdFx0 JWx1XG4iLCAgICAgIEJJVChkd29yZCwgNykpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVCBw cm9mZXNzaW9uYWxcdFx0JWx1XG4iLCAgICAgQklUKGR3b3JkLCA2KSk7CkBAIC02NDcsMTYgKzY0 OCwxNiBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiQVVEX09V VF9ESUdfQ05WVCB2YWxpZGl0eSBmbGFnXHRcdCVsdVxuIiwgICAgQklUKGR3b3JkLCAxKSk7CiAJ cHJpbnRmKCJBVURfT1VUX0RJR19DTlZUIGRpZ2l0YWwgZW5hYmxlXHRcdCVsdVxuIiwgICBCSVQo ZHdvcmQsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9DSF9TVFIpOworCWR3b3JkID0g SU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DSF9TVFIpOwogCXByaW50ZigiQVVEX09V VF9DSF9TVFIgc3RyZWFtIGlkXHRcdDB4JWx4XG4iLCAgICAgICAgQklUUyhkd29yZCwgNywgNCkp OwogCXByaW50ZigiQVVEX09VVF9DSF9TVFIgbG93ZXN0IGNoYW5uZWxcdFx0JWx1XG4iLCAgICAg QklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfT1VUX1NUUl9ERVNDKTsK Kwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfU1RSX0RFU0MpOwogCXBy aW50ZigiQVVEX09VVF9TVFJfREVTQyBzdHJlYW0gY2hhbm5lbHNcdCVsdVxuIiwgICAgQklUUyhk d29yZCwgMywgMCkgKyAxKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0MgQml0cyBwZXIgU2Ft cGxlXHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwgT1BOQU1FKGJpdHNfcGVy X3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BJTldf Q0FQKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9QSU5XX0NBUCk7CiAJ cHJpbnRmKCJBVURfUElOV19DQVAgd2lkZ2V0IHR5cGVcdFx0MHglbHhcbiIsICAgICAgICBCSVRT KGR3b3JkLCAyMywgMjApKTsKIAlwcmludGYoIkFVRF9QSU5XX0NBUCBzYW1wbGUgZGVsYXlcdFx0 MHglbHhcbiIsICAgICAgIEJJVFMoZHdvcmQsIDE5LCAxNikpOwogCXByaW50ZigiQVVEX1BJTldf Q0FQIGNoYW5uZWwgY291bnRcdFx0JWx1XG4iLApAQCAtNjc0LDEzICs2NzUsMTMgQEAgc3RhdGlj IHZvaWQgZHVtcF9lYWdsZWxha2Uodm9pZCkKIAlwcmludGYoIkFVRF9QSU5XX0NBUCBpbiBhbXAg cHJlc2VudFx0XHQlbHVcbiIsICAgICAgIEJJVChkd29yZCwgMSkpOwogCiAKLQlkd29yZCA9IElO UkVHKEFVRF9QSU5fQ0FQKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9Q SU5fQ0FQKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIEVBUERcdFx0XHQlbHVcbiIsICAgICAgICAg IEJJVChkd29yZCwgMTYpKTsKIAlwcmludGYoIkFVRF9QSU5fQ0FQIEhETUlcdFx0XHQlbHVcbiIs ICAgICAgICAgIEJJVChkd29yZCwgNykpOwogCXByaW50ZigiQVVEX1BJTl9DQVAgb3V0cHV0XHRc dFx0JWx1XG4iLCAgICAgICAgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURfUElOX0NBUCBw cmVzZW5jZSBkZXRlY3RcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIpKTsKIAotCWR3b3JkID0gSU5S RUcoQVVEX1BJTldfQ05UUik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURf UElOV19DTlRSKTsKIAlwcmludGYoIkFVRF9QSU5XX0NOVFIgbXV0ZSBzdGF0dXNcdFx0JWx1XG4i LCAgICAgQklUKGR3b3JkLCA4KSk7CiAJcHJpbnRmKCJBVURfUElOV19DTlRSIG91dCBlbmFibGVc dFx0JWx1XG4iLCAgICAgIEJJVChkd29yZCwgNikpOwogCXByaW50ZigiQVVEX1BJTldfQ05UUiBh bXAgbXV0ZSBzdGF0dXNcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDgpKTsKQEAgLTY4OSwxMCArNjkw LDEwIEBAIHN0YXRpYyB2b2lkIGR1bXBfZWFnbGVsYWtlKHZvaWQpCiAJCQlCSVRTKGR3b3JkLCAy LCAwKSwKIAkJCU9QTkFNRShzdHJlYW1fdHlwZSwgQklUUyhkd29yZCwgMiwgMCkpKTsKIAotCWR3 b3JkID0gSU5SRUcoQVVEX1BJTldfVU5TT0xSRVNQKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xv YmFsX21taW8sIEFVRF9QSU5XX1VOU09MUkVTUCk7CiAJcHJpbnRmKCJBVURfUElOV19VTlNPTFJF U1AgZW5hYmxlIHVuc29sIHJlc3BcdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwogCi0JZHdvcmQg PSBJTlJFRyhBVURfQ05UTF9TVCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBB VURfQ05UTF9TVCk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVCBESVAgYXVkaW8gZW5hYmxlZFx0XHQl bHVcbiIsIEJJVChkd29yZCwgMjEpKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUIERJUCBBQ1AgZW5h YmxlZFx0XHQlbHVcbiIsICAgQklUKGR3b3JkLCAyMikpOwogCXByaW50ZigiQVVEX0NOVExfU1Qg RElQIElTUkN4IGVuYWJsZWRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIzKSk7CkBAIC03MDksMzgg KzcxMCwzOCBAQCBzdGF0aWMgdm9pZCBkdW1wX2VhZ2xlbGFrZSh2b2lkKQogCXByaW50ZigiQVVE X0NOVExfU1QgRUxEIGJ1ZnNpemVcdFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDEzLCA5KSk7CiAJ cHJpbnRmKCJBVURfQ05UTF9TVCBFTEQgYWRkcmVzc1x0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwg OCwgNSkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfSERNSVdfU1RBVFVTKTsKKwlkd29yZCA9IElO UkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9IRE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hE TUlXX1NUQVRVUyBDRENMSy9ET1RDTEsgdW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkp OwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBDRENMSy9ET1RDTEsgb3ZlcnJ1blx0JWx1XG4i LCAgQklUKGR3b3JkLCAzMCkpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyBCQ0xLL0NEQ0xL IHVuZGVycnVuXHQlbHVcbiIsICAgQklUKGR3b3JkLCAyOSkpOwogCXByaW50ZigiQVVEX0hETUlX X1NUQVRVUyBCQ0xLL0NEQ0xLIG92ZXJydW5cdCVsdVxuIiwgICAgQklUKGR3b3JkLCAyOCkpOwog Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ09OVl9DSENOVCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfQ09OVl9DSENOVCk7CiAJcHJpbnRmKCJBVURfQ09OVl9DSENOVCBIRE1J IEhCUiBlbmFibGVkXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTUsIDE0KSk7CiAJcHJpbnRmKCJB VURfQ09OVl9DSENOVCBIRE1JIGNoYW5uZWwgY291bnRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTEs IDgpICsgMSk7CiAKIAlwcmludGYoIkFVRF9DT05WX0NIQ05UIEhETUkgY2hhbm5lbCBtYXBwaW5n OlxuIik7CiAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewotCQlPVVRSRUcoQVVEX0NPTlZfQ0hD TlQsIGkpOwotCQlkd29yZCA9IElOUkVHKEFVRF9DT05WX0NIQ05UKTsKKwkJT1VUUkVHKCZpZ3Rf Z2xvYmFsX21taW8sIEFVRF9DT05WX0NIQ05ULCBpKTsKKwkJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfQ09OVl9DSENOVCk7CiAJCXByaW50ZigiXHRcdFx0XHRcdFsweCV4XSAl dSA9PiAlbHVcbiIsIGR3b3JkLCBpLCBCSVRTKGR3b3JkLCA3LCA0KSk7CiAJfQogCiAJcHJpbnRm KCJBVURfSERNSVdfSERNSUVESUQgSERNSSBFTEQ6XG5cdCIpOwotCWR3b3JkID0gSU5SRUcoQVVE X0NOVExfU1QpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1Qp OwogCWR3b3JkICY9IH5CSVRNQVNLKDgsIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVCwgZHdvcmQp OworCU9VVFJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCwgZHdvcmQpOwogCWZvciAo aSA9IDA7IGkgPCBCSVRTKGR3b3JkLCAxNCwgMTApIC8gNDsgaSsrKQotCQlwcmludGYoIiUwOHgg IiwgaHRvbmwoSU5SRUcoQVVEX0hETUlXX0hETUlFRElEKSkpOworCQlwcmludGYoIiUwOHggIiwg aHRvbmwoSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX0hETUlFRElEKSkpOwogCXBy aW50ZigiXG4iKTsKIAogCXByaW50ZigiQVVEX0hETUlXX0lORk9GUiBIRE1JIGF1ZGlvIEluZm9m cmFtZTpcblx0Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVCk7CisJZHdvcmQgPSBJTlJF RygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVCk7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAs IDE4KTsKIAlkd29yZCAmPSB+QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoQVVEX0NOVExfU1QsIGR3 b3JkKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0NOVExfU1QsIGR3b3JkKTsKIAlm b3IgKGkgPSAwOyBpIDwgODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVE X0hETUlXX0lORk9GUikpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKCZpZ3RfZ2xv YmFsX21taW8sIEFVRF9IRE1JV19JTkZPRlIpKSk7CiAJcHJpbnRmKCJcbiIpOwogfQogCkBAIC04 NjMsNyArODY0LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAogCXByaW50ZigiXG5E ZXRhaWxzOlxuXG4iKTsKIAotCWR3b3JkID0gSU5SRUcoVklERU9fRElQX0NUTF9BKTsKKwlkd29y ZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIFZJREVPX0RJUF9DVExfQSk7CiAJcHJpbnRmKCJW SURFT19ESVBfQ1RMX0EgRW5hYmxlX0dyYXBoaWNzX0RJUFx0XHRcdCVsZFxuIiwgICAgIEJJVChk d29yZCwgMzEpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQSBHQ1BfRElQX2VuYWJsZVx0XHRc dFx0JWxkXG4iLCAgICAgQklUKGR3b3JkLCAyNSkpLAogCXByaW50ZigiVklERU9fRElQX0NUTF9B IFZpZGVvX0RJUF90eXBlX2VuYWJsZSBBVklcdFx0JWx1XG4iLCAgICAgICBCSVQoZHdvcmQsIDIx KSk7CkBAIC04NzcsNyArODc4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmlu dGYoIlZJREVPX0RJUF9DVExfQSBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIsIEJJ VFMoZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0EgVmlkZW9fRElQX2Fj Y2Vzc19hZGRyZXNzXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQgPSBJ TlJFRyhWSURFT19ESVBfQ1RMX0IpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg VklERU9fRElQX0NUTF9CKTsKIAlwcmludGYoIlZJREVPX0RJUF9DVExfQiBFbmFibGVfR3JhcGhp Y3NfRElQXHRcdFx0JWxkXG4iLCAgICAgQklUKGR3b3JkLCAzMSkpLAogCXByaW50ZigiVklERU9f RElQX0NUTF9CIEdDUF9ESVBfZW5hYmxlXHRcdFx0XHQlbGRcbiIsICAgICBCSVQoZHdvcmQsIDI1 KSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0IgVmlkZW9fRElQX3R5cGVfZW5hYmxlIEFWSVx0 XHQlbHVcbiIsICAgICAgIEJJVChkd29yZCwgMjEpKTsKQEAgLTg5MSw3ICs4OTIsNyBAQCBzdGF0 aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiVklERU9fRElQX0NUTF9CIFZpZGVvX0RJ UF9idWZmZXJfc2l6ZVx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTEsIDgpKTsKIAlwcmludGYo IlZJREVPX0RJUF9DVExfQiBWaWRlb19ESVBfYWNjZXNzX2FkZHJlc3NcdFx0JWx1XG4iLCBCSVRT KGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKFZJREVPX0RJUF9DVExfQyk7CisJZHdv cmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBWSURFT19ESVBfQ1RMX0MpOwogCXByaW50Zigi VklERU9fRElQX0NUTF9DIEVuYWJsZV9HcmFwaGljc19ESVBcdFx0XHQlbGRcbiIsICAgICBCSVQo ZHdvcmQsIDMxKSksCiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgR0NQX0RJUF9lbmFibGVcdFx0 XHRcdCVsZFxuIiwgICAgIEJJVChkd29yZCwgMjUpKSwKIAlwcmludGYoIlZJREVPX0RJUF9DVExf QyBWaWRlb19ESVBfdHlwZV9lbmFibGUgQVZJXHRcdCVsdVxuIiwgICAgICAgQklUKGR3b3JkLCAy MSkpOwpAQCAtOTA1LDE3ICs5MDYsMTcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlw cmludGYoIlZJREVPX0RJUF9DVExfQyBWaWRlb19ESVBfYnVmZmVyX3NpemVcdFx0XHQlbHVcbiIs IEJJVFMoZHdvcmQsIDExLCA4KSk7CiAJcHJpbnRmKCJWSURFT19ESVBfQ1RMX0MgVmlkZW9fRElQ X2FjY2Vzc19hZGRyZXNzXHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQg PSBJTlJFRyhBVURfVklEX0RJRCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBB VURfVklEX0RJRCk7CiAJcHJpbnRmKCJBVURfVklEX0RJRCB2ZW5kb3IgaWRcdFx0XHRcdFx0MHgl eFxuIiwgZHdvcmQgPj4gMTYpOwogCXByaW50ZigiQVVEX1ZJRF9ESUQgZGV2aWNlIGlkXHRcdFx0 XHRcdDB4JXhcbiIsIGR3b3JkICYgMHhmZmZmKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1JJRCk7 CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfUklEKTsKIAlwcmludGYoIkFV RF9SSUQgTWFqb3JfUmV2aXNpb25cdFx0XHRcdFx0MHglbHhcbiIsIEJJVFMoZHdvcmQsIDIzLCAy MCkpOwogCXByaW50ZigiQVVEX1JJRCBNaW5vcl9SZXZpc2lvblx0XHRcdFx0XHQweCVseFxuIiwg QklUUyhkd29yZCwgMTksIDE2KSk7CiAJcHJpbnRmKCJBVURfUklEIFJldmlzaW9uX0lkXHRcdFx0 XHRcdDB4JWx4XG4iLCAgICBCSVRTKGR3b3JkLCAxNSwgOCkpOwogCXByaW50ZigiQVVEX1JJRCBT dGVwcGluZ19JZFx0XHRcdFx0XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgNywgMCkpOwogCi0J ZHdvcmQgPSBJTlJFRyhIRE1JQik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBI RE1JQik7CiAJcHJpbnRmKCJIRE1JQiBQb3J0X0VuYWJsZVx0XHRcdFx0XHQldVxuIiwgICAgICAh IShkd29yZCAmIFNEVk9fRU5BQkxFKSk7CiAJcHJpbnRmKCJIRE1JQiBUcmFuc2NvZGVyX1NlbGVj dFx0XHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwgdHJhbnNj b2Rlcl9zZWxlY3RbQklUUyhkd29yZCwgMzAsIDI5KV0pOwpAQCAtOTI4LDcgKzkyOSw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJIRE1JQiBIRE1JX29yX0RWSV9TZWxl Y3RcdFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDkpID8gIkhETUkiIDogIkRWSSIpOwogCXByaW50 ZigiSERNSUIgQXVkaW9fT3V0cHV0X0VuYWJsZVx0XHRcdFx0JXVcbiIsICEhKGR3b3JkICYgU0RW T19BVURJT19FTkFCTEUpKTsKIAotCWR3b3JkID0gSU5SRUcoSERNSUMpOworCWR3b3JkID0gSU5S RUcoJmlndF9nbG9iYWxfbW1pbywgSERNSUMpOwogCXByaW50ZigiSERNSUMgUG9ydF9FbmFibGVc dFx0XHRcdFx0JXVcbiIsICAgICAgISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50Zigi SERNSUMgVHJhbnNjb2Rlcl9TZWxlY3RcdFx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMo ZHdvcmQsIDMwLCAyOSksIHRyYW5zY29kZXJfc2VsZWN0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsK QEAgLTk0MSw3ICs5NDIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50Zigi SERNSUMgSERNSV9vcl9EVklfU2VsZWN0XHRcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCA5KSA/ICJI RE1JIiA6ICJEVkkiKTsKIAlwcmludGYoIkhETUlDIEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRc dCV1XG4iLCAhIShkd29yZCAmIFNEVk9fQVVESU9fRU5BQkxFKSk7CiAKLQlkd29yZCA9IElOUkVH KEhETUlEKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEhETUlEKTsKIAlwcmlu dGYoIkhETUlEIFBvcnRfRW5hYmxlXHRcdFx0XHRcdCV1XG4iLCAgICAgICEhKGR3b3JkICYgU0RW T19FTkFCTEUpKTsKIAlwcmludGYoIkhETUlEIFRyYW5zY29kZXJfU2VsZWN0XHRcdFx0XHRcdFsw eCVseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCB0cmFuc2NvZGVyX3NlbGVjdFtC SVRTKGR3b3JkLCAzMCwgMjkpXSk7CkBAIC05NTQsNyArOTU1LDcgQEAgc3RhdGljIHZvaWQgZHVt cF9jcHQodm9pZCkKIAlwcmludGYoIkhETUlEIEhETUlfb3JfRFZJX1NlbGVjdFx0XHRcdFx0JXNc biIsIEJJVChkd29yZCwgOSkgPyAiSERNSSIgOiAiRFZJIik7CiAJcHJpbnRmKCJIRE1JRCBBdWRp b19PdXRwdXRfRW5hYmxlXHRcdFx0XHQldVxuIiwgISEoZHdvcmQgJiBTRFZPX0FVRElPX0VOQUJM RSkpOwogCi0JZHdvcmQgPSBJTlJFRyhEUF9DVExfQik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBEUF9DVExfQik7CiAJcHJpbnRmKCJEUF9DVExfQiBEaXNwbGF5UG9ydF9FbmFi bGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzMSkpOwogCXByaW50ZigiRFBfQ1RMX0IgUG9y dF9XaWR0aF9TZWxlY3Rpb25cdFx0XHRcdFsweCVseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAy MSwgMTkpLCBkcF9wb3J0X3dpZHRoW0JJVFMoZHdvcmQsIDIxLCAxOSldKTsKQEAgLTk2Miw3ICs5 NjMsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiRFBfQ1RMX0IgSERD UF9Qb3J0X1NlbGVjdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDUpKTsKIAlwcmludGYoIkRQ X0NUTF9CIEF1ZGlvX091dHB1dF9FbmFibGVcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA2KSk7 CiAKLQlkd29yZCA9IElOUkVHKERQX0NUTF9DKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFs X21taW8sIERQX0NUTF9DKTsKIAlwcmludGYoIkRQX0NUTF9DIERpc3BsYXlQb3J0X0VuYWJsZVx0 XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDMxKSk7CiAJcHJpbnRmKCJEUF9DVExfQyBQb3J0X1dp ZHRoX1NlbGVjdGlvblx0XHRcdFx0WzB4JWx4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDIxLCAx OSksIGRwX3BvcnRfd2lkdGhbQklUUyhkd29yZCwgMjEsIDE5KV0pOwpAQCAtOTcwLDcgKzk3MSw3 IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJEUF9DVExfQyBIRENQX1Bv cnRfU2VsZWN0XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNSkpOwogCXByaW50ZigiRFBfQ1RM X0MgQXVkaW9fT3V0cHV0X0VuYWJsZVx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDYpKTsKIAot CWR3b3JkID0gSU5SRUcoRFBfQ1RMX0QpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgRFBfQ1RMX0QpOwogCXByaW50ZigiRFBfQ1RMX0QgRGlzcGxheVBvcnRfRW5hYmxlXHRcdFx0 XHQlbHVcbiIsIEJJVChkd29yZCwgMzEpKTsKIAlwcmludGYoIkRQX0NUTF9EIFBvcnRfV2lkdGhf U2VsZWN0aW9uXHRcdFx0XHRbMHglbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMjEsIDE5KSwg ZHBfcG9ydF93aWR0aFtCSVRTKGR3b3JkLCAyMSwgMTkpXSk7CkBAIC05NzgsNyArOTc5LDcgQEAg c3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkRQX0NUTF9EIEhEQ1BfUG9ydF9T ZWxlY3RcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA1KSk7CiAJcHJpbnRmKCJEUF9DVExfRCBB dWRpb19PdXRwdXRfRW5hYmxlXHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwgNikpOwogCi0JZHdv cmQgPSBJTlJFRyhBVURfQ09ORklHX0EpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgQVVEX0NPTkZJR19BKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgTl9pbmRleF92YWx1ZVx0 XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJ VChkd29yZCwgMjkpXSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0EgIE5fcHJvZ3JhbW1pbmdfZW5h YmxlXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDI4KSk7CkBAIC05ODcsNyArOTg4LDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9DT05GSUdfQSAgUGl4ZWxfQ2xv Y2tfSERNSVx0XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwgMTksIDE2KSwKIAkJCU9Q TkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkpOwogCXByaW50ZigiQVVEX0NP TkZJR19BICBEaXNhYmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Ci0JZHdv cmQgPSBJTlJFRyhBVURfQ09ORklHX0IpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgQVVEX0NPTkZJR19CKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgTl9pbmRleF92YWx1ZVx0 XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJ VChkd29yZCwgMjkpXSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0IgIE5fcHJvZ3JhbW1pbmdfZW5h YmxlXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDI4KSk7CkBAIC05OTYsNyArOTk3LDcgQEAgc3Rh dGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9DT05GSUdfQiAgUGl4ZWxfQ2xv Y2tfSERNSVx0XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUUyhkd29yZCwgMTksIDE2KSwKIAkJCU9Q TkFNRShwaXhlbF9jbG9jaywgQklUUyhkd29yZCwgMTksIDE2KSkpOwogCXByaW50ZigiQVVEX0NP TkZJR19CICBEaXNhYmxlX05DVFNcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAzKSk7Ci0JZHdv cmQgPSBJTlJFRyhBVURfQ09ORklHX0MpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgQVVEX0NPTkZJR19DKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQyAgTl9pbmRleF92YWx1ZVx0 XHRcdFx0WzB4JWx4XSAlc1xuIiwgQklUKGR3b3JkLCAyOSksCiAJCQluX2luZGV4X3ZhbHVlW0JJ VChkd29yZCwgMjkpXSk7CiAJcHJpbnRmKCJBVURfQ09ORklHX0MgIE5fcHJvZ3JhbW1pbmdfZW5h YmxlXHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDI4KSk7CkBAIC0xMDA2LDM2ICsxMDA3LDM2IEBA IHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJCQlPUE5BTUUocGl4ZWxfY2xvY2ssIEJJVFMo ZHdvcmQsIDE5LCAxNikpKTsKIAlwcmludGYoIkFVRF9DT05GSUdfQyAgRGlzYWJsZV9OQ1RTXHRc dFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMykpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ1RTX0VO QUJMRV9BKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DVFNfRU5BQkxF X0EpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQSAgRW5hYmxlX0NUU19vcl9NX3Byb2dyYW1t aW5nXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMCkpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVf QSAgQ1RTX00gdmFsdWUgSW5kZXhcdFx0XHQlc1xuIiwgQklUKGR3b3JkLCAyMSkgPyAiQ1RTIiA6 ICJNIik7CiAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9BICBDVFNfcHJvZ3JhbW1pbmdcdFx0XHQl I2x4XG4iLCBCSVRTKGR3b3JkLCAxOSwgMCkpOwotCWR3b3JkID0gSU5SRUcoQVVEX0NUU19FTkFC TEVfQik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ1RTX0VOQUJMRV9C KTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0IgIEVuYWJsZV9DVFNfb3JfTV9wcm9ncmFtbWlu Z1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjApKTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0Ig IENUU19NIHZhbHVlIEluZGV4XHRcdFx0JXNcbiIsIEJJVChkd29yZCwgMjEpID8gIkNUUyIgOiAi TSIpOwogCXByaW50ZigiQVVEX0NUU19FTkFCTEVfQiAgQ1RTX3Byb2dyYW1taW5nXHRcdFx0JSNs eFxuIiwgQklUUyhkd29yZCwgMTksIDApKTsKLQlkd29yZCA9IElOUkVHKEFVRF9DVFNfRU5BQkxF X0MpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0NUU19FTkFCTEVfQyk7 CiAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9DICBFbmFibGVfQ1RTX29yX01fcHJvZ3JhbW1pbmdc dFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIwKSk7CiAJcHJpbnRmKCJBVURfQ1RTX0VOQUJMRV9DICBD VFNfTSB2YWx1ZSBJbmRleFx0XHRcdCVzXG4iLCBCSVQoZHdvcmQsIDIxKSA/ICJDVFMiIDogIk0i KTsKIAlwcmludGYoIkFVRF9DVFNfRU5BQkxFX0MgIENUU19wcm9ncmFtbWluZ1x0XHRcdCUjbHhc biIsIEJJVFMoZHdvcmQsIDE5LCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxf QSk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0EpOwog CXByaW50ZigiQVVEX01JU0NfQ1RSTF9BICBTYW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVs dVxuIiwJQklUKGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0EgIFNhbXBsZV9w cmVzZW50X0Rpc2FibGVcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVE X01JU0NfQ1RSTF9BICBPdXRwdXRfRGVsYXlcdFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcs IDQpKTsKIAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQSAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxu IiwJCQlCSVQoZHdvcmQsIDEpKTsKLQlkd29yZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQik7CisJ ZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0IpOwogCXByaW50 ZigiQVVEX01JU0NfQ1RSTF9CICBTYW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJ QklUKGR3b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0IgIFNhbXBsZV9wcmVzZW50 X0Rpc2FibGVcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVEX01JU0Nf Q1RSTF9CICBPdXRwdXRfRGVsYXlcdFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsK IAlwcmludGYoIkFVRF9NSVNDX0NUUkxfQiAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlC SVQoZHdvcmQsIDEpKTsKLQlkd29yZCA9IElOUkVHKEFVRF9NSVNDX0NUUkxfQyk7CisJZHdvcmQg PSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfTUlTQ19DVFJMX0MpOwogCXByaW50ZigiQVVE X01JU0NfQ1RSTF9DICBTYW1wbGVfRmFicmljYXRpb25fRU5fYml0XHRcdCVsdVxuIiwJQklUKGR3 b3JkLCAyKSk7CiAJcHJpbnRmKCJBVURfTUlTQ19DVFJMX0MgIFNhbXBsZV9wcmVzZW50X0Rpc2Fi bGVcdFx0XHQlbHVcbiIsCUJJVChkd29yZCwgOCkpOwogCXByaW50ZigiQVVEX01JU0NfQ1RSTF9D ICBPdXRwdXRfRGVsYXlcdFx0XHRcdCVsdVxuIiwJCUJJVFMoZHdvcmQsIDcsIDQpKTsKIAlwcmlu dGYoIkFVRF9NSVNDX0NUUkxfQyAgUHJvX0FsbG93ZWRcdFx0XHRcdCVsdVxuIiwJCQlCSVQoZHdv cmQsIDEpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX1BXUlNUKTsKKwlkd29yZCA9IElOUkVHKCZp Z3RfZ2xvYmFsX21taW8sIEFVRF9QV1JTVCk7CiAJcHJpbnRmKCJBVURfUFdSU1QgIEZ1bmNfR3Jw X0Rldl9Qd3JTdF9DdXJyICAgICAgICAgICAgICAgICAgXHQlc1xuIiwgcG93ZXJfc3RhdGVbQklU Uyhkd29yZCwgMjcsIDI2KV0pOwogCXByaW50ZigiQVVEX1BXUlNUICBGdW5jX0dycF9EZXZfUHdy U3RfU2V0ICAgICAgICAgICAgICAgICAgIFx0JXNcbiIsIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQs IDI1LCAyNCldKTsKIAlwcmludGYoIkFVRF9QV1JTVCAgQ29udmVydG9yQV9XaWRnZXRfUG93ZXJf U3RhdGVfQ3VycmVudCAgICBcdCVzXG4iLCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAxNSwgMTQp XSk7CkBAIC0xMDUxLDcgKzEwNTIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXBy aW50ZigiQVVEX1BXUlNUICBQaW5EX1dpZGdldF9Qb3dlcl9TdGF0ZV9DdXJyZW50ICAgICAgICAg IFx0JXNcbiIsIHBvd2VyX3N0YXRlW0JJVFMoZHdvcmQsIDExLCAxMCldKTsKIAlwcmludGYoIkFV RF9QV1JTVCAgUGluRF9XaWRnZXRfUG93ZXJfU3RhdGVfU2V0ICAgICAgICAgICAgICBcdCVzXG4i LCBwb3dlcl9zdGF0ZVtCSVRTKGR3b3JkLCAgOSwgIDgpXSk7CiAKLQlkd29yZCA9IElOUkVHKEFV RF9QT1JUX0VOX0hEX0NGRyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURf UE9SVF9FTl9IRF9DRkcpOwogCXByaW50ZigiQVVEX1BPUlRfRU5fSERfQ0ZHICBDb252ZXJ0b3Jf QV9EaWdlblx0XHRcdCVsdVxuIiwJQklUKGR3b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfUE9SVF9F Tl9IRF9DRkcgIENvbnZlcnRvcl9CX0RpZ2VuXHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsK IAlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0NfRGlnZW5cdFx0XHQlbHVc biIsCUJJVChkd29yZCwgMikpOwpAQCAtMTA2NSw3ICsxMDY2LDcgQEAgc3RhdGljIHZvaWQgZHVt cF9jcHQodm9pZCkKIAlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgUG9ydF9DX0FtcF9NdXRl X1N0YXR1c1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKIAlwcmludGYoIkFVRF9QT1JUX0VO X0hEX0NGRyAgUG9ydF9EX0FtcF9NdXRlX1N0YXR1c1x0XHQlbHVcbiIsIEJJVChkd29yZCwgMjIp KTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9ESUdfQ05WVF9BKTsKKwlkd29yZCA9IElOUkVH KCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfRElHX0NOVlRfQSk7CiAJcHJpbnRmKCJBVURfT1VU X0RJR19DTlZUX0EgIFZcdFx0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAxKSk7CiAJcHJpbnRm KCJBVURfT1VUX0RJR19DTlZUX0EgIFZDRkdcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMikp OwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9BICBQUkVcdFx0XHRcdFx0JWx1XG4iLAkJQklU KGR3b3JkLCAzKSk7CkBAIC0xMDc3LDcgKzEwNzgsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2 b2lkKQogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9BICBMb3dlc3RfQ2hhbm5lbF9OdW1iZXJc dFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAxOSwgMTYpKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NO VlRfQSAgU3RyZWFtX0lEXHRcdFx0XHQlbHVcbiIsCUJJVFMoZHdvcmQsIDIzLCAyMCkpOwogCi0J ZHdvcmQgPSBJTlJFRyhBVURfT1VUX0RJR19DTlZUX0IpOworCWR3b3JkID0gSU5SRUcoJmlndF9n bG9iYWxfbW1pbywgQVVEX09VVF9ESUdfQ05WVF9CKTsKIAlwcmludGYoIkFVRF9PVVRfRElHX0NO VlRfQiAgVlx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDEpKTsKIAlwcmludGYoIkFVRF9P VVRfRElHX0NOVlRfQiAgVkNGR1x0XHRcdFx0JWx1XG4iLAkJQklUKGR3b3JkLCAyKSk7CiAJcHJp bnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIFBSRVx0XHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQs IDMpKTsKQEAgLTEwODksNyArMTA5MCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJ cHJpbnRmKCJBVURfT1VUX0RJR19DTlZUX0IgIExvd2VzdF9DaGFubmVsX051bWJlclx0XHQlbHVc biIsIEJJVFMoZHdvcmQsIDE5LCAxNikpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9CICBT dHJlYW1fSURcdFx0XHRcdCVsdVxuIiwJQklUUyhkd29yZCwgMjMsIDIwKSk7CiAKLQlkd29yZCA9 IElOUkVHKEFVRF9PVVRfRElHX0NOVlRfQyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9t bWlvLCBBVURfT1VUX0RJR19DTlZUX0MpOwogCXByaW50ZigiQVVEX09VVF9ESUdfQ05WVF9DICBW XHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMSkpOwogCXByaW50ZigiQVVEX09VVF9ESUdf Q05WVF9DICBWQ0ZHXHRcdFx0XHQlbHVcbiIsCQlCSVQoZHdvcmQsIDIpKTsKIAlwcmludGYoIkFV RF9PVVRfRElHX0NOVlRfQyAgUFJFXHRcdFx0XHRcdCVsdVxuIiwJCUJJVChkd29yZCwgMykpOwpA QCAtMTEwMyw4ICsxMTA0LDggQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAogCXByaW50 ZigiQVVEX09VVF9DSF9TVFIgIENvbnZlcnRlcl9DaGFubmVsX01BUAlQT1JUQglQT1JUQwlQT1JU RFxuIik7CiAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykgewotCQlPVVRSRUcoQVVEX09VVF9DSF9T VFIsIGkgfCAoaSA8PCA4KSB8IChpIDw8IDE2KSk7Ci0JCWR3b3JkID0gSU5SRUcoQVVEX09VVF9D SF9TVFIpOworCQlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX09VVF9DSF9TVFIsIGkgfCAo aSA8PCA4KSB8IChpIDw8IDE2KSk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg QVVEX09VVF9DSF9TVFIpOwogCQlwcmludGYoIlx0XHRcdFx0JWx1XHQlbHVcdCVsdVx0JWx1XG4i LAogCQkJCTEgKyBCSVRTKGR3b3JkLCAgMywgIDApLAogCQkJCTEgKyBCSVRTKGR3b3JkLCAgNywg IDQpLApAQCAtMTExMiwzMyArMTExMywzMyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQog CQkJCTEgKyBCSVRTKGR3b3JkLCAyMywgMjApKTsKIAl9CiAKLQlkd29yZCA9IElOUkVHKEFVRF9P VVRfU1RSX0RFU0NfQSk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfT1VU X1NUUl9ERVNDX0EpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19BICBIQlJfZW5hYmxlXHRc dFx0XHQlbHVcbiIsCSBCSVRTKGR3b3JkLCAyOCwgMjcpKTsKIAlwcmludGYoIkFVRF9PVVRfU1RS X0RFU0NfQSAgQ29udmVydG9yX0NoYW5uZWxfQ291bnRcdFx0JWx1XG4iLCBCSVRTKGR3b3JkLCAy MCwgMTYpICsgMSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0EgIEJpdHNfcGVyX1NhbXBs ZVx0XHRcdFslI2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDYsIDQpLCBPUE5BTUUoYml0c19w ZXJfc2FtcGxlLCBCSVRTKGR3b3JkLCA2LCA0KSkpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVT Q19BICBOdW1iZXJfb2ZfQ2hhbm5lbHNfaW5fYV9TdHJlYW1cdCVsdVxuIiwgMSArIEJJVFMoZHdv cmQsIDMsIDApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX09VVF9TVFJfREVTQ19CKTsKKwlkd29y ZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9PVVRfU1RSX0RFU0NfQik7CiAJcHJpbnRm KCJBVURfT1VUX1NUUl9ERVNDX0IgIEhCUl9lbmFibGVcdFx0XHRcdCVsdVxuIiwJIEJJVFMoZHdv cmQsIDI4LCAyNykpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19CICBDb252ZXJ0b3JfQ2hh bm5lbF9Db3VudFx0XHQlbHVcbiIsIEJJVFMoZHdvcmQsIDIwLCAxNikgKyAxKTsKIAlwcmludGYo IkFVRF9PVVRfU1RSX0RFU0NfQiAgQml0c19wZXJfU2FtcGxlXHRcdFx0WyUjbHhdICVzXG4iLAog CQkJQklUUyhkd29yZCwgNiwgNCksIE9QTkFNRShiaXRzX3Blcl9zYW1wbGUsIEJJVFMoZHdvcmQs IDYsIDQpKSk7CiAJcHJpbnRmKCJBVURfT1VUX1NUUl9ERVNDX0IgIE51bWJlcl9vZl9DaGFubmVs c19pbl9hX1N0cmVhbVx0JWx1XG4iLCAxICsgQklUUyhkd29yZCwgMywgMCkpOwogCi0JZHdvcmQg PSBJTlJFRyhBVURfT1VUX1NUUl9ERVNDX0MpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxf bW1pbywgQVVEX09VVF9TVFJfREVTQ19DKTsKIAlwcmludGYoIkFVRF9PVVRfU1RSX0RFU0NfQyAg SEJSX2VuYWJsZVx0XHRcdFx0JWx1XG4iLAkgQklUUyhkd29yZCwgMjgsIDI3KSk7CiAJcHJpbnRm KCJBVURfT1VUX1NUUl9ERVNDX0MgIENvbnZlcnRvcl9DaGFubmVsX0NvdW50XHRcdCVsdVxuIiwg QklUUyhkd29yZCwgMjAsIDE2KSArIDEpOwogCXByaW50ZigiQVVEX09VVF9TVFJfREVTQ19DICBC aXRzX3Blcl9TYW1wbGVcdFx0XHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCA2LCA0KSwg T1BOQU1FKGJpdHNfcGVyX3NhbXBsZSwgQklUUyhkd29yZCwgNiwgNCkpKTsKIAlwcmludGYoIkFV RF9PVVRfU1RSX0RFU0NfQyAgTnVtYmVyX29mX0NoYW5uZWxzX2luX2FfU3RyZWFtXHQlbHVcbiIs IDEgKyBCSVRTKGR3b3JkLCAzLCAwKSk7CiAKLQlkd29yZCA9IElOUkVHKEFVRF9QSU5XX0NPTk5M TkdfU0VMKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9QSU5XX0NPTk5M TkdfU0VMKTsKIAlwcmludGYoIkFVRF9QSU5XX0NPTk5MTkdfU0VMICBDb25uZWN0aW9uX3NlbGVj dF9Db250cm9sX0JcdCUjbHhcbiIsIEJJVFMoZHdvcmQsICA3LCAgMCkpOwogCXByaW50ZigiQVVE X1BJTldfQ09OTkxOR19TRUwgIENvbm5lY3Rpb25fc2VsZWN0X0NvbnRyb2xfQ1x0JSNseFxuIiwg QklUUyhkd29yZCwgMTUsICA4KSk7CiAJcHJpbnRmKCJBVURfUElOV19DT05OTE5HX1NFTCAgQ29u bmVjdGlvbl9zZWxlY3RfQ29udHJvbF9EXHQlI2x4XG4iLCBCSVRTKGR3b3JkLCAyMywgMTYpKTsK IAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfQ05UTF9TVF9BKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0EgIERJUF9Q b3J0X1NlbGVjdFx0XHRcdFx0WyUjbHhdICVzXG4iLAogCQkJQklUUyhkd29yZCwgMzAsIDI5KSwg ZGlwX3BvcnRbQklUUyhkd29yZCwgMzAsIDI5KV0pOwogCXByaW50ZigiQVVEX0NOVExfU1RfQSAg RElQX3R5cGVfZW5hYmxlX3N0YXR1cyBBdWRpbyBESVBcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDIx KSk7CkBAIC0xMTQ5LDcgKzExNTAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXBy aW50ZigiQVVEX0NOVExfU1RfQSAgRUxEX0FDS1x0XHRcdFx0XHQlbHVcbiIsIEJJVChkd29yZCwg NCkpOwogCXByaW50ZigiQVVEX0NOVExfU1RfQSAgRUxEX2J1ZmZlcl9zaXplXHRcdFx0XHQlbHVc biIsIEJJVFMoZHdvcmQsIDE0LCAxMCkpOwogCi0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9C KTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0IpOwogCXBy aW50ZigiQVVEX0NOVExfU1RfQiAgRElQX1BvcnRfU2VsZWN0XHRcdFx0XHRbJSNseF0gJXNcbiIs CiAJCQlCSVRTKGR3b3JkLCAzMCwgMjkpLCBkaXBfcG9ydFtCSVRTKGR3b3JkLCAzMCwgMjkpXSk7 CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9CICBESVBfdHlwZV9lbmFibGVfc3RhdHVzIEF1ZGlvIERJ UFx0XHQlbHVcbiIsIEJJVChkd29yZCwgMjEpKTsKQEAgLTExNjAsNyArMTE2MSw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ05UTF9TVF9CICBFTERfQUNLXHRc dFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCA0KSk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9CICBF TERfYnVmZmVyX3NpemVcdFx0XHRcdCVsdVxuIiwgQklUUyhkd29yZCwgMTQsIDEwKSk7CiAKLQlk d29yZCA9IElOUkVHKEFVRF9DTlRMX1NUX0MpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxf bW1pbywgQVVEX0NOVExfU1RfQyk7CiAJcHJpbnRmKCJBVURfQ05UTF9TVF9DICBESVBfUG9ydF9T ZWxlY3RcdFx0XHRcdFslI2x4XSAlc1xuIiwKIAkJCUJJVFMoZHdvcmQsIDMwLCAyOSksIGRpcF9w b3J0W0JJVFMoZHdvcmQsIDMwLCAyOSldKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIERJUF90 eXBlX2VuYWJsZV9zdGF0dXMgQXVkaW8gRElQXHRcdCVsdVxuIiwgQklUKGR3b3JkLCAyMSkpOwpA QCAtMTE3MSw3ICsxMTcyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9jcHQodm9pZCkKIAlwcmludGYo IkFVRF9DTlRMX1NUX0MgIEVMRF9BQ0tcdFx0XHRcdFx0JWx1XG4iLCBCSVQoZHdvcmQsIDQpKTsK IAlwcmludGYoIkFVRF9DTlRMX1NUX0MgIEVMRF9idWZmZXJfc2l6ZVx0XHRcdFx0JWx1XG4iLCBC SVRTKGR3b3JkLCAxNCwgMTApKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJMX1NUMik7CisJ ZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UUkxfU1QyKTsKIAlwcmludGYo IkFVRF9DTlRSTF9TVDIgIENQX1JlYWR5Qlx0XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDEpKTsK IAlwcmludGYoIkFVRF9DTlRSTF9TVDIgIEVMRF92YWxpZEJcdFx0XHRcdCVsdVxuIiwJQklUKGR3 b3JkLCAwKSk7CiAJcHJpbnRmKCJBVURfQ05UUkxfU1QyICBDUF9SZWFkeUNcdFx0XHRcdCVsdVxu IiwJQklUKGR3b3JkLCA1KSk7CkBAIC0xMTc5LDcgKzExODAsNyBAQCBzdGF0aWMgdm9pZCBkdW1w X2NwdCh2b2lkKQogCXByaW50ZigiQVVEX0NOVFJMX1NUMiAgQ1BfUmVhZHlEXHRcdFx0XHQlbHVc biIsCUJJVChkd29yZCwgOSkpOwogCXByaW50ZigiQVVEX0NOVFJMX1NUMiAgRUxEX3ZhbGlkRFx0 XHRcdFx0JWx1XG4iLAlCSVQoZHdvcmQsIDgpKTsKIAotCWR3b3JkID0gSU5SRUcoQVVEX0NOVFJM X1NUMyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UUkxfU1QzKTsK IAlwcmludGYoIkFVRF9DTlRSTF9TVDMgIFRyYW5zQV9EUFRfQXVkaW9fT3V0cHV0X0VuXHRcdCVs dVxuIiwJQklUKGR3b3JkLCAzKSk7CiAJcHJpbnRmKCJBVURfQ05UUkxfU1QzICBUcmFuc0FfdG9f UG9ydF9TZWxcdFx0XHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAyLCAwKSwgdHJhbnNf dG9fcG9ydF9zZWxbQklUUyhkd29yZCwgMiwgMCldKTsKQEAgLTExOTAsNyArMTE5MSw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfY3B0KHZvaWQpCiAJcHJpbnRmKCJBVURfQ05UUkxfU1QzICBUcmFuc0Nf dG9fUG9ydF9TZWxcdFx0XHRbJSNseF0gJXNcbiIsCiAJCQlCSVRTKGR3b3JkLCAxMCwgOCksIHRy YW5zX3RvX3BvcnRfc2VsW0JJVFMoZHdvcmQsIDEwLCA4KV0pOwogCi0JZHdvcmQgPSBJTlJFRyhB VURfSERNSVdfU1RBVFVTKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9I RE1JV19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyAgQ29udl9BX0NEQ0xLL0RP VENMS19GSUZPX1VuZGVycnVuXHQlbHVcbiIsIEJJVChkd29yZCwgMjcpKTsKIAlwcmludGYoIkFV RF9IRE1JV19TVEFUVVMgIENvbnZfQV9DRENMSy9ET1RDTEtfRklGT19PdmVycnVuXHQlbHVcbiIs ICBCSVQoZHdvcmQsIDI2KSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0JfQ0RD TEsvRE9UQ0xLX0ZJRk9fVW5kZXJydW5cdCVsdVxuIiwgQklUKGR3b3JkLCAyOSkpOwpAQCAtMTIw MSw1NCArMTIwMiw1NCBAQCBzdGF0aWMgdm9pZCBkdW1wX2NwdCh2b2lkKQogCXByaW50ZigiQVVE X0hETUlXX1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsCQkgQklUKGR3b3JkLCAy NCkpOwogCiAJcHJpbnRmKCJBVURfSERNSVdfSERNSUVESURfQSBIRE1JIEVMRDpcblx0Iik7Ci0J ZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9BKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFs X21taW8sIEFVRF9DTlRMX1NUX0EpOwogCWR3b3JkICY9IH5CSVRNQVNLKDksIDUpOwotCU9VVFJF RyhBVURfQ05UTF9TVF9BLCBkd29yZCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9D TlRMX1NUX0EsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhkd29yZCwgMTQsIDEwKSAv IDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19IRE1JRURJ RF9BKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg QVVEX0hETUlXX0hETUlFRElEX0EpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiAJcHJpbnRmKCJBVURf SERNSVdfSERNSUVESURfQiBIRE1JIEVMRDpcblx0Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05U TF9TVF9CKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0Ip OwogCWR3b3JkICY9IH5CSVRNQVNLKDksIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVF9CLCBkd29y ZCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0IsIGR3b3JkKTsKIAlm b3IgKGkgPSAwOyBpIDwgQklUUyhkd29yZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIl MDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19IRE1JRURJRF9CKSkpOworCQlwcmludGYoIiUw OHggIiwgaHRvbmwoSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX0hETUlFRElEX0Ip KSk7CiAJcHJpbnRmKCJcbiIpOwogCiAJcHJpbnRmKCJBVURfSERNSVdfSERNSUVESURfQyBIRE1J IEVMRDpcblx0Iik7Ci0JZHdvcmQgPSBJTlJFRyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElO UkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0MpOwogCWR3b3JkICY9IH5CSVRNQVNL KDksIDUpOwotCU9VVFJFRyhBVURfQ05UTF9TVF9DLCBkd29yZCk7CisJT1VUUkVHKCZpZ3RfZ2xv YmFsX21taW8sIEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKIAlmb3IgKGkgPSAwOyBpIDwgQklUUyhk d29yZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFV RF9IRE1JV19IRE1JRURJRF9DKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoJmln dF9nbG9iYWxfbW1pbywgQVVEX0hETUlXX0hETUlFRElEX0MpKSk7CiAJcHJpbnRmKCJcbiIpOwog CiAJcHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSX0EgSERNSSBhdWRpbyBJbmZvZnJhbWU6XG5cdCIp OwotCWR3b3JkID0gSU5SRUcoQVVEX0NOVExfU1RfQSk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2ds b2JhbF9tbWlvLCBBVURfQ05UTF9TVF9BKTsKIAlkd29yZCAmPSB+QklUTUFTSygyMCwgMTgpOwog CWR3b3JkICY9IH5CSVRNQVNLKDMsIDApOwotCU9VVFJFRyhBVURfQ05UTF9TVF9BLCBkd29yZCk7 CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9DTlRMX1NUX0EsIGR3b3JkKTsKIAlmb3Ig KGkgPSAwOyBpIDwgODsgaSsrKQotCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoQVVEX0hE TUlXX0lORk9GUl9BKSkpOworCQlwcmludGYoIiUwOHggIiwgaHRvbmwoSU5SRUcoJmlndF9nbG9i YWxfbW1pbywgQVVEX0hETUlXX0lORk9GUl9BKSkpOwogCXByaW50ZigiXG4iKTsKIAogCXByaW50 ZigiQVVEX0hETUlXX0lORk9GUl9CIEhETUkgYXVkaW8gSW5mb2ZyYW1lOlxuXHQiKTsKLQlkd29y ZCA9IElOUkVHKEFVRF9DTlRMX1NUX0IpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgQVVEX0NOVExfU1RfQik7CiAJZHdvcmQgJj0gfkJJVE1BU0soMjAsIDE4KTsKIAlkd29yZCAm PSB+QklUTUFTSygzLCAwKTsKLQlPVVRSRUcoQVVEX0NOVExfU1RfQiwgZHdvcmQpOworCU9VVFJF RygmaWd0X2dsb2JhbF9tbWlvLCBBVURfQ05UTF9TVF9CLCBkd29yZCk7CiAJZm9yIChpID0gMDsg aSA8IDg7IGkrKykKLQkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKEFVRF9IRE1JV19JTkZP RlJfQikpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKCZpZ3RfZ2xvYmFsX21taW8s IEFVRF9IRE1JV19JTkZPRlJfQikpKTsKIAlwcmludGYoIlxuIik7CiAKIAlwcmludGYoIkFVRF9I RE1JV19JTkZPRlJfQyBIRE1JIGF1ZGlvIEluZm9mcmFtZTpcblx0Iik7Ci0JZHdvcmQgPSBJTlJF RyhBVURfQ05UTF9TVF9DKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEFVRF9D TlRMX1NUX0MpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0gfkJJVE1B U0soMywgMCk7Ci0JT1VUUkVHKEFVRF9DTlRMX1NUX0MsIGR3b3JkKTsKKwlPVVRSRUcoJmlndF9n bG9iYWxfbW1pbywgQVVEX0NOVExfU1RfQywgZHdvcmQpOwogCWZvciAoaSA9IDA7IGkgPCA4OyBp KyspCi0JCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRyhBVURfSERNSVdfSU5GT0ZSX0MpKSk7 CisJCXByaW50ZigiJTA4eCAiLCBodG9ubChJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBBVURfSERN SVdfSU5GT0ZSX0MpKSk7CiAJcHJpbnRmKCJcbiIpOwogCiB9CkBAIC0xMzc0LDEwICsxMzc1LDEw IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2NvbmZpZyhpbnQgaW5kZXgpCiAJY2hhciBwcmVmaXhb TUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmICghSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewotCQlk d29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DT05GSUdfQSArIChpbmRleCAtIFBJUEVf QSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19i YXNlICsgQVVEX0NPTkZJR19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3ByaW50 ZihwcmVmaXgsICJBVURfQ09ORklHXyVjICAiLCAnQScgKyBpbmRleCAtIFBJUEVfQSk7CiAJfSBl bHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfVENBX0NPTkZJRyArIChp bmRleCAtIFRSQU5TQ09ERVJfQSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9i YWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9DT05GSUcgKyAoaW5kZXggLSBUUkFOU0NP REVSX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9UQyVjX0NPTkZJRyIsICdB JyArIGluZGV4IC0gVFJBTlNDT0RFUl9BKTsKIAl9CiAKQEAgLTEzOTcsMTAgKzEzOTgsMTAgQEAg c3RhdGljIHZvaWQgZHVtcF9hdWRfbWlzY19jb250cm9sKGludCBpbmRleCkKIAljaGFyIHByZWZp eFtNQVhfUFJFRklYX1NJWkVdOwogCiAJaWYgKCFJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Ci0J CWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX01JU0NfQ1RSTF9BICsgKGluZGV4IC0g UElQRV9BKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRf cmVnX2Jhc2UgKyBBVURfTUlTQ19DVFJMX0EgKyAoaW5kZXggLSBQSVBFX0EpICogMHgxMDApOwog CQlzcHJpbnRmKHByZWZpeCwgIkFVRF9NSVNDX0NUUkxfJWMgIiwgJ0EnICsgaW5kZXggLSBQSVBF X0EpOwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0MxX01J U0NfQ1RSTCArIChpbmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJF RygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFfTUlTQ19DVFJMICsgKGlu ZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DJWNf TUlTQ19DVFJMIiwgJzEnICsgaW5kZXggLSBDT05WRVJURVJfMSk7CiAJfQogCkBAIC0xNDE0LDcg KzE0MTUsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF92ZW5kb3JfZGV2aWNlX2lkKHZvaWQpCiB7 CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9W SURfRElEKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSAr IEFVRF9WSURfRElEKTsKIAlwcmludGYoIkFVRF9WSURfRElEIGRldmljZSBpZFx0XHRcdFx0XHQw eCVseFxuIiwgQklUUyhkd29yZCwgMTUsIDApKTsKIAlwcmludGYoIkFVRF9WSURfRElEIHZlbmRv ciBpZFx0XHRcdFx0XHQweCVseFxuIiwgQklUUyhkd29yZCwgMzEsIDE2KSk7CiB9CkBAIC0xNDIz LDcgKzE0MjQsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9yZXZpc2lvbl9pZCh2b2lkKQogewog CXVpbnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUklE KTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9S SUQpOwogCXByaW50ZigiQVVEX1JJRCBTdGVwcGluZ19JZFx0XHRcdFx0XHQweCVseFxuIiwgICAg QklUUyhkd29yZCwgNywgMCkpOwogCXByaW50ZigiQVVEX1JJRCBSZXZpc2lvbl9JZFx0XHRcdFx0 XHQweCVseFxuIiwgICAgQklUUyhkd29yZCwgMTUsIDgpKTsKIAlwcmludGYoIkFVRF9SSUQgTWlu b3JfUmV2aXNpb25cdFx0XHRcdFx0MHglbHhcbiIsIEJJVFMoZHdvcmQsIDE5LCAxNikpOwpAQCAt MTQzNiwxMCArMTQzNywxMCBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9tX2N0c19lbmFibGUoaW50 IGluZGV4KQogCWNoYXIgcHJlZml4W01BWF9QUkVGSVhfU0laRV07CiAKIAlpZiAoIUlTX0hBU1dF TExfUExVUyhkZXZpZCkpIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQ1RT X0VOQUJMRV9BICArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUco JmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX0NUU19FTkFCTEVfQSAgKyAoaW5k ZXggLSBQSVBFX0EpICogMHgxMDApOwogCQlzcHJpbnRmKHByZWZpeCwgIkFVRF9DVFNfRU5BQkxF XyVjICAgICIsICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9IGVsc2UgewotCQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfTV9DVFNfRU5BQkxFICArIChpbmRleCAtIFRSQU5T Q09ERVJfQSkgKiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX1RDQV9NX0NUU19FTkFCTEUgICsgKGluZGV4IC0gVFJBTlNDT0RFUl9B KSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfVEMlY19NX0NUU19FTkFCTEUiLCAn QScgKyBpbmRleCAtIFRSQU5TQ09ERVJfQSk7CiAJfQogCkBAIC0xNDU0LDcgKzE0NTUsNyBAQCBz dGF0aWMgdm9pZCBkdW1wX2F1ZF9wb3dlcl9zdGF0ZSh2b2lkKQogCXVpbnQzMl90IGR3b3JkOwog CWludCBudW1fcGlwZXM7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QV1JT VCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURf UFdSU1QpOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5CX1dpZGdldF9Qb3dlcl9TdGF0ZV9TZXQg ICAgICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgIDEs ICAwKV0pOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5CX1dpZGdldF9Qb3dlcl9TdGF0ZV9DdXJy ZW50ICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgIDMs ICAyKV0pOwogCXByaW50ZigiQVVEX1BXUlNUICBQaW5DX1dpZGdldF9Qb3dlcl9TdGF0ZV9TZXQg ICAgICAgICAgICAgIFx0JXNcbiIsICAgICAgICAgcG93ZXJfc3RhdGVbQklUUyhkd29yZCwgIDUs ICA0KV0pOwpAQCAtMTUxMCwxMSArMTUxMSwxMSBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9lZGlk X2RhdGEoaW50IGluZGV4KQogCQlwcmludGYoIkFVRF9IRE1JV19IRE1JRURJRF8lYyBIRE1JIEVM RDpcblx0IiwgICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9CiAKLQlkd29yZCA9IElOUkVHKGF1 ZF9jdHJsX3N0KTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9jdHJsX3N0 KTsKIAlkd29yZCAmPSB+QklUTUFTSyg5LCA1KTsKLQlPVVRSRUcoYXVkX2N0cmxfc3QsIGR3b3Jk KTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX2N0cmxfc3QsIGR3b3JkKTsKIAlmb3Ig KGkgPSAwOyBpIDwgQklUUyhkd29yZCwgMTQsIDEwKSAvIDQ7IGkrKykKLQkJcHJpbnRmKCIlMDh4 ICIsIGh0b25sKElOUkVHKGVkaWRfZGF0YSkpKTsKKwkJcHJpbnRmKCIlMDh4ICIsIGh0b25sKElO UkVHKCZpZ3RfZ2xvYmFsX21taW8sIGVkaWRfZGF0YSkpKTsKIAlwcmludGYoIlxuIik7CiB9CiAK QEAgLTE1MzcsMTIgKzE1MzgsMTIgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfaW5mb2ZyYW1lKGlu dCBpbmRleCkKIAkJcHJpbnRmKCJBVURfSERNSVdfSU5GT0ZSXyVjIEhETUkgYXVkaW8gSW5mb2Zy YW1lOlxuXHQiLCAgJ0EnICsgaW5kZXggLSBQSVBFX0EpOwogCX0KIAotCWR3b3JkID0gSU5SRUco YXVkX2N0cmxfc3QpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX2N0cmxf c3QpOwogCWR3b3JkICY9IH5CSVRNQVNLKDIwLCAxOCk7CiAJZHdvcmQgJj0gfkJJVE1BU0soMywg MCk7Ci0JT1VUUkVHKGF1ZF9jdHJsX3N0LCBkd29yZCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21t aW8sIGF1ZF9jdHJsX3N0LCBkd29yZCk7CiAJZm9yIChpID0gMDsgaSA8IDg7IGkrKykKLQkJcHJp bnRmKCIlMDh4ICIsIGh0b25sKElOUkVHKGluZm9fZnJtKSkpOworCQlwcmludGYoIiUwOHggIiwg aHRvbmwoSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgaW5mb19mcm0pKSk7CiAJcHJpbnRmKCJcbiIp OwogfQogCkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9wb3J0X2Vu X2hkX2NmZyh2b2lkKQogCXVpbnQzMl90IGR3b3JkOwogCWludCBudW1fcGlwZXMgPSBnZXRfbnVt X3BpcGVzKCk7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9QT1JUX0VOX0hE X0NGRyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBB VURfUE9SVF9FTl9IRF9DRkcpOwogCWlmIChudW1fcGlwZXMgPT0gMikgewogCQlwcmludGYoIkFV RF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0FfRGlnZW5cdFx0XHQlbHVcbiIsICAgIEJJVChk d29yZCwgMCkpOwogCQlwcmludGYoIkFVRF9QT1JUX0VOX0hEX0NGRyAgQ29udmVydG9yX0JfRGln ZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMSkpOwpAQCAtMTU4NSw3ICsxNTg2LDcgQEAg c3RhdGljIHZvaWQgZHVtcF9hdWRfcGlwZV9jb252X2NmZyh2b2lkKQogewogCXVpbnQzMl90IGR3 b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElQRV9DT05WX0NGRyk7 CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfUElQ RV9DT05WX0NGRyk7CiAJcHJpbnRmKCJBVURfUElQRV9DT05WX0NGRyAgQ29udmVydG9yXzFfRGln ZW5cdFx0XHQlbHVcbiIsICAgIEJJVChkd29yZCwgMCkpOwogCXByaW50ZigiQVVEX1BJUEVfQ09O Vl9DRkcgIENvbnZlcnRvcl8yX0RpZ2VuXHRcdFx0JWx1XG4iLCAgICBCSVQoZHdvcmQsIDEpKTsK IAlwcmludGYoIkFVRF9QSVBFX0NPTlZfQ0ZHICBDb252ZXJ0b3JfM19EaWdlblx0XHRcdCVsdVxu IiwgICAgQklUKGR3b3JkLCAyKSk7CkBAIC0xNjA3LDEwICsxNjA4LDEwIEBAIHN0YXRpYyB2b2lk IGR1bXBfYXVkX2RpZ19jbnZ0KGludCBpbmRleCkKIAljaGFyIHByZWZpeFtNQVhfUFJFRklYX1NJ WkVdOwogCiAJaWYgKCFJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7Ci0JCWR3b3JkID0gSU5SRUco YXVkX3JlZ19iYXNlICsgQVVEX09VVF9ESUdfQ05WVF9BICArIChpbmRleCAtIFBJUEVfQSkgKiAw eDEwMCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsg QVVEX09VVF9ESUdfQ05WVF9BICArIChpbmRleCAtIFBJUEVfQSkgKiAweDEwMCk7CiAJCXNwcmlu dGYocHJlZml4LCAiQVVEX09VVF9ESUdfQ05WVF8lYyIsICdBJyArIGluZGV4IC0gUElQRV9BKTsK IAl9IGVsc2UgewotCQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9ESUdfQ05W VCArIChpbmRleCAtIENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKKwkJZHdvcmQgPSBJTlJFRygmaWd0 X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfQzFfRElHX0NOVlQgKyAoaW5kZXggLSBD T05WRVJURVJfMSkgKiAweDEwMCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX0MlY19ESUdfQ05W VCAgICIsICcxJyArIGluZGV4IC0gQ09OVkVSVEVSXzEpOwogCX0KIApAQCAtMTYzMywxMCArMTYz NCwxMCBAQCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9zdHJfZGVzYyhpbnQgaW5kZXgpCiAJdWludDMy X3QgcmF0ZTsKIAogCWlmICghSVNfSEFTV0VMTF9QTFVTKGRldmlkKSkgewotCQlkd29yZCA9IElO UkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9PVVRfU1RSX0RFU0NfQSArIChpbmRleCAtIFBJUEVfQSkg KiAweDEwMCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNl ICsgQVVEX09VVF9TVFJfREVTQ19BICsgKGluZGV4IC0gUElQRV9BKSAqIDB4MTAwKTsKIAkJc3By aW50ZihwcmVmaXgsICJBVURfT1VUX1NUUl9ERVNDXyVjIiwgJ0EnICsgaW5kZXggLSBQSVBFX0Ep OwogCX0gZWxzZSB7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX0MxX1NUUl9E RVNDICsgKGluZGV4IC0gQ09OVkVSVEVSXzEpICogMHgxMDApOworCQlkd29yZCA9IElOUkVHKCZp Z3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9DMV9TVFJfREVTQyArIChpbmRleCAt IENPTlZFUlRFUl8xKSAqIDB4MTAwKTsKIAkJc3ByaW50ZihwcmVmaXgsICJBVURfQyVjX1NUUl9E RVNDICAiLCAnMScgKyBpbmRleCAtIENPTlZFUlRFUl8xKTsKIAl9CiAKQEAgLTE2NjgsOCArMTY2 OSw4IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX291dF9jaGFuX21hcCh2b2lkKQogCiAJcHJpbnRm KCJBVURfT1VUX0NIQU5fTUFQICBDb252ZXJ0ZXJfQ2hhbm5lbF9NQVAJUE9SVEIJUE9SVEMJUE9S VERcbiIpOwogCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKLQkJT1VUUkVHKGF1ZF9yZWdfYmFz ZSArIEFVRF9PVVRfQ0hBTl9NQVAsIGkgfCAoaSA8PCA4KSB8IChpIDw8IDE2KSk7Ci0JCWR3b3Jk ID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX09VVF9DSEFOX01BUCk7CisJCU9VVFJFRygmaWd0 X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfT1VUX0NIQU5fTUFQLCBpIHwgKGkgPDwg OCkgfCAoaSA8PCAxNikpOworCQlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9y ZWdfYmFzZSArIEFVRF9PVVRfQ0hBTl9NQVApOwogCQlwcmludGYoIlx0XHRcdFx0JWx1XHQlbHVc dCVsdVx0JWx1XG4iLAogCQkJCTEgKyBCSVRTKGR3b3JkLCAgMywgIDApLAogCQkJCTEgKyBCSVRT KGR3b3JkLCAgNywgIDQpLApAQCAtMTY4Myw3ICsxNjg0LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9h dWRfY29ubmVjdF9saXN0KHZvaWQpCiAJdWludDMyX3QgZHdvcmQ7CiAJY2hhciBwcmVmaXhbTUFY X1BSRUZJWF9TSVpFXTsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJTldf Q09OTkxOR19MSVNUKTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArIEFVRF9QSU5XX0NPTk5MTkdfTElTVCk7CiAJc3ByaW50ZihwcmVmaXgsICJBVURfUElO V19DT05OTE5HX0xJU1QiKTsKIAogCXByaW50ZigiJXMgIENvbm5lY3RfTGlzdF9MZW5ndGhcdFx0 JWx1XG4iLCAgICAgcHJlZml4LCBCSVRTKGR3b3JkLCA2LCAwKSk7CkBAIC0xNjk4LDExICsxNjk5 LDExIEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3Rfc2VsZWN0KHZvaWQpCiAJY2hhciBw cmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAogCWlmIChJU19IQVNXRUxMX1BMVVMoZGV2aWQpKSB7 Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCk7 CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1BJ UEVfQ09OTl9TRUxfQ1RSTCk7CiAJCXNwcmludGYocHJlZml4LCAiQVVEX1BJUEVfQ09OTl9TRUxf Q1RSTCIpOwogCiAJfSBlbHNlIHsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURf UElOV19DT05OTE5HX1NFTCk7CisJCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVk X3JlZ19iYXNlICsgQVVEX1BJTldfQ09OTkxOR19TRUwpOwogCQlzcHJpbnRmKHByZWZpeCwgIkFV RF9QSU5XX0NPTk5MTkdfU0VMICAiKTsKIAl9CiAKQEAgLTE3MTgsMTEgKzE3MTksMTEgQEAgc3Rh dGljIHZvaWQgZHVtcF9hdWRfY3RybF9zdGF0ZShpbnQgaW5kZXgpCiAKIAlpZiAoSVNfSEFTV0VM TF9QTFVTKGRldmlkKSkgewogCQlvZmZzZXQgPSAoaW5kZXggLSBUUkFOU0NPREVSX0EpICogMHgx MDA7Ci0JCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9ESVBfRUxEX0NUUkxf U1QgKyBvZmZzZXQpOworCQlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zmc2V0KTsKIAkJcHJpbnRmKCJBdWRp byBESVAgYW5kIEVMRCBjb250cm9sIHN0YXRlIGZvciBUcmFuc2NvZGVyICVjXG4iLCAgJ0EnICsg aW5kZXggLSBUUkFOU0NPREVSX0EpOwogCX0gZWxzZSB7CiAJCW9mZnNldCA9IChpbmRleCAtIFBJ UEVfQSkgKiAweDEwMDsKLQkJZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfQ05UTF9T VF9BICsgb2Zmc2V0KTsKKwkJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVn X2Jhc2UgKyBBVURfQ05UTF9TVF9BICsgb2Zmc2V0KTsKIAkJcHJpbnRmKCJBdWRpbyBjb250cm9s IHN0YXRlIC0gUGlwZSAlY1xuIiwgICdBJyArIGluZGV4IC0gUElQRV9BKTsKIAl9CiAKQEAgLTE3 NDMsNyArMTc0NCw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2N0cmxfc3RhdGUyKHZvaWQpCiB7 CiAJdWludDMyX3QgZHdvcmQ7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9D TlRMX1NUMik7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBhdWRfcmVnX2Jhc2Ug KyBBVURfQ05UTF9TVDIpOwogCXByaW50ZigiQVVEX0NOVExfU1QyICBFTERfdmFsaWRCXHRcdFx0 XHQlbHVcbiIsICBCSVQoZHdvcmQsIDApKTsKIAlwcmludGYoIkFVRF9DTlRMX1NUMiAgQ1BfUmVh ZHlCXHRcdFx0XHRcdCVsdVxuIiwgQklUKGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfQ05UTF9T VDIgIEVMRF92YWxpZENcdFx0XHRcdCVsdVxuIiwgIEJJVChkd29yZCwgNCkpOwpAQCAtMTc1Nyw3 ICsxNzU4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfZWxkX2NwX3ZsZCh2b2lkKQogewogCXVp bnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfUElOX0VM RF9DUF9WTEQpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNl ICsgQVVEX1BJTl9FTERfQ1BfVkxEKTsKIAlwcmludGYoIkFVRF9QSU5fRUxEX0NQX1ZMRCAgVHJh bnNjb2Rlcl9BIEVMRF92YWxpZFx0XHQlbHVcbiIsCUJJVChkd29yZCwgMCkpOwogCXByaW50Zigi QVVEX1BJTl9FTERfQ1BfVkxEICBUcmFuc2NvZGVyX0EgQ1BfUmVhZHkgXHRcdCVsdVxuIiwJQklU KGR3b3JkLCAxKSk7CiAJcHJpbnRmKCJBVURfUElOX0VMRF9DUF9WTEQgIFRyYW5zY29kZXJfQSBP dXRfZW5hYmxlXHRcdCVsdVxuIiwJQklUKGR3b3JkLCAyKSk7CkBAIC0xNzc2LDcgKzE3NzcsNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2F1ZF9oZG1pX3N0YXR1cyh2b2lkKQogewogCXVpbnQzMl90IGR3 b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVnX2Jhc2UgKyBBVURfSERNSVdfU1RBVFVTKTsK Kwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdfYmFzZSArIEFVRF9IRE1J V19TVEFUVVMpOwogCXByaW50ZigiQVVEX0hETUlXX1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0 XHQlbHVcbiIsICAgICAgICAgICAgICAgIEJJVChkd29yZCwgMjQpKTsKIAlwcmludGYoIkFVRF9I RE1JV19TVEFUVVMgIEJDTEsvQ0RDTEtfRklGT19PdmVycnVuXHRcdCVsdVxuIiwJICAgICBCSVQo ZHdvcmQsIDI1KSk7CiAJcHJpbnRmKCJBVURfSERNSVdfU1RBVFVTICBDb252X0FfQ0RDTEsvRE9U Q0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyOCkpOwpAQCAtMTgxNyw3ICsx ODE4LDcgQEAgc3RhdGljIHZvaWQgZHVtcF9kcF9wb3J0X2N0cmwoaW50IHBvcnQpCiAJc3ByaW50 ZihwcmVmaXgsICJEUF8lYyIsICdCJyArIHBvcnQgLSBQT1JUX0IpOwogCiAJcG9ydF9jdHJsID0g ZGlzcF9yZWdfYmFzZSArIERQX0NUTF9CICsgKHBvcnQgLSBQT1JUX0IpICogMHgxMDA7Ci0JZHdv cmQgPSBJTlJFRyhwb3J0X2N0cmwpOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg cG9ydF9jdHJsKTsKIAlwcmludGYoIiVzIERpc3BsYXlQb3J0X0VuYWJsZVx0XHRcdFx0XHQlbHVc biIsICAgICAgICBwcmVmaXgsIEJJVChkd29yZCwgMzEpKTsKIAlwcmludGYoIiVzIFRyYW5zY29k ZXJfU2VsZWN0XHRcdFx0XHRcdCVzXG4iLCAgICAgICAgICBwcmVmaXgsIEJJVChkd29yZCwgMzAp ID8gIlRyYW5zY29kZXIgQiIgOiAiVHJhbnNjb2RlciBBIik7CiAJcHJpbnRmKCIlcyBQb3J0X1dp ZHRoX1NlbGVjdGlvblx0XHRcdFx0WzB4JWx4XSAlc1xuIiwgcHJlZml4LCBCSVRTKGR3b3JkLCAy MSwgMTkpLApAQCAtMTg0MSw3ICsxODQyLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9oZG1pX3BvcnRf Y3RybChpbnQgcG9ydCkKIAkJcG9ydF9jdHJsID0gZGlzcF9yZWdfYmFzZSArIEhETUlfQ1RMX0Ig KyAocG9ydCAtIFBPUlRfQikgKiAweDEwOwogCX0KIAotCWR3b3JkID0gSU5SRUcocG9ydF9jdHJs KTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHBvcnRfY3RybCk7CiAJcHJpbnRm KCIlcyBIRE1JX0VuYWJsZVx0XHRcdFx0XHQldVxuIiwgICAgICAgICAgICAgICAgIHByZWZpeCwg ISEoZHdvcmQgJiBTRFZPX0VOQUJMRSkpOwogCXByaW50ZigiJXMgVHJhbnNjb2Rlcl9TZWxlY3Rc dFx0XHRcdCVzXG4iLCAgICAgICAgICAgICBwcmVmaXgsIEJJVChkd29yZCwgMzApID8gIlRyYW5z Y29kZXIgQiIgOiAiVHJhbnNjb2RlciBBIik7CiAJcHJpbnRmKCIlcyBIRENQX1BvcnRfU2VsZWN0 XHRcdFx0XHQlbHVcbiIsICAgICAgICAgICAgIHByZWZpeCwgQklUKGR3b3JkLCA1KSk7CkBAIC0y MDI5LDcgKzIwMzAsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX2RkaV9idWZfY3RsKGludCBwb3J0KQog ewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhERElfQlVGX0NUTF9BICsgKHBv cnQgLSBQT1JUX0EpICogMHgxMDApOworCWR3b3JkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg RERJX0JVRl9DVExfQSArIChwb3J0IC0gUE9SVF9BKSAqIDB4MTAwKTsKIAlwcmludGYoIkRESSAl YyBCdWZmZXIgY29udHJvbFxuIiwgJ0EnICsgcG9ydCAtIFBPUlRfQSk7CiAKIAlwcmludGYoIlx0 RFAgcG9ydCB3aWR0aFx0XHRcdFx0XHRbMHglbHhdICVzXG4iLCBCSVRTKGR3b3JkLCAzLCAxKSwK QEAgLTIwNDEsNyArMjA0Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZGRpX2Z1bmNfY3RsKGludCBw aXBlKQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhQSVBFX0RESV9GVU5D X0NUTF9BICsgKHBpcGUgLSBQSVBFX0EpICogMHgxMDAwKTsKKwlkd29yZCA9IElOUkVHKCZpZ3Rf Z2xvYmFsX21taW8sIFBJUEVfRERJX0ZVTkNfQ1RMX0EgKyAocGlwZSAtIFBJUEVfQSkgKiAweDEw MDApOwogCXByaW50ZigiUGlwZSAlYyBEREkgRnVuY3Rpb24gQ29udHJvbFxuIiwgJ0EnICsgcGlw ZSAtIFBJUEVfQSk7CiAKIAlwcmludGYoIlx0QklUUyBwZXIgY29sb3JcdFx0XHRcdFx0WzB4JWx4 XSAlc1xuIiwgICAgQklUUyhkd29yZCwgMjIsIDIwKSwKQEAgLTIwNTgsNyArMjA1OSw3IEBAIHN0 YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3RfbGlzdF9lbnRyeV9sZW5ndGgoaW50IHRyYW5zY29k ZXIpCiAJdWludDMyX3QgZHdvcmQ7CiAJY2hhciBwcmVmaXhbTUFYX1BSRUZJWF9TSVpFXTsKIAot CWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9QSU5fUElQRV9DT05OX0VOVFJZ X0xOR1RIICsgKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgxMDApOworCWR3b3JkID0g SU5SRUcoJmlndF9nbG9iYWxfbW1pbywgYXVkX3JlZ19iYXNlICsgQVVEX1RDQV9QSU5fUElQRV9D T05OX0VOVFJZX0xOR1RIICsgKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgxMDApOwog CXNwcmludGYocHJlZml4LCAiQVVEX1RDJWNfUElOX1BJUEVfQ09OTl9FTlRSWV9MTkdUSCIsICdB JyArIHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpOwogCiAJcHJpbnRmKCIlcyAgQ29ubmVjdF9M aXN0X0xlbmd0aFx0JWx1XG4iLCBwcmVmaXgsIEJJVFMoZHdvcmQsIDYsIDApKTsKQEAgLTIwNzEs NyArMjA3Miw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfYXVkX2Nvbm5lY3Rfc2VsZWN0X2N0cmwodm9p ZCkKIHsKIAl1aW50MzJfdCBkd29yZDsKIAotCWR3b3JkID0gSU5SRUcoYXVkX3JlZ19iYXNlICsg QVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlv LCBhdWRfcmVnX2Jhc2UgKyBBVURfUElQRV9DT05OX1NFTF9DVFJMKTsKIAlwcmludGYoIkFVRF9Q SVBFX0NPTk5fU0VMX0NUUkwgIENvbm5lY3Rpb25fc2VsZWN0X1BvcnRfQlx0JSNseFxuIiwgQklU Uyhkd29yZCwgIDcsICAwKSk7CiAJcHJpbnRmKCJBVURfUElQRV9DT05OX1NFTF9DVFJMICBDb25u ZWN0aW9uX3NlbGVjdF9Qb3J0X0NcdCUjbHhcbiIsIEJJVFMoZHdvcmQsIDE1LCAgOCkpOwogCXBy aW50ZigiQVVEX1BJUEVfQ09OTl9TRUxfQ1RSTCAgQ29ubmVjdGlvbl9zZWxlY3RfUG9ydF9EXHQl I2x4XG4iLCBCSVRTKGR3b3JkLCAyMywgMTYpKTsKQEAgLTIwODIsNyArMjA4Myw3IEBAIHN0YXRp YyB2b2lkIGR1bXBfYXVkX2RpcF9lbGRfY3RybF9zdChpbnQgdHJhbnNjb2RlcikKIAl1aW50MzJf dCBkd29yZDsKIAlpbnQgb2Zmc2V0ID0gKHRyYW5zY29kZXIgLSBUUkFOU0NPREVSX0EpICogMHgx MDA7CiAKLQlkd29yZCA9IElOUkVHKGF1ZF9yZWdfYmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJM X1NUICsgb2Zmc2V0KTsKKwlkd29yZCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGF1ZF9yZWdf YmFzZSArIEFVRF9UQ0FfRElQX0VMRF9DVFJMX1NUICsgb2Zmc2V0KTsKIAlwcmludGYoIkF1ZGlv IERJUCBhbmQgRUxEIGNvbnRyb2wgc3RhdGUgZm9yIFRyYW5zY29kZXIgJWNcbiIsICAnQScgKyB0 cmFuc2NvZGVyIC0gVFJBTlNDT0RFUl9BKTsKIAogCXByaW50ZigiXHRFTERfQUNLXHRcdFx0XHRc dFx0JWx1XG4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJVChkd29yZCwgNCkp OwpAQCAtMjEwMiw3ICsyMTAzLDcgQEAgc3RhdGljIHZvaWQgZHVtcF9hdWRfaGRtaV9maWZvX3N0 YXR1cyh2b2lkKQogewogCXVpbnQzMl90IGR3b3JkOwogCi0JZHdvcmQgPSBJTlJFRyhhdWRfcmVn X2Jhc2UgKyBBVURfSERNSV9GSUZPX1NUQVRVUyk7CisJZHdvcmQgPSBJTlJFRygmaWd0X2dsb2Jh bF9tbWlvLCBhdWRfcmVnX2Jhc2UgKyBBVURfSERNSV9GSUZPX1NUQVRVUyk7CiAJcHJpbnRmKCJB VURfSERNSV9GSUZPX1NUQVRVUyAgRnVuY3Rpb25fUmVzZXRcdFx0XHQlbHVcbiIsICAgICAgICAg ICAgICAgIEJJVChkd29yZCwgMjQpKTsKIAlwcmludGYoIkFVRF9IRE1JX0ZJRk9fU1RBVFVTICBD b252XzFfQ0RDTEsvRE9UQ0xLX0ZJRk9fT3ZlcnJ1blx0JWx1XG4iLCAgQklUKGR3b3JkLCAyNikp OwogCXByaW50ZigiQVVEX0hETUlfRklGT19TVEFUVVMgIENvbnZfMV9DRENMSy9ET1RDTEtfRklG T19VbmRlcnJ1blx0JWx1XG4iLCBCSVQoZHdvcmQsIDI3KSk7CkBAIC0yNDcxLDkgKzI0NzIsOSBA QCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJZG9fc2VsZl90ZXN0cygpOwogCiAJ aWYgKGFyZ2MgPT0gMikKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGFyZ3ZbMV0pOworCQlp bnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmlndF9nbG9iYWxfbW1pbywgYXJndlsxXSk7CiAJZWxz ZQotCQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKHBjaV9kZXYpOworCQlpbnRlbF9tbWlvX3VzZV9w Y2lfYmFyKHBjaV9kZXYsIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCXByaW50ZigiJXMgYXVk aW8gcmVnaXN0ZXJzOlxuXG4iLCBpbnRlbF9nZXRfZGV2aWNlX2luZm8oZGV2aWQpLT5jb2RlbmFt ZSk7CiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2aWQpKSB7CmRpZmYgLS1naXQgYS90b29scy9pbnRl bF9iYWNrbGlnaHQuYyBiL3Rvb2xzL2ludGVsX2JhY2tsaWdodC5jCmluZGV4IDA2N2ZkNDE4Li4z ZTE5MzEyNCAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfYmFja2xpZ2h0LmMKKysrIGIvdG9vbHMv aW50ZWxfYmFja2xpZ2h0LmMKQEAgLTM1LDE1ICszNSwxNiBAQAogI2luY2x1ZGUgImludGVsX3Jl Zy5oIgogCiAvKiBYWFggUENIIG9ubHkgdG9kYXkgKi8KK3N0cnVjdCBtbWlvX2RhdGEgaWd0X2ds b2JhbF9tbWlvOwogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAJdWludDMy X3QgY3VycmVudCwgbWF4OwogCi0JaW50ZWxfbW1pb191c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNp X2RldmljZSgpKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lfZGV2aWNl KCksIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAotCWN1cnJlbnQgPSBJTlJFRyhCTENfUFdNX0NQ VV9DVEwpICYgQkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSzsKLQltYXggPSBJTlJFRyhCTENfUFdN X1BDSF9DVEwyKSA+PiAxNjsKKwljdXJyZW50ID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgQkxD X1BXTV9DUFVfQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7CisJbWF4ID0gSU5SRUco JmlndF9nbG9iYWxfbW1pbywgQkxDX1BXTV9QQ0hfQ1RMMikgPj4gMTY7CiAKIAlwcmludGYgKCJj dXJyZW50IGJhY2tsaWdodCB2YWx1ZTogJWQlJVxuIiwgY3VycmVudCAqIDEwMCAvIG1heCk7CiAK QEAgLTUxLDkgKzUyLDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogCQl1aW50 MzJfdCB2ID0gYXRvaSAoYXJndlsxXSkgKiBtYXggLyAxMDA7CiAJCWlmICh2ID4gbWF4KQogCQkJ diA9IG1heDsKLQkJT1VUUkVHKEJMQ19QV01fQ1BVX0NUTCwKLQkJICAgICAgIChJTlJFRyhCTENf UFdNX0NQVV9DVEwpICZ+IEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0spIHwgdik7Ci0JCSh2b2lk KSBJTlJFRyhCTENfUFdNX0NQVV9DVEwpOworCQlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgQkxD X1BXTV9DUFVfQ1RMLAorCQkgICAgICAgKElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01f Q1BVX0NUTCkgJn4gQkFDS0xJR0hUX0RVVFlfQ1lDTEVfTUFTSykgfCB2KTsKKwkJKHZvaWQpIElO UkVHKCZpZ3RfZ2xvYmFsX21taW8sIEJMQ19QV01fQ1BVX0NUTCk7CiAJCXByaW50ZiAoInNldCBi YWNrbGlnaHQgdG8gJWQlJVxuIiwgdiAqIDEwMCAvIG1heCk7CiAJfQogCmRpZmYgLS1naXQgYS90 b29scy9pbnRlbF9kaXNwbGF5X3BvbGxlci5jIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIu YwppbmRleCA1MWY1YjlhNS4uMTU2NDYyNDMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2Rpc3Bs YXlfcG9sbGVyLmMKKysrIGIvdG9vbHMvaW50ZWxfZGlzcGxheV9wb2xsZXIuYwpAQCAtNjMsNiAr NjMsNyBAQCBzdGF0aWMgdWludDE2X3QgcGlwZV9vZmZzZXRbM10gPSB7IDAsIDB4MTAwMCwgMHgy MDAwLCB9OwogI2RlZmluZSBQSVBFX1JFRyhwaXBlLCByZWdfYSkgKHBpcGVfb2Zmc2V0WyhwaXBl KV0gKyAocmVnX2EpKQogCiBzdGF0aWMgdm9sYXRpbGUgYm9vbCBxdWl0Oworc3RydWN0IG1taW9f ZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAKIHN0YXRpYyB2b2lkIHNpZ2hhbmRsZXIoaW50IHgpCiB7 CkBAIC03MSwyMiArNzIsMjIgQEAgc3RhdGljIHZvaWQgc2lnaGFuZGxlcihpbnQgeCkKIAogc3Rh dGljIHVpbnQxNl90IHJlYWRfcmVnXzE2KHVpbnQzMl90IHJlZykKIHsKLQlyZXR1cm4gSU5SRUcx Nih2bHZfb2Zmc2V0ICsgcmVnKTsKKwlyZXR1cm4gSU5SRUcxNigmaWd0X2dsb2JhbF9tbWlvLCB2 bHZfb2Zmc2V0ICsgcmVnKTsKIH0KIAogc3RhdGljIHVpbnQzMl90IHJlYWRfcmVnKHVpbnQzMl90 IHJlZykKIHsKLQlyZXR1cm4gSU5SRUcodmx2X29mZnNldCArIHJlZyk7CisJcmV0dXJuIElOUkVH KCZpZ3RfZ2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcpOwogfQogCiBzdGF0aWMgdm9pZCB3 cml0ZV9yZWdfMTYodWludDMyX3QgcmVnLCB1aW50MTZfdCB2YWwpCiB7Ci0JT1VUUkVHMTYodmx2 X29mZnNldCArIHJlZywgdmFsKTsKKwlPVVRSRUcxNigmaWd0X2dsb2JhbF9tbWlvLCB2bHZfb2Zm c2V0ICsgcmVnLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCB3cml0ZV9yZWcodWludDMyX3QgcmVn LCB1aW50MzJfdCB2YWwpCiB7Ci0JT1VUUkVHKHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7CisJT1VU UkVHKCZpZ3RfZ2xvYmFsX21taW8sIHZsdl9vZmZzZXQgKyByZWcsIHZhbCk7CiB9CiAKIHN0YXRp YyBjaGFyIHBpcGVfbmFtZShpbnQgcGlwZSkKQEAgLTExODcsNyArMTE4OCw3IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCWJyZWFrOwogCX0KIAotCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSwgJmlndF9nbG9i YWxfbW1pbyk7CiAKIAlwcmludGYoIiVzP1xuIiwgdGVzdF9uYW1lKHRlc3QsIHBpcGUsIGJpdCwg dGVzdF9waXhlbGNvdW50KSk7CiAKQEAgLTEyNjIsNyArMTI2Myw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pCiAJCWFzc2VydCgwKTsKIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3RfZ2xvYmFsX21t aW8pOwogCiAJaWYgKHF1aXQpCiAJCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEvdG9vbHMvaW50ZWxf Zm9yY2V3YWtlZC5jIGIvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCmluZGV4IDAyZmJmODg4Li5m ODMzZGZjZSAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZm9yY2V3YWtlZC5jCisrKyBiL3Rvb2xz L2ludGVsX2ZvcmNld2FrZWQuYwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgImRybXRlc3Qu aCIKIAogYm9vbCBkYWVtb25pemVkOworc3RydWN0IG1taW9fZGF0YSBpZ3RfZ2xvYmFsX21taW87 CiAKICNkZWZpbmUgSU5GT19QUklOVCguLi4pIFwKIAlkbyB7IFwKQEAgLTU5LDcgKzYwLDcgQEAg aGVscChjaGFyICpwcm9nKSB7CiBzdGF0aWMgaW50CiBpc19hbGl2ZSh2b2lkKSB7CiAJLyogUmVh ZCB0aGUgdGltZXN0YW1wLCB3aGljaCBzaG91bGQgKmFsbW9zdCogYWx3YXlzIGJlICEwICovCi0J cmV0dXJuIChpbnRlbF9yZWdpc3Rlcl9yZWFkKDB4MjM1OCkgIT0gMCk7CisJcmV0dXJuIChpbnRl bF9yZWdpc3Rlcl9yZWFkKCZpZ3RfZ2xvYmFsX21taW8sIDB4MjM1OCkgIT0gMCk7CiB9CiAKIGlu dCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC04MCw3ICs4MSw3IEBAIGludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCUlORk9fUFJJTlQoInN0YXJ0ZWQgZGFlbW9uIik7 CiAJfQogCi0JcmV0ID0gaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9k ZXZpY2UoKSwgMSwgLTEpOworCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVs X2dldF9wY2lfZGV2aWNlKCksIDEsIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAlpZiAocmV0KSB7 CiAJCUlORk9fUFJJTlQoIkNvdWxkbid0IGluaXQgcmVnaXN0ZXIgYWNjZXNzXG4iKTsKIAkJZXhp dCgxKTsKQEAgLTkwLDE0ICs5MSwxNCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltd KQogCXdoaWxlKDEpIHsKIAkJaWYgKCFpc19hbGl2ZSgpKSB7CiAJCQlJTkZPX1BSSU5UKCJncHUg cmVzZXQ/IHJlc3RhcnRpbmcgZGFlbW9uXG4iKTsKLQkJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7Ci0JCQlyZXQgPSBpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNp X2RldmljZSgpLCAxLCAtMSk7CisJCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2ds b2JhbF9tbWlvKTsKKwkJCXJldCA9IGludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dl dF9wY2lfZGV2aWNlKCksIDEsIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAkJCWlmIChyZXQpCiAJ CQkJSU5GT19QUklOVCgiUmVnIGFjY2VzcyBpbml0IGZhaWxcbiIpOwogCQl9CiAJCXNsZWVwKDEp OwogCX0KLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCZpZ3RfZ2xvYmFsX21taW8pOwogCUlORk9fUFJJTlQoIkZvcmNld2FrZSB1bmxv Y2tcbiIpOwogCiAJaWYgKGRhZW1vbml6ZWQpIHsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX2dw dV90aW1lLmMgYi90b29scy9pbnRlbF9ncHVfdGltZS5jCmluZGV4IDU2ZDY1ZmUwLi41ODMyNjY0 MyAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfZ3B1X3RpbWUuYworKysgYi90b29scy9pbnRlbF9n cHVfdGltZS5jCkBAIC00MSw2ICs0MSw3IEBACiAjZGVmaW5lIFNBTVBMRVNfUEVSX1NFQyAgICAg ICAgICAgICAxMDAwMAogCiBzdGF0aWMgdm9sYXRpbGUgaW50IGdvZGRvOworc3RydWN0IG1taW9f ZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAKIHN0YXRpYyBwaWRfdCBzcGF3bihjaGFyICoqYXJndikK IHsKQEAgLTY3LDcgKzY4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCXN0 YXRpYyBzdHJ1Y3QgcnVzYWdlIHJ1c2FnZTsKIAlpbnQgc3RhdHVzOwogCi0JaW50ZWxfbW1pb191 c2VfcGNpX2JhcihpbnRlbF9nZXRfcGNpX2RldmljZSgpKTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lf YmFyKGludGVsX2dldF9wY2lfZGV2aWNlKCksIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCWlm IChhcmdjID09IDEpIHsKIAkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgY21kIFthcmdzLi4u XVxuIiwgYXJndlswXSk7CkBAIC04Niw4ICs4Nyw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAl3aGlsZSAoIWdvZGRvKSB7CiAJCXVpbnQzMl90IHJpbmdfaGVhZCwgcmluZ190 YWlsOwogCi0JCXJpbmdfaGVhZCA9IElOUkVHKExQX1JJTkcgKyBSSU5HX0hFQUQpICYgSEVBRF9B RERSOwotCQlyaW5nX3RhaWwgPSBJTlJFRyhMUF9SSU5HICsgUklOR19UQUlMKSAmIFRBSUxfQURE UjsKKwkJcmluZ19oZWFkID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgTFBfUklORyArIFJJTkdf SEVBRCkgJiBIRUFEX0FERFI7CisJCXJpbmdfdGFpbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8s IExQX1JJTkcgKyBSSU5HX1RBSUwpICYgVEFJTF9BRERSOwogCiAJCWlmIChyaW5nX3RhaWwgPT0g cmluZ19oZWFkKQogCQkJcmluZ19pZGxlKys7CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9pbmZv ZnJhbWVzLmMgYi90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKaW5kZXggMmVmNWQ0ZmQuLjE5MGZh MWIxIDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9pbmZvZnJhbWVzLmMKKysrIGIvdG9vbHMvaW50 ZWxfaW5mb2ZyYW1lcy5jCkBAIC0yNjQsNiArMjY0LDcgQEAgY29uc3QgY2hhciAqZGlwX2ZyZXF1 ZW5jeV9uYW1lc1tdID0gewogCiBzdHJ1Y3QgcGNpX2RldmljZSAqcGNpX2RldjsKIGludCBnZW4g PSAwOworc3RydWN0IG1taW9fZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAKIHN0YXRpYyBjb25zdCBj aGFyICpzcGRfc291cmNlX3RvX3N0cmluZyhTb3VyY2VEZXZpY2Ugc291cmNlKQogewpAQCAtMzM3 LDIwICszMzgsMjAgQEAgc3RhdGljIHZvaWQgbG9hZF9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFu c2NvZGVyLCBEaXBJbmZvRnJhbWUgKmZyYW1lLAogCXVpbnQzMl90IGN0bF92YWw7CiAJdWludDMy X3QgaTsKIAotCWN0bF92YWwgPSBJTlJFRyhjdGxfcmVnKTsKKwljdGxfdmFsID0gSU5SRUcoJmln dF9nbG9iYWxfbW1pbywgY3RsX3JlZyk7CiAKIAljdGxfdmFsICY9IH5ESVBfQ1RMX0JVRkZFUl9J TkRFWDsKIAljdGxfdmFsIHw9IHR5cGUgPDwgMTk7Ci0JT1VUUkVHKGN0bF9yZWcsIGN0bF92YWwp OwotCWN0bF92YWwgPSBJTlJFRyhjdGxfcmVnKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywg Y3RsX3JlZywgY3RsX3ZhbCk7CisJY3RsX3ZhbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGN0 bF9yZWcpOwogCiAJY3RsX3ZhbCAmPSB+RElQX0NUTF9BQ0NFU1NfQUREUjsKLQlPVVRSRUcoY3Rs X3JlZywgY3RsX3ZhbCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcsIGN0bF92 YWwpOwogCiAJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKLQkJY3RsX3ZhbCA9IElOUkVHKGN0 bF9yZWcpOworCQljdGxfdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgY3RsX3JlZyk7CiAJ CWFzc2VydCgoY3RsX3ZhbCAmIERJUF9DVExfQUNDRVNTX0FERFIpID09IGkpOwotCQlmcmFtZS0+ ZGF0YTMyW2ldID0gSU5SRUcoZGF0YV9yZWcpOworCQlmcmFtZS0+ZGF0YTMyW2ldID0gSU5SRUco JmlndF9nbG9iYWxfbW1pbywgZGF0YV9yZWcpOwogCX0KIH0KIApAQCAtMzg1LDcgKzM4Niw3IEBA IHN0YXRpYyB2b2lkIGluZm9mcmFtZV9maXhfY2hlY2tzdW0oRGlwSW5mb0ZyYW1lICpmcmFtZSkK IHN0YXRpYyB2b2lkIGR1bXBfcG9ydF9pbmZvKGludCBoZG1pX3BvcnRfaW5kZXgpCiB7CiAJUmVn aXN0ZXIgcG9ydCA9IGdldF9oZG1pX3BvcnQoaGRtaV9wb3J0X2luZGV4KTsKLQl1aW50MzJfdCB2 YWwgPSBJTlJFRyhwb3J0KTsKKwl1aW50MzJfdCB2YWwgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlv LCBwb3J0KTsKIAlUcmFuc2NvZGVyIHRyYW5zY29kZXI7CiAKIAlwcmludGYoIlxuUG9ydCAlczpc biIsIGhkbWlfcG9ydF9uYW1lc1toZG1pX3BvcnRfaW5kZXhdKTsKQEAgLTQzOCw3ICs0MzksNyBA QCBzdGF0aWMgdm9pZCBkdW1wX2F2aV9pbmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIAlEaXBJ bmZvRnJhbWUgZnJhbWU7CiAKIAlsb2FkX2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJ UF9BVkkpOwotCXZhbCA9IElOUkVHKHJlZyk7CisJdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1p bywgcmVnKTsKIAogCXByaW50ZigiQVZJIEluZm9GcmFtZTpcbiIpOwogCkBAIC01MzcsNyArNTM4 LDcgQEAgc3RhdGljIHZvaWQgZHVtcF92ZW5kb3JfaW5mbyhUcmFuc2NvZGVyIHRyYW5zY29kZXIp CiAJRGlwSW5mb0ZyYW1lIGZyYW1lOwogCiAJbG9hZF9pbmZvZnJhbWUodHJhbnNjb2RlciwgJmZy YW1lLCBESVBfVkVORE9SKTsKLQl2YWwgPSBJTlJFRyhyZWcpOworCXZhbCA9IElOUkVHKCZpZ3Rf Z2xvYmFsX21taW8sIHJlZyk7CiAKIAlwcmludGYoIlZlbmRvciBJbmZvRnJhbWU6XG4iKTsKIApA QCAtNTcyLDcgKzU3Myw3IEBAIHN0YXRpYyB2b2lkIGR1bXBfZ2FtdXRfaW5mbyhUcmFuc2NvZGVy IHRyYW5zY29kZXIpCiAJRGlwSW5mb0ZyYW1lIGZyYW1lOwogCiAJbG9hZF9pbmZvZnJhbWUodHJh bnNjb2RlciwgJmZyYW1lLCBESVBfR0FNVVQpOwotCXZhbCA9IElOUkVHKHJlZyk7CisJdmFsID0g SU5SRUcoJmlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCXByaW50ZigiR2FtdXQgSW5mb0ZyYW1l OlxuIik7CiAKQEAgLTYwMCw3ICs2MDEsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3NwZF9pbmZvKFRy YW5zY29kZXIgdHJhbnNjb2RlcikKIAljaGFyIGRlc2NyaXB0aW9uWzE3XTsKIAogCWxvYWRfaW5m b2ZyYW1lKHRyYW5zY29kZXIsICZmcmFtZSwgRElQX1NQRCk7Ci0JdmFsID0gSU5SRUcocmVnKTsK Kwl2YWwgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJcHJpbnRmKCJTUEQgSW5m b0ZyYW1lOlxuIik7CiAKQEAgLTYzNSw3ICs2MzYsNyBAQCBzdGF0aWMgdm9pZCBkdW1wX3NwZF9p bmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIHN0YXRpYyB2b2lkIGR1bXBfdHJhbnNjb2Rlcl9p bmZvKFRyYW5zY29kZXIgdHJhbnNjb2RlcikKIHsKIAlSZWdpc3RlciByZWcgPSBnZXRfZGlwX2N0 bF9yZWcodHJhbnNjb2Rlcik7Ci0JdWludDMyX3QgdmFsID0gSU5SRUcocmVnKTsKKwl1aW50MzJf dCB2YWwgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCByZWcpOwogCiAJaWYgKGdlbiA9PSA0KSB7 CiAJCXByaW50ZigiXG5ESVAgaW5mb3JtYXRpb246XG4iKTsKQEAgLTY5OCwzNyArNjk5LDM3IEBA IHN0YXRpYyB2b2lkIHdyaXRlX2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIERpcFR5 cGUgdHlwZSwKIAl1aW50MzJfdCBjdGxfdmFsOwogCXVuc2lnbmVkIGludCBpOwogCi0JY3RsX3Zh bCA9IElOUkVHKGN0bF9yZWcpOworCWN0bF92YWwgPSBJTlJFRygmaWd0X2dsb2JhbF9tbWlvLCBj dGxfcmVnKTsKIAljdGxfdmFsICY9IH5ESVBfQ1RMX0JVRkZFUl9JTkRFWDsKIAljdGxfdmFsIHw9 ICh0eXBlIDw8IDE5KTsKIAljdGxfdmFsICY9IH5ESVBfQ1RMX0FDQ0VTU19BRERSOwotCU9VVFJF RyhjdGxfcmVnLCBjdGxfdmFsKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgY3RsX3JlZywg Y3RsX3ZhbCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0JCWN0bF92YWwgPSBJTlJF RyhjdGxfcmVnKTsKKwkJY3RsX3ZhbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIGN0bF9yZWcp OwogCQlhc3NlcnQoKGN0bF92YWwgJiBESVBfQ1RMX0FDQ0VTU19BRERSKSA9PSBpKTsKLQkJT1VU UkVHKGRhdGFfcmVnLCBmcmFtZS0+ZGF0YTMyW2ldKTsKKwkJT1VUUkVHKCZpZ3RfZ2xvYmFsX21t aW8sIGRhdGFfcmVnLCBmcmFtZS0+ZGF0YTMyW2ldKTsKIAl9CiB9CiAKIHN0YXRpYyB2b2lkIGRp c2FibGVfaW5mb2ZyYW1lKFRyYW5zY29kZXIgdHJhbnNjb2RlciwgRGlwVHlwZSB0eXBlKQogewog CVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2 YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8s IHJlZyk7CiAJaWYgKGdlbiAhPSA0ICYmIHR5cGUgPT0gRElQX0FWSSkKIAkJdmFsICY9IH5ESVBf Q1RMX0VOQUJMRTsKIAl2YWwgJj0gfigxIDw8ICgyMSArIHR5cGUpKTsKLQlPVVRSRUcocmVnLCB2 YWwpOworCU9VVFJFRygmaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2 b2lkIGVuYWJsZV9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5cGUp CiB7CiAJUmVnaXN0ZXIgcmVnID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQz Ml90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoJmlndF9nbG9iYWxf bW1pbywgcmVnKTsKIAlpZiAoZ2VuICE9IDQgJiYgdHlwZSA9PSBESVBfQVZJKQogCQl2YWwgfD0g RElQX0NUTF9FTkFCTEU7CiAJdmFsIHw9ICgxIDw8ICgyMSArIHR5cGUpKTsKLQlPVVRSRUcocmVn LCB2YWwpOworCU9VVFJFRygmaWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRp YyBpbnQgcGFyc2VfaW5mb2ZyYW1lX29wdGlvbl91KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNo YXIgKnMsCkBAIC03ODcsNyArNzg4LDcgQEAgc3RhdGljIHZvaWQgY2hhbmdlX2F2aV9pbmZvZnJh bWUoVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBjaGFyICpjb21tYW5kcykKIAljaGFyICpjdXJyZW50 ID0gY29tbWFuZHM7CiAKIAlsb2FkX2luZm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9B VkkpOwotCXZhbCA9IElOUkVHKHJlZyk7CisJdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywg cmVnKTsKIAogCXdoaWxlICgxKSB7CiAJCXJjID0gc3NjYW5mKGN1cnJlbnQsICIlMzFzJW4iLCBv cHRpb24sICZyZWFkKTsKQEAgLTg1Niw3ICs4NTcsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VfYXZp X2luZm9mcmFtZShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIGNoYXIgKmNvbW1hbmRzKQogCiAJdmFs ICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsKIAl2YWwgfD0gRElQX0NUTF9GUkVRX0VWRVJZOwotCU9V VFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIAog CWZyYW1lLmF2aS5oZWFkZXIudHlwZSA9IEFWSV9JTkZPRlJBTUVfVFlQRTsKIAlmcmFtZS5hdmku aGVhZGVyLnZlcnNpb24gPSBBVklfSU5GT0ZSQU1FX1ZFUlNJT047CkBAIC04ODgsNyArODg5LDcg QEAgc3RhdGljIHZvaWQgY2hhbmdlX3NwZF9pbmZvZnJhbWUoVHJhbnNjb2RlciB0cmFuc2NvZGVy LCBjaGFyICpjb21tYW5kcykKIAljaGFyICpjdXJyZW50ID0gY29tbWFuZHM7CiAKIAlsb2FkX2lu Zm9mcmFtZSh0cmFuc2NvZGVyLCAmZnJhbWUsIERJUF9TUEQpOwotCXZhbCA9IElOUkVHKHJlZyk7 CisJdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCXdoaWxlICgxKSB7CiAJ CXJjID0gc3NjYW5mKGN1cnJlbnQsICIlMTVzJW4iLCBvcHRpb24sICZyZWFkKTsKQEAgLTkxNyw3 ICs5MTgsNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2Vfc3BkX2luZm9mcmFtZShUcmFuc2NvZGVyIHRy YW5zY29kZXIsIGNoYXIgKmNvbW1hbmRzKQogCiAJdmFsICY9IH5ESVBfQ1RMX0ZSRVFVRU5DWTsK IAl2YWwgfD0gRElQX0NUTF9GUkVRX0VWRVJZX09USEVSOwotCU9VVFJFRyhyZWcsIHZhbCk7CisJ T1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIAogCWZyYW1lLnNwZC5oZWFkZXIu dHlwZSA9IFNQRF9JTkZPRlJBTUVfVFlQRTsKIAlmcmFtZS5zcGQuaGVhZGVyLnZlcnNpb24gPSBT UERfSU5GT0ZSQU1FX1ZFUlNJT047CkBAIC05NDYsNyArOTQ3LDcgQEAgc3RhdGljIHZvaWQgY2hh bmdlX2luZm9mcmFtZV9mcmVxdWVuY3koVHJhbnNjb2RlciB0cmFuc2NvZGVyLCBEaXBUeXBlIHR5 cGUsCiAJCQkJICAgICAgIERpcEZyZXF1ZW5jeSBmcmVxdWVuY3kpCiB7CiAJUmVnaXN0ZXIgcmVn ID0gZ2V0X2RpcF9jdGxfcmVnKHRyYW5zY29kZXIpOwotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJl Zyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCWlm ICh0eXBlID09IERJUF9BVkkgJiYgZnJlcXVlbmN5ICE9IERJUF9GUkVRX0VWRVJZX1ZTWU5DKSB7 CiAJCXByaW50ZigiRXJyb3I6IEFWSSBpbmZvZnJhbWUgbXVzdCBiZSBzZW50IGV2ZXJ5IFZTeW5j IVxuIik7CkBAIC05NTUsMzcgKzk1NiwzNyBAQCBzdGF0aWMgdm9pZCBjaGFuZ2VfaW5mb2ZyYW1l X2ZyZXF1ZW5jeShUcmFuc2NvZGVyIHRyYW5zY29kZXIsIERpcFR5cGUgdHlwZSwKIAogCXZhbCAm PSB+RElQX0NUTF9GUkVRVUVOQ1k7CiAJdmFsIHw9IChmcmVxdWVuY3kgPDwgMTYpOwotCU9VVFJF RyhyZWcsIHZhbCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFsKTsKIH0KIAog c3RhdGljIHZvaWQgZGlzYWJsZV9kaXAoVHJhbnNjb2RlciB0cmFuc2NvZGVyKQogewogCVJlZ2lz dGVyIHJlZyA9IGdldF9kaXBfY3RsX3JlZyh0cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2YWwgPSBJ TlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZyk7 CiAJdmFsICY9IH5ESVBfQ1RMX0VOQUJMRTsKLQlPVVRSRUcocmVnLCB2YWwpOworCU9VVFJFRygm aWd0X2dsb2JhbF9tbWlvLCByZWcsIHZhbCk7CiB9CiAKIHN0YXRpYyB2b2lkIGVuYWJsZV9kaXAo VHJhbnNjb2RlciB0cmFuc2NvZGVyKQogewogCVJlZ2lzdGVyIHJlZyA9IGdldF9kaXBfY3RsX3Jl Zyh0cmFuc2NvZGVyKTsKLQl1aW50MzJfdCB2YWwgPSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZh bCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZyk7CiAJdmFsIHw9IERJUF9DVExfRU5BQkxF OwotCU9VVFJFRyhyZWcsIHZhbCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZywgdmFs KTsKIH0KIAogc3RhdGljIHZvaWQgZGlzYWJsZV9oZG1pX3BvcnQoUmVnaXN0ZXIgcmVnKQogewot CXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMyX3QgdmFsID0gSU5SRUcoJmlndF9n bG9iYWxfbW1pbywgcmVnKTsKIAl2YWwgJj0gfkhETUlfUE9SVF9FTkFCTEU7Ci0JT1VUUkVHKHJl ZywgdmFsKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgcmVnLCB2YWwpOwogfQogCiBzdGF0 aWMgdm9pZCBlbmFibGVfaGRtaV9wb3J0KFJlZ2lzdGVyIHJlZykKIHsKLQl1aW50MzJfdCB2YWwg PSBJTlJFRyhyZWcpOworCXVpbnQzMl90IHZhbCA9IElOUkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJl Zyk7CiAJdmFsIHw9IEhETUlfUE9SVF9FTkFCTEU7Ci0JT1VUUkVHKHJlZywgdmFsKTsKKwlPVVRS RUcoJmlndF9nbG9iYWxfbW1pbywgcmVnLCB2YWwpOwogfQogCiBzdGF0aWMgdm9pZCBwcmludF91 c2FnZSh2b2lkKQpAQCAtMTEwOCw3ICsxMTA5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIg KmFyZ3ZbXSkKIAkgICAgICAgIiBwZXJmZWN0bHk6IHRoZSBLZXJuZWwgbWlnaHQgdW5kbyBvdXIg Y2hhbmdlcy5cbiIpOwogCiAJcGNpX2RldiA9IGludGVsX2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50 ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2RldiwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVy X2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xLCAmaWd0X2dsb2JhbF9tbWlvKTsKKwogCWludGVs X2NoZWNrX3BjaCgpOwogCiAJaWYgKElTX0dFTjQocGNpX2Rldi0+ZGV2aWNlX2lkKSkKQEAgLTEy NTYsNiArMTI1OCw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJfQogCiBv dXQ6Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nl c3NfZmluaSgmaWd0X2dsb2JhbF9tbWlvKTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEv dG9vbHMvaW50ZWxfbDNfcGFyaXR5LmMgYi90b29scy9pbnRlbF9sM19wYXJpdHkuYwppbmRleCBk OGM5OTdhZi4uODgxNTg2MzIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jCisr KyBiL3Rvb2xzL2ludGVsX2wzX3Bhcml0eS5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi aW50ZWxfY2hpcHNldC5oIgogI2luY2x1ZGUgImludGVsX2lvLmgiCiAjaW5jbHVkZSAiaWd0X3N5 c2ZzLmgiCisjaW5jbHVkZSAiaWd0X2RldmljZS5oIgogI2luY2x1ZGUgImRybXRlc3QuaCIKICNp bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDxsaWJ1ZGV2Lmg+CkBAIC01Myw2ICs1NCw3IEBA IHN0YXRpYyBpbmxpbmUgaW50IG51bV9iYW5rcyh2b2lkKSB7CiAJZGVmYXVsdDogcmV0dXJuIDI7 CiAJfQogfQorc3RydWN0IG1taW9fZGF0YSBpZ3RfZ2xvYmFsX21taW87CiAjZGVmaW5lIE5VTV9T VUJCQU5LUyA4CiAjZGVmaW5lIEJZVEVTX1BFUl9CQU5LICgxMjggPDwgMTApCiAvKiBFYWNoIHJv dyBhZGRyZXNzZXMgW3VwIHRvXSA0Yi4gVGhpcyBtdWx0aXBsaWVkIGJ5IHRoZSBudW1iZXIgb2Yg c3ViYmFua3MKQEAgLTE4OSw3ICsxOTEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJn dltdKQogCWlmIChpbnRlbF9nZW4oZGV2aWQpIDwgNyB8fCBJU19WQUxMRVlWSUVXKGRldmlkKSkK IAkJZXhpdCg3Nyk7CiAKLQlhc3NlcnQoaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxf Z2V0X3BjaV9kZXZpY2UoKSwgMCwgZGV2aWNlKSA9PSAwKTsKKwlhc3NlcnQoaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaWd0X2RldmljZV9nZXRfcGNpX2RldmljZShkZXZpY2UpLCAwLCBkZXZp Y2UsICZpZ3RfZ2xvYmFsX21taW8pID09IDApOwogCiAJZGlyID0gaWd0X3N5c2ZzX29wZW4oZGV2 aWNlKTsKIApAQCAtMjExLDcgKzIxMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10pCiAJICogbm93LiBKdXN0IGJlIGF3YXJlIG9mIHRoaXMgaWYgZm9yIHNvbWUgcmVhc29uIGEg aGFuZyBpcyByZXBvcnRlZAogCSAqIHdoZW4gdXNpbmcgdGhpcyB0b29sLgogCSAqLwotCWRmdCA9 IGludGVsX3JlZ2lzdGVyX3JlYWQoMHhiMDM4KTsKKwlkZnQgPSBpbnRlbF9yZWdpc3Rlcl9yZWFk KCZpZ3RfZ2xvYmFsX21taW8sIDB4YjAzOCk7CiAKIAl3aGlsZSAoMSkgewogCQlpbnQgYywgb3B0 aW9uX2luZGV4ID0gMDsKQEAgLTM1NywxMCArMzU5LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBj aGFyICphcmd2W10pCiAJCQkJYXNzZXJ0KGkgPCAyKTsKIAkJCQlkZnQgfD0gaSA8PCAxOyAvKiBz bGljZSAqLwogCQkJCWRmdCB8PSAxIDw8IDA7IC8qIGVuYWJsZSAqLwotCQkJCWludGVsX3JlZ2lz dGVyX3dyaXRlKDB4YjAzOCwgZGZ0KTsKKwkJCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmaWd0X2ds b2JhbF9tbWlvLCAweGIwMzgsIGRmdCk7CiAJCQkJYnJlYWs7CiAJCQljYXNlICd1JzoKLQkJCQlp bnRlbF9yZWdpc3Rlcl93cml0ZSgweGIwMzgsIGRmdCAmIH4oMTw8MCkpOworCQkJCWludGVsX3Jl Z2lzdGVyX3dyaXRlKCZpZ3RfZ2xvYmFsX21taW8sIDB4YjAzOCwgZGZ0ICYgfigxPDwwKSk7CiAJ CQkJYnJlYWs7CiAJCQljYXNlICdMJzoKIAkJCQlicmVhazsKQEAgLTM2OSw3ICszNzEsNyBAQCBp bnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl9CiAJfQogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2dsb2Jh bF9tbWlvKTsKIAlpZiAoYWN0aW9uID09ICdsJykKIAkJZXhpdChFWElUX1NVQ0NFU1MpOwogCmRp ZmYgLS1naXQgYS90b29scy9pbnRlbF9saWQuYyBiL3Rvb2xzL2ludGVsX2xpZC5jCmluZGV4IDM3 YzZiYTVlLi4zMmRiOWRkMiAxMDA2NDQKLS0tIGEvdG9vbHMvaW50ZWxfbGlkLmMKKysrIGIvdG9v bHMvaW50ZWxfbGlkLmMKQEAgLTUxLDYgKzUxLDcgQEAgZW51bSBsaWRfc3RhdHVzIHsKIAogI2Rl ZmluZSBBQ1BJX0JVVFRPTiAiL3Byb2MvYWNwaS9idXR0b24vIgogI2RlZmluZSBBQ1BJX0xJRCAi L3Byb2MvYWNwaS9idXR0b24vbGlkLyIKK3N0cnVjdCBtbWlvX2RhdGEgaWd0X2dsb2JhbF9tbWlv OwogCiBzdGF0aWMgaW50IGk4MzBfbHZkc19hY3BpX2xpZF9zdGF0ZSh2b2lkKQogewpAQCAtMTE5 LDEwICsxMjAsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWludCBz d2YxNCwgYWNwaV9saWQ7CiAKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFyKGludGVsX2dldF9wY2lf ZGV2aWNlKCkpOworCWludGVsX21taW9fdXNlX3BjaV9iYXIoaW50ZWxfZ2V0X3BjaV9kZXZpY2Uo KSwgLTEsICZpZ3RfZ2xvYmFsX21taW8pOwogCiAJd2hpbGUgKDEpIHsKLQkJc3dmMTQgPSBJTlJF RyhTV0YxNCk7CisJCXN3ZjE0ID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgU1dGMTQpOwogCiAJ CXByaW50ZigiSW50ZWwgTFZEUyBMaWQgc3RhdHVzOlxuIik7CiAJCXByaW50ZigiXHRTV0YxNCgw eCV4KSA6ICVzXG4iLCBzd2YxNCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3BhbmVsX2ZpdHRl ci5jIGIvdG9vbHMvaW50ZWxfcGFuZWxfZml0dGVyLmMKaW5kZXggMTM3ZWY2MWEuLmE1MGY0MmU4 IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF9wYW5lbF9maXR0ZXIuYworKysgYi90b29scy9pbnRl bF9wYW5lbF9maXR0ZXIuYwpAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgImRybXRlc3QuaCIK IAogaW50IGdlbjsKK3N0cnVjdCBtbWlvX2RhdGEgaWd0X2dsb2JhbF9tbWlvOwogCiB1aW50MzJf dCBIVE9UQUxbXSAgICAgPSB7IDB4NjAwMDAsIDB4NjEwMDAsIDB4NjIwMDAgfTsKIHVpbnQzMl90 IFZUT1RBTFtdICAgICA9IHsgMHg2MDAwQywgMHg2MTAwQywgMHg2MjAwQyB9OwpAQCAtODQsMTIg Kzg1LDEyIEBAIHN0YXRpYyB2b2lkIHJlYWRfcGlwZV9pbmZvKGludCBpbnRlbF9waXBlLCBzdHJ1 Y3QgcGlwZV9pbmZvICppbmZvKQogewogCXVpbnQzMl90IGNvbmYsIHZ0b3RhbCwgaHRvdGFsLCBz cmMsIGN0cmwxLCB3aW5fc3o7CiAKLQljb25mICAgPSBJTlJFRyhQSVBFQ09ORltpbnRlbF9waXBl XSk7Ci0JaHRvdGFsID0gSU5SRUcoSFRPVEFMW2ludGVsX3BpcGVdKTsKLQl2dG90YWwgPSBJTlJF RyhWVE9UQUxbaW50ZWxfcGlwZV0pOwotCXNyYyAgICA9IElOUkVHKFBJUEVTUkNbaW50ZWxfcGlw ZV0pOwotCWN0cmwxICA9IElOUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdKTsKLQl3aW5fc3ogPSBJ TlJFRyhQRl9XSU5fU1pbaW50ZWxfcGlwZV0pOworCWNvbmYgICA9IElOUkVHKCZpZ3RfZ2xvYmFs X21taW8sIFBJUEVDT05GW2ludGVsX3BpcGVdKTsKKwlodG90YWwgPSBJTlJFRygmaWd0X2dsb2Jh bF9tbWlvLCBIVE9UQUxbaW50ZWxfcGlwZV0pOworCXZ0b3RhbCA9IElOUkVHKCZpZ3RfZ2xvYmFs X21taW8sIFZUT1RBTFtpbnRlbF9waXBlXSk7CisJc3JjICAgID0gSU5SRUcoJmlndF9nbG9iYWxf bW1pbywgUElQRVNSQ1tpbnRlbF9waXBlXSk7CisJY3RybDEgID0gSU5SRUcoJmlndF9nbG9iYWxf bW1pbywgUEZfQ1RSTDFbaW50ZWxfcGlwZV0pOworCXdpbl9zeiA9IElOUkVHKCZpZ3RfZ2xvYmFs X21taW8sIFBGX1dJTl9TWltpbnRlbF9waXBlXSk7CiAKIAlpbmZvLT5lbmFibGVkID0gKGNvbmYg JiBQSVBFQ09ORl9FTkFCTEUpID8gdHJ1ZSA6IGZhbHNlOwogCWluZm8tPnRvdF93aWR0aCA9ICho dG90YWwgJiBIVE9UQUxfQUNUSVZFX01BU0spICsgMTsKQEAgLTIzMiwyNCArMjMzLDI0IEBAIHN0 YXRpYyBpbnQgY2hhbmdlX3NjcmVlbl9zaXplKGludCBpbnRlbF9waXBlLCBpbnQgeCwgaW50IHkp CiAJCQlhc3NlcnQoMCk7CiAJCX0KIAl9Ci0JT1VUUkVHKFBGX0NUUkwxW2ludGVsX3BpcGVdLCBj dHJsMV92YWwpOworCU9VVFJFRygmaWd0X2dsb2JhbF9tbWlvLCBQRl9DVFJMMVtpbnRlbF9waXBl XSwgY3RybDFfdmFsKTsKIAogCXdpbl9wb3NfdmFsID0gcG9zX3ggPDwgMTY7CiAJd2luX3Bvc192 YWwgfD0gcG9zX3k7Ci0JT1VUUkVHKFBGX1dJTl9QT1NbaW50ZWxfcGlwZV0sIHdpbl9wb3NfdmFs KTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1BPU1tpbnRlbF9waXBlXSwgd2lu X3Bvc192YWwpOwogCiAJd2luX3N6X3ZhbCA9IGRzdF93aWR0aCA8PCAxNjsKIAl3aW5fc3pfdmFs IHw9IGRzdF9oZWlnaHQ7Ci0JT1VUUkVHKFBGX1dJTl9TWltpbnRlbF9waXBlXSwgd2luX3N6X3Zh bCk7CisJT1VUUkVHKCZpZ3RfZ2xvYmFsX21taW8sIFBGX1dJTl9TWltpbnRlbF9waXBlXSwgd2lu X3N6X3ZhbCk7CiAKIAlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBkaXNhYmxlX3BhbmVsX2Zp dHRlcihpbnQgaW50ZWxfcGlwZSkKIHsKLQlPVVRSRUcoUEZfQ1RSTDFbaW50ZWxfcGlwZV0sIDAp OwotCU9VVFJFRyhQRl9XSU5fUE9TW2ludGVsX3BpcGVdLCAwKTsKLQlPVVRSRUcoUEZfV0lOX1Na W2ludGVsX3BpcGVdLCAwKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgUEZfQ1RSTDFbaW50 ZWxfcGlwZV0sIDApOworCU9VVFJFRygmaWd0X2dsb2JhbF9tbWlvLCBQRl9XSU5fUE9TW2ludGVs X3BpcGVdLCAwKTsKKwlPVVRSRUcoJmlndF9nbG9iYWxfbW1pbywgUEZfV0lOX1NaW2ludGVsX3Bp cGVdLCAwKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjgwLDcgKzI4MSw3IEBAIGludCBtYWluIChp bnQgYXJnYywgY2hhciAqYXJndltdKQogCSAgICAgICAic29sdXRpb24gdGhhdCBtYXkgb3IgbWF5 IG5vdCB3b3JrLiBVc2UgaXQgYXQgeW91ciBvd24gcmlzay5cbiIpOwogCiAJcGNpX2RldiA9IGlu dGVsX2dldF9wY2lfZGV2aWNlKCk7Ci0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQocGNpX2Rl diwgMCwgLTEpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KHBjaV9kZXYsIDAsIC0xLCAm aWd0X2dsb2JhbF9tbWlvKTsKIAlkZXZpZCA9IHBjaV9kZXYtPmRldmljZV9pZDsKIAogCWlmICgh SEFTX1BDSF9TUExJVChkZXZpZCkpIHsKQEAgLTM0Miw2ICszNDMsNiBAQCBpbnQgbWFpbiAoaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIG91dDoKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf ZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3RfZ2xvYmFsX21taW8pOwog CXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMg Yi90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKaW5kZXggNTBjNGJjZTYuLjIzYjhmOGIxIDEw MDY0NAotLS0gYS90b29scy9pbnRlbF9wZXJmX2NvdW50ZXJzLmMKKysrIGIvdG9vbHMvaW50ZWxf cGVyZl9jb3VudGVycy5jCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiZHJtLmgiCiAjaW5j bHVkZSAiaTkxNV9kcm0uaCIKICNpbmNsdWRlICJkcm10ZXN0LmgiCisjaW5jbHVkZSAiaWd0X2Rl dmljZS5oIgogI2luY2x1ZGUgImludGVsX2lvLmgiCiAjaW5jbHVkZSAiaW50ZWxfYnVmbWdyLmgi CiAjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKQEAgLTMyMyw2ICszMjQsOCBAQCBzdHJ1 Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoOwogIyBkZWZpbmUgT0FDT05UUk9MX0NPVU5URVJf U0VMRUNUX1NISUZUIDIKICMgZGVmaW5lIFBFUkZPUk1BTkNFX0NPVU5URVJfRU5BQkxFICAgICAo MSA8PCAwKQogCitzdHJ1Y3QgbW1pb19kYXRhIGlndF9nbG9iYWxfbW1pbzsKKwogc3RhdGljIHZv aWQKIGdlbjVfZ2V0X2NvdW50ZXJzKHZvaWQpCiB7CkBAIC00ODMsMTAgKzQ4NiwxMCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWlmIChvYWNvbnRyb2wpIHsKIAkJLyogRm9yY2V3 YWtlICovCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNl KCksIDAsIGZkKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaWd0X2RldmljZV9nZXRf cGNpX2RldmljZShmZCksIDAsIGZkLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCQkvKiBFbmFibGUg cGVyZm9ybWFuY2UgY291bnRlcnMgKi8KLQkJaW50ZWxfcmVnaXN0ZXJfd3JpdGUoT0FDT05UUk9M LAorCQlpbnRlbF9yZWdpc3Rlcl93cml0ZSgmaWd0X2dsb2JhbF9tbWlvLCBPQUNPTlRST0wsCiAJ CQljb3VudGVyX2Zvcm1hdCA8PCBPQUNPTlRST0xfQ09VTlRFUl9TRUxFQ1RfU0hJRlQgfAogCQkJ UEVSRk9STUFOQ0VfQ09VTlRFUl9FTkFCTEUpOwogCX0KQEAgLTUyMCwxMCArNTIzLDEwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJaWYgKG9hY29udHJvbCkgewogCQkvKiBEaXNh YmxlIHBlcmZvcm1hbmNlIGNvdW50ZXJzICovCi0JCWludGVsX3JlZ2lzdGVyX3dyaXRlKE9BQ09O VFJPTCwgMCk7CisJCWludGVsX3JlZ2lzdGVyX3dyaXRlKCZpZ3RfZ2xvYmFsX21taW8sIE9BQ09O VFJPTCwgMCk7CiAKIAkJLyogRm9yY2V3YWtlICovCi0JCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19m aW5pKCk7CisJCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3RfZ2xvYmFsX21taW8pOwog CX0KIAogCWZyZWUodG90YWxzKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2ludGVsX3JlZy5jIGIvdG9v bHMvaW50ZWxfcmVnLmMKaW5kZXggMTI0N2I3MGIuLmU4MTZiYjlmIDEwMDY0NAotLS0gYS90b29s cy9pbnRlbF9yZWcuYworKysgYi90b29scy9pbnRlbF9yZWcuYwpAQCAtMzksNiArMzksNyBAQAog CiAjaW5jbHVkZSAiaW50ZWxfcmVnX3NwZWMuaCIKIAorc3RydWN0IG1taW9fZGF0YSBpZ3RfZ2xv YmFsX21taW87CiAKICNpZmRlZiBIQVZFX1NZU19JT19ICiAjaW5jbHVkZSA8c3lzL2lvLmg+CkBA IC0zNjQsNyArMzY1LDcgQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcg KmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJaWYgKHJlZy0+ZW5n aW5lKQogCQkJdmFsID0gcmVnaXN0ZXJfc3JtKGNvbmZpZywgcmVnLCBOVUxMKTsKIAkJZWxzZQot CQkJdmFsID0gSU5SRUcocmVnLT5tbWlvX29mZnNldCArIHJlZy0+YWRkcik7CisJCQl2YWwgPSBJ TlJFRygmaWd0X2dsb2JhbF9tbWlvLCByZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyKTsKIAkJ YnJlYWs7CiAJY2FzZSBQT1JUX1BPUlRJT19WR0E6CiAJCWlvcGwoMyk7CkBAIC0zNzIsNyArMzcz LDcgQEAgc3RhdGljIGludCByZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3Ry dWN0IHJlZyAqcmVnLCB1aW50MzJfdCAqdmFscCkKIAkJaW9wbCgwKTsKIAkJYnJlYWs7CiAJY2Fz ZSBQT1JUX01NSU9fVkdBOgotCQl2YWwgPSBJTlJFRzgocmVnLT5hZGRyKTsKKwkJdmFsID0gSU5S RUc4KCZpZ3RfZ2xvYmFsX21taW8sIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWNhc2UgUE9SVF9C VU5JVDoKIAljYXNlIFBPUlRfUFVOSVQ6CkBAIC0zODksNyArMzkwLDcgQEAgc3RhdGljIGludCBy ZWFkX3JlZ2lzdGVyKHN0cnVjdCBjb25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50 MzJfdCAqdmFscCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsKIAkJ fQotCQl2YWwgPSBpbnRlbF9pb3NmX3NiX3JlYWQocmVnLT5wb3J0X2Rlc2MucG9ydCwgcmVnLT5h ZGRyKTsKKwkJdmFsID0gaW50ZWxfaW9zZl9zYl9yZWFkKCZpZ3RfZ2xvYmFsX21taW8sIHJlZy0+ cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRkcik7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZwcmlu dGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5wb3J0 KTsKQEAgLTQyNCw3ICs0MjUsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3JlZ2lzdGVyKHN0cnVjdCBj b25maWcgKmNvbmZpZywgc3RydWN0IHJlZyAqcmVnLCB1aW50MzJfdCB2YWwpCiAJCWlmIChyZWct PmVuZ2luZSkgewogCQkJcmVnaXN0ZXJfc3JtKGNvbmZpZywgcmVnLCAmdmFsKTsKIAkJfSBlbHNl IHsKLQkJCU9VVFJFRyhyZWctPm1taW9fb2Zmc2V0ICsgcmVnLT5hZGRyLCB2YWwpOworCQkJT1VU UkVHKCZpZ3RfZ2xvYmFsX21taW8sIHJlZy0+bW1pb19vZmZzZXQgKyByZWctPmFkZHIsIHZhbCk7 CiAJCX0KIAkJYnJlYWs7CiAJY2FzZSBQT1JUX1BPUlRJT19WR0E6CkBAIC00NDMsNyArNDQ0LDcg QEAgc3RhdGljIGludCB3cml0ZV9yZWdpc3RlcihzdHJ1Y3QgY29uZmlnICpjb25maWcsIHN0cnVj dCByZWcgKnJlZywgdWludDMyX3QgdmFsKQogCQkJCXZhbCwgcmVnLT5wb3J0X2Rlc2MubmFtZSk7 CiAJCQlyZXR1cm4gLTE7CiAJCX0KLQkJT1VUUkVHOChyZWctPmFkZHIsIHZhbCk7CisJCU9VVFJF RzgoJmlndF9nbG9iYWxfbW1pbywgcmVnLT5hZGRyLCB2YWwpOwogCQlicmVhazsKIAljYXNlIFBP UlRfQlVOSVQ6CiAJY2FzZSBQT1JUX1BVTklUOgpAQCAtNDYwLDcgKzQ2MSw3IEBAIHN0YXRpYyBp bnQgd3JpdGVfcmVnaXN0ZXIoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcmVnICpyZWcs IHVpbnQzMl90IHZhbCkKIAkJCQlyZWctPnBvcnRfZGVzYy5uYW1lKTsKIAkJCXJldHVybiAtMTsK IAkJfQotCQlpbnRlbF9pb3NmX3NiX3dyaXRlKHJlZy0+cG9ydF9kZXNjLnBvcnQsIHJlZy0+YWRk ciwgdmFsKTsKKwkJaW50ZWxfaW9zZl9zYl93cml0ZSgmaWd0X2dsb2JhbF9tbWlvLCByZWctPnBv cnRfZGVzYy5wb3J0LCByZWctPmFkZHIsIHZhbCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWZw cmludGYoc3RkZXJyLCAicG9ydCAlZCBub3Qgc3VwcG9ydGVkXG4iLCByZWctPnBvcnRfZGVzYy5w b3J0KTsKQEAgLTU1NCw5ICs1NTUsOSBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19yZWFkKHN0cnVj dCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAl9CiAKIAlpZiAoY29u ZmlnLT5tbWlvZmlsZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZpZy0+bW1pb2Zp bGUpOworCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmlndF9nbG9iYWxfbW1pbywgY29uZmln LT5tbWlvZmlsZSk7CiAJZWxzZQotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChjb25maWct PnBjaV9kZXYsIDAsIC0xKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoY29uZmlnLT5w Y2lfZGV2LCAwLCBjb25maWctPmZkLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCWZvciAoaSA9IDE7 IGkgPCBhcmdjOyBpKyspIHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC01NzIsNyArNTczLDcgQEAg c3RhdGljIGludCBpbnRlbF9yZWdfcmVhZChzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdj LCBjaGFyICphcmd2W10pCiAJCX0KIAl9CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgp OworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3RfZ2xvYmFsX21taW8pOwogCiAJcmV0 dXJuIEVYSVRfU1VDQ0VTUzsKIH0KQEAgLTU4Niw3ICs1ODcsNyBAQCBzdGF0aWMgaW50IGludGVs X3JlZ193cml0ZShzdHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJCXJldHVybiBFWElUX0ZBSUxVUkU7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2lu aXQoY29uZmlnLT5wY2lfZGV2LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Y29uZmlnLT5wY2lfZGV2LCAwLCBjb25maWctPmZkLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCWZv ciAoaSA9IDE7IGkgPCBhcmdjOyBpICs9IDIpIHsKIAkJc3RydWN0IHJlZyByZWc7CkBAIC02MTEs NyArNjEyLDcgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfd3JpdGUoc3RydWN0IGNvbmZpZyAqY29u ZmlnLCBpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl3cml0ZV9yZWdpc3Rlcihjb25maWcsICZy ZWcsIHZhbCk7CiAJfQogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2dsb2JhbF9tbWlvKTsKIAogCXJldHVybiBFWElUX1NV Q0NFU1M7CiB9CkBAIC02MjIsOSArNjIzLDkgQEAgc3RhdGljIGludCBpbnRlbF9yZWdfZHVtcChz dHJ1Y3QgY29uZmlnICpjb25maWcsIGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJaW50IGk7CiAK IAlpZiAoY29uZmlnLT5tbWlvZmlsZSkKLQkJaW50ZWxfbW1pb191c2VfZHVtcF9maWxlKGNvbmZp Zy0+bW1pb2ZpbGUpOworCQlpbnRlbF9tbWlvX3VzZV9kdW1wX2ZpbGUoJmlndF9nbG9iYWxfbW1p bywgY29uZmlnLT5tbWlvZmlsZSk7CiAJZWxzZQotCQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5p dChjb25maWctPnBjaV9kZXYsIDAsIC0xKTsKKwkJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQo Y29uZmlnLT5wY2lfZGV2LCAwLCBjb25maWctPmZkLCAmaWd0X2dsb2JhbF9tbWlvKTsKIAogCWZv ciAoaSA9IDA7IGkgPCBjb25maWctPnJlZ2NvdW50OyBpKyspIHsKIAkJcmVnID0gJmNvbmZpZy0+ cmVnc1tpXTsKQEAgLTYzNiw3ICs2MzcsNyBAQCBzdGF0aWMgaW50IGludGVsX3JlZ19kdW1wKHN0 cnVjdCBjb25maWcgKmNvbmZpZywgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJZHVtcF9yZWdp c3Rlcihjb25maWcsICZjb25maWctPnJlZ3NbaV0pOwogCX0KIAotCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJmlndF9nbG9iYWxfbW1p byk7CiAKIAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogfQpAQCAtNjUwLDEwICs2NTEsMTAgQEAgc3Rh dGljIGludCBpbnRlbF9yZWdfc25hcHNob3Qoc3RydWN0IGNvbmZpZyAqY29uZmlnLCBpbnQgYXJn YywgY2hhciAqYXJndltdKQogCQlyZXR1cm4gRVhJVF9GQUlMVVJFOwogCX0KIAotCWludGVsX21t aW9fdXNlX3BjaV9iYXIoY29uZmlnLT5wY2lfZGV2KTsKKwlpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KGNvbmZpZy0+cGNpX2RldiwgY29uZmlnLT5mZCwgJmlndF9nbG9iYWxfbW1pbyk7CiAKIAkvKiBY WFg6IGVycm9yIGhhbmRsaW5nICovCi0JaWYgKHdyaXRlKDEsIGlndF9nbG9iYWxfbW1pbywgY29u ZmlnLT5wY2lfZGV2LT5yZWdpb25zW21taW9fYmFyXS5zaXplKSA9PSAtMSkKKwlpZiAod3JpdGUo MSwgaWd0X2dsb2JhbF9tbWlvLmlndF9tbWlvLCBjb25maWctPnBjaV9kZXYtPnJlZ2lvbnNbbW1p b19iYXJdLnNpemUpID09IC0xKQogCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHdyaXRpbmcgc25h cHNob3Q6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKIAogCWlmIChjb25maWctPnZlcmJvc2l0eSA+ IDApCmRpZmYgLS1naXQgYS90b29scy9pbnRlbF9yZWdfY2hlY2tlci5jIGIvdG9vbHMvaW50ZWxf cmVnX2NoZWNrZXIuYwppbmRleCA2YmRlNjNlYy4uMjExMmZkY2IgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2ludGVsX3JlZ19jaGVja2VyLmMKKysrIGIvdG9vbHMvaW50ZWxfcmVnX2NoZWNrZXIuYwpAQCAt MjYsMTYgKzI2LDE4IEBACiAjaW5jbHVkZSA8ZXJyLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAj aW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKICNpbmNsdWRlICJp bnRlbF9pby5oIgogI2luY2x1ZGUgImludGVsX2NoaXBzZXQuaCIKIAogc3RhdGljIHVpbnQzMl90 IGRldmlkOwogc3RhdGljIGludCBnZW47CitzdHJ1Y3QgbW1pb19kYXRhIGlndF9nbG9iYWxfbW1p bzsKIAogc3RhdGljIHVpbnQzMl90CiByZWFkX2FuZF9wcmludF9yZWcoY29uc3QgY2hhciAqbmFt ZSwgdWludDMyX3QgcmVnKQogewotCXVpbnQzMl90IHZhbCA9IElOUkVHKHJlZyk7CisJdWludDMy X3QgdmFsID0gSU5SRUcoJmlndF9nbG9iYWxfbW1pbywgcmVnKTsKIAogCXByaW50ZigiJXMgKDB4 JXgpOiAweCUwOHhcbiIsIG5hbWUsIHJlZywgdmFsKTsKIApAQCAtMzQ1LDcgKzM0Nyw3IEBAIGlu dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIAogCWRldiA9IGludGVsX2dldF9wY2lfZGV2 aWNlKCk7CiAJZGV2aWQgPSBkZXYtPmRldmljZV9pZDsKLQlpbnRlbF9tbWlvX3VzZV9wY2lfYmFy KGRldik7CisJaW50ZWxfbW1pb191c2VfcGNpX2JhcihkZXYsIC0xLCAmaWd0X2dsb2JhbF9tbWlv KTsKIAogCWlmIChJU19HRU43KGRldmlkKSkKIAkJZ2VuID0gNzsKZGlmZiAtLWdpdCBhL3Rvb2xz L2ludGVsX3dhdGVybWFyay5jIGIvdG9vbHMvaW50ZWxfd2F0ZXJtYXJrLmMKaW5kZXggZTcxYzNk OWMuLmY2MDJlMDE1IDEwMDY0NAotLS0gYS90b29scy9pbnRlbF93YXRlcm1hcmsuYworKysgYi90 b29scy9pbnRlbF93YXRlcm1hcmsuYwpAQCAtMzUsMTAgKzM1LDExIEBACiAKIHN0YXRpYyB1aW50 MzJfdCBkaXNwbGF5X2Jhc2U7CiBzdGF0aWMgdWludDMyX3QgZGV2aWQ7CitzdHJ1Y3QgbW1pb19k YXRhIGlndF9nbG9iYWxfbW1pbzsKIAogc3RhdGljIHVpbnQzMl90IHJlYWRfcmVnKHVpbnQzMl90 IGFkZHIpCiB7Ci0JcmV0dXJuIElOUkVHKGRpc3BsYXlfYmFzZSArIGFkZHIpOworCXJldHVybiBJ TlJFRygmaWd0X2dsb2JhbF9tbWlvLCBkaXNwbGF5X2Jhc2UgKyBhZGRyKTsKIH0KIAogc3RydWN0 IGdtY2hfd20gewpAQCAtMjQ5LDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIHNrbF93bV9kdW1wKHZv aWQpCiAJdWludDMyX3QgcGxhbmVfY3RsW251bV9waXBlc11bbWF4X3BsYW5lc107CiAJdWludDMy X3Qgd21fbGluZXRpbWVbbnVtX3BpcGVzXTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSwgJmlndF9nbG9iYWxfbW1pbyk7CiAK IAlmb3IgKHBpcGUgPSAwOyBwaXBlIDwgbnVtX3BpcGVzOyBwaXBlKyspIHsKIAkJaW50IG51bV9w bGFuZXMgPSBza2xfbnVtX3BsYW5lcyhkZXZpZCwgcGlwZSk7CkBAIC00NjksNyArNDcwLDcgQEAg c3RhdGljIHZvaWQgaWxrX3dtX2R1bXAodm9pZCkKIAlpbnQgbnVtX3BpcGVzID0gaW50ZWxfZ2Vu KGRldmlkKSA+PSA3ID8gMyA6IDI7CiAJc3RydWN0IGlsa193bSB3bSA9IHt9OwogCi0JaW50ZWxf cmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEpOworCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xLCAm aWd0X2dsb2JhbF9tbWlvKTsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1fcGlwZXM7IGkrKykgewog CQlkc3BjbnRyW2ldID0gcmVhZF9yZWcoMHg3MDE4MCArIGkgKiAweDEwMDApOwpAQCAtNTA1LDcg KzUwNiw3IEBAIHN0YXRpYyB2b2lkIGlsa193bV9kdW1wKHZvaWQpCiAJaWYgKElTX0JST0FEV0VM TChkZXZpZCkgfHwgSVNfSEFTV0VMTChkZXZpZCkpCiAJCXdtX21pc2MgPSByZWFkX3JlZygweDQ1 MjYwKTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJf YWNjZXNzX2ZpbmkoJmlndF9nbG9iYWxfbW1pbyk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3Bp cGVzOyBpKyspCiAJCXByaW50ZigiICAgIFdNX1BJUEVfJWMgPSAweCUwOHhcbiIsIHBpcGVfbmFt ZShpKSwgd21fcGlwZVtpXSk7CkBAIC02MTksNyArNjIwLDcgQEAgc3RhdGljIHZvaWQgdmx2X3dt X2R1bXAodm9pZCkKIAl1aW50MzJfdCBkc3Bfc3NfcG0sIGRkcl9zZXR1cDI7CiAJc3RydWN0IGdt Y2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0 KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3Nf aW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSwgJmlndF9nbG9iYWxfbW1pbyk7CiAK IAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlkc3BhcmIyID0gcmVhZF9yZWcoMHg3MDA2 MCk7CkBAIC02NTAsMTMgKzY1MSwxMyBAQCBzdGF0aWMgdm9pZCB2bHZfd21fZHVtcCh2b2lkKQog CiAJCWRkbDMgPSByZWFkX3JlZygweDcwMDU4KTsKIAotCQlpbnRlbF9wdW5pdF9yZWFkKDB4MzYs ICZkc3Bfc3NfcG0pOwotCQlpbnRlbF9wdW5pdF9yZWFkKDB4MTM5LCAmZGRyX3NldHVwMik7CisJ CWludGVsX3B1bml0X3JlYWQoJmlndF9nbG9iYWxfbW1pbywgMHgzNiwgJmRzcF9zc19wbSk7CisJ CWludGVsX3B1bml0X3JlYWQoJmlndF9nbG9iYWxfbW1pbywgMHgxMzksICZkZHJfc2V0dXAyKTsK IAl9IGVsc2UgewogCQlmdzcgPSByZWFkX3JlZygweDcwMDdjKTsKIAl9CiAKLQlpbnRlbF9yZWdp c3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3RfZ2xv YmFsX21taW8pOwogCiAJcHJpbnRmKCIgICAgICAgIEZXMSA9IDB4JTA4eFxuIiwgZncxKTsKIAlw cmludGYoIiAgICAgICAgRlcyID0gMHglMDh4XG4iLCBmdzIpOwpAQCAtODM1LDcgKzgzNiw3IEBA IHN0YXRpYyB2b2lkIGc0eF93bV9kdW1wKHZvaWQpCiAJdWludDMyX3QgbWlfYXJiX3N0YXRlOwog CXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAKLQlpbnRlbF9yZWdpc3Rlcl9h Y2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwgMCwgLTEsICZpZ3RfZ2xvYmFs X21taW8pOwogCiAJZHNwYWNudHIgPSByZWFkX3JlZygweDcwMTgwKTsKIAlkc3BiY250ciA9IHJl YWRfcmVnKDB4NzExODApOwpAQCAtODQ2LDcgKzg0Nyw3IEBAIHN0YXRpYyB2b2lkIGc0eF93bV9k dW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgyMGUwKTsKIAlt aV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0ZXJfYWNjZXNz X2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2dsb2JhbF9tbWlvKTsK IAogCXByaW50ZigiICAgICAgICAgICAgIERTUEFDTlRSID0gMHglMDh4XG4iLCBkc3BhY250cik7 CiAJcHJpbnRmKCIgICAgICAgICAgICAgRFNQQkNOVFIgPSAweCUwOHhcbiIsIGRzcGJjbnRyKTsK QEAgLTkyMSw3ICs5MjIsNyBAQCBzdGF0aWMgdm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAl1aW50 MzJfdCBtaV9hcmJfc3RhdGU7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsK IAotCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAs IC0xKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSwgJmlndF9nbG9iYWxfbW1pbyk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMw KTsKIAlmdzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTkzMCw3ICs5MzEsNyBAQCBzdGF0aWMg dm9pZCBnZW40X3dtX2R1bXAodm9pZCkKIAltaV9kaXNwbGF5X3Bvd2VyX2Rvd24gPSByZWFkX3Jl ZygweDIwZTApOwogCW1pX2FyYl9zdGF0ZSA9IHJlYWRfcmVnKDB4MjBlNCk7CiAKLQlpbnRlbF9y ZWdpc3Rlcl9hY2Nlc3NfZmluaSgpOworCWludGVsX3JlZ2lzdGVyX2FjY2Vzc19maW5pKCZpZ3Rf Z2xvYmFsX21taW8pOwogCiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzEgPSAweCUwOHhc biIsIGZ3MSk7CiAJcHJpbnRmKCIgICAgICAgICAgICAgICAgICBGVzIgPSAweCUwOHhcbiIsIGZ3 Mik7CkBAIC05OTIsNyArOTkzLDcgQEAgc3RhdGljIHZvaWQgcG52X3dtX2R1bXAodm9pZCkKIAl1 aW50MzJfdCBjYnI7CiAJc3RydWN0IGdtY2hfd20gd21zW01BWF9QTEFORV0gPSB7fTsKIAotCWlu dGVsX3JlZ2lzdGVyX2FjY2Vzc19pbml0KGludGVsX2dldF9wY2lfZGV2aWNlKCksIDAsIC0xKTsK KwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSwgJmlndF9nbG9iYWxfbW1pbyk7CiAKIAlkc3BhcmIgPSByZWFkX3JlZygweDcwMDMwKTsKIAlm dzEgPSByZWFkX3JlZygweDcwMDM0KTsKQEAgLTEwMDIsNyArMTAwMyw3IEBAIHN0YXRpYyB2b2lk IHBudl93bV9kdW1wKHZvaWQpCiAJbWlfZGlzcGxheV9wb3dlcl9kb3duID0gcmVhZF9yZWcoMHgy MGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVnaXN0 ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2dsb2Jh bF9tbWlvKTsKIAogCXByaW50ZigiICAgICAgICAgICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBk c3BhcmIpOwogCXByaW50ZigiICAgICAgICAgICAgICAgICAgRlcxID0gMHglMDh4XG4iLCBmdzEp OwpAQCAtMTA4Miw3ICsxMDgzLDcgQEAgc3RhdGljIHZvaWQgZ2VuM193bV9kdW1wKHZvaWQpCiAJ dWludDMyX3QgbWlfYXJiX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0g e307CiAKLQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgp LCAwLCAtMSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZp Y2UoKSwgMCwgLTEsICZpZ3RfZ2xvYmFsX21taW8pOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3 MDAzMCk7CiAJaW5zdHBtID0gcmVhZF9yZWcoMHgyMGMwKTsKQEAgLTEwOTAsNyArMTA5MSw3IEBA IHN0YXRpYyB2b2lkIGdlbjNfd21fZHVtcCh2b2lkKQogCWZ3X2JsY19zZWxmID0gcmVhZF9yZWco MHgyMGUwKTsKIAltaV9hcmJfc3RhdGUgPSByZWFkX3JlZygweDIwZTQpOwogCi0JaW50ZWxfcmVn aXN0ZXJfYWNjZXNzX2ZpbmkoKTsKKwlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfZmluaSgmaWd0X2ds b2JhbF9tbWlvKTsKIAogCXByaW50ZigiICAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIp OwogCXByaW50ZigiICAgICAgRldfQkxDID0gMHglMDE2IiBQUkl4NjQgIlxuIiwgZndfYmxjKTsK QEAgLTExNTEsNyArMTE1Miw3IEBAIHN0YXRpYyB2b2lkIGdlbjJfd21fZHVtcCh2b2lkKQogCXVp bnQzMl90IG1pX3N0YXRlOwogCXN0cnVjdCBnbWNoX3dtIHdtc1tNQVhfUExBTkVdID0ge307CiAK LQlpbnRlbF9yZWdpc3Rlcl9hY2Nlc3NfaW5pdChpbnRlbF9nZXRfcGNpX2RldmljZSgpLCAwLCAt MSk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2luaXQoaW50ZWxfZ2V0X3BjaV9kZXZpY2UoKSwg MCwgLTEsICZpZ3RfZ2xvYmFsX21taW8pOwogCiAJZHNwYXJiID0gcmVhZF9yZWcoMHg3MDAzMCk7 CiAJbWVtX21vZGUgPSByZWFkX3JlZygweDIwY2MpOwpAQCAtMTE1OSw3ICsxMTYwLDcgQEAgc3Rh dGljIHZvaWQgZ2VuMl93bV9kdW1wKHZvaWQpCiAJZndfYmxjX3NlbGYgPSByZWFkX3JlZygweDIw ZTApOwogCW1pX3N0YXRlID0gcmVhZF9yZWcoMHgyMGU0KTsKIAotCWludGVsX3JlZ2lzdGVyX2Fj Y2Vzc19maW5pKCk7CisJaW50ZWxfcmVnaXN0ZXJfYWNjZXNzX2ZpbmkoJmlndF9nbG9iYWxfbW1p byk7CiAKIAlwcmludGYoIiAgICAgRFNQQVJCID0gMHglMDh4XG4iLCBkc3BhcmIpOwogCXByaW50 ZigiICAgTUVNX01PREUgPSAweCUwOHhcbiIsIG1lbV9tb2RlKTsKLS0gCjIuMjAuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5n IGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2