From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v15 12/14] drm/i915/perf: add GLK support Date: Wed, 31 May 2017 13:33:53 +0100 Message-ID: <20170531123355.6363-13-lionel.g.landwerlin@intel.com> References: <20170424071751.2416-1-lionel.g.landwerlin@intel.com> <20170531123355.6363-1-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3DF2E6E251 for ; Wed, 31 May 2017 12:34:14 +0000 (UTC) In-Reply-To: <20170531123355.6363-1-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org QWRkIE9BIHN1cHBvcnQgZm9yIEdlbWluaWxha2UgKHByZXR0eSBtdWNoIGlkZW50aWNhbCB0byBC cm94dG9uKSwgYW5kCmFsc28gYWRkIHRoZSBhc3NvY2lhdGVkIE9BIGNvbmZpZ3VyYXRpb25zLgoK U2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50 ZWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgfCAgICAzICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2dsay5jIHwgMjYwMiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmggfCAg IDQwICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgfCAgIDE3ICstCiA0IGZp bGVzIGNoYW5nZWQsIDI2NTkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2dsay5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsuaAoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFr ZWZpbGUKaW5kZXggMDMzYTJkZjAxZGJlLi5mODIyNzMxOGRjYWYgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCkBAIC0xMzcsNyArMTM3LDggQEAgaTkxNS15ICs9IGk5MTVfcGVyZi5vIFwKIAkgIGk5MTVf b2Ffc2tsZ3Q0Lm8gXAogCSAgaTkxNV9vYV9ieHQubyBcCiAJICBpOTE1X29hX2tibGd0Mi5vIFwK LQkgIGk5MTVfb2Ffa2JsZ3QzLm8KKwkgIGk5MTVfb2Ffa2JsZ3QzLm8gXAorCSAgaTkxNV9vYV9n bGsubwogCiBpZmVxICgkKENPTkZJR19EUk1fSTkxNV9HVlQpLHkpCiBpOTE1LXkgKz0gaW50ZWxf Z3Z0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2dsay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMmYzNTZkNTFiZmY4Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsuYwpAQCAtMCwwICsxLDI2MDIgQEAKKy8qCisgKiBB dXRvZ2VuZXJhdGVkIGZpbGUgYnkgR1BVIFRvcCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaWIvZ3B1 dG9wCisgKiBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAy MDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFu ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0 byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5v dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgor ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhF IFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKworI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9vYV9nbGsuaCIKKworZW51bSBtZXRyaWNf c2V0X2lkIHsKKwlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCisJTUVUUklDX1NFVF9J RF9DT01QVVRFX0JBU0lDLAorCU1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSwKKwlN RVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUywKKwlNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVMs CisJTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVELAorCU1FVFJJQ19TRVRfSURfQ09NUFVU RV9MM19DQUNIRSwKKwlNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YsCisJTUVUUklDX1NFVF9JRF9M M18xLAorCU1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCwKKwlNRVRS SUNfU0VUX0lEX1NBTVBMRVIsCisJTUVUUklDX1NFVF9JRF9URExfMSwKKwlNRVRSSUNfU0VUX0lE X1RETF8yLAorCU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSwKKwlNRVRSSUNfU0VUX0lEX1RF U1RfT0EsCit9OworCitpbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfZ2xrID0gMTU7 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5k ZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAw MDAwMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s CisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAw MDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0 NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBf TU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweDk4ODgp LCAweDE2NmMwMGYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMTIwMjgwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEyMzIwMjgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOTMwMzE3IH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE1OTMwM2RmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNm OTAwYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMGEwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMmQxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA4MmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMmQxMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmUwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBlMmU1OTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGM4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBjNGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNGM0MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGU4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGUyMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFjNGYwMDEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNmMwMDUzIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEwNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFhMGZjYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFj MGYwMDAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMmMwMDQwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMTAxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTAxMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAwMTE0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MTE0MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTIwMDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA4MTIwMDIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTQxMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA4MTQxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMzA4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA0MzAyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzE4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MzE4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA2MzIwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MzIwODQwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwMzIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzQ0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA4MzQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBk OTMxODMxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOTM5ZjNmIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAxOTM5ZTgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOTMwM2JjIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA1OTMwMDBlIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTMwMDJh IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3OTMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA5OTMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTc3IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDFmOTAwMTg3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEzOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIxOTA0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIzOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDI1OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDJiOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJkOTA0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMx OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1OTA0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE3OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTA0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMTEw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIzIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDU1OTAwMTExIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwYzAyIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDU3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDIwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDU5OTAxMTExIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAw NDIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAxIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQ1OTAwODIxIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfcmVuZGVyX2Jh c2ljX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAg IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkgICAgaW50ICpsZW5zKQorewor CWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJf YmFzaWM7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwor CW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0geworCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8o MHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAor CXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7CisJeyBfTU1J TygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDAwMDAzIH0s CisJeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAw Nzc4MDA4IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDg4MDc4IH0sCisJeyBfTU1JTygweGU1 NWMpLCAweDAwODA4NzA4IH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwYTA4OTA4IH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9iYXNp Y1tdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRmMDBlMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjRmMWMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzOTkwMDM0MCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgzZjkwMGMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJkNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NjJkNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJkNDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTJkMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkNTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZTJkNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJlMTQw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlNTEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMDJlMDExNCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRjYzAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYTRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwZTRjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRj ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjRjMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlYTAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YzRlYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDRmNmI0MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNjIwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwODRmNDEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRmMDA2 MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRmNmM0YyB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZTRmNGIwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRmMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYzRmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmNTAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxYTBmODgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzBm MDhhMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxYzJjMTQ1MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJjMDAwMSB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxYTJjMDAxMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTkzODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx OTkzOGEyOCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTkwMDE3NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwMDE3OCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxZDkwMDEyNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDEy MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMzkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyNTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkw NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxNTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMTAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDExMSB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1 NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHg0NTkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2Nv bmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9 IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9iYXNpYzsK KwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWMpOworCW4rKzsK KworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0geworCXsgX01NSU8oMHgyNzI0KSwg MHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3 ZmZlYSB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwN2ZmYyB9LAorCXsgX01NSU8oMHgyNzc4 KSwgMHgwMDA3YWZmYSB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjVmZCB9LAorCXsgX01N SU8oMHgyNzgwKSwgMHgwMDA3OWZmYSB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZjNmYiB9 LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3YmY3YSB9LAorCXsgX01NSU8oMHgyNzhjKSwgMHgw MDAwZjdlNyB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmVmYSB9LAorCXsgX01NSU8oMHgy Nzk0KSwgMHgwMDAwZjdjZiB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3N2ZmYSB9LAorCXsg X01NSU8oMHgyNzljKSwgMHgwMDAwZWZkZiB9LAorCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA2ZmZm YSB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwY2ZiZiB9LAorCXsgX01NSU8oMHgyN2E4KSwg MHgwMDAzZmZmYSB9LAorCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwNWY3ZiB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9w cm9maWxlW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygw eGU1NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDI1MDI0IH0sCisJ eyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDQ1 MDQ0IH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCisJeyBfTU1JTygweGU2NWMp LCAweDAwMDY1MDY0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgw YzJlMDAxZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJmMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDE4NjgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMDAxOSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxNTgxMDAxMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgyMDAy MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxNzg0MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg2MDAwNyB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyMTg2MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzg3MDNlMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJk NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjJlNTQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJlMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwZTJlMDA4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJmMDA0MCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NjE0MzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3NDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjE4MDAxMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE4MDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZDgwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgwNDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwOTgxMDIwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgxMDAzMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMzgxMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgxOTE0MCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgyMzgxOTA1MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNTgx MDAxOCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgyMDk4MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMzgyMGQ4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgyMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMTgyYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgyODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgyNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ZjgyODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzMDAwNCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTgzMDAwYyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzMTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMTg0ODA3MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg0MDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwOTg0NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0ODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNzg2MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg2MDA5MiB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwZjg2MDQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg2 OTEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg3MDA2NSB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTg3MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDgwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjk1MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx ZDk1NTA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjk1MTQ1NSB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwOTkyYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkyODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMTkyYTgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyMDI4 YSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkyYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZDkyMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyMTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkw ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgyYjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwNDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyZjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx NzkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwNDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMGMwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHg1NTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDg2MyB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0Yjkw MDA2MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMGMyMiB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3JlbmRlcl9w aXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCQkgICBpbnQgKmxl bnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmln X3JlbmRlcl9waXBlX3Byb2ZpbGU7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19y ZW5kZXJfcGlwZV9wcm9maWxlKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkc1tdID0g eworCXsgX01NSU8oMHgyNzJjKSwgMHhmZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzI4KSwgMHhm ZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9LAorCXsg X01NSU8oMHgyNzE4KSwgMHhmZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAw MCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzRjKSwg MHg4NjU0MzIxMCB9LAorCXsgX01NSU8oMHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAorCXsgX01NSU8o MHgyNzQ0KSwgMHgwMDAwNjY2NyB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzVjKSwgMHg4NjU0MzIxMCB9LAorCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0 MzIxMCB9LAorCXsgX01NSU8oMHgyNzU0KSwgMHgwMDAwNjQ2NSB9LAorCXsgX01NSU8oMHgyNzUw KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAorCXsgX01N SU8oMHgyNzc0KSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9 LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzgwKSwgMHgw MDA3Zjg3MiB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgy Nzg4KSwgMHgwMDA3ZjhiYSB9LAorCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAorCXsg X01NSU8oMHgyNzkwKSwgMHgwMDA3Zjg3YSB9LAorCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUw MCB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZjhlYSB9LAorCXsgX01NSU8oMHgyNzljKSwg MHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAorCXsgX01NSU8o MHgyN2E0KSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAor CXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmUwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKKwl7IF9NTUlP KDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwK Kwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAw MzUwMzQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKKwl7IF9NTUlPKDB4ZTU1 YyksIDB4MDAwNTUwNTQgfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNb XSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MDAzNDMgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4Mzk5MDAzNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDEwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDE5MDAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MDMxODAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MDM1ZTIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4 MDAwNmEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MjE4MWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM4MTAwMGEgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWQ5NTA1NTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MjgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MmEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGY5MjIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNzAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MjE5MDAxNzEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDAxNzIgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxNzMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAx NzQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNzUgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MmI5MDAxNzYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNzcgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MmY5MDAxN2YgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMjUgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5 MDAxMjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDM5MDEwODQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDc5MDEwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDk5MDEwODQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDEwODQgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NGQ5MDAwMDQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwK K307CisKK3N0YXRpYyBpbnQKK2dldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn ICoqcmVncywKKwkJCSAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsK KworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9yeV9yZWFkczsKKwlsZW5zW25dID0gQVJSQVlf U0laRShtdXhfY29uZmlnX21lbW9yeV9yZWFkcyk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlf d3JpdGVzW10gPSB7CisJeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygw eDI3MjgpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCisJ eyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MWMpLCAweGZmZmZm ZmZmIH0sCisJeyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3MTQp LCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3NGMpLCAweDg2NTQzMjEwIH0sCisJeyBfTU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0s CisJeyBfTU1JTygweDI3NDQpLCAweDAwMDA2NjY3IH0sCisJeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCisJeyBfTU1JTygweDI3NWMpLCAweDg2NTQzMjEwIH0sCisJeyBfTU1JTygweDI3 NTgpLCAweDg2NTQzMjEwIH0sCisJeyBfTU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCisJeyBf TU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFh IH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3NzgpLCAw eDAwMDdmODJhIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygw eDI3ODApLCAweDAwMDdmODIyIH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCisJ eyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBm ZTAwIH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCisJeyBfTU1JTygweDI3OTQp LCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCisJeyBfTU1J TygweDI3OWMpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0s CisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3YTgpLCAweDAw MDdmOGYyIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZTAwIH0sCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9 IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKKwl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAwMzUwMzQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKKwl7 IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUw NjQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19t ZW1vcnlfd3JpdGVzW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE5ODAwMzQzIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDM5OTAwMzQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAzODAzMTgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1ODAzNWUyIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA3ODAwMDZhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExODAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDIxODFhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIzODEw MDBhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTUwNTUwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBiOTI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBkOTJhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBmOTIyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEzOTAwMTgwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDIxOTAwMTgxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIz OTAwMTgyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI1OTAwMTgzIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDI3OTAwMTg0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI5OTAwMTg1IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDJiOTAwMTg2IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJkOTAwMTg3 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJmOTAwMTcwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDMxOTAwMTI1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1OTAwMTIzIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE3OTAwMTIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFmOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQzOTAxMDg0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAxMDgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3 OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAxMDg0IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAxMDg0IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDA0IH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDQ1OTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29u ZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCSAgICAgaW50ICpsZW5zKQoreworCWludCBuID0g MDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwor CWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3dyaXRlcyk7CisJbisrOwor CisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3Vu dGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7CisJeyBfTU1JTygweDI3MjQpLCAweGYw ODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3 MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBf TU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDdmYzJh IH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBiZjAwIH0sCisJeyBfTU1JTygweDI3NzgpLCAw eDAwMDdmYzZhIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBiZjAwIH0sCisJeyBfTU1JTygw eDI3ODApLCAweDAwMDdmYzkyIH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDBiZjAwIH0sCisJ eyBfTU1JTygweDI3ODgpLCAweDAwMDdmY2EyIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBi ZjAwIH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMDdmYzMyIH0sCisJeyBfTU1JTygweDI3OTQp LCAweDAwMDBiZjAwIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMDdmYzlhIH0sCisJeyBfTU1J TygweDI3OWMpLCAweDAwMDBiZjAwIH0sCisJeyBfTU1JTygweDI3YTApLCAweDAwMDdmZTZhIH0s CisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBiZjAwIH0sCisJeyBfTU1JTygweDI3YTgpLCAweDAw MDdmZTdhIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDBiZjAwIH0sCit9OworCitzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRb XSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCks IDB4MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKKwl7IF9NTUlP KDB4ZTc1OCksIDB4MDA3NzgwMDggfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwK Kwl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDBh MDg5MDggfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z19jb21wdXRlX2V4dGVuZGVkW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE0MWMwMTYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2 MWMwMDE1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MWMwMTIwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA4MmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMmQ1MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBlMmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmQ1MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA0MmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmU1NDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBlMmU1NTE1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMmUw MTU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NGNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBhNGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNGNjMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBlNGNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNGM4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDEyNGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0 NGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2NGMyMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA2NGNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGNjMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAwNGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBhNGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNGVhMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBlNGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNGVhMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA0NGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNGY0 YjQxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGY0MjAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAyNGY0MDRjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNGYwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFhNGYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMWI0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2MWI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 MWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMWJjMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBjMWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MWJjMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAwMWMwMDMxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MWMxOTAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MWMxYTMzIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBhMWMxYjM1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMWMzMzM3IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA0MWMzMWM3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MGY1MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDFhMGZhOGFhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMGYw YWFhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFjMmM2YWFhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFlMmMwMDAxIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFhMmMyOTUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxOTM4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBmOTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5 OTNhYWFhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA1OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3OTM4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA5OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEzOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDIxOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIzOTA0MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDI1OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDI5OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJiOTA0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJkOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDJmOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDE1OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE5OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFi OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTA0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDQ5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDRiOTAwNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRkOTAw MDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAxIH0sCit9OworCitzdGF0aWMgaW50 CitnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJCWlu dCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9j b25maWdfY29tcHV0ZV9leHRlbmRlZDsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmln X2NvbXB1dGVfZXh0ZW5kZWQpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZVtd ID0geworCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwg MHgzMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHgyNzI0KSwgMHgzMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmZmYSB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAw ZmVmZSB9LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZmZmYSB9LAorCXsgX01NSU8oMHgyNzdj KSwgMHgwMDAwZmVmZCB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmZmYSB9LAorCXsgX01N SU8oMHgyNzk0KSwgMHgwMDAwZmJlZiB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZmZmYSB9 LAorCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmJkZiB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlW10gPSB7CisJ eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDAw MDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCisJeyBfTU1JTygweGU3NTgp LCAweDAwMTAxMTAwIH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMjAxMjAwIH0sCisJeyBfTU1J TygweGU1NWMpLCAweDAwMzAxMzAwIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwNDAxNDAwIH0s Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0 ZV9sM19jYWNoZVtdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDNiMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxNTkzMDAxZSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMGMwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJkMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkNDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwODJkNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJkNTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYzJlMDQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMTUw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJlMDE0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwNDRjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYzRjYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDRjODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxNjRjMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRl MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwODRlYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxYTRmNDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRmNTAwNSB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDA1MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NjZjNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODZjNWM1ZCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTZjNWU1ZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxNDZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxODBmMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTBmYTgwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYzBmMGEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxYzJjNDAxNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJj MDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzMTk4MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNTkzMDAzMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMTkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkzODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzYTAwYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NzkzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkzMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxZDkwMDE3NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE3OCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwNDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgyMzkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgyZjkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkw NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDExMSB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0NzkwMDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDQw MCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnICoqcmVncywKKwkJCQlpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAx KTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7CisJbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKKwluKys7CisKKwlyZXR1 cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29u ZmlnX2hkY19hbmRfc2ZbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4MTA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCks IDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlP KDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYgfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfaGRj X2FuZF9zZltdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8o MHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAor CXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1 MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAorCXsgX01NSU8oMHhlNjVj KSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBt dXhfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAyMzIg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI0ZjQ2NDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTE4MzQ0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZDQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDQyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDEwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGUyZTAwNTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0Yzgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGE0YzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQ0ZWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjYxMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0 ZjQxNmIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZjAwNGIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWE0ZjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAyYTggfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWEyYzU1MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MDgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjU4MTAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGY4MzA1YzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDk5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5NTEw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MjAyMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MzE5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NGQ5MDAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MzM5MDAwMDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9oZGNfYW5kX3NmX211eF9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgKipyZWdzLAorCQkJICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJ QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykg PCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2hkY19hbmRfc2Y7CisJbGVuc1tuXSA9IEFS UkFZX1NJWkUobXV4X2NvbmZpZ19oZGNfYW5kX3NmKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzFb XSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0NCks IDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAx MDAwNzAgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZmZjEgfSwKKwl7IF9NTUlPKDB4Mjc3 OCksIDB4MDAwMTQwMDIgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGMzZmYgfSwKKwl7IF9N TUlPKDB4Mjc4MCksIDB4MDAwMTAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGM3ZmYg fSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDQwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4 MDAwMGQzZmYgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAxMDA3MDAgfSwKKwl7IF9NTUlPKDB4 Mjc5NCksIDB4MDAwMGZmMWYgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDE0MDIgfSwKKwl7 IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZjM2YgfSwKKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAwMDEw MDIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZjN2YgfSwKKwl7IF9NTUlPKDB4MjdhOCks IDB4MDAwMDA0MDIgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZkM2YgfSwKK307CisKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfMVtdID0gewor CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01N SU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzFb XSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI2NDM0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTI2NTM0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzY4MDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTI2YzAwMWUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzAwMTAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUy ZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDYyZDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZTAxNTQg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyZTAwNTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA0YzgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTI0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ0YzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0Yzgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDg0Y2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGM0ZWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZWEwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI0 ZWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDY0ZTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZjU1MDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWE0ZjE1NTQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2NDAwMjQg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2NDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDQ2NDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2NTAwMjQgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTA2NTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2NTAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGM2YzUzMjcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzU0 MjUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzJhMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDI2YzI4NWIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzAwNWMgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzA5MDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWMwZjBhYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgw ZjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAyYWEgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWMyYzU0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWUyYzAwMDEgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWEyYzU1NTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5M2FhMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDU5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDk5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MmY5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5 MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWY5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NGI5MDA0MjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NGQ5MDAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDM5MDA0MjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMjEgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAw MDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9sM18xX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoq cmVncywKKwkJICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJ cmVnc1tuXSA9IG11eF9jb25maWdfbDNfMTsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29u ZmlnX2wzXzEpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZFtdID0geworCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0 KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzE0KSwgMHgzMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9 LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgw MDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZWZmZiB9LAorCXsgX01NSU8oMHgy Nzc4KSwgMHgwMDAwNjAwMCB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjNmZiB9LAorfTsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yYXN0ZXJp emVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0 IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAw eDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygw eGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJ eyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0g eworCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJkNzgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx MjJkNzllMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJmMDAwNCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDBlMzgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmMDAwNSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJkMDk0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkODAy ZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNDAxMyB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwNjJkMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMDA1MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMjJmMDAxMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwODRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRj NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjRlMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBlMDQ4MCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDBlMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBmMDAyNyB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx YTBmMDA0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwOTkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxNTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxOTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkw NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMTRhMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMDBhNCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJ CSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJCQkgICAgaW50ICpsZW5z KQoreworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7CisJbisrOworCisJcmV0dXJuIG47 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19z YW1wbGVyW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3MTQpLCAweDcwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzAp LCAweDAwMDBjMDAwIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBlN2ZmIH0sCisJeyBfTU1J TygweDI3NzgpLCAweDAwMDAzMDAwIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmOWZmIH0s CisJeyBfTU1JTygweDI3ODApLCAweDAwMDAwYzAwIH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAw MDBmZTdmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVf Y29uZmlnX3NhbXBsZXJbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7 IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIw MTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1Yyks IDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9NTUlP KDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDEyMTMw MGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0MTYwMGFiIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDEyMzMwMGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0MzYwMGFiIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEyNTMwMGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0NTYwMGFiIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBjMmQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBl MmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmQ0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAyMmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmQ1MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA2MmQxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMmUwMWEw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmU1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBlMmUwMDY1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2NGMyMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA0NGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NGNjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA4NGM0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGM0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAwNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNGVhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA0NGUyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NGUyMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFjMGYwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4 MGY0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMGYwMjNmIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDFlMmMwMDAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMmNjMDMwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MTMyMTgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMTMwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMTQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBlMTQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTQ4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDFlMTUwMTQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMTUwMDQwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBjMTYzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMTYw MDY4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE4MTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMTY0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA0MzMwMDQzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMzMwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAyMzRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0 MzQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMzUwMDE1IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAyMzYzNDYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMzYwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MzYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzYwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MzY0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2NTMwMDQzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNTMwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBlNTQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNTQ4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA2NTQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFlNTUw NDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhNTUyMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFjNTUwMTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNTYzMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwNTYzNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNTYwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE4NTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAy NTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNTY0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE5OTNhODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA1OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3OTM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBiOTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBkOTM4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDJkOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1OTA0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE5OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFkOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRi OTAxNGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAxIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODIw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAxMDIyIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDU1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCit9OworCitzdGF0 aWMgaW50CitnZXRfc2FtcGxlcl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAg ICAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0g PSBtdXhfY29uZmlnX3NhbXBsZXI7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19z YW1wbGVyKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8xW10gPSB7CisJeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0s CisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDMw ODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3 NzQpLCAweDAwMDA3ZmZmIH0sCisJeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAwIH0sCisJeyBf TU1JTygweDI3N2MpLCAweDAwMDA5ZmZmIH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAy IH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDBlZmZmIH0sCisJeyBfTU1JTygweDI3ODgpLCAw eDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmM2ZmIH0sCisJeyBfTU1JTygw eDI3OTApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZGZmIH0sCisJ eyBfTU1JTygweDI3OTgpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBm ZTdmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX3RkbF8xW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s CisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfdGRsXzFbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTQzYTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1 YTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGUyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIyZDUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTAyZTAxNTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUyZTAwNmEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI0YzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTQ0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDY0YzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZWEwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI0 ZTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWMwZjBiYzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgwZjQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWEwZjAzMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWUyYzAwMDMg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWEyYzAwZjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIxYTMwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYTMxZTUgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDIxNDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNGEwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWMxNTAwNTQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNjgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxNjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGExNjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzYTMyODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGUzYTAwNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzYTAwNjEgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDIzYTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMz NDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzNDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDYzNDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWUzNTAxNDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWMzNTAxMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgzNjAwMjgg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzNjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGU1YTMwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YTMyODAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDI1YTAwNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NDgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDA1NDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1NDIw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWU1NTA0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWE1NTIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM1NTAwMDEgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTg1NjAwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1NjgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1NjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5 M2E4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDU5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MzgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MmQ5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MzE5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWQ5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDA0MjAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDU5MDEwODQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDEgfSwKK307CisKK3N0YXRpYyBpbnQKK2dl dF90ZGxfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgIGludCAqbGVucykK K3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfdGRs XzE7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMSk7CisJbisrOworCisJ cmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ190ZGxfMltdID0geworCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsg X01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAw MCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZGxfMltdID0gewor CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01N SU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3RkbF8y W10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE0MWEwMjZiIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE0M2EwMTczIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0NWEwMjZiIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwMmQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmQ1MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA0MmQ1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 MmQxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmU1MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBlMmUwMDY5IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NGM4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA2NGNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGM0MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAyNGVhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NGUyMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE4MGY2MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMGYwMzBhIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDFhMmMwM2MwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MWEz N2U3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMWEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA0MTRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMTUwMDUwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA4MTY4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMTY4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwM2EzMzgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 M2EwMDZmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyM2EwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMzQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzQyMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFhMzUyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMzUwMTAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMzY4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBjMzY4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNWEzN2U3IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAyNTRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNTUwMDA1IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA0NTY4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NTY4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA1OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3OTM4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA5OTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBkOTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE1 OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE5OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFkOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDIwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDQ1OTAxMDgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAw MDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfdGRsXzJfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn ICoqcmVncywKKwkJICAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsK KworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3RkbF8yOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11 eF9jb25maWdfdGRsXzIpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRyYVtdID0gewor CXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgw MDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0 KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7CisJeyBfTU1JTygweGU0 NTgpLCAweDAwMDAxMDAwIH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDAzMDAyIH0sCisJeyBf TU1JTygweGU2NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDExMDEw IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDUwMDEyIH0sCisJeyBfTU1JTygweGU1NWMpLCAw eDAwMDUyMDUxIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwMDAwMDA4IH0sCit9OworCitzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9leHRyYVtdID0g eworCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhMDAxZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx NDNhMDAxZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDVhMDAxZiB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDJkNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZTJlMDA5NCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYzAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxYTBmMDBlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTJjMGMwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNjFhMDA2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFhMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNjE0MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzE1 MDEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzE2ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDNhMzE4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjNhMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNDM0ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzM1MDA0MCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM2ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NDVhMDA2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjVhMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDU0MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzU1MDAxMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwODU2ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkzODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZDkzODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxZDkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDQwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzkwMDAwNCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorfTsKKwor c3RhdGljIGludAorZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJl Z3MsCisJCQkgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJ cmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9leHRyYTsKKwlsZW5zW25dID0gQVJSQVlfU0la RShtdXhfY29uZmlnX2NvbXB1dGVfZXh0cmEpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitz dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGVzdF9vYVtd ID0geworCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwg MHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8o MHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAor CXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAw MDAwNCB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzc4 KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzgwKSwgMHgwMDAwMDAwNyB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9 LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHgyNzhjKSwgMHgw MDAwZmZmNyB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHgy Nzk0KSwgMHgwMDAwZmZjZiB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDEwMDA4MiB9LAorCXsg X01NSU8oMHgyNzljKSwgMHgwMDAwZmZlZiB9LAorCXsgX01NSU8oMHgyN2EwKSwgMHgwMDEwMDBj MiB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmZlNyB9LAorCXsgX01NSU8oMHgyN2E4KSwg MHgwMDEwMDAwMSB9LAorCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmZlNyB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7 Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9v YVtdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzgwMDA2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyMzgxMDAwOCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDQwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkyMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx ZjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1NTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3Rlc3Rf b2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgICAgaW50ICpsZW5zKQor eworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0 X29hOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7CisJbisrOwor CisJcmV0dXJuIG47Cit9CisKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2dsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxM OworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7CisJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0gMDsKKworCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKKwlj YXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID0KKwkJCWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJ CQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZp ZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAq IHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlO VkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9j b3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2lj KTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdf cmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFS UkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKworCQlyZXR1cm4gMDsKKwlj YXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQzoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9CisJCQlnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAor CQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBj b25maWcgZm9yIFwiQ09NUFVURV9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5W QUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBh bmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAor CQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJu IC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJ CQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0 ZV9iYXNpYyk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVf Y29uZmlnX2NvbXB1dGVfYmFzaWM7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKKworCQlyZXR1 cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRToKKwkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9t dXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz LAorCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9QSVBFX1BST0ZJTEVcIiBtZXRy aWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVx dWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9w cm9maWxlOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJS QVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOworCisJCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9w cm9maWxlOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZSk7CisKKwkJcmV0dXJuIDA7CisJ Y2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUzoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9CisJCQlnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsCisJ CQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkgICAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25m aWcgZm9yIFwiTUVNT1JZX1JFQURTXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBi ZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBz byBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkg KiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJ TlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJf Y291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFk cyk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmln X21lbW9yeV9yZWFkczsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkcyk7CisKKwkJcmV0dXJuIDA7CisJ Y2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVM6CisJCWRldl9wcml2LT5wZXJmLm9hLm5f bXV4X2NvbmZpZ3MgPQorCQkJZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwK KwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkgICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlO VkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICog YW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQK KwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVy biAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQor CQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzOworCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9y eV93cml0ZXMpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1 X2NvbmZpZ19tZW1vcnlfd3JpdGVzOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlcyk7CisKKwkJcmV0 dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQ6CisJCWRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2Nv bmZpZyhkZXZfcHJpdiwKKwkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJ CQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFi bGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0VYVEVOREVEXCIgbWV0cmljIHNldFxuIik7CisK KwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRo aXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vy c3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICov CisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKKwkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3MgPQorCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKKwkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1 dGVfZXh0ZW5kZWQpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRF X0wzX0NBQ0hFOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdldF9j b21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkJZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCisJCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7 CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9MM19DQUNI RVwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5 c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBi ZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUg YmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1 dGVfbDNfY2FjaGU7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJ CQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZSk7CisKKwkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNf Y2FjaGU7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0la RShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKKworCQlyZXR1cm4gMDsKKwljYXNl IE1FVFJJQ19TRVRfSURfSERDX0FORF9TRjoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9CisJCQlnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERD X0FORF9TRlwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lz dGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3Qg aGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwor CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmln X2hkY19hbmRfc2Y7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJ CQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZik7CisKKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2Y7CisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2Nv bmZpZ19oZGNfYW5kX3NmKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfTDNf MToKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfbDNfMV9tdXhf Y29uZmlnKGRldl9wcml2LAorCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJ CQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8g c3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18xXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8q IEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJ CSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2Ug YW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQly ZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz ID0KKwkJCWJfY291bnRlcl9jb25maWdfbDNfMTsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18xKTsKKwor CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfbDNfMTsK KwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX2wzXzEpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9SQVNU RVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25m aWdzID0KKwkJCWdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2 X3ByaXYsCisJCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCQkJ ICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0 YWJsZSBNVVggY29uZmlnIGZvciBcIlJBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkRcIiBtZXRy aWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVx dWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmQpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2Nv bmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOworCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZCk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1NB TVBMRVI6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3NhbXBs ZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzLAorCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJ CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FNUExFUlwiIG1ldHJpYyBz ZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3NhbXBsZXI7CisJCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfc2FtcGxlcik7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJ CWZsZXhfZXVfY29uZmlnX3NhbXBsZXI7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19zYW1wbGVyKTsKKworCQlyZXR1cm4g MDsKKwljYXNlIE1FVFJJQ19TRVRfSURfVERMXzE6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPQorCQkJZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCSAgICAg ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi VERMXzFcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rl cl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhh dmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBo YXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ190 ZGxfMTsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZ X1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZGxfMSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3RkbF8xOworCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzEpOworCisJ CXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9URExfMjoKKwkJZGV2X3ByaXYtPnBlcmYu b2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJ CQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJICAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZp ZyBmb3IgXCJURExfMlwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAq X3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291 bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hv dWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJ CX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJf Y29uZmlnX3RkbF8yOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQor CQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8yKTsKKworCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfdGRsXzI7CisJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZGxf Mik7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkE6CisJ CWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2NvbXB1dGVfZXh0cmFf bXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MsCisJCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAo ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJ VkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhUUkFcIiBtZXRyaWMg c2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhOwor CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmEpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhOworCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29t cHV0ZV9leHRyYSk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1RFU1RfT0E6 CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3Rlc3Rfb2FfbXV4 X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz LAorCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklW RVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVEVTVF9PQVwiIG1ldHJpYyBzZXRcbiIp OworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tl ZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJ CSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7CisJCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfdGVzdF9vYSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhf ZXVfY29uZmlnX3Rlc3Rfb2E7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQor CQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKKworCQlyZXR1cm4gMDsKKwlk ZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9Cit9CisKK3N0YXRpYyBzc2l6ZV90CitzaG93 X3JlbmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZCwKKwku c3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRl cl9iYXNpY1tdID0geworCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKKwlOVUxMLAor fTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0g eworCS5uYW1lID0gImQ3MmRmNWM3LTViNGEtNDI3NC1hNDNmLTAwYjBmZDUxZmM2OCIsCisJLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X2Nv bXB1dGVfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9DT01QVVRFX0JBU0lDKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2NvbXB1dGVfYmFzaWNfaWQsCisJ LnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21w dXRlX2Jhc2ljW10gPSB7CisJJmRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQuYXR0ciwKKwlOVUxM LAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9iYXNp YyA9IHsKKwkubmFtZSA9ICI4MTQyODVmNi0zNTRkLTQxZDItYmE0OS1lMjRlNjIyNzE0YTAiLAor CS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2Jhc2ljLAorfTsKKworc3RhdGljIHNzaXplX3QKK3No b3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiVkXG4iLCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUpOworfQorCitzdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCA9 IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNo b3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKKwkmZGV2 X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0geworCS5u YW1lID0gIjA3ZDM5N2E2LWIzZTYtNDlmNi05NDMzLWE0ZjI5M2Q1NTk3OCIsCisJLmF0dHJzID0g IGF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGUsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19t ZW1vcnlfcmVhZHNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9NRU1PUllfUkVBRFMpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19tZW1vcnlfcmVhZHNfaWQsCisJLnN0 b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlf cmVhZHNbXSA9IHsKKwkmZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV9yZWFkcyA9IHsK KwkubmFtZSA9ICIxYTM1Njk0Ni01NDI4LTQ1MGItYTJmMC04OWY4NzgzYTMwMmQiLAorCS5hdHRy cyA9ICBhdHRyc19tZW1vcnlfcmVhZHMsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19tZW1v cnlfd3JpdGVzX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfTUVNT1JZX1dSSVRFUyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19tZW1vcnlfd3JpdGVzX2lkLAorCS5z dG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5 X3dyaXRlc1tdID0geworCSZkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkLmF0dHIsCisJTlVMTCwK K307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV93cml0ZXMg PSB7CisJLm5hbWUgPSAiNTI5OWJlOWQtN2E2MS00Yzk5LTlmODEtZjg3ZTZjNWFhY2E5IiwKKwku YXR0cnMgPSAgYXR0cnNfbWVtb3J5X3dyaXRlcywKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93 X2NvbXB1dGVfZXh0ZW5kZWRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKK30KKworc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQgPSB7CisJLmF0dHIg PSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2NvbXB1dGVf ZXh0ZW5kZWRfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7CisJJmRldl9hdHRyX2NvbXB1dGVfZXh0 ZW5kZWRfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKKwkubmFtZSA9ICJiYzliY2ZmMi00NTlhLTRj YmMtOTg2ZC1hODRiMDc3MTUzZjMiLAorCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4dGVuZGVk LAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfY29tcHV0ZV9sM19jYWNoZV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQor eworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNf Q0FDSEUpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29t cHV0ZV9sM19jYWNoZV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0 NDQgfSwKKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9sM19jYWNoZV9pZCwKKwkuc3RvcmUgPSBOVUxM LAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfbDNfY2FjaGVb XSA9IHsKKwkmZGV2X2F0dHJfY29tcHV0ZV9sM19jYWNoZV9pZC5hdHRyLAorCU5VTEwsCit9Owor CitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2wzX2NhY2hlID0g eworCS5uYW1lID0gIjg4ZWM5MzFmLTViNGEtNDUzYS05ZGI2LWE2MTIzMmI2MTQzZCIsCisJLmF0 dHJzID0gIGF0dHJzX2NvbXB1dGVfbDNfY2FjaGUsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hv d19oZGNfYW5kX3NmX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfSERDX0FORF9TRik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9oZGNfYW5kX3NmX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19oZGNfYW5kX3NmX2lkLAorCS5zdG9yZSA9 IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2FuZF9zZltd ID0geworCSZkZXZfYXR0cl9oZGNfYW5kX3NmX2lkLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2hkY19hbmRfc2YgPSB7CisJLm5hbWUgPSAi NTMwZDE3NmQtMmExOC00MDE0LWFkZjgtMTUwMGM2YzYwODM1IiwKKwkuYXR0cnMgPSAgYXR0cnNf aGRjX2FuZF9zZiwKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X2wzXzFfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18xKTsKK30KKwor c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7CisJLmF0 dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2wzXzFf aWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRy c19sM18xW10gPSB7CisJJmRldl9hdHRyX2wzXzFfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMSA9IHsKKwkubmFtZSA9ICJmZGVl NWE1YS1mMjNjLTQzZDEtYWE3My1mNjI1N2M3MTY3MWQiLAorCS5hdHRycyA9ICBhdHRyc19sM18x LAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQpOworfQorCitzdGF0aWMgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZCA9IHsK KwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3df cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKwor c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmRbXSA9IHsKKwkmZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZC5hdHRy LAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yYXN0 ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kID0geworCS5uYW1lID0gIjY2MTc2MjNlLWNhNzMtNDc5 MS1iMmI3LWRkZWRkMDg0NmEwYyIsCisJLmF0dHJzID0gIGF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3Bp eGVsX2JhY2tlbmQsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19zYW1wbGVyX2lkKHN0cnVj dCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYp Cit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfU0FNUExFUik7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9zYW1wbGVyX2lk ID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0g c2hvd19zYW1wbGVyX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cnNfc2FtcGxlcltdID0geworCSZkZXZfYXR0cl9zYW1wbGVyX2lkLmF0dHIs CisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3NhbXBs ZXIgPSB7CisJLm5hbWUgPSAiZjNiMmVhNjMtZTgyZS00MjM0LWI0MTgtNDRkZDIwZGQzNGQwIiwK KwkuYXR0cnMgPSAgYXR0cnNfc2FtcGxlciwKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X3Rk bF8xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRf SURfVERMXzEpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJf dGRsXzFfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJ LnNob3cgPSBzaG93X3RkbF8xX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzFbXSA9IHsKKwkmZGV2X2F0dHJfdGRsXzFfaWQuYXR0 ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRs XzEgPSB7CisJLm5hbWUgPSAiMTQ0MTFkMzUtY2JmNi00ZjVlLWI2OGItMTkwZmFmOWExYTgzIiwK KwkuYXR0cnMgPSAgYXR0cnNfdGRsXzEsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd190ZGxf Ml9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X1RETF8yKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Rk bF8yX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5z aG93ID0gc2hvd190ZGxfMl9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJzX3RkbF8yW10gPSB7CisJJmRldl9hdHRyX3RkbF8yX2lkLmF0dHIs CisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8y ID0geworCS5uYW1lID0gImZmYTNmMjYzLTA0NzgtNDcyNC04YzlmLWM5MTFjNWVjMGYxZCIsCisJ LmF0dHJzID0gIGF0dHJzX3RkbF8yLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfY29tcHV0 ZV9leHRyYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNf U0VUX0lEX0NPTVBVVEVfRVhUUkEpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRyYV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQi LCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9leHRyYV9pZCwKKwkuc3Rv cmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVf ZXh0cmFbXSA9IHsKKwkmZGV2X2F0dHJfY29tcHV0ZV9leHRyYV9pZC5hdHRyLAorCU5VTEwsCit9 OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2V4dHJhID0g eworCS5uYW1lID0gIjE1Mjc0YzgyLTI3ZDItNDgxOS04NzZhLTdjYjFhMmM1OWJhNCIsCisJLmF0 dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0cmEsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd190 ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfVEVTVF9PQSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl90ZXN0X29hX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0 NCB9LAorCS5zaG93ID0gc2hvd190ZXN0X29hX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitz dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGVzdF9vYVtdID0geworCSZkZXZfYXR0cl90 ZXN0X29hX2lkLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGdyb3VwX3Rlc3Rfb2EgPSB7CisJLm5hbWUgPSAiZGQzZmQ3ODktZTc4My00MjA0LThjZDAt YjY3MWJiY2NiMGNmIiwKKwkuYXR0cnMgPSAgYXR0cnNfdGVzdF9vYSwKK307CisKK2ludAoraTkx NV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2dsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICptdXhfcmVnc1tBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKV07CisJaW50IG11eF9sZW5zW0FSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOworCWludCByZXQgPSAwOworCisJaWYgKGdl dF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkg eworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfcmVuZGVy X2Jhc2ljOworCX0KKwlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7CisJCWlmIChyZXQp CisJCQlnb3RvIGVycm9yX2NvbXB1dGVfYmFzaWM7CisJfQorCWlmIChnZXRfcmVuZGVyX3BpcGVf cHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfcmVuZGVy X3BpcGVfcHJvZmlsZTsKKwl9CisJaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyb3JfbWVtb3J5X3JlYWRzOworCX0KKwlpZiAoZ2V0X21lbW9yeV93 cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQg PSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bWVtb3J5X3dyaXRlcyk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX21lbW9yeV93cml0ZXM7 CisJfQorCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKKwkJaWYgKHJldCkK KwkJCWdvdG8gZXJyb3JfY29tcHV0ZV9leHRlbmRlZDsKKwl9CisJaWYgKGdldF9jb21wdXRlX2wz X2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2NvbXB1dGVfbDNfY2FjaGUpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9jb21wdXRlX2wz X2NhY2hlOworCX0KKwlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7CisJCWlmIChyZXQpCisJCQln b3RvIGVycm9yX2hkY19hbmRfc2Y7CisJfQorCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKKwkJaWYgKHJldCkKKwkJ CWdvdG8gZXJyb3JfbDNfMTsKKwl9CisJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0g c3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOworCX0KKwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVh dGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7CisJ CWlmIChyZXQpCisJCQlnb3RvIGVycm9yX3NhbXBsZXI7CisJfQorCWlmIChnZXRfdGRsXzFfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwor CQlpZiAocmV0KQorCQkJZ290byBlcnJvcl90ZGxfMTsKKwl9CisJaWYgKGdldF90ZGxfMl9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7CisJ CWlmIChyZXQpCisJCQlnb3RvIGVycm9yX3RkbF8yOworCX0KKwlpZiAoZ2V0X2NvbXB1dGVfZXh0 cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29t cHV0ZV9leHRyYSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0cmE7CisJ fQorCWlmIChnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF90ZXN0X29hKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfdGVzdF9v YTsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyb3JfdGVzdF9vYToKKwlpZiAoZ2V0X2NvbXB1dGVf ZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVf ZXh0cmEpOworZXJyb3JfY29tcHV0ZV9leHRyYToKKwlpZiAoZ2V0X3RkbF8yX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7CitlcnJvcl90ZGxfMjoKKwlp ZiAoZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJ CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90 ZGxfMSk7CitlcnJvcl90ZGxfMToKKwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOworZXJyb3Jfc2FtcGxlcjoKKwlpZiAo Z2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOworZXJyb3Jf cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDoKKwlpZiAoZ2V0X2wzXzFfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOworZXJyb3JfbDNfMToKKwlpZiAo Z2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK KwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2hkY19hbmRfc2YpOworZXJyb3JfaGRjX2FuZF9zZjoKKwlpZiAoZ2V0X2NvbXB1dGVfbDNfY2Fj aGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfbDNf Y2FjaGUpOworZXJyb3JfY29tcHV0ZV9sM19jYWNoZToKKwlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5k ZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0 ZW5kZWQpOworZXJyb3JfY29tcHV0ZV9leHRlbmRlZDoKKwlpZiAoZ2V0X21lbW9yeV93cml0ZXNf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMp OworZXJyb3JfbWVtb3J5X3dyaXRlczoKKwlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKK2Vycm9yX21l bW9yeV9yZWFkczoKKwlpZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOworZXJyb3Jf cmVuZGVyX3BpcGVfcHJvZmlsZToKKwlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOworZXJyb3JfY29t cHV0ZV9iYXNpYzoKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKK2Vycm9yX3JlbmRlcl9iYXNpYzoK KwlyZXR1cm4gcmV0OworfQorCit2b2lkCitpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19nbGso c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqbXV4X3JlZ3NbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyld OworCWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpXTsKKworCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOworCWlmIChnZXRfY29tcHV0ZV9iYXNpY19t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7 CisJaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKKwlpZiAoZ2V0X21lbW9yeV9y ZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3Jl YWRzKTsKKwlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOworCWlmIChnZXRfY29tcHV0ZV9leHRlbmRl ZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRl bmRlZCk7CisJaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKKwlpZiAoZ2V0X2hkY19hbmRf c2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2Yp OworCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfbDNfMSk7CisJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9i YWNrZW5kKTsKKwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3NhbXBsZXIpOworCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKKwlpZiAoZ2V0X3RkbF8yX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7CisJaWYgKGdldF9jb21w dXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21w dXRlX2V4dHJhKTsKKwlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9nbGsuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmgK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NTExYmIxY2VjZjcKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2dsay5oCkBAIC0w LDAgKzEsNDAgQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUgYnkgR1BVIFRvcCA6IGh0dHBz Oi8vZ2l0aHViLmNvbS9yaWIvZ3B1dG9wCisgKiBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisg KgorICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0 aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0 ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBU aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5j bHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VU IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF UiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaWZuZGVmIF9fSTkx NV9PQV9HTEtfSF9fCisjZGVmaW5lIF9fSTkxNV9PQV9HTEtfSF9fCisKK2V4dGVybiBpbnQgaTkx NV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfZ2xrOworCitleHRlcm4gaW50IGk5MTVfb2Ffc2Vs ZWN0X21ldHJpY19zZXRfZ2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisK K2V4dGVybiBpbnQgaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2dsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOworCitleHRlcm4gdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9z eXNmc19nbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworI2VuZGlmCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jCmluZGV4IGQ1MTI2ZmFmMmEzNS4uYzI4MTg0N2ViNTZiIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpAQCAtMjA0LDYgKzIwNCw3IEBACiAjaW5jbHVkZSAi aTkxNV9vYV9ieHQuaCIKICNpbmNsdWRlICJpOTE1X29hX2tibGd0Mi5oIgogI2luY2x1ZGUgImk5 MTVfb2Ffa2JsZ3QzLmgiCisjaW5jbHVkZSAiaTkxNV9vYV9nbGsuaCIKIAogLyogSFcgcmVxdWly ZXMgdGhpcyB0byBiZSBhIHBvd2VyIG9mIHR3bywgYmV0d2VlbiAxMjhrIGFuZCAxNk0sIHRob3Vn aCBkcml2ZXIKICAqIGlzIGN1cnJlbnRseSBnZW5lcmFsbHkgZGVzaWduZWQgYXNzdW1pbmcgdGhl IGxhcmdlc3QgMTZNIHNpemUgaXMgdXNlZCBzdWNoCkBAIC0xNzgxLDcgKzE3ODIsNyBAQCBzdGF0 aWMgaW50IGdlbjhfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCSAqIFJQVF9JRCBmaWVsZC4KIAkgKi8KIAlpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikgfHwKLQkgICAgSVNfS0FCWUxBS0UoZGV2X3ByaXYp KSB7CisJICAgIElTX0tBQllMQUtFKGRldl9wcml2KSB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2 KSkgewogCQlJOTE1X1dSSVRFKEdFTjhfT0FfREVCVUcsCiAJCQkgICBfTUFTS0VEX0JJVF9FTkFC TEUoR0VOOV9PQV9ERUJVR19ESVNBQkxFX0NMS19SQVRJT19SRVBPUlRTIHwKIAkJCQkJICAgICAg R0VOOV9PQV9ERUJVR19JTkNMVURFX0NMS19SQVRJTykpOwpAQCAtMjg2OSw2ICsyODcwLDkgQEAg dm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCQkJCWdvdG8gc3lzZnNfZXJyb3I7CiAJCX0gZWxzZQogCQkJZ290byBzeXNmc19lcnJvcjsK Kwl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7CisJCWlmIChpOTE1X3BlcmZf cmVnaXN0ZXJfc3lzZnNfZ2xrKGRldl9wcml2KSkKKwkJCWdvdG8gc3lzZnNfZXJyb3I7CiAJfQog CiAJZ290byBleGl0OwpAQCAtMjkxNSw3ICsyOTE5LDkgQEAgdm9pZCBpOTE1X3BlcmZfdW5yZWdp c3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlpOTE1X3BlcmZfdW5y ZWdpc3Rlcl9zeXNmc19rYmxndDIoZGV2X3ByaXYpOwogCQllbHNlIGlmIChJU19LQkxfR1QzKGRl dl9wcml2KSkKIAkJCWk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2tibGd0MyhkZXZfcHJpdik7 Ci0JfQorCX0gZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCisJCWk5MTVfcGVyZl91 bnJlZ2lzdGVyX3N5c2ZzX2dsayhkZXZfcHJpdik7CisKIAogCWtvYmplY3RfcHV0KGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaik7CiAJZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqID0gTlVM TDsKQEAgLTMwNTksNiArMzA2NSwxMyBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCQkJaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3Nl dHNfa2JsZ3QzOwogCQkJCWRldl9wcml2LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldCA9 CiAJCQkJCWk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfa2JsZ3QzOworCQkJfSBlbHNlIGlmIChJ U19HRU1JTklMQUtFKGRldl9wcml2KSkgeworCQkJCWRldl9wcml2LT5wZXJmLm9hLnRpbWVzdGFt cF9mcmVxdWVuY3kgPSAxOTIwMDAwMDsKKworCQkJCWRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRp bl9zZXRzID0KKwkJCQkJaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfZ2xrOworCQkJCWRl dl9wcml2LT5wZXJmLm9hLm9wcy5zZWxlY3RfbWV0cmljX3NldCA9CisJCQkJCWk5MTVfb2Ffc2Vs ZWN0X21ldHJpY19zZXRfZ2xrOwogCQkJfQogCQl9CiAKLS0gCjIuMTEuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==