From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v15 11/14] drm/i915/perf: add KBL support Date: Wed, 31 May 2017 13:33:52 +0100 Message-ID: <20170531123355.6363-12-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 63FB86E251 for ; Wed, 31 May 2017 12:34:13 +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 QWRkIE9BIHN1cHBvcnQgZm9yIEthYnlsYWtlIChwcmV0dHkgbXVjaCBpZGVudGljYWwgdG8gU2t5 bGFrZSksIGFuZAphbHNvIGFkZCB0aGUgYXNzb2NpYXRlZCBPQSBjb25maWd1cmF0aW9ucy4KClNp Z25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgIHwgICAgNCArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYyB8IDI5OTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmgg fCAgIDQwICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMgfCAzMDQwICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9rYmxndDMuaCB8ICAgNDAgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMg ICAgICB8ICAgMzAgKy0KIDYgZmlsZXMgY2hhbmdlZCwgNjE0MyBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffa2JsZ3QyLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2tibGd0Mi5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9rYmxndDMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2Ffa2JsZ3QzLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDQ5YTYyOGNkZWY5ZS4uMDMz YTJkZjAxZGJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMTM1LDcgKzEzNSw5IEBAIGk5MTUt eSArPSBpOTE1X3BlcmYubyBcCiAJICBpOTE1X29hX3NrbGd0Mi5vIFwKIAkgIGk5MTVfb2Ffc2ts Z3QzLm8gXAogCSAgaTkxNV9vYV9za2xndDQubyBcCi0JICBpOTE1X29hX2J4dC5vCisJICBpOTE1 X29hX2J4dC5vIFwKKwkgIGk5MTVfb2Ffa2JsZ3QyLm8gXAorCSAgaTkxNV9vYV9rYmxndDMubwog CiBpZmVxICgkKENPTkZJR19EUk1fSTkxNV9HVlQpLHkpCiBpOTE1LXkgKz0gaW50ZWxfZ3Z0Lm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uODdkYmQwYTBiMDc2Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuYwpAQCAtMCwwICsxLDI5OTEgQEAKKy8qCisg KiBBdXRvZ2VuZXJhdGVkIGZpbGUgYnkgR1BVIFRvcCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaWIv Z3B1dG9wCisgKiBETyBOT1QgRURJVCBtYW51YWxseSEKKyAqCisgKgorICogQ29weXJpZ2h0IChj KSAyMDE1IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkg b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUg IlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAq IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29u cyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0 IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0 IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cisg KiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp YWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMg UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP UgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4g VEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvc3lzZnMuaD4KKworI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9vYV9rYmxndDIuaCIKKworZW51bSBt ZXRyaWNfc2V0X2lkIHsKKwlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCisJTUVUUklD X1NFVF9JRF9DT01QVVRFX0JBU0lDLAorCU1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklM RSwKKwlNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUywKKwlNRVRSSUNfU0VUX0lEX01FTU9SWV9X UklURVMsCisJTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVELAorCU1FVFJJQ19TRVRfSURf Q09NUFVURV9MM19DQUNIRSwKKwlNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YsCisJTUVUUklDX1NF VF9JRF9MM18xLAorCU1FVFJJQ19TRVRfSURfTDNfMiwKKwlNRVRSSUNfU0VUX0lEX0wzXzMsCisJ TUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5ELAorCU1FVFJJQ19TRVRf SURfU0FNUExFUiwKKwlNRVRSSUNfU0VUX0lEX1RETF8xLAorCU1FVFJJQ19TRVRfSURfVERMXzIs CisJTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVFJBLAorCU1FVFJJQ19TRVRfSURfVk1FX1BJUEUs CisJTUVUUklDX1NFVF9JRF9URVNUX09BLAorfTsKKworaW50IGk5MTVfb2Ffbl9idWlsdGluX21l dHJpY19zZXRzX2tibGd0MiA9IDE4OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweDI3MTApLCAw eDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygw eDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJ eyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0geworCXsgX01NSU8o MHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAor CXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAx NTAxNCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVj KSwgMHgwMDA1MzA1MiB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9iYXNpY1td ID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDFlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMjE3MDI4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjM3MDI4MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxMTkzMDMxNyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDNkZiB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRl MDA4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTZjMDA1MyB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYTFiNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAwMSB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NDJmMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjNDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTRjODQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBmMDQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNjYwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjMjIwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJk ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEzMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwODEzMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE3MDAyMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwODE3MDAyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ODMzYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM3MDgwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwODM3MDg0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM3MDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZDkzMzAzMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkzM2Uz ZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMTkzM2QwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMzkzMDczYyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzMDAwZSB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxZDkzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkw MDE1NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE1OCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgzNTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyZDkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx NTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMTkwMDAxZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwNDQw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHg1NTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMyMSB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg0NzkwMDA2MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwNDQ0MCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0YjkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwNCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwNDQ0NCB9 LAorfTsKKworc3RhdGljIGludAorZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKipyZWdzLAorCQkJICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEp OworCisJcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX2Jhc2ljOworCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2ljKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1 dGVfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAw MDAwMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfY29tcHV0ZV9iYXNpY1tdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9 LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgw MDAwMjAwMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAorCXsgX01NSU8oMHhl NDVjKSwgMHgwMDA4ODA3OCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAorCXsg X01NSU8oMHhlNjVjKSwgMHgwMGEwODkwOCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTA0ZjAwZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI0ZjFjMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTA2YzAwZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDA0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTA4MjAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWM0ZTAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZjA5MDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDg0ZjAwMzIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZjE4 OTEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZjBlMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGU0ZjAwM2MgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjBkODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDI0ZjAwM2IgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAwMDIgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDg2YzAxMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2 YzAwMGMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzBiMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTg2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGMxYjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYjgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMjQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1Yjgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg1YjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGE1YmMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YjgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGU1YjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YjgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE1 YzYwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM1YzAwMWIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTI1YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YzgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDA0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzIwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyMDggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDAwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDgwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjU0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1MDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGUyY2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYy Y2ZiMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYmUgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyY2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyY2MwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTk5MDAxNTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDAxNTgg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxMDUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWY5MDAxMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTE5MDBmZmYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4MjEgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4NDc5MDA4MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDk5MDA4MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0MjIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTM5MDQ0NDQgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9jb21wdXRlX2Jhc2ljX211 eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJICAgICBpbnQgKmxlbnMpCit7CisJaW50 IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfYmFz aWM7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKKwlu Kys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBi X2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKKwl7IF9NTUlPKDB4Mjcy NCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9N TUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAg fSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4 MDAwN2ZmZWEgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdmZmMgfSwKKwl7IF9NTUlPKDB4 Mjc3OCksIDB4MDAwN2FmZmEgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY1ZmQgfSwKKwl7 IF9NTUlPKDB4Mjc4MCksIDB4MDAwNzlmZmEgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGYz ZmIgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2JmN2EgfSwKKwl7IF9NTUlPKDB4Mjc4Yyks IDB4MDAwMGY3ZTcgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZlZmEgfSwKKwl7IF9NTUlP KDB4Mjc5NCksIDB4MDAwMGY3Y2YgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwNzdmZmEgfSwK Kwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGVmZGYgfSwKKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAw NmZmZmEgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGNmYmYgfSwKKwl7IF9NTUlPKDB4Mjdh OCksIDB4MDAwM2ZmZmEgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMDVmN2YgfSwKK307CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX3Bp cGVfcHJvZmlsZVtdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01N SU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9 LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgw MDA0NTA0NCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAorCXsgX01NSU8oMHhl NjVjKSwgMHgwMDA2NTA2NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZTAwMWYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZjAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTAxMTY4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4YTAzZTAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MjRjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 MzAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM4NDAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTE4NTAwMTkgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NjAwMDcgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDE4NzBjNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4ODAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGE0YzAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDQwZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZTU0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZTAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZjAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDAwZjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGUwZjAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyYzgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYx MTAwMTIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDE4OTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4OTAxMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDM4OTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MDgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDM4MGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTAwNzUgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ4YTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4YTgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWI4YTQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM4YTgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MWEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTU4MTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGI4MjAwMzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MjgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4 MjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGQ4MzAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzAwMGMgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDk4MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4NDA5ODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NDRkODAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTE4NDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NDgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDk4NTAwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NTAw MDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDc4NjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NjA0MDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDk4NzAwMzIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ODgwNTIgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4ODAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 ODQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzEwMDEgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ5MzAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWI5NTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTAwOTQg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5NTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDllNTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGJlNTgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDNlNWMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU5MmMwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGI5MjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MjQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTE5MjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MmMwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDk5MjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE5ODUwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDc5ODgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDk5 ODEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGI5ODIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGQ5ODIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5ODkwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDU5ODIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MjM5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4Mjc5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MmI5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTU5MDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGMwODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA0NDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA0MDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDc5MDBjMjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDA0MDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwNDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NGI5MDAwMjQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDA0 MDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25m aWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCSAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkJICAgaW50ICpsZW5zKQoreworCWludCBuID0gMDsK KworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8 IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxl OworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZSk7 CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKKwl7IF9NTUlPKDB4MjcyYyks IDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcyOCksIDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlP KDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcxYyksIDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcxOCksIDB4ZmZm ZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjcx MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKKwl7IF9N TUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAgfSwKKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2Njcg fSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc1YyksIDB4 ODY1NDMyMTAgfSwKKwl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKKwl7IF9NTUlPKDB4 Mjc1NCksIDB4MDAwMDY0NjUgfSwKKwl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZl MDAgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKKwl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4NzIgfSwKKwl7IF9NTUlP KDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEgfSwK Kwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAw N2Y4N2EgfSwKKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc5 OCksIDB4MDAwN2Y4ZWEgfSwKKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKKwl7IF9N TUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAg fSwKKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4 MDAwMGZlMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9l dV9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0 IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU2NTgpLCAw eDAwMDI1MDI0IH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCisJeyBfTU1JTygw eGU0NWMpLCAweDAwMDQ1MDQ0IH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCisJ eyBfTU1JTygweGU2NWMpLCAweDAwMDY1MDY0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7CisJeyBfTU1JTygweDk4 ODgpLCAweDExODEwYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEzODEwMDFhIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDM3OTA2ODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDY0 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzODExMzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA1ODExYjEyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDFhIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDFmODEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3ODEwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE5ODEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiODEw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkODEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFiOTMwMDU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzZTU4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA1ZTVjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDEzOTAwMTUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIx OTAwMTUxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIzOTAwMTUyIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDI1OTAwMTUzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI3OTAwMTU0IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDI5OTAwMTU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJiOTAwMTU2 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJkOTAwMTU3IH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDJmOTAwMTVmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMxOTAwMTA1IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE1OTAwMTAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTAwMTAxIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTA4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFkOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDExOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1 OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwYzAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDQ3OTAwYzYzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDQ5OTAwYzYzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYzIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDUzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfbWVtb3J5X3JlYWRz X211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkgICAgaW50ICpsZW5zKQoreworCWlu dCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19tZW1vcnlfcmVh ZHM7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfcmVhZHMpOworCW4r KzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0geworCXsgX01NSU8oMHgyNzJjKSwgMHhm ZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzI4KSwgMHhmZmZmZmZmZiB9LAorCXsgX01NSU8oMHgy NzI0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsg X01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzE4KSwgMHhmZmZmZmZm ZiB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzRjKSwgMHg4NjU0MzIxMCB9LAorCXsgX01NSU8o MHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwNjY2NyB9LAor CXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzVjKSwgMHg4NjU0 MzIxMCB9LAorCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIxMCB9LAorCXsgX01NSU8oMHgyNzU0 KSwgMHgwMDAwNjQ2NSB9LAorCXsgX01NSU8oMHgyNzUwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmUwMCB9 LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgw MDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3ZjgyMiB9LAorCXsgX01NSU8oMHgy Nzg0KSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZjhiYSB9LAorCXsg X01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3Zjg3 YSB9LAorCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8oMHgyNzk4KSwg MHgwMDA3ZjhlYSB9LAorCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmUwMCB9LAorCXsgX01NSU8o MHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmUwMCB9LAor CXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAorCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAw ZmUwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s CisJeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAw MDI1MDI0IH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCisJeyBfTU1JTygweGU0 NWMpLCAweDAwMDQ1MDQ0IH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCisJeyBf TU1JTygweGU2NWMpLCAweDAwMDY1MDY0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIG11eF9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0geworCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgxMGMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NTgxMWIxMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAxYSB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxZjgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgxMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxYjkzMDA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwM2U1ODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNWU1YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE2MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkw MDE2MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE2MiB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgyNTkwMDE2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwMDE2NCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyOTkwMDE2NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwMDE2NiB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE2NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgy ZjkwMDE1MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEwNSB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxNTkwMDEwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwMDEwMSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxZDkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxMTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGM2MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzkwMGM2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1 OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X21lbW9yeV93cml0ZXNf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkgICAgIGludCAqbGVucykKK3sKKwlp bnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3dy aXRlczsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV93cml0ZXMpOwor CW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0geworCXsgX01NSU8oMHgyNzI0 KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01N SU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9 LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgw MDA3ZmMyYSB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwYmYwMCB9LAorCXsgX01NSU8oMHgy Nzc4KSwgMHgwMDA3ZmM2YSB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYmYwMCB9LAorCXsg X01NSU8oMHgyNzgwKSwgMHgwMDA3ZmM5MiB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYmYw MCB9LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZmNhMiB9LAorCXsgX01NSU8oMHgyNzhjKSwg MHgwMDAwYmYwMCB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmMzMiB9LAorCXsgX01NSU8o MHgyNzk0KSwgMHgwMDAwYmYwMCB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZmM5YSB9LAor CXsgX01NSU8oMHgyNzljKSwgMHgwMDAwYmYwMCB9LAorCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3 ZmU2YSB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwYmYwMCB9LAorCXsgX01NSU8oMHgyN2E4 KSwgMHgwMDA3ZmU3YSB9LAorCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwYmYwMCB9LAorfTsKKwor c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4 dGVuZGVkW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygw eGU1NTgpLCAweDAwMDAwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCisJ eyBfTU1JTygweGU3NTgpLCAweDAwNzc4MDA4IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDg4 MDc4IH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwODA4NzA4IH0sCisJeyBfTU1JTygweGU2NWMp LCAweDAwYTA4OTA4IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDBlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODE2MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjFjODAxNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODFjMDEyMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx YTRlYWFhMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZTZjMGIwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDIwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMjZjMDAwYyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZj MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDFiODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDFjMDA0MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFjNDIwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODFjNDQ0MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YTFjNDY0NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFjNzY0NyB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDFjNzM1NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMDFjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMDRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjYWEyYSB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYzRjMDJhYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYTAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YzBmNTQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNTUxNSB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDBmMDE1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYWEw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhYSB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMjJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw N2ZmZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0MTkwMDA0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMDgwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDg0MiB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0 OTkwMDg0MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDgw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAor Z2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCisJCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCQlpbnQg KmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29u ZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19j b21wdXRlX2V4dGVuZGVkKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9 IHsKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4 MzA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4 MjcyNCksIDB4MzA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZmEgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZl ZmUgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2ZmZmEgfSwKKwl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGZlZmQgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZmZmEgfSwKKwl7IF9NTUlP KDB4Mjc5NCksIDB4MDAwMGZiZWYgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZmZmEgfSwK Kwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZiZGYgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9sM19jYWNoZVtdID0geworCXsg X01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAw MyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAorCXsgX01NSU8oMHhlNzU4KSwg MHgwMDEwMTEwMCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDIwMTIwMCB9LAorCXsgX01NSU8o MHhlNTVjKSwgMHgwMDMwMTMwMCB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDQwMTQwMCB9LAor fTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVf bDNfY2FjaGVbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzA3NjAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MzAwMWUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0 ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWE0ZTgwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDA2YzAwNTEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2YzUwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg2YzVjNWQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGU2YzVlNWYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTg2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDgxYmMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTAxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWExY2UwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0 YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzJhMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGM0YzAyODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGMwZjA0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjE1MDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAwZjAxNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYyYzBh MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDM5MzMzMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU5MzAwMzIgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTE5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxNTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5 MDAxNTggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTE5MDAzMGYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMjEgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDQ0NDQgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9jb21wdXRlX2wz X2NhY2hlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ CWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkJaW50ICpsZW5zKQoreworCWlu dCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2wz X2NhY2hlOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNo ZSk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7CisJeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweDEwODAwMDAwIH0s CisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAw ODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3 NzQpLCAweDAwMDBmZGZmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAw MDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1 OCksIDB4MDAwMTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIg fSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7CisJeyBfTU1JTygw eDk4ODgpLCAweDEwNGYwMjMyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyNGY0NjQwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEwNmMwMjMyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExODM0 NDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBjNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGYxODgwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAyNGYwOGJiIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NGYwMDFiIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA0NmMwMTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 NmMwMDBiIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhNmMwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0MWI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MWI0MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFhMWMxODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNWI4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA0NWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyNWM4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE0NWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2NWM4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE4NWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMw MGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAyMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGY1MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAy MmNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmNjMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA2MmNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MmNjMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBmODMwNWMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5ODMwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA3ODMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTUwMDgwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEzOTI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOTg4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDExOTBmYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDQwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQx OTAwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQyIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfaGRjX2Fu ZF9zZl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCSAgaW50ICpsZW5zKQoreworCWlu dCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19oZGNfYW5kX3Nm OworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfaGRjX2FuZF9zZik7CisJbisrOwor CisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3Vu dGVyX2NvbmZpZ19sM18xW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjAp LCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1J TygweDI3NzApLCAweDAwMTAwMDcwIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0s CisJeyBfTU1JTygweDI3NzgpLCAweDAwMDE0MDAyIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAw MDBjM2ZmIH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAyIH0sCisJeyBfTU1JTygweDI3 ODQpLCAweDAwMDBjN2ZmIH0sCisJeyBfTU1JTygweDI3ODgpLCAweDAwMDA0MDAyIH0sCisJeyBf TU1JTygweDI3OGMpLCAweDAwMDBkM2ZmIH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMTAwNzAw IH0sCisJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZjFmIH0sCisJeyBfTU1JTygweDI3OTgpLCAw eDAwMDAxNDAyIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYzNmIH0sCisJeyBfTU1JTygw eDI3YTApLCAweDAwMDAxMDAyIH0sCisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzdmIH0sCisJ eyBfTU1JTygweDI3YTgpLCAweDAwMDAwNDAyIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDBm ZDNmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX2wzXzFbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK Kwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19sM18xW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDEyNmM3YjQwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE2NmMwMDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNjAz NDQ0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNjEzNDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFhNGVhODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAyNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 NGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA2NGY0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNmM1MzI3IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBlNmM1NDI1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNmMyYTAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNmMyODViIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA0NmMwMDVjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDFjNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDFhNmMwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMWJj MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAwMWI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA0MWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDNjIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDEyMWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0 MWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE4MWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA2NWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhNWMxMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNjAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA0NjAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNjEwMDQ0IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDEwNjEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NjEwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBjNGMwMmE4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGNh MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBjMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 MGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTU0IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBjMGY1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDE4MmMwMGFhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBhMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDExOTBmZmMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwNDIwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDRiOTAwMDIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQx OTAwNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIxIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCit9Owor CitzdGF0aWMgaW50CitnZXRfbDNfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAg ICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX2wzXzE7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18xKTsK KwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX2wzXzJbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwK Kwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZmZjEgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMjgwMDIgfSwKKwl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMDg3ZmYgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMjAwMDIgfSwKKwl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDgwMDIg fSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGE3ZmYgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfMltdID0geworCXsgX01NSU8oMHhl NDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsg X01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAx NCB9LAorCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwg MHgwMDA1MzA1MiB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzJbXSA9IHsKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTI2YzAyZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ2YzAwMDEg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MjM0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDQ0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDg0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDY0ZjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzMz MjQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzM0MjIgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTA2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYx YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWExYzA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YjQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWE1YzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MTQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MjAwNDQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTA2MjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MjAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDg0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMmEgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEy YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyY2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTE5MGY4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKK307CisKK3N0YXRp YyBpbnQKK2dldF9sM18yX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJICAgIGludCAq bGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25m aWdfbDNfMjsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzIpOworCW4rKzsK KworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfbDNfM1tdID0geworCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01N SU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9 LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAyODAwMiB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgw MDAwODdmZiB9LAorCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAyMDAwMiB9LAorCXsgX01NSU8oMHgy Nzg0KSwgMHgwMDAwOGZmZiB9LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwODAwMiB9LAorCXsg X01NSU8oMHgyNzhjKSwgMHgwMDAwYTdmZiB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18zW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAw eDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygw eGU2NTgpLCAweDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJ eyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUz MDUyIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbDNfM1tdID0geworCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjZjNGU4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDZjMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYTYzMzQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwODRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYzRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMzMyMSB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMzQyZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjFiYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx ODFjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMTgwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjYwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzYzMDA0NCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMDYzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYzMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwYTRjMDBhYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBm MDA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg0MzkwMDg0MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X2wzXzNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAorCQkgICAgaW50ICpsZW5zKQoreworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwly ZWdzW25dID0gbXV4X2NvbmZpZ19sM18zOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfbDNfMyk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k W10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQp LCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3MTQpLCAweDMwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s CisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAw MDAwMDAyIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBlZmZmIH0sCisJeyBfTU1JTygweDI3 NzgpLCAweDAwMDA2MDAwIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmM2ZmIH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7 IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7 CisJeyBfTU1JTygweDk4ODgpLCAweDEwMmYzODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0 NGQwNTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMGQwM2MwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE0MGQwM2NmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGYwMDA0IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBjNGU0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmYwNDgw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MmYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAyMmYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDkwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA2NGQwMDI3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGQwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAwMGQwZDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMGQ4 MDNmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MGQ4MDIzIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDEwMGQwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAyMGYwMDEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMGYwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBh MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDExOTBmYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAxNDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAxNDg1IH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAxIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKKwkJCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkJCSAg ICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7CisJbGVuc1tuXSA9IEFSUkFZ X1NJWkUobXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKKwluKys7CisK KwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50 ZXJfY29uZmlnX3NhbXBsZXJbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAw MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4NzA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjcy MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9N TUlPKDB4Mjc3MCksIDB4MDAwMGMwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGU3ZmYg fSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDMwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4 MDAwMGY5ZmYgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDBjMDAgfSwKKwl7IF9NTUlPKDB4 Mjc4NCksIDB4MDAwMGZlN2YgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgZmxleF9ldV9jb25maWdfc2FtcGxlcltdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9 LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3NhbXBsZXJbXSA9IHsKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTQxNTJjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYxNTAwMDUgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTIxNjAwYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQzNTJjMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYzNTAwMDUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTIzNjAwYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1NTJjMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTY1NTAwMDUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1NjAwYTAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDYyZjYwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjIw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAwNTAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGE0YzAwMTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQw ZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTAwZjAzNTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZmIwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MGUwZjAwZGEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwMjgg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIyZGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGMxMzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxMzIwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDQxM2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNDAw MTggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMxNTcwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGUxNTAwNzggfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNTAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQxNjIxODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxNjAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIz M2EwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMzMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTQzNDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTYzNDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIzNTc4NzAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNTAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzNjAwNDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIzNjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQzNzEwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGU1MzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDY1MzMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM1NDAw MjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1NDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGU1NTcwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1NTc4MDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTA1NTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NjAwNDMgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1NjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY1 NzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmODAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NDE5MDBjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAw NjAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9zYW1wbGVyX211eF9jb25maWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnICoqcmVncywKKwkJICAgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfc2FtcGxlcjsKKwlsZW5zW25dID0gQVJSQVlf U0laRShtdXhfY29uZmlnX3NhbXBsZXIpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGRsXzFbXSA9IHsK Kwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4 MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjcx NCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9N TUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIg fSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdmZmYgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4 MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDlmZmYgfSwKKwl7IF9NTUlPKDB4 Mjc4MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGVmZmYgfSwKKwl7 IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGYz ZmYgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc5NCks IDB4MDAwMGZkZmYgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4Mjc5YyksIDB4MDAwMGZlN2YgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgZmxleF9ldV9jb25maWdfdGRsXzFbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAw MDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1 OCksIDB4MDAwMTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIg fSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZGxfMVtdID0geworCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjEyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjMyMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxMjUyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YTRjMDAxNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMDBmMDNhMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmZjAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwZTBmMDA5NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJj ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTJkNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkNDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMjEwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEwYzAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjExODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NDExYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjEyMTg4MCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDEyMTliNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMjEzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzNTAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZTMwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMwNDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYzMxODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTMxNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNjMxNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMy MWE4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTMyMDAzMyB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjMyMDAzMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYzMzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTMzMTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTUwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUwODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjUwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUxODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMDUxODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxNDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUyMTg4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMDUyMWE4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUyMDAzMyB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwZTUzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUzNDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMjUzMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw ZmY4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0OTkwMDgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MiB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg0MzkwMDAwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3RkbF8x X211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAgICAgaW50ICpsZW5zKQoreworCWlu dCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxfMTsKKwls ZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8xKTsKKwluKys7CisKKwlyZXR1cm4g bjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmln X3RkbF8yW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8yW10gPSB7CisJeyBfTU1J TygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0s CisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgpLCAweDAw MDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1JTygweGU1 NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCit9Owor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzJbXSA9IHsK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjRkNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIz MjJlNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjRkNjAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyZjMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMTQgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZmUwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZjAwOTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQxMGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMWMwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQxMjFmYjcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMzUwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAz MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDAzMTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMTQwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDAzMjFiODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwM2Yg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzMzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MGMwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDI1MWMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MjFmYjcgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDA1MjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzUw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwNjMgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKK307CisKK3N0YXRpYyBp bnQKK2dldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgIGludCAq bGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25m aWdfdGRsXzI7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMik7CisJbisr OworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9j b3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3 MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBf TU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAw IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmln X2NvbXB1dGVfZXh0cmFbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDEwMDAgfSwKKwl7 IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDMwMDIgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDUw MDQgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTEwMTAgfSwKKwl7IF9NTUlPKDB4ZTQ1Yyks IDB4MDAwNTAwMTIgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTIwNTEgfSwKKwl7IF9NTUlP KDB4ZTY1YyksIDB4MDAwMDAwMDggfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAw eDEyMTIwM2UwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMzIwM2UwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDEyNTIwM2UwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmY0MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MGRh MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBlMGYwMDZjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA0MmQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTA0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2MTE0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 MTIwMDMzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTIwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA2MTMxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MzA4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MzE4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MzIxOTgw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMzIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA0MzM0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NTA0MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA0NTE0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NTIwMDMzIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAwNTIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NTMx MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOTBlMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQzOTAwYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAyIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRf Y29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCSAgICAgaW50 ICpsZW5zKQoreworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2Nv bmZpZ19jb21wdXRlX2V4dHJhOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29t cHV0ZV9leHRyYSk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ192bWVfcGlwZVtdID0geworCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAw MDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcw KSwgMHgwMDEwMDAzMCB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmOSB9LAorCXsgX01N SU8oMHgyNzc4KSwgMHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmZmYyB9 LAorCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgw MDAwZmZmMyB9LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDEwMDE4MCB9LAorCXsgX01NSU8oMHgy NzhjKSwgMHgwMDAwZmZjZiB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDAwMDAwMiB9LAorCXsg X01NSU8oMHgyNzk0KSwgMHgwMDAwZmZjZiB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMDAw MiB9LAorCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmYzZiB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ192bWVfcGlwZVtdID0geworCXsgX01N SU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwODAwMyB9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3ZtZV9w aXBlW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE0MWE1ODAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE2MWEwMGMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMTgwMjQwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDE0MTgwMDAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0M2E1ODAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2M2EwMGMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDEyMzgwMjQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0MzgwMDAyIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAwMmYxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmY4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA0MmYzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGM0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMxNTAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAwMGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA4MGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMGRhMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBj MGYwNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGY5NTAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDEwMGYwMDJhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2MmMwYTAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMmRjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBjMmRjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTkzMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA4MWEyOGMxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMWEwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAwMTMzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTNj MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MTNmMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAwMTcyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTc4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA4MTdhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTgwMDM3IH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2MTgwOTQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 MTgwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMTgwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0MTgzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzkzMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBjM2EyOGMxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwM2EwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMzNmMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBjMzNmMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMzdhMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBjMzdhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMzgwOTc3IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA4MzgwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0Mzgw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzgzMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDExOTAwMGZmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQxOTAwMDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ3 OTAxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDQ5OTAwODQ0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfdm1lX3Bp cGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQljb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJaW50ICpsZW5zKQoreworCWludCBuID0g MDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ192bWVfcGlwZTsKKwlsZW5z W25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3ZtZV9waXBlKTsKKwluKys7CisKKwlyZXR1cm4g bjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmln X3Rlc3Rfb2FbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4 MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3 MCksIDB4MDAwMDAwMDQgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9N TUlPKDB4Mjc3OCksIDB4MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDAwMDAg fSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDcgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4 MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlPKDB4 Mjc4YyksIDB4MDAwMGZmZjcgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAxMDAwMDIgfSwKKwl7 IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAxMDAw ODIgfSwKKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmZWYgfSwKKwl7IF9NTUlPKDB4MjdhMCks IDB4MDAxMDAwYzIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZmZTcgfSwKKwl7IF9NTUlP KDB4MjdhOCksIDB4MDAxMDAwMDEgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZmZTcgfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGVz dF9vYVtdID0geworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29u ZmlnX3Rlc3Rfb2FbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDc4MTAwMTMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWI5MzAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWY5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MzM5MDAwMDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF90ZXN0X29hX211eF9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgICAgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnICoqcmVncywKKwkJICAgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7 CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfdGVzdF9vYTsKKwlsZW5zW25d ID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOworCW4rKzsKKworCXJldHVybiBuOwor fQorCitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9rYmxndDIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7CisK Kwlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0KSB7CisJY2FzZSBNRVRSSUNf U0VUX0lEX1JFTkRFUl9CQVNJQzoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 CisJCQlnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkVO REVSX0JBU0lDXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVn aXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4n dCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRu J3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQor CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25m aWdfcmVuZGVyX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisKKwkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNp YzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNf U0VUX0lEX0NPTVBVVEVfQkFTSUM6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PQorCQkJZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgICAg ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBc IkNPTVBVVEVfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2Ug Kl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdv dWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNo b3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVy X2NvbmZpZ19jb21wdXRlX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn c19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWMpOwor CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19jb21w dXRlX2Jhc2ljOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpYyk7CisKKwkJcmV0dXJuIDA7CisJY2Fz ZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEU6CisJCWRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhk ZXZfcHJpdiwKKwkJCQkJCQkgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCQkg ICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFi bGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfUElQRV9QUk9GSUxFXCIgbWV0cmljIHNldFxuIik7 CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2Vk IHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1 c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJ ICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKKwkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKKworCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKKwkJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklD X1NFVF9JRF9NRU1PUllfUkVBRFM6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PQorCQkJZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAw KSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1F TU9SWV9SRUFEU1wiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxk bid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0K KworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29u ZmlnX21lbW9yeV9yZWFkczsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVu ID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHMpOworCisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVh ZHM7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShm bGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHMpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklD X1NFVF9JRF9NRU1PUllfV1JJVEVTOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdz ID0KKwkJCWdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgICAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3Ig XCJNRU1PUllfV1JJVEVTXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3 b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBz aG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsK KwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRl cl9jb25maWdfbWVtb3J5X3dyaXRlczsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsK KworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfbWVt b3J5X3dyaXRlczsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXMpOworCisJCXJldHVybiAwOworCWNh c2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID0KKwkJCWdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3By aXYsCisJCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkJZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25m aWcgZm9yIFwiQ09NUFVURV9FWFRFTkRFRFwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5W QUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBh bmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAor CQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJu IC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJ CQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7CisJCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29t cHV0ZV9leHRlbmRlZCk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZs ZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVk KTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNIRToK KwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfY29tcHV0ZV9sM19j YWNoZV9tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzLAorCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfTDNfQ0FDSEVcIiBtZXRyaWMg c2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hl OworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOworCisJCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlOworCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9j b25maWdfY29tcHV0ZV9sM19jYWNoZSk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VU X0lEX0hEQ19BTkRfU0Y6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJ Z2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCisJCQkJCQkgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMp OworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1f REVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkhEQ19BTkRfU0ZcIiBt ZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBh bHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBh ZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4g cmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3Nm OworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2YpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmOworCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfaGRjX2Fu ZF9zZik7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzE6CisJCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2wzXzFfbXV4X2NvbmZpZyhkZXZf cHJpdiwKKwkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1V WCBjb25maWcgZm9yIFwiTDNfMVwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVj YXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28g aXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICog c28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5W QUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2Nv dW50ZXJfY29uZmlnX2wzXzE7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xl biA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbDNfMSk7CisKKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX2wzXzE7CisJCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19s M18xKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfTDNfMjoKKwkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfbDNfMl9tdXhfY29uZmlnKGRldl9w cml2LAorCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCSAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f bXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVY IGNvbmZpZyBmb3IgXCJMM18yXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291 bnRlcl9jb25maWdfbDNfMjsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVu ID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18yKTsKKworCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfbDNfMjsKKwkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wz XzIpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9MM18zOgorCQlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdldF9sM18zX211eF9jb25maWcoZGV2X3By aXYsCisJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIkwzXzNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFM OworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3Vu dGVyX2NvbmZpZ19sM18zOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzMpOworCisJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19sM18zOworCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNf Myk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJ WEVMX0JBQ0tFTkQ6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0 X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJ CQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJCQkgICAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25m aWcgZm9yIFwiUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORFwiIG1ldHJpYyBzZXRcbiIpOwor CisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0 aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNl cnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAq LworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmQ7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9T SVpFKGJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7CisKKwkJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfU0FNUExFUjoKKwkJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfc2FtcGxlcl9tdXhfY29uZmln KGRldl9wcml2LAorCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJ CSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8g c3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJTQU1QTEVSXCIgbWV0cmljIHNldFxuIik7CisKKwkJ CS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMK KwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3Bh Y2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJ CQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9y ZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfc2FtcGxlcjsKKwkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19zYW1w bGVyKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25m aWdfc2FtcGxlcjsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX3NhbXBsZXIpOworCisJCXJldHVybiAwOworCWNhc2UgTUVU UklDX1NFVF9JRF9URExfMToKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJ CQlnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJICAgICBkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncywKKwkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJN X0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMVwiIG1ldHJp YyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVh ZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3RkbF8xOworCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX3RkbF8xKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJ ZmxleF9ldV9jb25maWdfdGRsXzE7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZGxfMSk7CisKKwkJcmV0dXJuIDA7CisJ Y2FzZSBNRVRSSUNfU0VUX0lEX1RETF8yOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25m aWdzID0KKwkJCWdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkgICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlRETF8y XCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lz ZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJl ZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBi ZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfdGRsXzI7 CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpF KGJfY291bnRlcl9jb25maWdfdGRsXzIpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9CisJCQlmbGV4X2V1X2NvbmZpZ190ZGxfMjsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3RkbF8yKTsKKworCQlyZXR1 cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQToKKwkJZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRl dl9wcml2LAorCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAg ICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRh YmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9FWFRSQVwiIG1ldHJpYyBzZXRcbiIpOworCisJ CQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlz CisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNw YWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmE7CisJCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfY29tcHV0ZV9leHRyYSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJ CWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmE7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsK KworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfVk1FX1BJUEU6CisJCWRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2 X3ByaXYsCisJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCWRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf Y29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29u ZmlnIGZvciBcIlZNRV9QSVBFXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZB TDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291 bnRlcl9jb25maWdfdm1lX3BpcGU7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz X2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdm1lX3BpcGUpOworCisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ192bWVfcGlwZTsK KwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX3ZtZV9waXBlKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURf VEVTVF9PQToKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfdGVz dF9vYV9tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MsCisJCQkJCSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK KwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RF QlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURVNUX09BXCIgbWV0cmlj IHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0 aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKKwkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3Vu dGVyX2NvbmZpZ190ZXN0X29hKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQor CQkJZmxleF9ldV9jb25maWdfdGVzdF9vYTsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOworCisJCXJldHVy biAwOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU5PREVWOworCX0KK30KKworc3RhdGljIHNzaXpl X3QKK3Nob3dfcmVuZGVyX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDKTsKK30KKworc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKKwkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2lj X2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cnNfcmVuZGVyX2Jhc2ljW10gPSB7CisJJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAor CU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJf YmFzaWMgPSB7CisJLm5hbWUgPSAiZjhkNjc3ZTktZmY2Zi00ZGYxLTkzMTAtMDMzNGM2ZWZhY2Nl IiwKKwkuYXR0cnMgPSAgYXR0cnNfcmVuZGVyX2Jhc2ljLAorfTsKKworc3RhdGljIHNzaXplX3QK K3Nob3dfY29tcHV0ZV9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfQkFTSUMpOworfQorCitzdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZCA9IHsKKwkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9iYXNp Y19pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHJzX2NvbXB1dGVfYmFzaWNbXSA9IHsKKwkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRy LAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21w dXRlX2Jhc2ljID0geworCS5uYW1lID0gImUxN2ZjNDJhLWU2MTQtNDFiNi05MGM0LTEwNzQ4NDFh NmM3NyIsCisJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfYmFzaWMsCit9OworCitzdGF0aWMgc3Np emVfdAorc2hvd19yZW5kZXJfcGlwZV9wcm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSk7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9m aWxlX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5z aG93ID0gc2hvd19yZW5kZXJfcGlwZV9wcm9maWxlX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9Owor CitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0g eworCSZkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkLmF0dHIsCisJTlVMTCwKK307CisK K3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUg PSB7CisJLm5hbWUgPSAiZDdhMTdhM2EtY2E3MS00MGQyLWE5MTktYWNlODBkNTA2MzNmIiwKKwku YXR0cnMgPSAgYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZSwKK307CisKK3N0YXRpYyBzc2l6ZV90 CitzaG93X21lbW9yeV9yZWFkc19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQgPSB7CisJLmF0dHIgPSB7IC5u YW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X21lbW9yeV9yZWFkc19p ZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X21lbW9yeV9yZWFkc1tdID0geworCSZkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQuYXR0ciwKKwlO VUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3Jl YWRzID0geworCS5uYW1lID0gIjU3YjU5MjAyLTE3MmItNDc3YS04N2RlLTMzZjg1NTcyYzU4OSIs CisJLmF0dHJzID0gIGF0dHJzX21lbW9yeV9yZWFkcywKK307CisKK3N0YXRpYyBzc2l6ZV90Citz aG93X21lbW9yeV93cml0ZXNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQgPSB7CisJLmF0dHIgPSB7IC5u YW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X21lbW9yeV93cml0ZXNf aWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRy c19tZW1vcnlfd3JpdGVzW10gPSB7CisJJmRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQuYXR0ciwK KwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5 X3dyaXRlcyA9IHsKKwkubmFtZSA9ICIzYWRkZjhlZi04ZTliLTQwZjUtYTQ0OC0zZGJiNWQ1MTI4 YjAiLAorCS5hdHRycyA9ICBhdHRyc19tZW1vcnlfd3JpdGVzLAorfTsKKworc3RhdGljIHNzaXpl X3QKK3Nob3dfY29tcHV0ZV9leHRlbmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1 ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQpOworfQorCitzdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsK KwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3df Y29tcHV0ZV9leHRlbmRlZF9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKKwkmZGV2X2F0dHJfY29t cHV0ZV9leHRlbmRlZF9pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2V4dGVuZGVkID0geworCS5uYW1lID0gIjRhZjA0MDBh LTgxYzMtNDdkYi1hNmI2LWRlZGRiZDc1NjgwZSIsCisJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVf ZXh0ZW5kZWQsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19jb21wdXRlX2wzX2NhY2hlX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09N UFVURV9MM19DQUNIRSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5t b2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkLAorCS5zdG9y ZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9s M19jYWNoZVtdID0geworCSZkZXZfYXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkLmF0dHIsCisJTlVM TCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNf Y2FjaGUgPSB7CisJLm5hbWUgPSAiMGUyMmY5OTUtNzljYS00ZjY3LTgzYWItZTlkOTc3MjQ4OGQ4 IiwKKwkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9sM19jYWNoZSwKK307CisKK3N0YXRpYyBzc2l6 ZV90CitzaG93X2hkY19hbmRfc2ZfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIl ZFxuIiwgTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX2hkY19hbmRfc2ZfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1l ID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2hkY19hbmRfc2ZfaWQsCisJ LnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19oZGNf YW5kX3NmW10gPSB7CisJJmRldl9hdHRyX2hkY19hbmRfc2ZfaWQuYXR0ciwKKwlOVUxMLAorfTsK Kworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfaGRjX2FuZF9zZiA9IHsKKwku bmFtZSA9ICJiYzJhMDBmNy1jYjhhLTRmZjItOGFkMC1lMjQxZGFkMTY5MzciLAorCS5hdHRycyA9 ICBhdHRyc19oZGNfYW5kX3NmLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfbDNfMV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzEp OworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMV9pZCA9 IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNo b3dfbDNfMV9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHJzX2wzXzFbXSA9IHsKKwkmZGV2X2F0dHJfbDNfMV9pZC5hdHRyLAorCU5VTEwsCit9 OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18xID0geworCS5uYW1l ID0gImQyYmJlNzkwLWYwNTgtNDJkOS04MWM2LWNkZWRjZjY1NWJjMiIsCisJLmF0dHJzID0gIGF0 dHJzX2wzXzEsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19sM18yX2lkKHN0cnVjdCBkZXZp Y2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJ cmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMik7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18yX2lkID0geworCS5hdHRy ID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19sM18yX2lk LAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNf bDNfMltdID0geworCSZkZXZfYXR0cl9sM18yX2lkLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2wzXzIgPSB7CisJLm5hbWUgPSAiMmY4ZTMy ZTQtNTk1Ni00NmUyLWFmMzEtYzhlYTk1ODg3MzMyIiwKKwkuYXR0cnMgPSAgYXR0cnNfbDNfMiwK K307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X2wzXzNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3By aW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18zKTsKK30KKworc3RhdGljIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzNfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1l ID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2wzXzNfaWQsCisJLnN0b3Jl ID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18zW10gPSB7 CisJJmRldl9hdHRyX2wzXzNfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMyA9IHsKKwkubmFtZSA9ICJjYTA0NmFhZC1iNWZiLTQx MDEtYWRjZS02NDczZWU2ZTViMTQiLAorCS5hdHRycyA9ICBhdHRyc19sM18zLAorfTsKKworc3Rh dGljIHNzaXplX3QKK3Nob3dfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQor eworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJf QU5EX1BJWEVMX0JBQ0tFTkQpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg ZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZCA9IHsKKwkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZF9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKKwkm ZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZC5hdHRyLAorCU5VTEwsCit9 OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yYXN0ZXJpemVyX2FuZF9w aXhlbF9iYWNrZW5kID0geworCS5uYW1lID0gIjYwNWYzODhmLTI0YmItNDU1Yy04OGUzLThkNTdh ZTBkN2U5ZiIsCisJLmF0dHJzID0gIGF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQs Cit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd19zYW1wbGVyX2lkKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfU0FNUExFUik7Cit9CisKK3N0YXRp YyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9zYW1wbGVyX2lkID0geworCS5hdHRy ID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19zYW1wbGVy X2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cnNfc2FtcGxlcltdID0geworCSZkZXZfYXR0cl9zYW1wbGVyX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3NhbXBsZXIgPSB7CisJLm5h bWUgPSAiMzFkZDE1N2MtYmY0ZS00YmFiLWJmMmItZjVjODE3NGFmMWFmIiwKKwkuYXR0cnMgPSAg YXR0cnNfc2FtcGxlciwKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X3RkbF8xX2lkKHN0cnVj dCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYp Cit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVERMXzEpOwor fQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzFfaWQgPSB7 CisJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93 X3RkbF8xX2lkLAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cnNfdGRsXzFbXSA9IHsKKwkmZGV2X2F0dHJfdGRsXzFfaWQuYXR0ciwKKwlOVUxMLAor fTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzEgPSB7CisJLm5h bWUgPSAiMTA1ZGI5MjgtNTU0Mi00NjZiLTkxMjgtZTFmM2M5MTQyNmNiIiwKKwkuYXR0cnMgPSAg YXR0cnNfdGRsXzEsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd190ZGxfMl9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQor eworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8yKTsKK30K Kworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8yX2lkID0gewor CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd190 ZGxfMl9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHJzX3RkbF8yW10gPSB7CisJJmRldl9hdHRyX3RkbF8yX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8yID0geworCS5uYW1l ID0gIjAzZGI5NGQyLWIzN2YtNGM1OC1hNzkxLTBkMjA2N2IwMTNiYiIsCisJLmF0dHJzID0gIGF0 dHJzX3RkbF8yLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfY29tcHV0ZV9leHRyYV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBV VEVfRVhUUkEpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJf Y29tcHV0ZV9leHRyYV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0 NDQgfSwKKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9leHRyYV9pZCwKKwkuc3RvcmUgPSBOVUxMLAor fTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfZXh0cmFbXSA9IHsK KwkmZGV2X2F0dHJfY29tcHV0ZV9leHRyYV9pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2V4dHJhID0geworCS5uYW1lID0g ImFhN2EzZmI5LTIyZmItNDNmZi1hMzJkLTBhYjZjMTNiYmQxNiIsCisJLmF0dHJzID0gIGF0dHJz X2NvbXB1dGVfZXh0cmEsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd192bWVfcGlwZV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1ZNRV9Q SVBFKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3ZtZV9w aXBlX2lkID0geworCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5z aG93ID0gc2hvd192bWVfcGlwZV9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3ZtZV9waXBlW10gPSB7CisJJmRldl9hdHRyX3ZtZV9waXBl X2lkLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdy b3VwX3ZtZV9waXBlID0geworCS5uYW1lID0gIjM5OGE0MjY4LWVmNmYtNGZmYy1iNTVmLTNjN2I1 MzYzY2U2MSIsCisJLmF0dHJzID0gIGF0dHJzX3ZtZV9waXBlLAorfTsKKworc3RhdGljIHNzaXpl X3QKK3Nob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i LCBNRVRSSUNfU0VUX0lEX1RFU1RfT0EpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfdGVzdF9vYV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAu bW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfdGVzdF9vYV9pZCwKKwkuc3RvcmUgPSBOVUxM LAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Rlc3Rfb2FbXSA9IHsKKwkm ZGV2X2F0dHJfdGVzdF9vYV9pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCBncm91cF90ZXN0X29hID0geworCS5uYW1lID0gImJhYTNjN2U0LTUyYjYt NGI4NS04MDFlLTQ2NWE5NGI3NDZkZCIsCisJLmF0dHJzID0gIGF0dHJzX3Rlc3Rfb2EsCit9Owor CitpbnQKK2k5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19rYmxndDIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3Nb QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyldOworCWludCBtdXhfbGVuc1tB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKKwlpbnQgcmV0ID0g MDsKKworCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGVycm9yX3JlbmRlcl9iYXNpYzsKKwl9CisJaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMp OworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9jb21wdXRlX2Jhc2ljOworCX0KKwlpZiAoZ2V0 X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7CisJfQorCWlmIChnZXRfbWVtb3J5X3JlYWRzX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9y ZWFkcyk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX21lbW9yeV9yZWFkczsKKwl9CisJaWYg KGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9t ZW1vcnlfd3JpdGVzOworCX0KKwlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7 CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7CisJfQorCWlmIChn ZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJy b3JfY29tcHV0ZV9sM19jYWNoZTsKKwl9CisJaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOworCQlp ZiAocmV0KQorCQkJZ290byBlcnJvcl9oZGNfYW5kX3NmOworCX0KKwlpZiAoZ2V0X2wzXzFfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7CisJ CWlmIChyZXQpCisJCQlnb3RvIGVycm9yX2wzXzE7CisJfQorCWlmIChnZXRfbDNfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyb3JfbDNfMjsKKwl9CisJaWYgKGdldF9sM18zX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOworCQlpZiAocmV0 KQorCQkJZ290byBlcnJvcl9sM18zOworCX0KKwlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQly ZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVy cm9yX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7CisJfQorCWlmIChnZXRfc2FtcGxlcl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2Zz X2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVy KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3Jfc2FtcGxlcjsKKwl9CisJaWYgKGdldF90ZGxf MV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5 c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxf MSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX3RkbF8xOworCX0KKwlpZiAoZ2V0X3RkbF8y X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lz ZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8y KTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfdGRsXzI7CisJfQorCWlmIChnZXRfY29tcHV0 ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9jb21wdXRlX2V4dHJhKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfY29tcHV0ZV9leHRy YTsKKwl9CisJaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF92bWVfcGlwZSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9y X3ZtZV9waXBlOworCX0KKwlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGVycm9yX3Rlc3Rfb2E7CisJfQorCisJcmV0dXJuIDA7CisKK2Vycm9yX3Rlc3Rfb2E6CisJaWYg KGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQor CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf dm1lX3BpcGUpOworZXJyb3Jfdm1lX3BpcGU6CisJaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKK2Vy cm9yX2NvbXB1dGVfZXh0cmE6CisJaWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIpOworZXJyb3JfdGRsXzI6CisJaWYgKGdldF90ZGxf MV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOworZXJy b3JfdGRsXzE6CisJaWYgKGdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9zYW1wbGVyKTsKK2Vycm9yX3NhbXBsZXI6CisJaWYgKGdldF9yYXN0ZXJp emVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKK2Vycm9yX3Jhc3Rlcml6ZXJf YW5kX3BpeGVsX2JhY2tlbmQ6CisJaWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKK2Vycm9yX2wzXzM6CisJaWYgKGdldF9sM18yX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKK2Vycm9yX2wz XzI6CisJaWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9sM18xKTsKK2Vycm9yX2wzXzE6CisJaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKK2Vycm9yX2hkY19h bmRfc2Y6CisJaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKK2Vycm9yX2NvbXB1dGVfbDNf Y2FjaGU6CisJaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKK2Vycm9yX2NvbXB1dGVfZXh0 ZW5kZWQ6CisJaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKK2Vycm9yX21lbW9yeV93cml0ZXM6CisJ aWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX21lbW9yeV9yZWFkcyk7CitlcnJvcl9tZW1vcnlfcmVhZHM6CisJaWYgKGdldF9yZW5k ZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp CisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKK2Vycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU6CisJaWYg KGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9jb21wdXRlX2Jhc2ljKTsKK2Vycm9yX2NvbXB1dGVfYmFzaWM6CisJaWYgKGdldF9yZW5k ZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lz ZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRl cl9iYXNpYyk7CitlcnJvcl9yZW5kZXJfYmFzaWM6CisJcmV0dXJuIHJldDsKK30KKwordm9pZAor aTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfa2JsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3sKKwljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11eF9yZWdzW0FSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpXTsKKwlpbnQgbXV4X2xlbnNbQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07CisKKwlpZiAoZ2V0X3JlbmRl cl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVy X2Jhc2ljKTsKKwlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOworCWlmIChnZXRfcmVuZGVyX3BpcGVf cHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVy X3BpcGVfcHJvZmlsZSk7CisJaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7CisJaWYgKGdldF9tZW1vcnlf d3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlf d3JpdGVzKTsKKwlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOworCWlmIChnZXRfY29tcHV0 ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlz eXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29t cHV0ZV9sM19jYWNoZSk7CisJaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKKwlpZiAoZ2V0X2wzXzFfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOworCWlmIChnZXRfbDNf Ml9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7CisJaWYg KGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18z KTsKKwlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQp OworCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfc2FtcGxlcik7CisJaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOworCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKKwlpZiAoZ2V0X2NvbXB1dGVfZXh0 cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0 cmEpOworCWlmIChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3ZtZV9waXBlKTsKKwlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfb2Ffa2JsZ3QyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 ZTYxYmZjNGY5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2tibGd0Mi5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBBdXRvZ2VuZXJhdGVkIGZpbGUg YnkgR1BVIFRvcCA6IGh0dHBzOi8vZ2l0aHViLmNvbS9yaWIvZ3B1dG9wCisgKiBETyBOT1QgRURJ VCBtYW51YWxseSEKKyAqCisgKgorICogQ29weXJpZ2h0IChjKSAyMDE1IEludGVsIENvcnBvcmF0 aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29m dHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisg KiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVE SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks CisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAq LworCisjaWZuZGVmIF9fSTkxNV9PQV9LQkxHVDJfSF9fCisjZGVmaW5lIF9fSTkxNV9PQV9LQkxH VDJfSF9fCisKK2V4dGVybiBpbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfa2JsZ3Qy OworCitleHRlcm4gaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfa2JsZ3QyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKK2V4dGVybiBpbnQgaTkxNV9wZXJmX3JlZ2lz dGVyX3N5c2ZzX2tibGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCitl eHRlcm4gdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19rYmxndDIoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X29hX2tibGd0My5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9rYmxndDMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZlZDA5 MjU2NmEzMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff a2JsZ3QzLmMKQEAgLTAsMCArMSwzMDQwIEBACisvKgorICogQXV0b2dlbmVyYXRlZCBmaWxlIGJ5 IEdQVSBUb3AgOiBodHRwczovL2dpdGh1Yi5jb20vcmliL2dwdXRvcAorICogRE8gTk9UIEVESVQg bWFudWFsbHkhCisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2luY2x1ZGUgPGxpbnV4L3N5c2ZzLmg+CisKKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2lu Y2x1ZGUgImk5MTVfb2Ffa2JsZ3QzLmgiCisKK2VudW0gbWV0cmljX3NldF9pZCB7CisJTUVUUklD X1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAorCU1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQywK KwlNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUsCisJTUVUUklDX1NFVF9JRF9NRU1P UllfUkVBRFMsCisJTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTLAorCU1FVFJJQ19TRVRfSURf Q09NUFVURV9FWFRFTkRFRCwKKwlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEUsCisJTUVU UklDX1NFVF9JRF9IRENfQU5EX1NGLAorCU1FVFJJQ19TRVRfSURfTDNfMSwKKwlNRVRSSUNfU0VU X0lEX0wzXzIsCisJTUVUUklDX1NFVF9JRF9MM18zLAorCU1FVFJJQ19TRVRfSURfUkFTVEVSSVpF Ul9BTkRfUElYRUxfQkFDS0VORCwKKwlNRVRSSUNfU0VUX0lEX1NBTVBMRVIsCisJTUVUUklDX1NF VF9JRF9URExfMSwKKwlNRVRSSUNfU0VUX0lEX1RETF8yLAorCU1FVFJJQ19TRVRfSURfQ09NUFVU RV9FWFRSQSwKKwlNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFLAorCU1FVFJJQ19TRVRfSURfVEVTVF9P QSwKK307CisKK2ludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19rYmxndDMgPSAxODsK Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRl cl9iYXNpY1tdID0geworCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHgyNzE0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwK Kwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9N TUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTY2YzAxZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxNzAyODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTIzNzAyODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTZlYzAxZTAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MzAzMTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTU5 MzAzZGYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWE0ZTAzODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE2YzAwNTMgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGExYjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWMxYzAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZjEwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDQyZjEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGE0Yzg0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAw MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjY2MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAw ZjAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTYyY2EyMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDgyZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzMwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMzMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDAxNzAwMjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxNzAwMjEgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MTAxNzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzM2MwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDgzM2MwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNzA4 MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNzA4NDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTAzNzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWFjZTAyMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGFlYzUzMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTBlYzAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWNlYzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE5 YjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM5YzAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGNjYzAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE4ZDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTA4ZjAwMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTZhYzgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzMwMzEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGY5MzNlM2YgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDE5MzNkMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDM5MzA3M2MgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDU5MzAwMGUgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWQ5MDAxNTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDAxNTggfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmY5 MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTU5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwM2YgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTE5MDIyNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4NTU5MDAyNDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwODQgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4NDc5MDE0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDIy MjAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDIgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDBjNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5 MDIyMjIgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnICoqcmVncywKKwkJCSAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJ QlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7 CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVu cykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRlcl9iYXNpYzsKKwlsZW5zW25d ID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7CisJbisrOworCisJcmV0dXJu IG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z19jb21wdXRlX2Jhc2ljW10gPSB7CisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZs ZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAw MDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1 OCksIDB4MDAwMDIwMDEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDA3NzgwMDggfSwKKwl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDgg fSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7CisJeyBfTU1J TygweDk4ODgpLCAweDEwNGYwMGUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyNGYxYzAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMGUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3 OTA2ODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAzIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhNGUwODIwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NGYwOTAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGYwMDMyIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBhNGYxODkxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNGYwZTAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBlNGYwMDNjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGYwZDgwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAyNGYwMDNiIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNmMw MDAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NmMwMTAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBjNmMwMDBjIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNmMwYjAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDE4NmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAw MWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MWI4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBjMWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMWI4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMWM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDI0IH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2NWI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NWI0MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBhNWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNWI4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBlNWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNWI4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFhNWM2MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNWMwMDFiIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEyNWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0NWM4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwNGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBh NGMyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMjA4IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMGRhMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBlMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMGQyMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBjMGY1NDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NTAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMmNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE2MmNmYjAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMGJlIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAyMmNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmNjMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE5OTAwMTU3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFi OTAwMTU4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTA1IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDFmOTAwMTAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDExOTAwZmZmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDU1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODIxIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDQ3OTAwODAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODAyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAyIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIyIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDUzOTA0NDQ0IH0sCit9OworCitzdGF0aWMgaW50CitnZXRfY29tcHV0ZV9i YXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAg ICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCSAgICAgaW50ICpsZW5zKQor eworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21w dXRlX2Jhc2ljOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9iYXNp Yyk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7CisJeyBfTU1J TygweDI3MjQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s CisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAw MDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3 NzApLCAweDAwMDdmZmVhIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZjIH0sCisJeyBf TU1JTygweDI3NzgpLCAweDAwMDdhZmZhIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZk IH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDc5ZmZhIH0sCisJeyBfTU1JTygweDI3ODQpLCAw eDAwMDBmM2ZiIH0sCisJeyBfTU1JTygweDI3ODgpLCAweDAwMDdiZjdhIH0sCisJeyBfTU1JTygw eDI3OGMpLCAweDAwMDBmN2U3IH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMDdmZWZhIH0sCisJ eyBfTU1JTygweDI3OTQpLCAweDAwMDBmN2NmIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMDc3 ZmZhIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBlZmRmIH0sCisJeyBfTU1JTygweDI3YTAp LCAweDAwMDZmZmZhIH0sCisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBjZmJmIH0sCisJeyBfTU1J TygweDI3YTgpLCAweDAwMDNmZmZhIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDA1ZjdmIH0s Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jl bmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwK Kwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MjUwMjQgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKKwl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNDUwNDQgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKKwl7IF9N TUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7CisJeyBfTU1JTygw eDk4ODgpLCAweDBjMGUwMDFmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMGYwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEwMTE2ODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OGEw M2UwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExODI0YzAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDExODMwMDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEzODQwMDIwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDExODUwMDE5IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExODYwMDA3IH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAxODcwYzQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3 ODgwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmY0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBhNGMwMDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MGQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMGU1NDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAwMGUwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MGYwMDQwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAwMGYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMmM4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA2MTEwMDEyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MTMxMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDAxODk4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBkODkwMTAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAzODk4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5 ODA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiODA4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAzODBjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOGEwMDc1IH0sCisJeyBf TU1JTygweDk4ODgpLCAweDFkOGEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOGE4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOGE0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDEzOGE4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkODFhMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE1ODE4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3ODE4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBiODIwMDMwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3ODI4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBkODI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBmODI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1ODI0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBkODMwMDAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1ODMwMDBjIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA5ODMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAz ODM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3ODM4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBiODQwOTgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzODQ0ZDgwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDExODQwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5ODQ4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA5ODUwMDgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAzODUwMDAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxODUwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA3ODYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmODYwNDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA5ODcwMDMyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxODg4 MDUyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExODgwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA5ODg0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTMxMDAxIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFkOTMwMDAxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTM0MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFiOTU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFk OTUwMDk0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE5OTU4MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA5ZTU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiZTU4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAzZTVjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1OTJjMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiOTI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBkOTI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOTI0MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDExOTI4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEzOTJjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA5OTI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAxOTg1 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3OTg4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA5OTgxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBiOTgyMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBkOTgyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBmOTg5MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA1OTgyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEz OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDIzOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI1OTA4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDJiOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDJmOTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDE1OTA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA0 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOTBjMDgwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwNDQwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDU1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwNDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwYzIxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3 OTAwNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDQyIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDRiOTAwMDI0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQxIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDUzOTAwNDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJCSAgIGludCAqbGVucykKK3sKKwlpbnQg biA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX3BpcGVf cHJvZmlsZTsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9waXBlX3By b2ZpbGUpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7CisJeyBfTU1JTygw eDI3MmMpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3MjgpLCAweGZmZmZmZmZmIH0sCisJ eyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3MTgp LCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NGMpLCAweDg2NTQzMjEwIH0s CisJeyBfTU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAw MDA2NjY3IH0sCisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3 NWMpLCAweDg2NTQzMjEwIH0sCisJeyBfTU1JTygweDI3NTgpLCAweDg2NTQzMjEwIH0sCisJeyBf TU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCisJeyBfTU1JTygweDI3NTApLCAweDAwMDAwMDAw IH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCisJeyBfTU1JTygweDI3NzQpLCAw eDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0sCisJeyBfTU1JTygw eDI3N2MpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDdmODcyIH0sCisJ eyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3ODgpLCAweDAwMDdm OGJhIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1JTygweDI3OTAp LCAweDAwMDdmODdhIH0sCisJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZTAwIH0sCisJeyBfTU1J TygweDI3OTgpLCAweDAwMDdmOGVhIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTAwIH0s CisJeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0sCisJeyBfTU1JTygweDI3YTQpLCAweDAw MDBmZTAwIH0sCisJeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0sCisJeyBfTU1JTygweDI3 YWMpLCAweDAwMDBmZTAwIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkc1tdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgw MDAwNTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhl NjU4KSwgMHgwMDAyNTAyNCB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAorCXsg X01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1 NCB9LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAorfTsKKworc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV9yZWFkc1tdID0geworCXsgX01N SU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz ZjkwMDA2NCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTgxMWIxMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAxYSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxYjgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYjkzMDA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwM2U1ODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNWU1YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1 NDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE1MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgyMTkwMDE1MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE1MiB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgyNTkwMDE1MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwMDE1NCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwMDE1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgy YjkwMDE1NiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE1NyB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgyZjkwMDE1ZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEwNSB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxNTkwMDEwMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwMDEw MSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxOTkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxZDkwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGM2MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg1NTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0NzkwMGM2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X21lbW9y eV9yZWFkc19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ CSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJICAgIGludCAqbGVucykK K3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfbWVt b3J5X3JlYWRzOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRz KTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKKwl7IF9NTUlPKDB4Mjcy YyksIDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcyOCksIDB4ZmZmZmZmZmYgfSwKKwl7IF9N TUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAg fSwKKwl7IF9NTUlPKDB4MjcxYyksIDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcxOCksIDB4 ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKKwl7 IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAgfSwKKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2 NjcgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc1Yyks IDB4ODY1NDMyMTAgfSwKKwl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKKwl7IF9NTUlP KDB4Mjc1NCksIDB4MDAwMDY0NjUgfSwKKwl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKKwl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4MjIgfSwKKwl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEg fSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4 MDAwN2Y4N2EgfSwKKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4 Mjc5OCksIDB4MDAwN2Y4ZWEgfSwKKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKKwl7 IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZl MDAgfSwKKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKKwl7IF9NTUlPKDB4MjdhYyks IDB4MDAwMGZlMDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAyNTAyNCB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAorCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9 LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTE4MTBjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MTAwMWEgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5 MDEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MTEzMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDU4MTFiMTIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMWEgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWI4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWI5MzAwNTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNTgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MjE5MDAxNjEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDAxNjIgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MjU5MDAxNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNjQgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNjUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmI5 MDAxNjYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNjcgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MmY5MDAxNTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTk5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4NTU5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDBjMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDc5MDBjNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF9tZW1vcnlf d3JpdGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJICAgICBpbnQgKmxlbnMp Cit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21l bW9yeV93cml0ZXM7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfd3Jp dGVzKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKKwl7IF9NTUlP KDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAw MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3 MCksIDB4MDAwN2ZjMmEgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGJmMDAgfSwKKwl7IF9N TUlPKDB4Mjc3OCksIDB4MDAwN2ZjNmEgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmMDAg fSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2ZjOTIgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4 MDAwMGJmMDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2ZjYTIgfSwKKwl7IF9NTUlPKDB4 Mjc4YyksIDB4MDAwMGJmMDAgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZjMzIgfSwKKwl7 IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGJmMDAgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Zj OWEgfSwKKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGJmMDAgfSwKKwl7IF9NTUlPKDB4MjdhMCks IDB4MDAwN2ZlNmEgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGJmMDAgfSwKKwl7IF9NTUlP KDB4MjdhOCksIDB4MDAwN2ZlN2EgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGJmMDAgfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29t cHV0ZV9leHRlbmRlZFtdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsg X01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAw MSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAorCXsgX01NSU8oMHhlNDVjKSwg MHgwMDA4ODA3OCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAorCXsgX01NSU8o MHhlNjVjKSwgMHgwMGEwODkwOCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTA2YzAwZTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgxNjAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MTYxYzgwMTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzAxMjAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU0 ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MWE0ZWFhYTAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZTgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDg0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGU2YzBiMDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAyMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDI2YzAwMGMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MWE2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDAxYjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwNDEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYx YzQyMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzQ0NDMgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGExYzQ2NDUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYzc2NDcgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDQxYzczNTcgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMzAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MWExYzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxYzgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDA0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Y2FhMmEgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyYWEgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2Ew MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIw ZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZjU0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1MTUgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTYyY2FhMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYWEgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDIyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MTE5MDdmZmYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDE5MDAwNDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4MDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDc5 MDA4NDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NDk5MDA4NDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDM5MDA4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKK307CisKK3N0YXRp YyBpbnQKK2dldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJ CQkJaW50ICpsZW5zKQoreworCWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0g bXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfY29tcHV0ZV9leHRlbmRlZCk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2Nh Y2hlW10gPSB7CisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3 MTQpLCAweDMwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBf TU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAw IH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmZhIH0sCisJeyBfTU1JTygweDI3NzQpLCAw eDAwMDBmZWZlIH0sCisJeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmZhIH0sCisJeyBfTU1JTygw eDI3N2MpLCAweDAwMDBmZWZkIH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMDdmZmZhIH0sCisJ eyBfTU1JTygweDI3OTQpLCAweDAwMDBmYmVmIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMDdm ZmZhIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYmRmIH0sCit9OworCitzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9 IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKKwl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAxMDExMDAgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAyMDEyMDAgfSwKKwl7 IF9NTUlPKDB4ZTU1YyksIDB4MDAzMDEzMDAgfSwKKwl7IF9NTUlPKDB4ZTY1YyksIDB4MDA0MDE0 MDAgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19j b21wdXRlX2wzX2NhY2hlW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE2NmMwNzYwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDNmOTAw MDAzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDBlNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDFhNGU4MDIwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDUxIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2 NmM1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVkIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBlNmM1ZTVmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDE4NmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAwMWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MWI4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA4MWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMWNl MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDMwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAwNGM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMyYTAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBjNGMwMjgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4 MGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBjMGYwNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGYxNTAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDEwMGYwMTQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDE2MmMwYTAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMGEwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDAzOTMzMzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDMyIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDExOTMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTMw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0sCisJeyBfTU1JTygweDk4ODgp LCAweDFmOTAwMTU4IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDE5OTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDExOTAwMzBmIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUx OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDU1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDIxIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDU3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDU5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTA0NDQ0IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfY29t cHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKKwkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJCWludCAqbGVucykK K3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfY29t cHV0ZV9sM19jYWNoZTsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVf bDNfY2FjaGUpOworCW4rKzsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZltdID0geworCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAor CXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgw MDAwMCB9LAorCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorCXsgX01N SU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmRmZiB9 LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19o ZGNfYW5kX3NmW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s CisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfaGRjX2FuZF9zZltdID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRmMDIz MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMDZjMDIzMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzNDQwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYTRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMDRmMTg4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRm MDhiYiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRmMDAxYiB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDZjMDEwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjZjMDAwYiB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxYTZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFiODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx YTFjMTgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjViYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDViNDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDVjODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjVjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxODVjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDBhMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTBmMDA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjYzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNDJjYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjYzAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YTJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjgyODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzMDVjMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwOTgzMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDA4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMzkyODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZjk4ODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgzMTkwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA0MCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg1MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDgwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqKnJlZ3MsCisJCQkgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9zZjsKKwlsZW5zW25dID0gQVJS QVlfU0laRShtdXhfY29uZmlnX2hkY19hbmRfc2YpOworCW4rKzsKKworCXJldHVybiBuOworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNfMVtd ID0geworCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwg MHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHgyNzE0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAor CXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEw MDA3MCB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAorCXsgX01NSU8oMHgyNzc4 KSwgMHgwMDAxNDAwMiB9LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYzNmZiB9LAorCXsgX01N SU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAorCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYzdmZiB9 LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAorCXsgX01NSU8oMHgyNzhjKSwgMHgw MDAwZDNmZiB9LAorCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDcwMCB9LAorCXsgX01NSU8oMHgy Nzk0KSwgMHgwMDAwZmYxZiB9LAorCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMTQwMiB9LAorCXsg X01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAorCXsgX01NSU8oMHgyN2EwKSwgMHgwMDAwMTAw MiB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAorCXsgX01NSU8oMHgyN2E4KSwg MHgwMDAwMDQwMiB9LAorCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmQzZiB9LAorfTsKKworc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18xW10gPSB7CisJ eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1NTgpLCAweDAwMDEw MDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCisJeyBfTU1JTygweGU3NTgp LCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCisJeyBfTU1J TygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0s Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbDNfMVtd ID0geworCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjN2I0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxNjZjMDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYwMzQ0NCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYTYxMzQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlYTgwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRl ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjNTMyNyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTZjNTQyNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMmEwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjZjMjg1YiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDA1YyB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxYTZjMDgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFiYzAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwZTFiYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFiODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFi YzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzYyB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjFjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxODFjODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NjViNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVjMTAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDYwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDYwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYzYxMDA0NCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYxMDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwYzRjMDJhOCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYTAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYTRjMDAyYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBk ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxMDBmMDE1NCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgx ODJjMDBhYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjODAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMTkwZmZjMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg0OTkwMDQyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0Yjkw MDAyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg1MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDQwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0MzkwMDQyMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAorfTsKKworc3RhdGljIGludAorZ2V0 X2wzXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgaW50ICpsZW5zKQorewor CWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18xOwor CWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMSk7CisJbisrOworCisJcmV0dXJu IG47Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z19sM18yW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJ eyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzAp LCAweDAwMTAwMDcwIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCisJeyBfTU1J TygweDI3NzgpLCAweDAwMDI4MDAyIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDA4N2ZmIH0s CisJeyBfTU1JTygweDI3ODApLCAweDAwMDIwMDAyIH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAw MDA4ZmZmIH0sCisJeyBfTU1JTygweDI3ODgpLCAweDAwMDA4MDAyIH0sCisJeyBfTU1JTygweDI3 OGMpLCAweDAwMDBhN2ZmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX2wzXzJbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKKwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwNTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7 IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18yW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDEy NmMwMmUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0NmMwMDAxIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBhNjIzNDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2NGY0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNmMzMzI0IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA0NmMzNDIyIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDFhNmMwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMWJj MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MWJjMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDE0MWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDE4MWM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2NWI0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFh NWMxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NjE0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBjNjIwMDQ0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNjIwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA2NjIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAyMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMGY0MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MmM4 MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA4MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDBjMmNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOTBmODAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUx OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfbDNfMl9t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAgICBpbnQgKmxlbnMpCit7CisJaW50IG4g PSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzI7CisJbGVuc1tu XSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18yKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzNb XSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc0NCks IDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlP KDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAx MDAwNzAgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZmZjEgfSwKKwl7IF9NTUlPKDB4Mjc3 OCksIDB4MDAwMjgwMDIgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDg3ZmYgfSwKKwl7IF9N TUlPKDB4Mjc4MCksIDB4MDAwMjAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYg fSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDgwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4 MDAwMGE3ZmYgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9l dV9jb25maWdfbDNfM1tdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAorCXsg X01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAx MSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01NSU8oMHhlNDVjKSwg MHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAorCXsgX01NSU8o MHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBtdXhfY29uZmlnX2wzXzNbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI2YzRlODAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQ2YzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MGE2MzM0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDY0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzMzMjEgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDQ2YzM0MmYgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MWE2YzIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYx YjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTYxYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWExYzE4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MDQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MzAwNDQgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MTA2MzAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MzAwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDg0YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwYWEgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEy YzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MTE5MGY4MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwMDIgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKK307CisKK3N0YXRp YyBpbnQKK2dldF9sM18zX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJICAgIGludCAq bGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25m aWdfbDNfMzsKKwlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzMpOworCW4rKzsK KworCXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0geworCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAor CXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwgMHgzMDgw MDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzI0 KSwgMHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAorCXsgX01N SU8oMHgyNzc0KSwgMHgwMDAwZWZmZiB9LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwNjAwMCB9 LAorCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjNmZiB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1JTygweGU1 NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCisJeyBf TU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUw IH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2NWMpLCAw eDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9j b25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0geworCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDJmMzgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDRkMDUwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgxMjBkMDNjMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDBkMDNjZiB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDAwNCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YzRlNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJmMDQ4MCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwODJmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwYTRjMDA5MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRkMDAy NyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRkMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMDBkMGQ0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkODAzZiB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNDBkODAyMyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBkMDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBm MDAxMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBmMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTBmMDA1MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMTQwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHg0MzkwMTQ4NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCSAgICBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkJCQkgICAgaW50ICpsZW5zKQorewor CWludCBuID0gMDsKKworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CisKKwlyZWdzW25dID0gbXV4X2NvbmZpZ19yYXN0ZXJp emVyX2FuZF9waXhlbF9iYWNrZW5kOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19zYW1wbGVy W10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQp LCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3MTQpLCAweDcwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s CisJeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAw MDBjMDAwIH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDBlN2ZmIH0sCisJeyBfTU1JTygweDI3 NzgpLCAweDAwMDAzMDAwIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDBmOWZmIH0sCisJeyBf TU1JTygweDI3ODApLCAweDAwMDAwYzAwIH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTdm IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmln X3NhbXBsZXJbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKKwl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKKwl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK Kwl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKKwl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKKwl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKKwl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19zYW1wbGVyW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDE0MTUyYzAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE2MTUwMDA1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEy MTYwMGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0MzUyYzAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDE2MzUwMDA1IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMzYwMGEwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDE0NTUyYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE2NTUwMDA1 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyNTYwMGEwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2MmY2MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmYyMDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBjNGMwMDUwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDEwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGRh MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAyMGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMzUwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBjMGZiMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBl MGYwMGRhIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMDI4IH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDBhMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmRjMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MmQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBjMTM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMTMyMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA0MTNjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjMTQwMDE4IH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDBjMTU3MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMTUwMDc4IH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDEwMTUwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTYy MTgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA0MTc0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMzNhMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA0MzMzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDE0MzQ4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDE2MzQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAy MzU3ODcwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwMzUwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0MzYwMDQzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMzYwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDA0MzcxMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNTM4MDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwNTM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDA2NTMzMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFjNTQwMDIwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDEyNTQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlNTU3MDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDAwNTU3ODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEwNTUw MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NTYwMDQzIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAyNTYwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2NTcxMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDExOTBmZjgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3 OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDRiOTAwMDYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQyIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDYwIH0sCit9OworCitzdGF0 aWMgaW50CitnZXRfc2FtcGxlcl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAg ICAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0g PSBtdXhfY29uZmlnX3NhbXBsZXI7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19z YW1wbGVyKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8xW10gPSB7CisJeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0s CisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweDMw ODAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3 NzQpLCAweDAwMDA3ZmZmIH0sCisJeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAwIH0sCisJeyBf TU1JTygweDI3N2MpLCAweDAwMDA5ZmZmIH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAy IH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDBlZmZmIH0sCisJeyBfTU1JTygweDI3ODgpLCAw eDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmM2ZmIH0sCisJeyBfTU1JTygw eDI3OTApLCAweDAwMDAwMDAyIH0sCisJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZGZmIH0sCisJ eyBfTU1JTygweDI3OTgpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBm ZTdmIH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX3RkbF8xW10gPSB7CisJeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCisJeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCisJeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s CisJeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCisJeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCisJeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCisJeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfdGRsXzFbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTI1 MjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZjgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyZjMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMTUgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MGMwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIwZGEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MDYwZDIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAzYTAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MGMwZmYwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAw OTUgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDgyYzgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGMyZDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUyZDQwMDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDIx MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMGMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDIxMTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMWMwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDIxMjE4ODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMjE5YjUg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDIxMzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMzUwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGMzMDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMDQwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDYzMDQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMTgw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMTQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDYzMTQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMjFhODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4MGUzMjAwMzMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwMzEgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGMz MzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDYzMzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MDgwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MDA1MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MDQwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 MDA1MTgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MTQwMDAgfSwKKwl7IF9NTUlPKDB4 OTg4OCksIDB4MGU1MjE4ODAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjFhODAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MDI1MjAwMzMgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MzQw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MzQwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDI1MzEwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmODAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4MDAgfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjIgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4NTk5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwNDAgfSwKK307CisKK3N0YXRpYyBpbnQKK2dldF90ZGxfMV9tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgKipyZWdzLAorCQkgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7CisKKwlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzE7CisJbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ190ZGxfMSk7CisJbisrOworCisJcmV0dXJuIG47Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZGxfMltdID0geworCXsg X01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAw MCB9LAorCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzE0KSwg MHgwMDgwMDAwMCB9LAorCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8o MHgyNzI0KSwgMHgwMDgwMDAwMCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBmbGV4X2V1X2NvbmZpZ190ZGxfMltdID0geworCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAorCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAorCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAxMjAxMSB9LAorCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAorCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAorCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9 LAorCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAorfTsKKworc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3RkbF8yW10gPSB7CisJeyBfTU1JTygweDk4ODgp LCAweDEyMTI0ZDYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDEyMzIyZTYwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDEyNTI0ZDYwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDE0IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAw MGQ4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA0MGRhMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDBjMGZlMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDk3 IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDBhMmM4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMmQ4MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDA2MmQ0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTBjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDA0MTFjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA0MTIx ZmI3IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMTIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDA0MTM1MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMzA4MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA2MzA0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAwMzE4MDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDA2MzE0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAw MzIxYjgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzIwMDNmIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDAwMzM0MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDAyNTBjMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNTFjMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNTIxZmI3IH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDAwNTIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAyNTM1MDAwIH0sCisJeyBfTU1JTygw eDk4ODgpLCAweDExOTBmYzAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQxOTAw ODAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDYzIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfdGRsXzJfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJICAgICBpbnQgKmxlbnMpCit7CisJaW50IG4g PSAwOworCisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MpIDwgMSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3RkbF8yOworCWxlbnNb bl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGRsXzIpOworCW4rKzsKKworCXJldHVybiBuOwor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29t cHV0ZV9leHRyYVtdID0geworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBm bGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7Cit9OworCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9leHRyYVtdID0geworCXsgX01NSU8o MHg5ODg4KSwgMHgxMjEyMDNlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjMyMDNlMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxMjUyMDNlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjky MDNlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMmIyMDNlMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxMmQyMDNlMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRlYzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwNDRlYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlYzAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ODRjYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0MiB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDBkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZTBmMDA2ZCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwNDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJk ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjExNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEyMDAzMyB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEzMTAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMwODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NDMxODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMyMTk4MCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDMyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMzNDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNDUwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUxNDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUyMDAzMyB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMDUyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUzMTAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMGFmODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYWNjMDAwMSB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMDhkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjhk YTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhmYjAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwZThmMDAwMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNmFjODAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMmFkNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjkwODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjkxODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw MjkyMTk4MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDkyMDAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjkzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIwNDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwMmIxNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIyMDAz MyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGIyMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwMmIzMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQwODAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwMGQxODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQyMTk4MCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMGQzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw ZmMwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg1MTkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHg0MzkwMDAwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDQyMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDBhMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZp ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgICAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCQkgICAgIGludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7 CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9leHRyYTsKKwls ZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfZXh0cmEpOworCW4rKzsKKwor CXJldHVybiBuOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRl cl9jb25maWdfdm1lX3BpcGVbXSA9IHsKKwl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwK Kwl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4 MDAwMDAgfSwKKwl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjcy NCksIDB4MzA4MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwMzAgfSwKKwl7IF9N TUlPKDB4Mjc3NCksIDB4MDAwMGZmZjkgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDIg fSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZmZmMgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4 MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZmZjMgfSwKKwl7IF9NTUlPKDB4 Mjc4OCksIDB4MDAxMDAxODAgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZmY2YgfSwKKwl7 IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZm Y2YgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc5Yyks IDB4MDAwMGZmM2YgfSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfdm1lX3BpcGVbXSA9IHsKKwl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKKwl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDgwMDMgfSwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ192bWVfcGlwZVtdID0geworCXsgX01NSU8oMHg5 ODg4KSwgMHgxNDFhNTgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFhMDBjMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgxMjE4MDI0MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE4MDAw MiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNDlhNTgwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxNjlhMDBjMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMjk4MDI0MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxNDk4MDAwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlM2ZjMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJm ODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJmMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDRjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjOTUwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYzRjMDAyYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw ODBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkYTAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDQwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwZTBmNTUwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAx NSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwZTJjODAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYWEwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxODJjMDAwYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE5MzAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwODFhMjhjMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFh MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEzMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjEzYzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODEzZjAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwMDE3MjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3ODAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwODE3YTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw MDE4MDAzNyB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE4MDk0MCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwODE4MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMjE4MDAwMCB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwNDE4MzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNGFmYzAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNmFmMzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgwYWNjNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwY2NjMDAxNSB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwYThkYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhkYTAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgwZThmNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMDhm MDAxNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxNmFjYTAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHgxOGFjMDAwYSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjk5MzAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgwYzlhMjhjMSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwMDlhMDAwMCB9 LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTkzZjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw YzkzZjAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTk3YTAwMCB9LAorCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzk3YTAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwYTk4MDk3NyB9LAorCXsg X01NSU8oMHg5ODg4KSwgMHgwODk4MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNDk4MDAw MCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNjk4MzAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgxMTkwMDBmZiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDA0MCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHg0MTkwMDAyMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwNCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDQwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0Nzkw MDhhNSB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0OTkwMDAwMiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAorCXsgX01N SU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAorfTsKKworc3RhdGljIGludAorZ2V0X3ZtZV9waXBl X211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKKwkJCWludCAqbGVucykKK3sKKwlpbnQgbiA9IDA7 CisKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKKwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKSA8IDEpOworCisJcmVnc1tuXSA9IG11eF9jb25maWdfdm1lX3BpcGU7CisJbGVuc1tu XSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ192bWVfcGlwZSk7CisJbisrOworCisJcmV0dXJuIG47 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190 ZXN0X29hW10gPSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygw eDI3NDQpLCAweDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJ eyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweGYwODAw MDAwIH0sCisJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NzAp LCAweDAwMDAwMDA0IH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3NzgpLCAweDAwMDAwMDAzIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDAwMDAwIH0s CisJeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDA3IH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAw MDAwMDAwIH0sCisJeyBfTU1JTygweDI3ODgpLCAweDAwMTAwMDAyIH0sCisJeyBfTU1JTygweDI3 OGMpLCAweDAwMDBmZmY3IH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMTAwMDAyIH0sCisJeyBf TU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMTAwMDgy IH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZmVmIH0sCisJeyBfTU1JTygweDI3YTApLCAw eDAwMTAwMGMyIH0sCisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZmU3IH0sCisJeyBfTU1JTygw eDI3YTgpLCAweDAwMTAwMDAxIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZmU3IH0sCit9 OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Rlc3Rf b2FbXSA9IHsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z190ZXN0X29hW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDExODEwMDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDA3ODEwMDEzIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0s CisJeyBfTU1JTygweDk4ODgpLCAweDFkODEwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDFi OTMwMDQwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0MDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDFmOTA4MDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDAwIH0sCisJeyBf TU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAw IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAw eDMzOTAwMDAwIH0sCit9OworCitzdGF0aWMgaW50CitnZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCisJCSAgICAgICBpbnQgKmxlbnMpCit7CisJaW50IG4gPSAwOwor CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwg MSk7CisJQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucykgPCAxKTsKKworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3Rlc3Rfb2E7CisJbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKKwluKys7CisKKwlyZXR1cm4gbjsKK30K KworaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfa2JsZ3QzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKK3sKKwlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0g MDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0gMDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPSAwOworCisJ c3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCkgeworCWNhc2UgTUVUUklDX1NF VF9JRF9SRU5ERVJfQkFTSUM6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQor CQkJZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRF Ul9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lz dGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3Qg aGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKwor CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmln X3JlbmRlcl9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0K KwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCisJCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7 CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4 X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWMpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NF VF9JRF9DT01QVVRFX0JBU0lDOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0K KwkJCWdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0g MCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJD T01QVVRFX0JBU0lDXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpf cmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3Vs ZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJ fQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9j b25maWdfY29tcHV0ZV9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKKwor CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfY29tcHV0 ZV9iYXNpYzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9T SVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWMpOworCisJCXJldHVybiAwOworCWNhc2Ug TUVUUklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID0KKwkJCWdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2 X3ByaXYsCisJCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkJICAg ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5v YS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxl IE1VWCBjb25maWcgZm9yIFwiUkVOREVSX1BJUEVfUFJPRklMRVwiIG1ldHJpYyBzZXRcbiIpOwor CisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0 aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNl cnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAq LworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7CisJCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7CisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2Nv bmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19T RVRfSURfTUVNT1JZX1JFQURTOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0K KwkJCWdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCSAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkg eworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1P UllfUkVBRFNcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0 IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisK KwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZp Z19tZW1vcnlfcmVhZHM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzKTsKKworCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRz OworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfbWVtb3J5X3JlYWRzKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19T RVRfSURfTUVNT1JZX1dSSVRFUzoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 CisJCQlnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LAorCQkJCQkJICAgICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi TUVNT1JZX1dSSVRFU1wiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAq X3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291 bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hv dWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJ CX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJf Y29uZmlnX21lbW9yeV93cml0ZXM7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz X2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbWVtb3J5X3dyaXRlcyk7CisK KwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX21lbW9y eV93cml0ZXM7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlf U0laRShmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKKworCQlyZXR1cm4gMDsKKwljYXNl IE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRDoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9CisJCQlnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2 LAorCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkJCWRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmln IGZvciBcIkNPTVBVVEVfRVhURU5ERURcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFM IGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5k IHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJ CSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAt RUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJ Yl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOworCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1 dGVfZXh0ZW5kZWQpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4 X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7 CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEU6CisJ CWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2NvbXB1dGVfbDNfY2Fj aGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cywKKwkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigi Tm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0wzX0NBQ0hFXCIgbWV0cmljIHNl dFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsK KwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKKworCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKKwkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX2NvbXB1dGVfbDNfY2FjaGUpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9J RF9IRENfQU5EX1NGOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdl dF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzLAorCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK KwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RF QlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJIRENfQU5EX1NGXCIgbWV0 cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxy ZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2 ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJl cXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsKKwkJfQorCisJCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZjsK KwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3NmKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfaGRjX2FuZF9zZjsKKwkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2hkY19hbmRf c2YpOworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9MM18xOgorCQlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdldF9sM18xX211eF9jb25maWcoZGV2X3By aXYsCisJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIkwzXzFcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFM OworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3Vu dGVyX2NvbmZpZ19sM18xOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzEpOworCisJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19sM18xOworCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNf MSk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzI6CisJCWRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJp diwKKwkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBj b25maWcgZm9yIFwiTDNfMlwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVz ZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQg d291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28g c2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7 CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50 ZXJfY29uZmlnX2wzXzI7CisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbDNfMik7CisKKwkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmlnX2wzXzI7CisJCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18y KTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJQ19TRVRfSURfTDNfMzoKKwkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9CisJCQlnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2 LAorCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNv bmZpZyBmb3IgXCJMM18zXCIgbWV0cmljIHNldFxuIik7CisKKwkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBzbyBpdCB3 b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkgKiBzbyBz aG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJTlZBTDsK KwkJfQorCisJCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRl cl9jb25maWdfbDNfMzsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0K KwkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18zKTsKKworCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfbDNfMzsKKwkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzMp OworCisJCXJldHVybiAwOworCWNhc2UgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhF TF9CQUNLRU5EOgorCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdldF9y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCQkJ CSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJCQkJICAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmln IGZvciBcIlJBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKKwor CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8K KwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k OworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOworCisJCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K KwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZCk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVI6CisJCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhk ZXZfcHJpdiwKKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJCQkg ICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FNUExFUlwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkv KiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJ CQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNl IGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJ cmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn cyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3NhbXBsZXI7CisJCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfc2FtcGxl cik7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29uZmln X3NhbXBsZXI7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlf U0laRShmbGV4X2V1X2NvbmZpZ19zYW1wbGVyKTsKKworCQlyZXR1cm4gMDsKKwljYXNlIE1FVFJJ Q19TRVRfSURfVERMXzE6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJ Z2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsCisJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCisJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7 CisJCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzFcIiBtZXRyaWMg c2V0XG4iKTsKKworCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcworCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCisJCQkgKi8KKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMTsKKwkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ190ZGxfMSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZs ZXhfZXVfY29uZmlnX3RkbF8xOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K KwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzEpOworCisJCXJldHVybiAwOworCWNh c2UgTUVUUklDX1NFVF9JRF9URExfMjoKKwkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmln cyA9CisJCQlnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJICAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKKwkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewor CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwi IG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2Zz IGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVu IGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVl biByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3RkbF8yOwor CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX3RkbF8yKTsKKworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Mg PQorCQkJZmxleF9ldV9jb25maWdfdGRsXzI7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn c19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZGxfMik7CisKKwkJcmV0dXJu IDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkE6CisJCWRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZf cHJpdiwKKwkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQkgICAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOworCQlpZiAoZGV2X3ByaXYtPnBlcmYu b2Eubl9tdXhfY29uZmlncyA9PSAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJs ZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhUUkFcIiBtZXRyaWMgc2V0XG4iKTsKKworCQkJ LyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwor CQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFj ZSBhbmQKKwkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCisJCQkgKi8KKwkJ CXJldHVybiAtRUlOVkFMOworCQl9CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3MgPQorCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhOworCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmln X2NvbXB1dGVfZXh0cmEpOworCisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9CisJCQlm bGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhOworCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3NfbGVuID0KKwkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRyYSk7CisK KwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFOgorCQlkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID0KKwkJCWdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9w cml2LAorCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCisJCQkJCQlkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKKwkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPT0gMCkgeworCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZp ZyBmb3IgXCJWTUVfUElQRVwiIG1ldHJpYyBzZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVz ZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQg d291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28g c2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7 CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50 ZXJfY29uZmlnX3ZtZV9waXBlOworCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQorCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBlKTsKKworCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQorCQkJZmxleF9ldV9jb25maWdfdm1lX3BpcGU7CisJ CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1 X2NvbmZpZ192bWVfcGlwZSk7CisKKwkJcmV0dXJuIDA7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1RF U1RfT0E6CisJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3Rlc3Rf b2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwKKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzLAorCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJ CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVEVTVF9PQVwiIG1ldHJpYyBz ZXRcbiIpOworCisJCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCisJCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAorCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKKwkJCSAqLworCQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9CisJCQliX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2E7CisJCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9CisJCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfdGVzdF9vYSk7CisKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJ CWZsZXhfZXVfY29uZmlnX3Rlc3Rfb2E7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPQorCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKKworCQlyZXR1cm4g MDsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVOT0RFVjsKKwl9Cit9CisKK3N0YXRpYyBzc2l6ZV90 CitzaG93X3JlbmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5u YW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19p ZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X3JlbmRlcl9iYXNpY1tdID0geworCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKKwlO VUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jh c2ljID0geworCS5uYW1lID0gIjAyODZjOTIwLTJmNmQtNDkzYi1iMjJkLTdhNTI4MGRmNDNkZSIs CisJLmF0dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKK307CisKK3N0YXRpYyBzc2l6ZV90Citz aG93X2NvbXB1dGVfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQgPSB7CisJLmF0dHIgPSB7IC5u YW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2NvbXB1dGVfYmFzaWNf aWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRy c19jb21wdXRlX2Jhc2ljW10gPSB7CisJJmRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQuYXR0ciwK KwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0 ZV9iYXNpYyA9IHsKKwkubmFtZSA9ICI5ODIzYWFhMS1iMDZmLTQwY2UtODg0Yi1jZDc5OGM3OWYw YzIiLAorCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2Jhc2ljLAorfTsKKworc3RhdGljIHNzaXpl X3QKK3Nob3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUpOworfQorCitz dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmls ZV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hv dyA9IHNob3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKwor c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsK KwkmZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZC5hdHRyLAorCU5VTEwsCit9OworCitz dGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0g eworCS5uYW1lID0gImM3YzczNWYzLWNlNTgtNDVjZi1hYTA0LTMwYjE4M2YxZmFmZiIsCisJLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGUsCit9OworCitzdGF0aWMgc3NpemVfdAor c2hvd19tZW1vcnlfcmVhZHNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9NRU1PUllfUkVBRFMpOworfQorCitzdGF0aWMgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkID0geworCS5hdHRyID0geyAubmFt ZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19tZW1vcnlfcmVhZHNfaWQs CisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19t ZW1vcnlfcmVhZHNbXSA9IHsKKwkmZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkLmF0dHIsCisJTlVM TCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV9yZWFk cyA9IHsKKwkubmFtZSA9ICI5NmVjMjIxOS0wNDBiLTQyOGEtODU2YS02YmMwMzM2M2EwNTciLAor CS5hdHRycyA9ICBhdHRyc19tZW1vcnlfcmVhZHMsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hv d19tZW1vcnlfd3JpdGVzX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIs IE1FVFJJQ19TRVRfSURfTUVNT1JZX1dSSVRFUyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkID0geworCS5hdHRyID0geyAubmFt ZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19tZW1vcnlfd3JpdGVzX2lk LAorCS5zdG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNf bWVtb3J5X3dyaXRlc1tdID0geworCSZkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkLmF0dHIsCisJ TlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV93 cml0ZXMgPSB7CisJLm5hbWUgPSAiMDMzNzJiNjQtNDk5Ni00ZDNiLWFhMTgtNzkwZTc1ZWViOWMy IiwKKwkuYXR0cnMgPSAgYXR0cnNfbWVtb3J5X3dyaXRlcywKK307CisKK3N0YXRpYyBzc2l6ZV90 CitzaG93X2NvbXB1dGVfZXh0ZW5kZWRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKK30KKworc3RhdGljIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQgPSB7CisJ LmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X2Nv bXB1dGVfZXh0ZW5kZWRfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7CisJJmRldl9hdHRyX2NvbXB1 dGVfZXh0ZW5kZWRfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKKwkubmFtZSA9ICIzMWI0Y2U1YS1i ZDYxLTRjMWYtYmI1ZC1mMmU3MzE0MTIxNTAiLAorCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4 dGVuZGVkLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfY29tcHV0ZV9sM19jYWNoZV9pZChz dHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAq YnVmKQoreworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBV VEVfTDNfQ0FDSEUpOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0 dHJfY29tcHV0ZV9sM19jYWNoZV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfY29tcHV0ZV9sM19jYWNoZV9pZCwKKwkuc3RvcmUg PSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfbDNf Y2FjaGVbXSA9IHsKKwkmZGV2X2F0dHJfY29tcHV0ZV9sM19jYWNoZV9pZC5hdHRyLAorCU5VTEws Cit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2wzX2Nh Y2hlID0geworCS5uYW1lID0gIjJjZTA5MTFhLTI3ZmMtNDg4Ny05NmYwLTExMDg0ZmE4MDdjMyIs CisJLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfbDNfY2FjaGUsCit9OworCitzdGF0aWMgc3NpemVf dAorc2hvd19oZGNfYW5kX3NmX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9oZGNfYW5kX3NmX2lkID0geworCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19oZGNfYW5kX3NmX2lkLAorCS5z dG9yZSA9IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2Fu ZF9zZltdID0geworCSZkZXZfYXR0cl9oZGNfYW5kX3NmX2lkLmF0dHIsCisJTlVMTCwKK307CisK K3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2hkY19hbmRfc2YgPSB7CisJLm5h bWUgPSAiNTQ2YzRjMWQtOTliOC00MmZiLWExMDctNWFhYWJiNTMxNGE4IiwKKwkuYXR0cnMgPSAg YXR0cnNfaGRjX2FuZF9zZiwKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X2wzXzFfaWQoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18xKTsK K30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7 CisJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93 X2wzXzFfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyc19sM18xW10gPSB7CisJJmRldl9hdHRyX2wzXzFfaWQuYXR0ciwKKwlOVUxMLAorfTsK Kworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMSA9IHsKKwkubmFtZSA9 ICI0ZTkzZDE1Ni05YjM5LTQyNjgtODU0NC1hOGUwNDgwODA2ZDciLAorCS5hdHRycyA9ICBhdHRy c19sM18xLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfbDNfMl9pZChzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzIpOworfQorCitzdGF0 aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMl9pZCA9IHsKKwkuYXR0ciA9 IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfbDNfMl9pZCwK Kwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wz XzJbXSA9IHsKKwkmZGV2X2F0dHJfbDNfMl9pZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18yID0geworCS5uYW1lID0gImRlMWJlYzg2 LWNhOTItNGI0My04OWZhLTE0NzY1MzIyMWNjMCIsCisJLmF0dHJzID0gIGF0dHJzX2wzXzIsCit9 OworCitzdGF0aWMgc3NpemVfdAorc2hvd19sM18zX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMyk7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18zX2lkID0geworCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd19sM18zX2lkLAorCS5zdG9yZSA9 IE5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfM1tdID0gewor CSZkZXZfYXR0cl9sM18zX2lkLmF0dHIsCisJTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwIGdyb3VwX2wzXzMgPSB7CisJLm5hbWUgPSAiZTYzNTM3YmItMTBiZS00ZDRh LTkyYzQtYzZiMGM2NWUwMmVmIiwKKwkuYXR0cnMgPSAgYXR0cnNfbDNfMywKK307CisKK3N0YXRp YyBzc2l6ZV90CitzaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FO RF9QSVhFTF9CQUNLRU5EKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRl dl9hdHRyX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQgPSB7CisJLmF0dHIgPSB7IC5u YW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3Jhc3Rlcml6ZXJfYW5k X3BpeGVsX2JhY2tlbmRfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7CisJJmRl dl9hdHRyX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQuYXR0ciwKKwlOVUxMLAorfTsK Kworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4 ZWxfYmFja2VuZCA9IHsKKwkubmFtZSA9ICI3YTAzYTlmOC1lYzVlLTQ2YmItOGI2Ny0xZjBmZjE0 NzYyODEiLAorCS5hdHRycyA9ICBhdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kLAor fTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfc2FtcGxlcl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1NBTVBMRVIpOworfQorCitzdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfc2FtcGxlcl9pZCA9IHsKKwkuYXR0ciA9 IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfc2FtcGxlcl9p ZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X3NhbXBsZXJbXSA9IHsKKwkmZGV2X2F0dHJfc2FtcGxlcl9pZC5hdHRyLAorCU5VTEwsCit9Owor CitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyID0geworCS5uYW1l ID0gImIyNWQyZWJmLWE2ZTAtNGIyOS05NmJlLWE5YjAxMGVkZWVkYSIsCisJLmF0dHJzID0gIGF0 dHJzX3NhbXBsZXIsCit9OworCitzdGF0aWMgc3NpemVfdAorc2hvd190ZGxfMV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQor eworCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8xKTsKK30K Kworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8xX2lkID0gewor CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAorCS5zaG93ID0gc2hvd190 ZGxfMV9pZCwKKwkuc3RvcmUgPSBOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHJzX3RkbF8xW10gPSB7CisJJmRldl9hdHRyX3RkbF8xX2lkLmF0dHIsCisJTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8xID0geworCS5uYW1l ID0gIjQ2OWEwNWU1LWUyOTktNDZmNy05NTk4LTdiMDVmM2MzNDk5MSIsCisJLmF0dHJzID0gIGF0 dHJzX3RkbF8xLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfdGRsXzJfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sK KwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMik7Cit9CisK K3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMl9pZCA9IHsKKwku YXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hvdyA9IHNob3dfdGRs XzJfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICph dHRyc190ZGxfMltdID0geworCSZkZXZfYXR0cl90ZGxfMl9pZC5hdHRyLAorCU5VTEwsCit9Owor CitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMiA9IHsKKwkubmFtZSA9 ICI1MmY5MjVjNi03ODZhLTRlYzYtODZjZS1jYmE4NWM4MzQ1M2EiLAorCS5hdHRycyA9ICBhdHRy c190ZGxfMiwKK307CisKK3N0YXRpYyBzc2l6ZV90CitzaG93X2NvbXB1dGVfZXh0cmFfaWQoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRF X0VYVFJBKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2Nv bXB1dGVfZXh0cmFfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0 IH0sCisJLnNob3cgPSBzaG93X2NvbXB1dGVfZXh0cmFfaWQsCisJLnN0b3JlID0gTlVMTCwKK307 CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2V4dHJhW10gPSB7CisJ JmRldl9hdHRyX2NvbXB1dGVfZXh0cmFfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsKKwkubmFtZSA9ICJl ZmM0OTdhYy04ODRlLTRlZTQtYTRhOC0xNWZiYTIyYWFmMjEiLAorCS5hdHRycyA9ICBhdHRyc19j b21wdXRlX2V4dHJhLAorfTsKKworc3RhdGljIHNzaXplX3QKK3Nob3dfdm1lX3BpcGVfaWQoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9WTUVfUElQ RSk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl92bWVfcGlw ZV9pZCA9IHsKKwkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKKwkuc2hv dyA9IHNob3dfdm1lX3BpcGVfaWQsCisJLnN0b3JlID0gTlVMTCwKK307CisKK3N0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc192bWVfcGlwZVtdID0geworCSZkZXZfYXR0cl92bWVfcGlwZV9p ZC5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF92bWVfcGlwZSA9IHsKKwkubmFtZSA9ICJiZmQ5NzY0ZC0yYzViLTRjMTYtYmZjMS04OWRlM2Nh MTA5MTciLAorCS5hdHRycyA9ICBhdHRyc192bWVfcGlwZSwKK307CisKK3N0YXRpYyBzc2l6ZV90 CitzaG93X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKwlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg TUVUUklDX1NFVF9JRF9URVNUX09BKTsKK30KKworc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX3Rlc3Rfb2FfaWQgPSB7CisJLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1v ZGUgPSAwNDQ0IH0sCisJLnNob3cgPSBzaG93X3Rlc3Rfb2FfaWQsCisJLnN0b3JlID0gTlVMTCwK K307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZXN0X29hW10gPSB7CisJJmRl dl9hdHRyX3Rlc3Rfb2FfaWQuYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgZ3JvdXBfdGVzdF9vYSA9IHsKKwkubmFtZSA9ICJmMTc5MmYzMi02ZGIyLTRi NTAtYjRiMi01NTcxMjhmMTY4OGQiLAorCS5hdHRycyA9ICBhdHRyc190ZXN0X29hLAorfTsKKwor aW50CitpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfa2JsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11eF9yZWdzW0FS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpXTsKKwlpbnQgbXV4X2xlbnNbQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07CisJaW50IHJldCA9IDA7 CisKKwlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOworCQlpZiAocmV0KQorCQkJZ290byBl cnJvcl9yZW5kZXJfYmFzaWM7CisJfQorCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsK KwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfY29tcHV0ZV9iYXNpYzsKKwl9CisJaWYgKGdldF9y ZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOworCQlpZiAocmV0KQorCQkJZ290byBl cnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOworCX0KKwlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVh ZHMpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9tZW1vcnlfcmVhZHM7CisJfQorCWlmIChn ZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKKwkJaWYgKHJldCkKKwkJCWdvdG8gZXJyb3JfbWVt b3J5X3dyaXRlczsKKwl9CisJaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwor CQlpZiAocmV0KQorCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dGVuZGVkOworCX0KKwlpZiAoZ2V0 X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9y X2NvbXB1dGVfbDNfY2FjaGU7CisJfQorCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKKwkJaWYg KHJldCkKKwkJCWdvdG8gZXJyb3JfaGRjX2FuZF9zZjsKKwl9CisJaWYgKGdldF9sM18xX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3Jl YXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOworCQlp ZiAocmV0KQorCQkJZ290byBlcnJvcl9sM18xOworCX0KKwlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7CisJCWlmIChy ZXQpCisJCQlnb3RvIGVycm9yX2wzXzI7CisJfQorCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKKwkJaWYgKHJldCkK KwkJCWdvdG8gZXJyb3JfbDNfMzsKKwl9CisJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9i YWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJv cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOworCX0KKwlpZiAoZ2V0X3NhbXBsZXJfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7 CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX3NhbXBsZXI7CisJfQorCWlmIChnZXRfdGRsXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQgPSBzeXNm c19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEp OworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl90ZGxfMTsKKwl9CisJaWYgKGdldF90ZGxfMl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CisJCXJldCA9IHN5c2Zz X2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7 CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX3RkbF8yOworCX0KKwlpZiAoZ2V0X2NvbXB1dGVf ZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgeworCQlyZXQg PSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf Y29tcHV0ZV9leHRyYSk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0cmE7 CisJfQorCWlmIChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkgeworCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOworCQlpZiAocmV0KQorCQkJZ290byBlcnJvcl92 bWVfcGlwZTsKKwl9CisJaWYgKGdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKKwkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOworCQlpZiAocmV0KQorCQkJZ290byBl cnJvcl90ZXN0X29hOworCX0KKworCXJldHVybiAwOworCitlcnJvcl90ZXN0X29hOgorCWlmIChn ZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJ c3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Zt ZV9waXBlKTsKK2Vycm9yX3ZtZV9waXBlOgorCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7CitlcnJv cl9jb21wdXRlX2V4dHJhOgorCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKK2Vycm9yX3RkbF8yOgorCWlmIChnZXRfdGRsXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKK2Vycm9y X3RkbF8xOgorCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfc2FtcGxlcik7CitlcnJvcl9zYW1wbGVyOgorCWlmIChnZXRfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7CitlcnJvcl9yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kOgorCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfbDNfMyk7CitlcnJvcl9sM18zOgorCWlmIChnZXRfbDNfMl9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7CitlcnJvcl9sM18y OgorCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfbDNfMSk7CitlcnJvcl9sM18xOgorCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7CitlcnJvcl9oZGNfYW5k X3NmOgorCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7CitlcnJvcl9jb21wdXRlX2wzX2Nh Y2hlOgorCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7CitlcnJvcl9jb21wdXRlX2V4dGVu ZGVkOgorCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7CitlcnJvcl9tZW1vcnlfd3JpdGVzOgorCWlm IChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9tZW1vcnlfcmVhZHMpOworZXJyb3JfbWVtb3J5X3JlYWRzOgorCWlmIChnZXRfcmVuZGVy X3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQor CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf cmVuZGVyX3BpcGVfcHJvZmlsZSk7CitlcnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOgorCWlmIChn ZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfY29tcHV0ZV9iYXNpYyk7CitlcnJvcl9jb21wdXRlX2Jhc2ljOgorCWlmIChnZXRfcmVuZGVy X2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJf YmFzaWMpOworZXJyb3JfcmVuZGVyX2Jhc2ljOgorCXJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2k5 MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2tibGd0MyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCit7CisJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICptdXhfcmVnc1tBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKV07CisJaW50IG11eF9sZW5zW0FSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOworCisJaWYgKGdldF9yZW5kZXJf YmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9i YXNpYyk7CisJaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsKKwlpZiAoZ2V0X3JlbmRlcl9waXBlX3By b2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9w aXBlX3Byb2ZpbGUpOworCWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVhZHMpOworCWlmIChnZXRfbWVtb3J5X3dy aXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dy aXRlcyk7CisJaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKKwlpZiAoZ2V0X2NvbXB1dGVf bDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lz ZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1 dGVfbDNfY2FjaGUpOworCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7CisJaWYgKGdldF9sM18xX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKKwlpZiAoZ2V0X2wzXzJf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzIpOworCWlmIChn ZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQorCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMyk7 CisJaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsK KwlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3NhbXBsZXIpOworCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKKwkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKKwlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7CisJaWYgKGdldF9jb21wdXRlX2V4dHJh X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJh KTsKKwlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF92bWVfcGlwZSk7CisJaWYgKGdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCisJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2tibGd0My5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjBj YTdmMzExNGQzCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9rYmxndDMuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQXV0b2dlbmVyYXRlZCBmaWxlIGJ5 IEdQVSBUb3AgOiBodHRwczovL2dpdGh1Yi5jb20vcmliL2dwdXRvcAorICogRE8gTk9UIEVESVQg bWFudWFsbHkhCisgKgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlv bgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2Yg dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz c2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICog U29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAor ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKi8K KworI2lmbmRlZiBfX0k5MTVfT0FfS0JMR1QzX0hfXworI2RlZmluZSBfX0k5MTVfT0FfS0JMR1Qz X0hfXworCitleHRlcm4gaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2tibGd0MzsK KworZXh0ZXJuIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2tibGd0MyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCitleHRlcm4gaW50IGk5MTVfcGVyZl9yZWdpc3Rl cl9zeXNmc19rYmxndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKKworZXh0 ZXJuIHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfa2JsZ3QzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYwpp bmRleCA5ZTUzMDdiYmFhYjEuLmQ1MTI2ZmFmMmEzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKQEAgLTIwMiw2ICsyMDIsOCBAQAogI2luY2x1ZGUgImk5MTVfb2Ffc2tsZ3QzLmgiCiAjaW5j bHVkZSAiaTkxNV9vYV9za2xndDQuaCIKICNpbmNsdWRlICJpOTE1X29hX2J4dC5oIgorI2luY2x1 ZGUgImk5MTVfb2Ffa2JsZ3QyLmgiCisjaW5jbHVkZSAiaTkxNV9vYV9rYmxndDMuaCIKIAogLyog SFcgcmVxdWlyZXMgdGhpcyB0byBiZSBhIHBvd2VyIG9mIHR3bywgYmV0d2VlbiAxMjhrIGFuZCAx Nk0sIHRob3VnaCBkcml2ZXIKICAqIGlzIGN1cnJlbnRseSBnZW5lcmFsbHkgZGVzaWduZWQgYXNz dW1pbmcgdGhlIGxhcmdlc3QgMTZNIHNpemUgaXMgdXNlZCBzdWNoCkBAIC0xNzc4LDcgKzE3ODAs OCBAQCBzdGF0aWMgaW50IGdlbjhfZW5hYmxlX21ldHJpY19zZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCSAqIGJlIHJlYWQgYmFjayBmcm9tIGF1dG9tYXRpY2FsbHkgdHJp Z2dlcmVkIHJlcG9ydHMsIGFzIHBhcnQgb2YgdGhlCiAJICogUlBUX0lEIGZpZWxkLgogCSAqLwot CWlmIChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgeworCWlm IChJU19TS1lMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSB8fAorCSAgICBJ U19LQUJZTEFLRShkZXZfcHJpdikpIHsKIAkJSTkxNV9XUklURShHRU44X09BX0RFQlVHLAogCQkJ ICAgX01BU0tFRF9CSVRfRU5BQkxFKEdFTjlfT0FfREVCVUdfRElTQUJMRV9DTEtfUkFUSU9fUkVQ T1JUUyB8CiAJCQkJCSAgICAgIEdFTjlfT0FfREVCVUdfSU5DTFVERV9DTEtfUkFUSU8pKTsKQEAg LTI4NTcsNiArMjg2MCwxNSBAQCB2b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRldl9wcml2KSkg ewogCQlpZiAoaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2J4dChkZXZfcHJpdikpCiAJCQlnb3Rv IHN5c2ZzX2Vycm9yOworCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7CisJCWlm IChJU19LQkxfR1QyKGRldl9wcml2KSkgeworCQkJaWYgKGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNm c19rYmxndDIoZGV2X3ByaXYpKQorCQkJCWdvdG8gc3lzZnNfZXJyb3I7CisJCX0gZWxzZSBpZiAo SVNfS0JMX0dUMyhkZXZfcHJpdikpIHsKKwkJCWlmIChpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNf a2JsZ3QzKGRldl9wcml2KSkKKwkJCQlnb3RvIHN5c2ZzX2Vycm9yOworCQl9IGVsc2UKKwkJCWdv dG8gc3lzZnNfZXJyb3I7CiAJfQogCiAJZ290byBleGl0OwpAQCAtMjg5OCw2ICsyOTEwLDEyIEBA IHZvaWQgaTkxNV9wZXJmX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQkJaTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfc2tsZ3Q0KGRldl9wcml2KTsKIAl9 IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKQogCQlpOTE1X3BlcmZfdW5yZWdpc3Rlcl9z eXNmc19ieHQoZGV2X3ByaXYpOworCWVsc2UgaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSkgewor CQlpZiAoSVNfS0JMX0dUMihkZXZfcHJpdikpCisJCQlpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNm c19rYmxndDIoZGV2X3ByaXYpOworCQllbHNlIGlmIChJU19LQkxfR1QzKGRldl9wcml2KSkKKwkJ CWk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2tibGd0MyhkZXZfcHJpdik7CisJfQogCiAJa29i amVjdF9wdXQoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqKTsKIAlkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmogPSBOVUxMOwpAQCAtMzAzMSw2ICszMDQ5LDE2IEBAIHZvaWQgaTkxNV9wZXJm X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJCQlpOTE1X29hX25f YnVpbHRpbl9tZXRyaWNfc2V0c19ieHQ7CiAJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVj dF9tZXRyaWNfc2V0ID0KIAkJCQkJaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQ7CisJCQl9 IGVsc2UgaWYgKElTX0tCTF9HVDIoZGV2X3ByaXYpKSB7CisJCQkJZGV2X3ByaXYtPnBlcmYub2Eu bl9idWlsdGluX3NldHMgPQorCQkJCQlpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19rYmxn dDI7CisJCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0KKwkJCQkJ aTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9rYmxndDI7CisJCQl9IGVsc2UgaWYgKElTX0tCTF9H VDMoZGV2X3ByaXYpKSB7CisJCQkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQor CQkJCQlpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19rYmxndDM7CisJCQkJZGV2X3ByaXYt PnBlcmYub2Eub3BzLnNlbGVjdF9tZXRyaWNfc2V0ID0KKwkJCQkJaTkxNV9vYV9zZWxlY3RfbWV0 cmljX3NldF9rYmxndDM7CiAJCQl9CiAJCX0KIAotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK