From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH 2/2] drm/i915/perf: prune OA configs Date: Fri, 7 Jul 2017 18:08:38 +0100 Message-ID: <20170707170838.9492-3-lionel.g.landwerlin@intel.com> References: <20170707170838.9492-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 954F36E444 for ; Fri, 7 Jul 2017 17:08:50 +0000 (UTC) In-Reply-To: <20170707170838.9492-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 Tm93IHRoYXQgd2UgaGF2ZSB0aGUgYWJpbGl0eSB0byBsb2FkIGNvbmZpZ3MgZnJvbSB1c2Vyc3Bh Y2UsIHdlIGRvbid0Cm5lZWQgdG8gc3RvcmUgYWxsIHRoZSBjb25maWdzIGluIHRoZSBrZXJuZWwg YW55bW9yZS4gTGV0J3MganVzdCBrZWVwCnRoZSB0ZXN0IGNvbmZpZ3MgZm9yIHRlc3QgcHVycG9z ZXMuCgpTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxp bkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9iZHcuYyAgICB8 IDUzNTEgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X29hX2J4dC5jICAgIHwgMjU2NiArLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X29hX2Nodi5jICAgIHwgMjc2MyArLS0tLS0tLS0tLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9nbGsuYyAgICB8IDI0NzggKy0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2hzdy5jICAgIHwgIDY0OSArLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jIHwgMjg3NiArLS0tLS0tLS0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMgfCAyOTI1ICstLS0tLS0t LS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYyB8IDMzNjMg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0 My5jIHwgMjkyNCArLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf b2Ffc2tsZ3Q0LmMgfCAyOTc4ICstLS0tLS0tLS0tLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwg MzcwIGluc2VydGlvbnMoKyksIDI4NTAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfYmR3LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX2Jkdy5jCmluZGV4IGQ0NDYyYzJhYWFlZS4uOGIxNzU4ODFlN2YzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2Jkdy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfb2FfYmR3LmMKQEAgLTMyLDUwODggKzMyLDExMSBAQAogI2luY2x1ZGUgImk5MTVf b2FfYmR3LmgiCiAKIGVudW0gbWV0cmljX3NldF9pZCB7Ci0JTUVUUklDX1NFVF9JRF9SRU5ERVJf QkFTSUMgPSAxLAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQywKLQlNRVRSSUNfU0VUX0lE X1JFTkRFUl9QSVBFX1BST0ZJTEUsCi0JTUVUUklDX1NFVF9JRF9NRU1PUllfUkVBRFMsCi0JTUVU UklDX1NFVF9JRF9NRU1PUllfV1JJVEVTLAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRF RCwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEUsCi0JTUVUUklDX1NFVF9JRF9EQVRB X1BPUlRfUkVBRFNfQ09BTEVTQ0lORywKLQlNRVRSSUNfU0VUX0lEX0RBVEFfUE9SVF9XUklURVNf Q09BTEVTQ0lORywKLQlNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YsCi0JTUVUUklDX1NFVF9JRF9M M18xLAotCU1FVFJJQ19TRVRfSURfTDNfMiwKLQlNRVRSSUNfU0VUX0lEX0wzXzMsCi0JTUVUUklD X1NFVF9JRF9MM180LAotCU1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VO RCwKLQlNRVRSSUNfU0VUX0lEX1NBTVBMRVJfMSwKLQlNRVRSSUNfU0VUX0lEX1NBTVBMRVJfMiwK LQlNRVRSSUNfU0VUX0lEX1RETF8xLAotCU1FVFJJQ19TRVRfSURfVERMXzIsCi0JTUVUUklDX1NF VF9JRF9DT01QVVRFX0VYVFJBLAotCU1FVFJJQ19TRVRfSURfVk1FX1BJUEUsCi0JTUVUUklDX1NF VF9JRF9URVNUX09BLAorCU1FVFJJQ19TRVRfSURfVEVTVF9PQSA9IDEsCiB9OwogCi1pbnQgaTkx NV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfYmR3ID0gMjI7CitpbnQgaTkxNV9vYV9uX2J1aWx0 aW5fbWV0cmljX3NldHNfYmR3ID0gMTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8o MHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAot CXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlP KDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwK LQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAw MTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1 YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNf MF9zbGljZXNfMHgwMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDNmMDAwZiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNDExMDAxNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDMxMDAx NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNGJmMDAwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMThhMDMxNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgzN2JlMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzYjgwMDA2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDAwNSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDVjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjVj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDNkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODNkMDgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTNmMDAyMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDNmMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDU4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODU4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTVhNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTViODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxODViMjQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFkNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFmMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTFmYWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM4NDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM4NDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxODM4MDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5 MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM5MTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDEwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODEwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDExMDAzMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODExMDAzMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDExMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDEzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjEzMDAyMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjMwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODMwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMxMTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwODMxMTg4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDMxMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTMzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjMzMDA4MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYWJmMTE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGJm MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWRhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTlkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDAwMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYWI5NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhhMDM4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NThhMDAwZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMThhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThhODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYjhhMDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhhMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyMzhiMjgyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiMjU1MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxOThjMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhkODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1 YWFhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDgzMTAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNTcyZiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMTgzNTY4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzMDAyYyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx OTgzNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDAwMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0YzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwOTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0 NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgwYzEzNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDgwYzE0NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNTgwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMTExMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0ZjgwMDMzMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDgw MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0NTgwMTQ2NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMTExMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NzgwMTRhNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMGNhNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgw MDAwMyB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmln X3JlbmRlcl9iYXNpY18xX3NsaWNlc18weDAyW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0 M2YwMDBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0YmYwMDBmIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE0OTEwMDE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0YjEwMDE0IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDExOGEwMzE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODM3YmUw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNiODAwMDYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDNkODAwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2YwMDIzIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwM2YwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNWE0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhMWQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWY4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzkxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwZGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2ZGM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA4ZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYmQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE4YmQwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh YmYxMTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwYmYwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwZDg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4ZDg0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhZGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwZGI0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlZGI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE4ZGIyNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhOWQ4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjOWYwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWYyYTAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwOWYwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYjg0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE2Yjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4YjgwMDAxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwYjkyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Yjk4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4YjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh Yjk0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA4OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwOTEwMDMwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4OTEwMDMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOTEwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwOTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE2OTMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YjA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4YjA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YjExODAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4YjExODgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwYjEw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE2YjMwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODg4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODhiODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGEwMzgwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA1OGEwMDBlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFi OGEwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGEwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5OGEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIyODQwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDI1OGIyNmEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGM0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE3OGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGMxMTAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAxOGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA5OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGQ4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTgwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDIxODVhYWEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODMxMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODM1NzJmIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAxODM1NjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAz ODMwMDJjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE5ODM1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMDAxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA1ODMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAxODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA5ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODRjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA1ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODBjMTM3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFkODBjMTQ3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDExODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3 ODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1ODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkODAxNTUw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRmODAwMzMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQzODAwODAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwNDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQ1ODAwNGExIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODA1NTU1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ3ODAwNDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAxNDIxIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQxODAwODQ1IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVuZGVyX2Jhc2ljX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0g MDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSA8IDIpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMik7Ci0KLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc2xpY2Vf bWFzayAmIDB4MDEpIHsKLQkJcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX2Jhc2ljXzBfc2xp Y2VzXzB4MDE7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2lj XzBfc2xpY2VzXzB4MDEpOwotCQluKys7Ci0JfQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ c3NldS5zbGljZV9tYXNrICYgMHgwMikgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJf YmFzaWNfMV9zbGljZXNfMHgwMjsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19y ZW5kZXJfYmFzaWNfMV9zbGljZXNfMHgwMik7Ci0JCW4rKzsKLQl9Ci0KLQlyZXR1cm4gbjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1 dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAw MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfY29tcHV0ZV9iYXNpY1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9 LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgw MDAwMjAwMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAotCXsgX01NSU8oMHhl NDVjKSwgMHgwMDA4ODA3OCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAotCXsg X01NSU8oMHhlNjVjKSwgMHgwMGEwODkwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNfMF9zbGljZXNfMHgwMVtdID0gewot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDVjMDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU4 MDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM4MDBlMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzNTgwMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzYjgwMDA2MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzZDgwMDAwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjVjMjEwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTVjMDA0MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzVjNjYwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVjNjU4MCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTVjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDU4MDA0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODU4MjA4 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzU4MDA0YyB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTU4MjU4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxODViMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTViMDEwNCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYzFmYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFm YWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODM4MDA0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM4MjA4MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTM4NDA0YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM4NDA0YiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NjM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODM4MTE0NSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5YTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjM5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM5YTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTM5YTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjM5MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMThhODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThh ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhYWFhMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDhhMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhhODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzhiMDJhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiNTU1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy NzhiMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1MGE4MCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTg1YWFhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgzNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYjgzMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0 YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMzg0NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwODEzNyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwYzE0NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjgwYzBlNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzBlMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwMDAwMCB9LAotCXsgX01NSU8oMHhkMjQpLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkODAxMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDRmODAwMTExIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzODAwMDYyIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1ODAw MDYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ3ODAwMDYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDNmODAxMDYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAxMDg0IH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0 ZV9iYXNpY18yX3NsaWNlc18weDAyW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwZGMwMGUw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwZDgwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwYjgwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1ODAwMDFhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDNiODAwMDYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNkODAwMDA1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2ZGMyMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZGMw MDQxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjZGM2NjAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwZGM2NTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4ZGM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlZGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwZDgwMDQyIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4ZDgyMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj ZDgwMDRjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlZDgyNTgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4ZGIxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhZGIwMTA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjOWZhODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWZhYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwOWYwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4YjgwMDQyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhYjgyMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjg0MDRjIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyYjg0MDRiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYjg0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2YjgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE4YjgxMTQ1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0YjgwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Yjk4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4YjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh YjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYjkyMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAxODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODhmODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODgwMDBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAzODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODg4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIzOGIwNTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGJhYWEwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE3OGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGM1NTAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiOGMwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA1OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAx OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBkOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFmODUwYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODVhYWEwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODM1 NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAxODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA5ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBi ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBmODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODQ0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE3ODA4MTM3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBjMTQ3 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODBjMGU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFkODBjMGUzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDExODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEzODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODAw MDAwIH0sCi0JeyBfTU1JTygweGQyNCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NGQ4MDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDA1NTUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDM4MDAwNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE4MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDAwNjIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDAwNjIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDE4MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9jb21wdXRl X2Jhc2ljX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMik7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAyKTsKLQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2 KS0+c3NldS5zbGljZV9tYXNrICYgMHgwMSkgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21w dXRlX2Jhc2ljXzBfc2xpY2VzXzB4MDE7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9iYXNpY18wX3NsaWNlc18weDAxKTsKLQkJbisrOwotCX0KLQlpZiAoSU5URUxf SU5GTyhkZXZfcHJpdiktPnNzZXUuc2xpY2VfbWFzayAmIDB4MDIpIHsKLQkJcmVnc1tuXSA9IG11 eF9jb25maWdfY29tcHV0ZV9iYXNpY18yX3NsaWNlc18weDAyOwotCQlsZW5zW25dID0gQVJSQVlf U0laRShtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNfMl9zbGljZXNfMHgwMik7Ci0JCW4rKzsKLQl9 Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2Nv dW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCks IDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAw N2ZmZWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdmZmMgfSwKLQl7IF9NTUlPKDB4Mjc3 OCksIDB4MDAwN2FmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY1ZmQgfSwKLQl7IF9N TUlPKDB4Mjc4MCksIDB4MDAwNzlmZmEgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGYzZmIg fSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2JmN2EgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4 MDAwMGY3ZTcgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZlZmEgfSwKLQl7IF9NTUlPKDB4 Mjc5NCksIDB4MDAwMGY3Y2YgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwNzdmZmEgfSwKLQl7 IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGVmZGYgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwNmZm ZmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGNmYmYgfSwKLQl7IF9NTUlPKDB4MjdhOCks IDB4MDAwM2ZmZmEgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMDVmN2YgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVf cHJvZmlsZVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8o MHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAot CXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0 NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVj KSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBt dXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGExZTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZjAwMGYgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTAxNzY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MTAwMWYgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGI4ODAzMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4OTBj NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4YTFjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTE4ZDdjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4ZTAwMjAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE4ZjRjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1 YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDY1ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YjQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDgxZTAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZTAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxZjU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAxZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAwMTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGUxZjAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzODQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDYzOTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxM2Mw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYxNzAwMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNzAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDE5MTAwMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4ODAwMDIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ODBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4 ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDU4ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4OTAwMzIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDc4YTA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTBhMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWI4YTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4YTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjU0 YzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YmFhNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mjc4YjAwMTkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YzAxMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4ZDAwMTUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4ZGYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGQ4ZDMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ZGUwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDU4ZDMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ZTAwMDQg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ZTAwMGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDk4ZTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4ZTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4ZTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4ZjAwMjAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTk4ZjBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4Zjgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGI5MDA5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MDBkODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhODAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4 NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDE4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGI4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4ZDI0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0ZDgwMTExMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDgwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0ZjgwMTAxMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDQ0 MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMTExMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0NTgwMDQyMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMTExMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NzgwMGM2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgw MDQyMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDAyMSB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywK LQkJCQkgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsK LX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21l bW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzRjKSwgMHg4 NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgy NzQ0KSwgMHgwMDAwNjY2NyB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzVjKSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIx MCB9LAotCXsgX01NSU8oMHgyNzU0KSwgMHgwMDAwNjQ2NSB9LAotCXsgX01NSU8oMHgyNzUwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAotCXsgX01NSU8o MHgyNzc0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9LAot CXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3 Zjg3MiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzg4 KSwgMHgwMDA3ZjhiYSB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAotCXsgX01N SU8oMHgyNzkwKSwgMHgwMDA3Zjg3YSB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9 LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZjhlYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgw MDAwZmUwMCB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAotCXsgX01NSU8oMHgy N2E0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAotCXsg X01NSU8oMHgyN2FjKSwgMHgwMDAwZmUwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKLQl7IF9NTUlPKDB4 ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7 IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUw MzQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1Yyks IDB4MDAwNTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9 IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YjAzNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTM4NDU4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4NDAwMTggfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MzU4MDAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YjYzMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDU4YjZiNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YjAw NmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjM4YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWY4NWEwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYWEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDE4NDAwMTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDRjODAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NDBkOWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4NDBlOWMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NDBmOWUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGY4NDAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDM4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY4MDAwZTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTM4MDgwZTMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwZTEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MDQwMDAgfSwKLQl7IF9N TUlPKDB4ZDI0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDg0MiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMDg0MiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMTA0 MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzZjgwMDA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDAwMCB9LAotfTsKLQotc3Rh dGljIGludAotZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tu XSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRzOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfbWVtb3J5X3JlYWRzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9 IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKLQl7 IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2 NjcgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc1Yyks IDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlP KDB4Mjc1NCksIDB4MDAwMDY0NjUgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4MjIgfSwKLQl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEg fSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4 MDAwN2Y4N2EgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4 Mjc5OCksIDB4MDAwN2Y4ZWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKLQl7 IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZl MDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9NTUlPKDB4MjdhYyks IDB4MDAwMGZlMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9 LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTk4YjAzNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4NDU0MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzU4MDAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Q4 MDA4MDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YjYzMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDU4YjZiNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YjAwNmEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE4YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWY4NWEwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYWEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjM4NTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDE4NDAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDQ4ODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDk4NDA5OTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NDBhOTQgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NDBiOTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ4MDAxNDcgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MmY4MDAwZTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MDgwZTMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwZTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTc4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4ZDI0KSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDg0MiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgw MDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzgwMTA4MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzZjgwMDA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDAwMCB9 LAotfTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyAqKnJlZ3MsCi0JCQkgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3dyaXRlczsKLQlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCW4rKzsKLQotCXJldHVybiBu OwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAot CXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgw MDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmMyYSB9LAotCXsgX01N SU8oMHgyNzc0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZmM2YSB9 LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgw MDA3ZmM5MiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgy Nzg4KSwgMHgwMDA3ZmNhMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwYmYwMCB9LAotCXsg X01NSU8oMHgyNzkwKSwgMHgwMDA3ZmMzMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwYmYw MCB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZmM5YSB9LAotCXsgX01NSU8oMHgyNzljKSwg MHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3ZmU2YSB9LAotCXsgX01NSU8o MHgyN2E0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZmU3YSB9LAot CXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwYmYwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JeyBf TU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDAwMDAz IH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCi0JeyBfTU1JTygweGU3NTgpLCAw eDAwNzc4MDA4IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDg4MDc4IH0sCi0JeyBfTU1JTygw eGU1NWMpLCAweDAwODA4NzA4IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwYTA4OTA4IH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9l eHRlbmRlZF8wX3N1YnNsaWNlc18weDAxW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0M2Qw MTYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2M2QyODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE4M2QwMTIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNTgwMGUwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwNWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NWM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNWNjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlNWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWNjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0NWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwM2QwMDEx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2M2QwOTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4M2QwYTEzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2QwYjE1IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjM2QyMzE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0M2QyMWI3IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwM2QwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlM2Qw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhM2QwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlNTgyNWMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTg2MTAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNTgyMDRjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTg4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NThjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NThjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNThjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0NThjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNWI0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NWI1NDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNWIwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NWI0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NWI0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWZh ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWZhYTJhIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEwMWYwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzg0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2Mzg0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE4MzgxNTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy Mzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Mzg0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2Mzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4Mzg0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzlhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Mzk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4MzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzlhMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzlhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyMzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Mzlh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBmOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiOGFhYWEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOGEwMDAyIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1 OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDIzOGIyYWEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGI1NTUx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFmODVhYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODVhYWEyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODM1 NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAx ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODRjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODBjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE3ODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFiODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODBjMDAwIH0sCi0JeyBfTU1J TygweGQyNCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4M2Q4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDA0MjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDA0MjEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDE4MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkXzJfc3Vic2xpY2VzXzB4MDJbXSA9IHsKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTA1YzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YjAx NjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY1YjI4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTg1YjAxMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1YzI1YzEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDA1YzYxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YzIwNGMgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1 Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGM1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1Y2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA1YjAwMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YjA5MDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1YjBhMTMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGE1YjBiMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YjIzMTcgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ1YjIxYjcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1YjAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU1YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZmE4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUxZmFhMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAyYWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzODQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgz ODE1NTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzODQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDgzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzOTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzOWEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGEzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzOWEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzOWEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDE4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YWFhYTAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4YTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjJhYTAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjU1NTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 Mjc4YjAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhODAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjE4NWFhYTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMmEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGI4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTE4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4ZDI0KSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDQyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzZjgwMDQyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDAwMCB9LAotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0 ZW5kZWRfNF9zdWJzbGljZXNfMHgwNFtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM4MDBl MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDNhMDE2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNjNhMjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODNhMDEyMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzFmYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmYWEyYSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDFmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTM4 YTVjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM4YTEwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjM4MjA0YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM4ODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxODM4MDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM4MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODM4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM4ODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM5ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwODM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM5YTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM5YTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDNhMDAxMSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjNhMDkwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODNh MGExMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTNhMGIxNSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzNhMjMxNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDNhMjFiNyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTNhMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhYWFhMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDhhMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhhODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThhODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzhiMmFhMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyNThiNTU1MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzhi MDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWE4MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyMTg1YWFhMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgzNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjgzMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNzg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0 YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxOTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgwYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHhkMjQpLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNkODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQ1ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ3ODAwNDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDNmODAwNDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwMDAwIH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRl ZF8xX3N1YnNsaWNlc18weDA4W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0YmQwMTYwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2YmQyODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 YmQwMTIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwZDgwMGUwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2ZGM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4ZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZGNjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyZGNjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0ZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYmQwMDExIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2YmQwOTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4YmQw YTEzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhYmQwYjE1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjYmQyMzE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0YmQyMWI3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwYmQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYmQwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFhYmQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl ZDgyNWMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwZDg2MTAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyZDgyMDRjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2ZDg4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4ZDhjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZDhjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjZDhjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0ZDhjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwZGI0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4ZGI1NDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFhZGIwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyZGI0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0ZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2ZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4ZGI0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjOWZhODAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlOWZhYTJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw OWYwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYjg0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlYjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2Yjg0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE4YjgxNTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYjg0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Yjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2Yjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4Yjg0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhYjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYjlhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2Yjk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4Yjlh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjlhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0YjlhMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAxODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBk ODhmODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODgwMDBmIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAzODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODg4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA3ODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODg4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDIzOGI1NTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGJhYWEyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDI3OGIwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OGMy MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGM1NTAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFiOGMwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA1OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA5OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBi OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3OGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBiOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGRhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAzOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGRhMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFmODVhYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODVhYWEyIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE5ODM1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5 ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAxODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA5ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODRjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE3ODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFkODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODBjMDAwIH0s Ci0JeyBfTU1JTygweGQyNCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Q4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NGY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM4MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDc4MDA0MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDA0MjEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDE4MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkXzNfc3Vic2xpY2VzXzB4MTBb XSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBkYzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTRkYjAxNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTZkYjI4MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MThkYjAxMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVkYzI1YzEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkYzYxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJk YzIwNGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZkYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDhkY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFkY2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGNkY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkY2MwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkYjAwMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDZkYjA5MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhkYjBhMTMgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGFkYjBiMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkYjIzMTcgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDRkYjIxYjcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBkYjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVkYjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWFkYjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZmE4MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU5ZmFhMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA5ZjAyYWEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDBiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVi ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTZiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MThiODE1NTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiODQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDRiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiODQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGFiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBiOWEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDZiOTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhiOWEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGFiOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiOWEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGViOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDJiOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiOWEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDE4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4OGY4MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4ODAwMGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4ODgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGI4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjU1NDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YmFhYTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 Mjc4YjAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4YzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGY4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4YzIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTk4YzU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YzAw MTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDk4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4 ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGI4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ZGEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWY4NWFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYTIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjM4NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4 NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NGMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MGMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTc4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlP KDB4ZDI0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Zjgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDQyMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMDQyMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0MTgwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRfNV9zdWJzbGljZXNfMHgyMFtdID0gewotCXsg X01NSU8oMHg5ODg4KSwgMHgxMGI4MDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNGJhMDE2 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmJhMjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxOGJhMDEyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlmYTgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTlmYWEyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhYSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZWI4YTVjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI4 YTEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmI4MjA0YyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNmI4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGI4MDJhYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNGI4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI4MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YWI4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI5YTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNmI5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI5YTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I5YTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMmI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI5YTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMGJhMDAxMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmJhMDkwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwOGJhMGExMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWJh MGIxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2JhMjMxNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNGJhMjFiNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGJhMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZWJhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYWJhMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDg4ZjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAwZiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMzg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg4ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNzg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4ODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyMzhiNTU0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiYWFhMiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMThjNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzhj MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThjNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYjhjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhjNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhjNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YjhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMThkYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzhkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhkYTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMzhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThkYTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxZjg1YWE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWFhMiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTgz NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxOTgzNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw OTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgw YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9 LAotCXsgX01NSU8oMHhkMjQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRk ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1ODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ3ODAwNDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAwNDIxIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQxODAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29t cHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCWludCAqbGVucykK LXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCA2KTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDYpOwotCi0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5zc2V1LnN1YnNsaWNlX21hc2sgJiAweDAxKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2Nv bXB1dGVfZXh0ZW5kZWRfMF9zdWJzbGljZXNfMHgwMTsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkXzBfc3Vic2xpY2VzXzB4MDEpOwotCQluKys7Ci0J fQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrICYgMHgwOCkg ewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkXzFfc3Vic2xpY2VzXzB4 MDg7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZF8x X3N1YnNsaWNlc18weDA4KTsKLQkJbisrOwotCX0KLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PnNzZXUuc3Vic2xpY2VfbWFzayAmIDB4MDIpIHsKLQkJcmVnc1tuXSA9IG11eF9jb25maWdfY29t cHV0ZV9leHRlbmRlZF8yX3N1YnNsaWNlc18weDAyOwotCQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRfMl9zdWJzbGljZXNfMHgwMik7Ci0JCW4rKzsKLQl9 Ci0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2sgJiAweDEwKSB7 Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRfM19zdWJzbGljZXNfMHgx MDsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkXzNf c3Vic2xpY2VzXzB4MTApOwotCQluKys7Ci0JfQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+ c3NldS5zdWJzbGljZV9tYXNrICYgMHgwNCkgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21w dXRlX2V4dGVuZGVkXzRfc3Vic2xpY2VzXzB4MDQ7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11 eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZF80X3N1YnNsaWNlc18weDA0KTsKLQkJbisrOwotCX0K LQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFzayAmIDB4MjApIHsK LQkJcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZF81X3N1YnNsaWNlc18weDIw OwotCQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRfNV9z dWJzbGljZXNfMHgyMCk7Ci0JCW4rKzsKLQl9Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVb XSA9IHsKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCks IDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZlZmUgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMGZlZmQgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9N TUlPKDB4Mjc5NCksIDB4MDAwMGZiZWYgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZmZmEg fSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZiZGYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9sM19jYWNoZVtdID0gewot CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAw MDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDEwMTEwMCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDIwMTIwMCB9LAotCXsgX01N SU8oMHhlNTVjKSwgMHgwMDMwMTMwMCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDQwMTQwMCB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1 dGVfbDNfY2FjaGVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzZjAwYjMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTRiZjAwYjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MzAzYzAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2I4MDAwNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 M2Q4MDA4MDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZjAwMjkgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDYzZjE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzZjEyMjUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUzZjEzMjcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzZjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDY1YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1YWMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU1YWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxZDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgx ZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMxZjA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZjJhMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTAxZjAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOTEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzOTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgzOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzOTUwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGFiZjE0MjkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiZjEyMjUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDBiZjEzODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiZjAw MjYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGFkYWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkYWMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDBkYTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkYTQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5ZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5 ZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA5ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDI5ZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU5ZjgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTA5ZjAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZmEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFiOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGNiOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBiOTQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDJiOTEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4OGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGY4ODAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ODgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDE4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTgwMjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4 YjA1MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YmE5NTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mjc4YjAwMTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YzU0MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWI4YzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDE4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ZDIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFh YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4MzUxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMjIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE4MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4 MzU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDE4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDU4NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMx MzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMxNDcgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTc4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MDQwMDAgfSwKLQl7IF9NTUlPKDB4ZDI0 KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0ZjgwMDExMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDg0MiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 NTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0NzgwMDg0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzZjgwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMTRh MiB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnICoqcmVncywKLQkJCQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAx KTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKLQluKys7Ci0KLQlyZXR1 cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29u ZmlnX2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nW10gPSB7Ci0JeyBfTU1JTygweDI3MjQpLCAw eGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3NGMpLCAweGJhOThiYTk4IH0sCi0JeyBfTU1JTygweDI3NDgpLCAweGJhOThi YTk4IH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwMDAzMzc3IH0sCi0JeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmYyIH0sCi0JeyBfTU1J TygweDI3NzQpLCAweDAwMDA3ZmYwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmUyIH0s Ci0JeyBfTU1JTygweDI3N2MpLCAweDAwMDA3ZmYwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAw MDdmZmMyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDA3ZmYwIH0sCi0JeyBfTU1JTygweDI3 ODgpLCAweDAwMDdmZjgyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDA3ZmYwIH0sCi0JeyBf TU1JTygweDI3OTApLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBiZmVm IH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAw eDAwMDBiZmRmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygw eDI3YTQpLCAweDAwMDBiZmJmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmZmZhIH0sCi0J eyBfTU1JTygweDI3YWMpLCAweDAwMDBiZjdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nW10g PSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAw eDAwMDAwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCi0JeyBfTU1JTygw eGU3NTgpLCAweDAwNzc4MDA4IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDg4MDc4IH0sCi0J eyBfTU1JTygweGU1NWMpLCAweDAwODA4NzA4IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwYTA4 OTA4IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdf ZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2NpbmdfMF9zdWJzbGljZXNfMHgwMVtdID0gewotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDNkMDAwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjNkMjQwYiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU4MDIyZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ODViNTUyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThiMDAwMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjVjYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwODVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTVjYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjVjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDNkMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjNkMDBiMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODNk MDE4MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTNkMTBhMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzNkMTFhMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTNkMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxODNkMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTNkMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU4MjI0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDU4NjcwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU4MDA0ZiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjU4YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODU4YzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTU4YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzU4YzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDViNjMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDViMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTViMDE1NSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTVi MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzFmYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmYWFhMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDFmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM4NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NjM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODM4MTU1NSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM4NDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM4NDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM5YTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYTM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM5YTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZTM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM5 MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhhODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxOThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhYWFhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDhhMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhhODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMzhiNjMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThiMDA2 MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMThiMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyMzhiMDJhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiNTU1NSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyNzhiMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWE4MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWFhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1 MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgzNTQwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYjgzMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0YzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgw YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxOTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgwYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NTgwYzAwMCB9LAotCXsgX01NSU8oMHhkMjQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDRkODAxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNkODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDRmODAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ1ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQ3ODAwNDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAw NDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwMDQxIH0sCi19OwotCi1zdGF0aWMgaW50 Ci1nZXRfZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2NpbmdfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoq cmVncywKLQkJCQkJICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQot CWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrICYgMHgwMSkgewot CQlyZWdzW25dID0gbXV4X2NvbmZpZ19kYXRhX3BvcnRfcmVhZHNfY29hbGVzY2luZ18wX3N1YnNs aWNlc18weDAxOwotCQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2RhdGFfcG9ydF9y ZWFkc19jb2FsZXNjaW5nXzBfc3Vic2xpY2VzXzB4MDEpOwotCQluKys7Ci0JfQotCi0JcmV0dXJu IG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z19kYXRhX3BvcnRfd3JpdGVzX2NvYWxlc2NpbmdbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4 ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc0YyksIDB4YmE5OGJhOTggfSwKLQl7IF9NTUlPKDB4Mjc0OCksIDB4YmE5OGJh OTggfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDMzNzcgfSwKLQl7IF9NTUlPKDB4Mjc0MCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmNzIgfSwKLQl7IF9NTUlP KDB4Mjc3NCksIDB4MDAwMGJmZDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2ZmNjIgfSwK LQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmZDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAw N2ZmNDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGJmZDAgfSwKLQl7IF9NTUlPKDB4Mjc4 OCksIDB4MDAwN2ZmMDIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGJmZDAgfSwKLQl7IF9N TUlPKDB4Mjc5MCksIDB4MDAwNWZmZjIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGJmZDAg fSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwNWZmZTIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4 MDAwMGJmZDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwNWZmYzIgfSwKLQl7IF9NTUlPKDB4 MjdhNCksIDB4MDAwMGJmZDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwNWZmODIgfSwKLQl7 IF9NTUlPKDB4MjdhYyksIDB4MDAwMGJmZDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nW10g PSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAw eDAwMDAwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCi0JeyBfTU1JTygw eGU3NTgpLCAweDAwNzc4MDA4IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDg4MDc4IH0sCi0J eyBfTU1JTygweGU1NWMpLCAweDAwODA4NzA4IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwYTA4 OTA4IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdf ZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nXzBfc3Vic2xpY2VzXzB4MDFbXSA9IHsKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTAzZDAwMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzZDAxMjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzZDI0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTA1ODAyMmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1YjAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTk4YjAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1Y2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1Y2Mw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGU1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQ1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzZDAwOTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgz ZDAxODIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzZDE4MTQgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUzZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzZDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWEzZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzZDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1ODIyNDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA1ODY3MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1ODAwNGYgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDY1OGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1OGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE1OGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YjZh ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGU1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1YjU0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWE1YjAxNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YjQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1 YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZmE4MDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUxZmFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAyODIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzODQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTgzODE0MTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzODQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOWEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzOWEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzOTIwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzOTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4 YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTgyYTAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4YTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4YjYzMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YjAwNjIgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTE4YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjAy YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjE1NTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mjc4YjAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjE4NTJhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMjggfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI4MzAxNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDE4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9N TUlPKDB4ZDI0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 ZjgwMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0NzgwMDQyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMDQyMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MTgwMDA0MSB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2RhdGFfcG9ydF93 cml0ZXNfY29hbGVzY2luZ19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQkJICAg aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFzayAmIDB4MDEpIHsKLQkJcmVnc1tuXSA9IG11 eF9jb25maWdfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nXzBfc3Vic2xpY2VzXzB4MDE7Ci0J CWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNj aW5nXzBfc3Vic2xpY2VzXzB4MDEpOwotCQluKys7Ci0JfQotCi0JcmV0dXJuIG47Ci19Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3Nm W10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQp LCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTQpLCAweDEwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAw MDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmY3IH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1 OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9N TUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19oZGNf YW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwNWMwMjMyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwNTgwMjMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMzgwMjMyIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwZGMwMjMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwZDgw MjMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwYjgwMjMyIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExOGU0NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWM2MDgwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0NWMwMDRiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNWM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwNTgyMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy NTgwMDRiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWZhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMWYwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Mzg2MDgw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Mzg0MDRiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4Mzg0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhMzgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzgwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwMzk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzlh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2MzkyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjZGMyNWMxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZDgyNWMxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE4ZGI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFh ZGIwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWY4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwOWYwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjgyNWMxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE4YjgwMTU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhYjlhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODhjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBmODgwMDBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA1OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGE4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBiOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDI1OGJhYTA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDJhIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIyYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5 OGM1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGMwMDE1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5OGRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBkOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGUwNWMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1OGUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGYwMDIwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIxODVhYTBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzODUwMDJhIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODM1 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBk ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBiODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBmODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5ODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFkODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODBjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE3ODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQzODAwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1 ODAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ3ODAwYzYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAxMDQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAxNGE0IH0sCi19OwotCi1zdGF0 aWMgaW50Ci1nZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAg aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4 X2NvbmZpZ19oZGNfYW5kX3NmOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfaGRj X2FuZF9zZik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygweDI3 NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDE0MDAyIH0sCi0JeyBf TU1JTygweDI3N2MpLCAweDAwMDBjM2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAy IH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBjN2ZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAw eDAwMDA0MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBkM2ZmIH0sCi0JeyBfTU1JTygw eDI3OTApLCAweDAwMTAwNzAwIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZjFmIH0sCi0J eyBfTU1JTygweDI3OTgpLCAweDAwMDAxNDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBm YzNmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDAxMDAyIH0sCi0JeyBfTU1JTygweDI3YTQp LCAweDAwMDBmYzdmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDAwNDAyIH0sCi0JeyBfTU1J TygweDI3YWMpLCAweDAwMDBmZDNmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAw MDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1 OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIg fSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweDk4ODgp LCAweDEwYmYwM2RhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0YmYwMDAxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEyOTgwMzQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyOTkwMzQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjYmYxMTg3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl YmYxMjA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYmYwNTAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyYmYwNDJiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0YmYwMDJjIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBjZGFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlZGFjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwZGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyZGFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0ZGE0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0OTgzNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOTgwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2OTkwMDM0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOTkw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjOWRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlOWRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwOWQ4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyOWRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0OWQ0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwOWYwMmE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj OWZhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWYwMGJhIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjYjg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjYjk1MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlYjk1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwYjk0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYjk1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0YjkxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YjkyMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjYmE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODgwMDBmIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODg4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODg4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODgwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGI4MDBhIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIz OGI1NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFiOGMwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGM0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA1OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGM0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBiOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBkOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAxOGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGRh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA3OGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODU4MDBhIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAz ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODM0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODRjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA3ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE1ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1 ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDIxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQxODAwMDYwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfMV9tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyAqKnJlZ3MsCi0JCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJ TERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAx KTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ19sM18xKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzJbXSA9IHsKLQl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcy NCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKLQl7IF9N TUlPKDB4Mjc3NCksIDB4MDAwMGZmZjEgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMTQwMDIg fSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGMzZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4 MDAwMTAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGM3ZmYgfSwKLQl7IF9NTUlPKDB4 Mjc4OCksIDB4MDAwMDQwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGQzZmYgfSwKLQl7 IF9NTUlPKDB4Mjc5MCksIDB4MDAxMDA3MDAgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZm MWYgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDE0MDIgfSwKLQl7IF9NTUlPKDB4Mjc5Yyks IDB4MDAwMGZjM2YgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwMDEwMDIgfSwKLQl7IF9NTUlP KDB4MjdhNCksIDB4MDAwMGZjN2YgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwMDA0MDIgfSwK LQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZkM2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfMltdID0gewotCXsgX01NSU8oMHhlNDU4 KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01N SU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9 LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgw MDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzJbXSA9IHsKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTAzZjAzZGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzZjAwMDEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxODAzNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIx OTAzNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzZjExODcgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUzZjEyMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZjA1MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDIzZjA0MmIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzZjAwMmMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGU1YWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDI1YWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YTQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQxODM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxODAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxOTAwMzQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTAxOTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUxZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxZDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQx ZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAyYTggfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMxZmEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZjAwYmEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGMzODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzOTUwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAzOTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzOTUwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQzOTEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzOTIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMzYTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YWE4 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDc4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4YTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4 YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjQwMDUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mjc4YjAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjJhODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MjE4NTgwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMmEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWI4MzAxNTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDE4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4 NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDc4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NGY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDAwNjAgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF9sM18yX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgIGlu dCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9j b25maWdfbDNfMjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzIpOwotCW4r KzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfbDNfM1tdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZm MSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwg MHgwMDAwYzNmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8o MHgyNzg0KSwgMHgwMDAwYzdmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAot CXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEw MDcwMCB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4 KSwgMHgwMDAwMTQwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01N SU8oMHgyN2EwKSwgMHgwMDAwMTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9 LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgw MDAwZmQzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19sM18zW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBf TU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDEx IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAw eDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygw eGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfbDNfM1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFiMDM0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDNmMDI3NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MjNmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjliMDM0MCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMGJmMDI3NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMmJmMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDFiMzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFiMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTNkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDNmMDA4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjNmMDc5MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDNmMDAxNCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDU4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVh ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjVhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDVhNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTViNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDFkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFkYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzFmYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmMDAyYSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5NDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjM5NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM5OTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjliMDAzNCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDliMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmRjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwY2JkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2JmMDk4MSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZWJmMGEwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmQ4 NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZWRhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RiNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzlkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlkYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTlmMDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I4NDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwY2I5NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWI5NTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNmI5MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAw ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThhODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThi ODAwOSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyMzhiMmE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThjNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYjhjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhjNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhkMjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTg1ODAwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1 NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0 YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0NzgwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMTRhNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Zjgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMDA0NSB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X2wzXzNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Ci0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5z KQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19s M18zOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMyk7Ci0JbisrOwotCi0J cmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ19sM180W10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCi0J eyBfTU1JTygweDI3NzgpLCAweDAwMDE0MDAyIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBj M2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQp LCAweDAwMDBjN2ZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDA0MDAyIH0sCi0JeyBfTU1J TygweDI3OGMpLCAweDAwMDBkM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMTAwNzAwIH0s Ci0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZjFmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAw MDAxNDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYzNmIH0sCi0JeyBfTU1JTygweDI3 YTApLCAweDAwMDAxMDAyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzdmIH0sCi0JeyBf TU1JTygweDI3YTgpLCAweDAwMDAwNDAyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZDNm IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmln X2wzXzRbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4 ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7 IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEw NTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1Yyks IDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4 X2NvbmZpZ19sM180W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMWEwMzQwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwM2YwMDE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyM2YwMDIw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyOWEwMzQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwYmYwMDE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyYmYwMDIwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MWEzNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWEwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0M2I4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2Uw MDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwM2YwMjAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyM2YwMTEzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0M2YwMDE0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNTkyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNWE4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyNWFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 NWE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMWQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWRjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MWQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMWU4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWZhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlMWYwMDFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzk0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMzk1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzkxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2OWEwMDM0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOWEw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YmI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhYmUwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjYmYwOTg0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlYmYwYTAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyZDk0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjZGFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl ZGFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjOWMwNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjOWRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWRjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBjOWUwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOWYwMmE4 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjYjk1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjk1MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBmODgwMDBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODgwNDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGE4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDI1OGI4MDA5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDJhIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIyYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5 OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGMwMDE1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBkOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBmOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGQyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODU4MDBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiODMwMTU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAz ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE1ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODA0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1ODAwODAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ3ODAwODQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAxMDg0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwMDQ0IH0s Ci19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfNF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms Ci0JCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX2wzXzQ7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19s M180KTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9 IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4 MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDYw MDAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGYzZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCks IDB4MDAwMDE4MDAgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZjZmYgfSwKLQl7IF9NTUlP KDB4Mjc4MCksIDB4MDAwMDA2MDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZmM2YgfSwK LQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDAxODAgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAw MGZmY2YgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwNjAgfSwKLQl7IF9NTUlPKDB4Mjc5 NCksIDB4MDAwMGZmZjMgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMTggfSwKLQl7IF9N TUlPKDB4Mjc5YyksIDB4MDAwMGZmZmMgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0g ewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgw MDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhl NzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsg X01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1 NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQz YjAwMGUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzYzU1YzAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGExZTAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZTA0MDggfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTAzOTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzOTdhMWYg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTRiYjAwMGUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDRiYzUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5ZTAyOTYgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGM5ZTAwMDggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiOTAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTJiOTdhMWYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzYjAw NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzYjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgzYzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzZTAwNDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQzZjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1OTQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMx YzA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDgxZTAyYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGMxZmE4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZjAyNjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAzOTA1ZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzOTBiYzAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDIzOTAwMTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzOTQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDRiYjAwNDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiYjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiYzA1YzAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDhiYzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFiZTAwMDQgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDJiZjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkOTEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkYTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg5 YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDg5ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU5ZTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGU5ZmE4MDYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA5ZjAxNDIg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhiOTA2MTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGFiOTBiZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiOTQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGQ4OGYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4ODAwMGMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDc4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4ODgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGY4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTI4MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDM4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4 YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjUyYTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjU4YjZhOTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc4YjAwMjkgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTc4YzIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YzE1MDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YzAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDc4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4YzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDk4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4ZGEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGY4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ZDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWY4NWFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjM4NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4 MzU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NGMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDc4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGI4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDA0NDQg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Q4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NGY4MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM4MDEwODAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwODQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTM4MDAwNDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDEw ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDE4MDA4NDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkJCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQkJ ICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQlsZW5zW25dID0gQVJS QVlfU0laRShtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCW4rKzsK LQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfc2FtcGxlcl8xW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDcwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0J eyBfTU1JTygweDI3NzApLCAweDAwMDBjMDAwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBl N2ZmIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAzMDAwIH0sCi0JeyBfTU1JTygweDI3N2Mp LCAweDAwMDBmOWZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwYzAwIH0sCi0JeyBfTU1J TygweDI3ODQpLCAweDAwMDBmZTdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGZsZXhfZXVfY29uZmlnX3NhbXBsZXJfMVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwg MHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8o MHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAot CXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1 MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3NhbXBsZXJfMVtdID0gewotCXsgX01N SU8oMHg5ODg4KSwgMHgxODkyMTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDk1MDBhYiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGIyMTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NGI1MDBhYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGQyMTQwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNGQ1MDBhYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZWRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmRjYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYWJkMDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWJkODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwY2Q4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWQ4NDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNGQ4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYWRi MDA1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGRiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNmRiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGRiODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYWRiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlmYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTlmMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGI4MjUwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMmI4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI4NDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNmI4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI4NDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWI4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwY2I4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I5ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI5ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMmI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI5 YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI5MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYWJhMDIwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmJhODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwY2JhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDkwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDkxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDkyNzMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDkyMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxODkzMDAwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTkzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTk0NjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzk1OTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTk1MDA5OCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDk1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGIwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNGIxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGIyMDA3MyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMGIyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGIz ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmIzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwOGIzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMmI1OTg5MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGI1MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmQwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NmQxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmQyMDA3MyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMGQyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGQzMDAyMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMmQzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2QzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWQ0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNGQ0MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWQ1OTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMGQ1OTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGQ1MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAwZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg4 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4ODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYjg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4MDQwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy MzhiNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiMDAwYSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjhjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhjNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhjNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYjhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZDhkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMThkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhk YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzhkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1MDAwYSB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgw ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 NzgwMTAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzZjgwMGM2NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMGMwMiB9LAotfTsKLQotc3RhdGljIGludAot Z2V0X3NhbXBsZXJfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJIGludCAqbGVucykK LXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfc2Ft cGxlcl8xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfc2FtcGxlcl8xKTsKLQlu Kys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBi X2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfMltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHg3MDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwYzAwMCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwZTdmZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMzAwMCB9LAotCXsgX01NSU8oMHgy NzdjKSwgMHgwMDAwZjlmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMGMwMCB9LAotCXsg X01NSU8oMHgyNzg0KSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19zYW1wbGVyXzJbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1 OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9N TUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQg fSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4 MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyXzJbXSA9IHsKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTgxMjE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxNTAw YWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzMjE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTQzNTAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1MjE0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTQ1NTAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1 Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWEzZDAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzZDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGM1ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1ODQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWE1YjAwNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YjgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDY1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1YjgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAy YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxZmEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUxZjAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzODI1MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDIzODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzODQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgz ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMzODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzOTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzOTIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWEzYTAyMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzYTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMzYTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQxMjczMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxMjAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTgxMzAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExMzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNDYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMx NTkwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxNTAwOTggfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTAxNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQzMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMjAwNzMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDgzMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzNGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDIzNTk4OTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNTAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDY1MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1MjAwNzMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTA1MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1MzAwMjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQ1NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NTkwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA1NTk4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NTAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDU4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mjc4YjAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjJhODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjU4YjAwMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAwMmEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4 NTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWQ4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDc4MDEwMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDBjNjQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NGY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDBjMDIgfSwKLX07Ci0KLXN0YXRp YyBpbnQKLWdldF9zYW1wbGVyXzJfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSBpbnQg KmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29u ZmlnX3NhbXBsZXJfMjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3NhbXBsZXJf Mik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAw MCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwg MHgwMDAwZmRmZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzdjKSwgMHgwMDAwZmU3ZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9LAot CXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmZiZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZjZiB9LAotCXsgX01NSU8oMHgyNzkw KSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmZmNyB9LAotCXsgX01N SU8oMHgyNzk4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmZmOSB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190 ZGxfMVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhl NTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsg X01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1 MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwg MHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhf Y29uZmlnX3RkbF8xW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2MTU0ZDYwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE2MzUyZTYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2NTU0ZDYw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2OTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE2YjUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2ZDUwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwNWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NWNjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2NWM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4M2Q4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2Q4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0NThjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWI4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA4NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNWI0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjNWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MWZhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWYwMGFhIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Mzg4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2Mzg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4Mzg0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjMzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzk4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzlhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MzkyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0M2E4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2M2E4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA4MTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMTM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2MTQzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTVjZmM3IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MzM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0MzQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzQ0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMzVjNzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzUwMGNm IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMzUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0NTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0NTRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTVjZmM3IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwNTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2ZGM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4ZGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjZGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlZGNjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFhYmQwMGE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjZDhjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlZDg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl ZGI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4ZGIwODAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFhZGIwMjU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWZhYTAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwOWYwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjg0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2Yjg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE4YjgxNTZhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Yjk4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4YjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhYjlhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjYjlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjlh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4YmFhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhYmEwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2OTM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE4OTMwMDBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhOTQ3MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjOTVjNWMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl OTUwMGMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOTUwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlYjM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2YjMwMDQwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE4YjMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YjQ4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4YjQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhYjQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2YjVjNTAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4YjUwMGMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlYjVjMTAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwYjUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2ZDMx NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4ZDRlMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA4ZDVjMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZDVjM2M1IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwZDUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODhmODAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBmODgwMDBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAz OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGE4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGJhYWE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDI3OGIwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIyYTgwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBmOGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OGMyMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE5OGM1NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGMw MDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIxODVhYWFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIz ODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBmODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODM1NDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODM0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA3ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODRj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAxODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3 ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFiODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE1ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQzODAwYzQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ1ODAwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDIxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAxNGE0IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQxODAxMDQyIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRf dGRsXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAg ICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgICBpbnQgKmxlbnMpCi17 Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3RkbF8x OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGRsXzEpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9j b25maWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYgfSwKLQl7 IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZl N2YgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCks IDB4MDAwMGZmOWYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc4YyksIDB4MDAwMGZmZTcgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwK LQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmZmIgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAw MDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmZmQgfSwKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGRsXzJbXSA9IHsKLQl7IF9N TUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMg fSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4 MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4 ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZGxfMltdID0g ewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjE1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NjM1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjU1MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNjk1MmU2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmI1NGQ2MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNmQ1MmU2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjVjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzVjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTNkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODNkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjU4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODU4 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTU4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODViNTgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTViMDAwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmYWEwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM4NDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxODM4MmE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM5ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwODM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM5YTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTNhMDJhMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTEzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjEzMDUwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjE0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE0 NjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE1YzEwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODE1YzUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTE1MDBjMyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDE1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjMzNTA0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM0OTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YTM0MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM1MDBjMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTM1YzUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM1MDBjMyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDM1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODUzMDAy YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTU0ZTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzU1YzUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU1YzFjMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDU1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGRjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMmRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGRj NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNmJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmQ4YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMmRiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGRiNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmRiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw OGRiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlmYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTlmMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmI4NDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNGI4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI4NDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYWI4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I4ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMGI5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmI5YTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNGI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI5 MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWJhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwY2JhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDkzODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDk0YzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjk1Y2ZjNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDk1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIzODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwOGIzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI0MjAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNmI0MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGI1Yzcw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGI1MDBjZiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMGI1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWQzODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwY2QzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmQ0NjAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNGQ1YzcwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmQ1 MDBjZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGQ1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMzg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg4ODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNzg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDg4MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhYWFhMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDhhMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiNTU1 YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzhiMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyMzhiNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhjNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwOThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhj NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMThkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNThkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhkMjAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWFhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy Mzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgzNTQwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0 YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MzgwMDg4MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMTA4MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Mzgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMTRhNSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMDAwMiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMGM2MiB9LAotfTsKLQotc3RhdGljIGludAotZ2V0 X3RkbF8yX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkg ICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAgaW50ICpsZW5zKQot ewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxf MjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8yKTsKLQluKys7Ci0KLQly ZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRyYVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwMTAwMCB9LAotCXsgX01NSU8o MHhlNTU4KSwgMHgwMDAwMzAwMiB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwNTAwNCB9LAot CXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxMTAxMCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1 MDAxMiB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MjA1MSB9LAotCXsgX01NSU8oMHhlNjVj KSwgMHgwMDAwMDAwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBt dXhfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxNTAz ZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzNTAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTY1NTAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY5NTAzZTAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTZiNTAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTZkNTAzZTAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgz ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDg1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1YjgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUxZjAwYTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzODQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMzODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzOWEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDYzOTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzYTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgxMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNDEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNTAwYzMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTAxNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzMzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYzNDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzNWMzMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1 MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDY1NTAwYzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDBkYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkYzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDBkODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkYjQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDRkYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZmEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU5ZjAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiODQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDZiODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBiOTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDJiOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiYTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5 NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA5NWMzMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTA5NTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiMzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDRiNDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiNTAwYzMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDZkMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkNDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDJkNWMzMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBkNTAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDM4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ODgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGQ4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4YjM1MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjAwMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ZDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDM4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDc4NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4M2Y4MDBjNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDE0ODIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzE4MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2V4dHJhX211eF9jb25m aWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAw OwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Mp IDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfZXh0cmE7Ci0J bGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQluKys7Ci0K LQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50 ZXJfY29uZmlnX3ZtZV9waXBlW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDMwIH0sCi0JeyBf TU1JTygweDI3NzQpLCAweDAwMDBmZmY5IH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAy IH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZmZjIH0sCi0JeyBfTU1JTygweDI3ODApLCAw eDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZmYzIH0sCi0JeyBfTU1JTygw eDI3ODgpLCAweDAwMTAwMTgwIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmNmIH0sCi0J eyBfTU1JTygweDI3OTApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBm ZmNmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OWMp LCAweDAwMDBmZjNmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZs ZXhfZXVfY29uZmlnX3ZtZV9waXBlW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0 IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDA4MDAzIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdm1lX3BpcGVbXSA9IHsKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTQxMDA4MTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxMjU4MDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTYxMjAwYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzMDA4 MTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzMjU4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTYzMjAwYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDY1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1Y2MwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1 Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUzZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzZDI4MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA1ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1ODgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1OGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1YjQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTg1Yjk0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YjAwMmEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMxZjA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZmFh MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzODQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTYzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzODAxNTUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzOTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYz OTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGEzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzOWEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAxMDAwNDcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMDFhODAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxMDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgxMGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMWMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDgxMjYxNTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxMjAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxMzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxMzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGEzMDFhYzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzMDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGMzMGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMWMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMjYxNTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAz MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzMzJhMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTgzMzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4YTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTJhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MjM4YjAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjU1NTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4Mjc4YjAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NTAwODAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAw MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MzU0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWI4MzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTc4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWQ4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4M2Q4MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDM4MDAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE4MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDA4ODQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDAwMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwK LX07Ci0KLXN0YXRpYyBpbnQKLWdldF92bWVfcGlwZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms Ci0JCQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0g PSBtdXhfY29uZmlnX3ZtZV9waXBlOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf dm1lX3BpcGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGVzdF9vYVtdID0gewotCXsgX01NSU8oMHgy NzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwNCB9LAotCXsgX01NSU8o MHgyNzc0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMyB9LAot CXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAw MDAwNyB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzg4 KSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZmNyB9LAotCXsgX01N SU8oMHgyNzkwKSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmZjZiB9 LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDEwMDA4MiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgw MDAwZmZlZiB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDEwMDBjMiB9LAotCXsgX01NSU8oMHgy N2E0KSwgMHgwMDAwZmZlNyB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAwMSB9LAotCXsg X01NSU8oMHgyN2FjKSwgMHgwMDAwZmZlNyB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7Ci19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewotCXsgX01NSU8o MHg5ODg4KSwgMHgxOThiMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhiMDA2NiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMThiMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThi MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1MDAwOCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotfTsKLQotc3RhdGlj IGludAotZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAg ICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0g bXV4X2NvbmZpZ190ZXN0X29hOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVz dF9vYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLWludCBpOTE1X29hX3NlbGVjdF9tZXRy aWNfc2V0X2JkdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0JZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKLQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKLQotCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0 cmljc19zZXQpIHsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgotCQlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZp ZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJ CSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3Vp dGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKLQot CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8K LQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25m aWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJ ZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQot CQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQzoKLQkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29u ZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJ CQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5v IHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIp OwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tl ZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJ CSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz ID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jh c2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJP RklMRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfcmVuZGVy X3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCSAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9QSVBF X1BST0ZJTEVcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0 IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0K LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZp Z19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn c19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2Zp bGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZp Z19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0K LQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUzoKLQkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3JlYWRzX211eF9jb25m aWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJ CQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JFQURTXCIgbWV0cmljIHNldFxuIik7Ci0K LQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRo aXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vy c3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICov Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29u ZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJ CWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0K LQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVM6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X21lbW9yeV93cml0ZXNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0J CQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJO byBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBtZXRyaWMgc2V0XG4i KTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNr ZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRv IHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0J CQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbWVtb3J5X3dy aXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5E RUQ6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVf ZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYg KGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RS SVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0VYVEVOREVEXCIgbWV0 cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxy ZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2 ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJl cXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRl bmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsK LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklD X1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25m aWdzID0KLQkJCWdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJ CQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi Q09NUFVURV9MM19DQUNIRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVz ZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQg d291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28g c2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7 Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50 ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19j YWNoZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29u ZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKLQotCQly ZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfREFUQV9QT1JUX1JFQURTX0NPQUxFU0NJTkc6 Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2RhdGFfcG9ydF9y ZWFkc19jb2FsZXNjaW5nX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJCSAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiREFUQV9QT1JU X1JFQURTX0NPQUxFU0NJTkdcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFM OwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3Vu dGVyX2NvbmZpZ19kYXRhX3BvcnRfcmVhZHNfY29hbGVzY2luZzsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19k YXRhX3BvcnRfcmVhZHNfY29hbGVzY2luZyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9j b25maWdfZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2NpbmcpOwotCi0JCXJldHVybiAwOwotCWNhc2Ug TUVUUklDX1NFVF9JRF9EQVRBX1BPUlRfV1JJVEVTX0NPQUxFU0NJTkc6Ci0JCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2RhdGFfcG9ydF93cml0ZXNfY29hbGVzY2lu Z19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCQkgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKLQkJCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiREFUQV9QT1JUX1dSSVRFU19DT0FM RVNDSU5HXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0 ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBo YXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3Qg aGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdf ZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2RhdGFfcG9ydF93 cml0ZXNfY29hbGVzY2luZyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJ CWZsZXhfZXVfY29uZmlnX2RhdGFfcG9ydF93cml0ZXNfY29hbGVzY2luZzsKLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2Rh dGFfcG9ydF93cml0ZXNfY29hbGVzY2luZyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNf U0VUX0lEX0hEQ19BTkRfU0Y6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQot CQkJZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkhEQ19BTkRfU0Zc IiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNm cyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJl ZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5k X3NmOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlf U0laRShiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2YpOwotCi0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfaGRj X2FuZF9zZik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzE6Ci0JCWRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2wzXzFfbXV4X2NvbmZpZyhk ZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAg ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5v YS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxl IE1VWCBjb25maWcgZm9yIFwiTDNfMVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwg YmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQg c28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJ ICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1F SU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQli X2NvdW50ZXJfY29uZmlnX2wzXzE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbDNfMSk7Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2wzXzE7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZp Z19sM18xKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMjoKLQkJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbDNfMl9tdXhfY29uZmlnKGRl dl9wcml2LAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUg TVVYIGNvbmZpZyBmb3IgXCJMM18yXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBi ZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBz byBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkg KiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJ TlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJf Y291bnRlcl9jb25maWdfbDNfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18yKTsKLQotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfbDNfMjsKLQkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmln X2wzXzIpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9MM18zOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9sM18zX211eF9jb25maWcoZGV2 X3ByaXYsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eu bl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBN VVggY29uZmlnIGZvciBcIkwzXzNcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAq IHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlO VkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9j b3VudGVyX2NvbmZpZ19sM18zOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2wzXzMpOwotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19sM18zOwotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf bDNfMyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzQ6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2wzXzRfbXV4X2NvbmZpZyhkZXZf cHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1V WCBjb25maWcgZm9yIFwiTDNfNFwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVj YXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28g aXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICog c28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5W QUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2Nv dW50ZXJfY29uZmlnX2wzXzQ7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfbDNfNCk7Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2wzXzQ7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19s M180KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRf UElYRUxfQkFDS0VORDoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQln ZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJ CQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNv bmZpZyBmb3IgXCJSQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EXCIgbWV0cmljIHNldFxuIik7 Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2Vk IHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1 c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJ ICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmFzdGVy aXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmQpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9TQU1QTEVSXzE6Ci0J CWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3NhbXBsZXJfMV9tdXhf Y29uZmlnKGRldl9wcml2LAotCQkJCQkJIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJ CQkJIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0 YWJsZSBNVVggY29uZmlnIGZvciBcIlNBTVBMRVJfMVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkv KiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0J CQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNl IGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJ cmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn cyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19zYW1w bGVyXzEpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2Nv bmZpZ19zYW1wbGVyXzE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19zYW1wbGVyXzEpOwotCi0JCXJldHVybiAwOwotCWNh c2UgTUVUUklDX1NFVF9JRF9TQU1QTEVSXzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPQotCQkJZ2V0X3NhbXBsZXJfMl9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlNBTVBM RVJfMlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVy X3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2 ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhh dmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3Nh bXBsZXJfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFS UkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19zYW1wbGVyXzIpOwotCi0JCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19zYW1wbGVyXzI7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19z YW1wbGVyXzIpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9URExfMToKLQkJ ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfdGRsXzFfbXV4X2NvbmZp ZyhkZXZfcHJpdiwKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJ ICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3Vp dGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBF SU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkg KiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFu ZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9 Ci0JCQliX2NvdW50ZXJfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8xKTsKLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfdGRsXzE7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4 X2V1X2NvbmZpZ190ZGxfMSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1RE TF8yOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF90ZGxfMl9t dXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz LAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlRETF8yXCIgbWV0cmljIHNldFxuIik7Ci0K LQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRo aXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vy c3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICov Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfdGRsXzI7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGRs XzIpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZp Z190ZGxfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9T SVpFKGZsZXhfZXVfY29uZmlnX3RkbF8yKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19T RVRfSURfQ09NUFVURV9FWFRSQToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 Ci0JCQlnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi Q09NUFVURV9FWFRSQVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAq X3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291 bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hv dWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0J CX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJf Y29uZmlnX2NvbXB1dGVfZXh0cmE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0K LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1 dGVfZXh0cmE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlf U0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQotCQlyZXR1cm4gMDsKLQljYXNl IE1FVFJJQ19TRVRfSURfVk1FX1BJUEU6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPQotCQkJZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQlkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlZNRV9QSVBFXCIg bWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMg YWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4g YWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVu IHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfdm1lX3BpcGU7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpF KGJfY291bnRlcl9jb25maWdfdm1lX3BpcGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ192bWVfcGlwZTsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3ZtZV9waXBlKTsK LQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfVEVTVF9PQToKLQkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9w cml2LAotCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICAg ICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFi bGUgTVVYIGNvbmZpZyBmb3IgXCJURVNUX09BXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJ TlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAq IGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5k Ci0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1 cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0K LQkJCWJfY291bnRlcl9jb25maWdfdGVzdF9vYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsK LQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfdGVz dF9vYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpF KGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2EpOwotCi0JCXJldHVybiAwOwotCWRlZmF1bHQ6Ci0JCXJl dHVybiAtRU5PREVWOwotCX0KLX0KLQotc3RhdGljIHNzaXplX3QKLXNob3dfcmVuZGVyX2Jhc2lj X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf UkVOREVSX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9h dHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9 IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jhc2ljW10gPSB7 Ci0JJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7Ci0JLm5hbWUgPSAi YjU0MWJkNTctMGUwZi00MTU0LWI0YzAtNTg1ODAxMGEyYmY3IiwKLQkuYXR0cnMgPSAgYXR0cnNf cmVuZGVyX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9iYXNpY19p ZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NP TVBVVEVfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0 dHJfY29tcHV0ZV9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9 IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9iYXNpY19pZCwKLQkuc3RvcmUgPSBOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfYmFzaWNbXSA9 IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2Jhc2ljID0gewotCS5uYW1l ID0gIjM1ZmJjOWIyLWE4OTEtNDBhNi1hMzhkLTAyMmJiNzA1NzU1MiIsCi0JLmF0dHJzID0gIGF0 dHJzX2NvbXB1dGVfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yZW5kZXJfcGlw ZV9wcm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkID0gewotCS5hdHRyID0g eyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yZW5kZXJfcGlw ZV9wcm9maWxlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCSZkZXZfYXR0cl9yZW5kZXJf cGlwZV9wcm9maWxlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUgPSB7Ci0JLm5hbWUgPSAiMjMzZDA1 NDQtZmZmNy00MjgxLTgyOTEtZTAyZjIyMmFmZjcyIiwKLQkuYXR0cnMgPSAgYXR0cnNfcmVuZGVy X3BpcGVfcHJvZmlsZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9yeV9yZWFkc19p ZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01F TU9SWV9SRUFEUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0 cl9tZW1vcnlfcmVhZHNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV9yZWFkc19pZCwKLQkuc3RvcmUgPSBOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV9yZWFkc1tdID0gewot CSZkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewotCS5uYW1lID0gIjJi MjU1ZDQ4LTIxMTctNGZlZi1hOGY3LWYxNTFlMWQyNWEyYyIsCi0JLmF0dHJzID0gIGF0dHJzX21l bW9yeV9yZWFkcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9yeV93cml0ZXNfaWQo c3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9NRU1P UllfV1JJVEVTKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRy X21lbW9yeV93cml0ZXNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV93cml0ZXNfaWQsCi0JLnN0b3JlID0gTlVMTCwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlfd3JpdGVzW10gPSB7 Ci0JJmRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9IHsKLQkubmFtZSA9 ICJmN2ZkMzIyMC1iNDY2LTRhNGQtOWY5OC1iMGNhZjNmMjM5NGMiLAotCS5hdHRycyA9ICBhdHRy c19tZW1vcnlfd3JpdGVzLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9leHRl bmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0 ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VU X0lEX0NPTVBVVEVfRVhURU5ERUQpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAi aWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9leHRlbmRlZF9pZCwK LQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2Nv bXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZC5hdHRy LAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21w dXRlX2V4dGVuZGVkID0gewotCS5uYW1lID0gImU5OWNjYWNhLTgyMWMtNGRmOS05N2E3LTk2YmRi NzIwNGU0MyIsCi0JLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQsCi19OwotCi1zdGF0 aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNw cmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNIRSk7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2wzX2NhY2hl X2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93 ID0gc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9sM19jYWNoZVtdID0gewotCSZkZXZf YXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7Ci0JLm5hbWUgPSAi MjdhMzY0ZGMtODIyNS00ZWNiLWI2MDctZDZmMTkyNTU5OGQ5IiwKLQkuYXR0cnMgPSAgYXR0cnNf Y29tcHV0ZV9sM19jYWNoZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2RhdGFfcG9ydF9y ZWFkc19jb2FsZXNjaW5nX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIs IE1FVFJJQ19TRVRfSURfREFUQV9QT1JUX1JFQURTX0NPQUxFU0NJTkcpOwotfQotCi1zdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2Np bmdfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfZGF0YV9wb3J0X3JlYWRzX2Nv YWxlc2NpbmdbXSA9IHsKLQkmZGV2X2F0dHJfZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2NpbmdfaWQu YXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBf ZGF0YV9wb3J0X3JlYWRzX2NvYWxlc2NpbmcgPSB7Ci0JLm5hbWUgPSAiODU3ZmM2MzAtMmYwOS00 ODA0LTg1ZjEtMDg0YWRmYWRkNWFiIiwKLQkuYXR0cnMgPSAgYXR0cnNfZGF0YV9wb3J0X3JlYWRz X2NvYWxlc2NpbmcsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19kYXRhX3BvcnRfd3JpdGVz X2NvYWxlc2NpbmdfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9EQVRBX1BPUlRfV1JJVEVTX0NPQUxFU0NJTkcpOwotfQotCi1zdGF0aWMgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5n X2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93 ID0gc2hvd19kYXRhX3BvcnRfd3JpdGVzX2NvYWxlc2NpbmdfaWQsCi0JLnN0b3JlID0gTlVMTCwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19kYXRhX3BvcnRfd3JpdGVzX2Nv YWxlc2NpbmdbXSA9IHsKLQkmZGV2X2F0dHJfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nX2lk LmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3Vw X2RhdGFfcG9ydF93cml0ZXNfY29hbGVzY2luZyA9IHsKLQkubmFtZSA9ICIzNDNlYmM5OS00YTU1 LTQxNGMtOGMxNy1kOGUyNTljZjVlMjAiLAotCS5hdHRycyA9ICBhdHRyc19kYXRhX3BvcnRfd3Jp dGVzX2NvYWxlc2NpbmcsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19oZGNfYW5kX3NmX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfSERD X0FORF9TRik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9o ZGNfYW5kX3NmX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9 LAotCS5zaG93ID0gc2hvd19oZGNfYW5kX3NmX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2FuZF9zZltdID0gewotCSZkZXZfYXR0 cl9oZGNfYW5kX3NmX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGdyb3VwX2hkY19hbmRfc2YgPSB7Ci0JLm5hbWUgPSAiN2JkYWZkODgtYTRmYS00 ZWQ1LWJjMDktMWE5NzdhYTViZTNlIiwKLQkuYXR0cnMgPSAgYXR0cnNfaGRjX2FuZF9zZiwKLX07 Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50 ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18xKTsKLX0KLQotc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzFfaWQsCi0JLnN0b3JlID0g TlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18xW10gPSB7Ci0J JmRldl9hdHRyX2wzXzFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMSA9IHsKLQkubmFtZSA9ICI5Mzg1ZWJiMi1mMzRmLTRhYTUt YWVjNS03ZTljYmJlYTBmMGIiLAotCS5hdHRycyA9ICBhdHRyc19sM18xLAotfTsKLQotc3RhdGlj IHNzaXplX3QKLXNob3dfbDNfMl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX0wzXzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfbDNfMl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMl9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsK LQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzJbXSA9IHsKLQkmZGV2X2F0dHJf bDNfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBncm91cF9sM18yID0gewotCS5uYW1lID0gIjQ0NmFlNTliLWZmMmUtNDFjOS1iNDllLTAxODRh NTRiZjAwYSIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzIsCi19OwotCi1zdGF0aWMgc3NpemVfdAot c2hvd19sM18zX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfTDNfMyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9sM18zX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9 LAotCS5zaG93ID0gc2hvd19sM18zX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfM1tdID0gewotCSZkZXZfYXR0cl9sM18zX2lkLmF0 dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2wz XzMgPSB7Ci0JLm5hbWUgPSAiODRhNzk1NmYtMWVhNC00ZDBkLTgzN2YtZTM5YTAzNzZlMzhjIiwK LQkuYXR0cnMgPSAgYXR0cnNfbDNfMywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzRf aWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9M M180KTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzRf aWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cg PSBzaG93X2wzXzRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc19sM180W10gPSB7Ci0JJmRldl9hdHRyX2wzXzRfaWQuYXR0ciwKLQlOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfNCA9IHsKLQku bmFtZSA9ICI5MmI0OTNkOS1kZjE4LTRiZWQtYmUwNi01Y2FjNmYyYTZmNWYiLAotCS5hdHRycyA9 ICBhdHRyc19sM180LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfcmFzdGVyaXplcl9hbmRf cGl4ZWxfYmFja2VuZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQpOwotfQotCi1zdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZF9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQku c2hvdyA9IHNob3dfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZCwKLQkuc3RvcmUgPSBO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Jhc3Rlcml6ZXJfYW5k X3BpeGVsX2JhY2tlbmRbXSA9IHsKLQkmZGV2X2F0dHJfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZF9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kID0gewotCS5uYW1lID0gIjE0MzQ1 YzM1LWNjNDYtNDBkMC1iYjA0LTZlZDFmYmI0MzY3OSIsCi0JLmF0dHJzID0gIGF0dHJzX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19zYW1w bGVyXzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NF VF9JRF9TQU1QTEVSXzEpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2 X2F0dHJfc2FtcGxlcl8xX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0g MDQ0NCB9LAotCS5zaG93ID0gc2hvd19zYW1wbGVyXzFfaWQsCi0JLnN0b3JlID0gTlVMTCwKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hW10g PSB7CisJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NDQpLCAw eDAwODAwMDAwIH0sCisJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCisJeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCisJ eyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDAw MDA0IH0sCisJeyBfTU1JTygweDI3NzQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3Nzgp LCAweDAwMDAwMDAzIH0sCisJeyBfTU1JTygweDI3N2MpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1J TygweDI3ODApLCAweDAwMDAwMDA3IH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDAwMDAwIH0s CisJeyBfTU1JTygweDI3ODgpLCAweDAwMTAwMDAyIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAw MDBmZmY3IH0sCisJeyBfTU1JTygweDI3OTApLCAweDAwMTAwMDAyIH0sCisJeyBfTU1JTygweDI3 OTQpLCAweDAwMDBmZmNmIH0sCisJeyBfTU1JTygweDI3OTgpLCAweDAwMTAwMDgyIH0sCisJeyBf TU1JTygweDI3OWMpLCAweDAwMDBmZmVmIH0sCisJeyBfTU1JTygweDI3YTApLCAweDAwMTAwMGMy IH0sCisJeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZmU3IH0sCisJeyBfTU1JTygweDI3YTgpLCAw eDAwMTAwMDAxIH0sCisJeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZmU3IH0sCiB9OwogCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfc2FtcGxlcl8xW10gPSB7Ci0JJmRldl9hdHRyX3Nh bXBsZXJfMV9pZC5hdHRyLAotCU5VTEwsCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKIH07CiAKLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGdyb3VwX3NhbXBsZXJfMSA9IHsKLQkubmFtZSA9ICJmMGM2YmEzNy1kM2QzLTQy MTEtOTFiNS0yMjY3MzAzMTJhNTQiLAotCS5hdHRycyA9ICBhdHRyc19zYW1wbGVyXzEsCitzdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0geworCXsg X01NSU8oMHg5ODg4KSwgMHgxOThiMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhiMDA2 NiB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgxMThiMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwg MHgyNThiMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1MDAwOCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgwZDgzNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9LAor CXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgw MDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4 KSwgMHg0MTgwMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAogfTsKIAot c3RhdGljIHNzaXplX3QKLXNob3dfc2FtcGxlcl8yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCitzdGF0aWMgaW50CitnZXRf dGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJ ICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCisJCSAgICAgICBpbnQgKmxl bnMpCiB7Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfU0FNUExF Ul8yKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBs ZXJfMl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQku c2hvdyA9IHNob3dfc2FtcGxlcl8yX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OworCWludCBuID0g MDsKIAotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3NhbXBsZXJfMltdID0gewotCSZk ZXZfYXR0cl9zYW1wbGVyXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKKwlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKKwlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwogCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyXzIgPSB7Ci0JLm5hbWUgPSAi MzBiZjM3MDItNDhjZi00YmNhLWI0MTItN2NmNTBiYjJmNTY0IiwKLQkuYXR0cnMgPSAgYXR0cnNf c2FtcGxlcl8yLAotfTsKKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7CisJbisrOwogCi1zdGF0aWMgc3NpemVf dAotc2hvd190ZGxfMV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX1RETF8xKTsKKwlyZXR1cm4gbjsKIH0KIAotc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8xX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd190ZGxfMV9pZCwKLQkuc3RvcmUgPSBO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3RkbF8xW10gPSB7Ci0J JmRldl9hdHRyX3RkbF8xX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8xID0gewotCS5uYW1lID0gIjIzOGJlYzg1LWRmMDUtNDRm My1iOTA1LWQxNjY3MTJmMjQ1MSIsCi0JLmF0dHJzID0gIGF0dHJzX3RkbF8xLAotfTsKLQotc3Rh dGljIHNzaXplX3QKLXNob3dfdGRsXzJfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRy aWNfc2V0X2JkdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVERMXzIpOwotfQotCi1zdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzJfaWQgPSB7Ci0JLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3RkbF8yX2lkLAot CS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRs XzJbXSA9IHsKLQkmZGV2X2F0dHJfdGRsXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzIgPSB7Ci0JLm5hbWUgPSAiMjRiZjAy Y2QtODY5My00NTgzLTk4MWMtYzQxNjViMzNkYTAxIiwKLQkuYXR0cnMgPSAgYXR0cnNfdGRsXzIs Ci19OworCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPSAwOworCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9IE5VTEw7CisJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7CiAKLXN0YXRpYyBzc2l6ZV90Ci1z aG93X2NvbXB1dGVfZXh0cmFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVFJBKTsKLX0KKwlzd2l0Y2ggKGRldl9wcml2LT5w ZXJmLm9hLm1ldHJpY3Nfc2V0KSB7CisJY2FzZSBNRVRSSUNfU0VUX0lEX1RFU1RfT0E6CisJCWRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQorCQkJZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZp ZyhkZXZfcHJpdiwKKwkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAorCQkJ CQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7CisJCWlmIChkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKKwkJCURSTV9ERUJVR19EUklWRVIoIk5v IHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVEVTVF9PQVwiIG1ldHJpYyBzZXRcbiIpOwogCi1z dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRyYV9pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfY29tcHV0ZV9leHRyYV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKKwkJCS8qIEVJTlZBTCBi ZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKKwkJCSAqIGFuZCBz byBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCisJCQkg KiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAorCQkJICovCisJCQlyZXR1cm4gLUVJ TlZBTDsKKwkJfQogCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9leHRy YVtdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkLmF0dHIsCi0JTlVMTCwKLX07CisJ CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KKwkJCWJfY291bnRlcl9jb25maWdf dGVzdF9vYTsKKwkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KKwkJCUFS UkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hKTsKIAotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsKLQkubmFtZSA9ICI4ZmI2MWJhMi0y ZmJiLTQ1NGMtYTEzNi0yZGVjNWE4YTU5NWUiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4 dHJhLAotfTsKKwkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KKwkJCWZsZXhfZXVfY29u ZmlnX3Rlc3Rfb2E7CisJCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQorCQkJQVJS QVlfU0laRShmbGV4X2V1X2NvbmZpZ190ZXN0X29hKTsKIAotc3RhdGljIHNzaXplX3QKLXNob3df dm1lX3BpcGVfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9WTUVfUElQRSk7CisJCXJldHVybiAwOworCWRlZmF1bHQ6CisJCXJldHVybiAtRU5P REVWOworCX0KIH0KIAotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Zt ZV9waXBlX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAot CS5zaG93ID0gc2hvd192bWVfcGlwZV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3ZtZV9waXBlW10gPSB7Ci0JJmRldl9hdHRyX3ZtZV9w aXBlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw IGdyb3VwX3ZtZV9waXBlID0gewotCS5uYW1lID0gImUxNzQzY2EwLTdmYzgtNDEwYi1hMDY2LWRl N2JiYjkyODBiNyIsCi0JLmF0dHJzID0gIGF0dHJzX3ZtZV9waXBlLAotfTsKLQogc3RhdGljIHNz aXplX3QKIHNob3dfdGVzdF9vYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQogewpAQCAtNTE0MywxMTEgKzE2Niw2IEBAIGk5 MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpXTsKIAlpbnQgcmV0ID0gMDsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKLQl9Ci0JaWYgKGdldF9j b21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsK LQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX2NvbXB1dGVfYmFzaWMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRl X2Jhc2ljOwotCX0KLQlpZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JfQotCWlm IChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21l bW9yeV9yZWFkczsKLQl9Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCQlpZiAo cmV0KQotCQkJZ290byBlcnJvcl9tZW1vcnlfd3JpdGVzOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVf ZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQly ZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfY29tcHV0ZV9leHRlbmRlZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVf ZXh0ZW5kZWQ7Ci0JfQotCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQkJ aWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0ZV9sM19jYWNoZTsKLQl9Ci0JaWYgKGdldF9k YXRhX3BvcnRfcmVhZHNfY29hbGVzY2luZ19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9kYXRhX3BvcnRfcmVhZHNfY29hbGVzY2luZyk7Ci0JCWlmIChy ZXQpCi0JCQlnb3RvIGVycm9yX2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nOwotCX0KLQlpZiAo Z2V0X2RhdGFfcG9ydF93cml0ZXNfY29hbGVzY2luZ19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9kYXRhX3BvcnRfd3JpdGVzX2NvYWxlc2NpbmcpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9kYXRhX3BvcnRfd3JpdGVzX2NvYWxlc2Npbmc7Ci0J fQotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jf aGRjX2FuZF9zZjsKLQl9Ci0JaWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJv cl9sM18xOwotCX0KLQlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wz XzI7Ci0JfQotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9sM18zKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMzsK LQl9Ci0JaWYgKGdldF9sM180X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2wzXzQpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9sM180OwotCX0K LQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmQ7Ci0JfQotCWlmIChnZXRfc2FtcGxlcl8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXJfMSk7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3NhbXBsZXJfMTsKLQl9Ci0JaWYgKGdldF9zYW1wbGVyXzJfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcl8yKTsKLQkJaWYgKHJl dCkKLQkJCWdvdG8gZXJyb3Jfc2FtcGxlcl8yOwotCX0KLQlpZiAoZ2V0X3RkbF8xX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKLQkJaWYg KHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzE7Ci0JfQotCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIpOwotCQlpZiAo cmV0KQotCQkJZ290byBlcnJvcl90ZGxfMjsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2V4dHJhX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVf ZXh0cmEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dHJhOwotCX0KLQlp ZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp IHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3ZtZV9waXBlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jfdm1lX3BpcGU7 Ci0JfQogCWlmIChnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7CiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKIAkJaWYgKHJldCkKQEAgLTUyNTcsNjkgKzE3NSw2 IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19iZHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCXJldHVybiAwOwogCiBlcnJvcl90ZXN0X29hOgotCWlmIChnZXRfdm1lX3Bp cGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3ZtZV9waXBlKTsK LWVycm9yX3ZtZV9waXBlOgotCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci1lcnJvcl9jb21wdXRl X2V4dHJhOgotCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3RkbF8yKTsKLWVycm9yX3RkbF8yOgotCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKLWVycm9yX3RkbF8xOgot CWlmIChnZXRfc2FtcGxlcl8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9zYW1wbGVyXzIpOwotZXJyb3Jfc2FtcGxlcl8yOgotCWlmIChnZXRfc2FtcGxlcl8xX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyXzEpOwotZXJy b3Jfc2FtcGxlcl8xOgotCWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4 ZWxfYmFja2VuZCk7Ci1lcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOgotCWlmIChn ZXRfbDNfNF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfNCk7 Ci1lcnJvcl9sM180OgotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbDNfMyk7Ci1lcnJvcl9sM18zOgotCWlmIChnZXRfbDNfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci1lcnJvcl9sM18yOgot CWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQot CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bDNfMSk7Ci1lcnJvcl9sM18xOgotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci1lcnJvcl9oZGNfYW5kX3Nm OgotCWlmIChnZXRfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9kYXRhX3BvcnRfd3JpdGVzX2NvYWxlc2NpbmcpOwot ZXJyb3JfZGF0YV9wb3J0X3dyaXRlc19jb2FsZXNjaW5nOgotCWlmIChnZXRfZGF0YV9wb3J0X3Jl YWRzX2NvYWxlc2NpbmdfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2RhdGFfcG9ydF9yZWFkc19jb2FsZXNjaW5nKTsKLWVycm9yX2RhdGFfcG9ydF9yZWFkc19jb2Fs ZXNjaW5nOgotCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7Ci1lcnJvcl9jb21wdXRlX2wz X2NhY2hlOgotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Ci1lcnJvcl9jb21wdXRlX2V4 dGVuZGVkOgotCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7Ci1lcnJvcl9tZW1vcnlfd3JpdGVzOgot CWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9tZW1vcnlfcmVhZHMpOwotZXJyb3JfbWVtb3J5X3JlYWRzOgotCWlmIChnZXRfcmVu ZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci1lcnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOgotCWlm IChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci1lcnJvcl9jb21wdXRlX2Jhc2ljOgotCWlmIChnZXRfcmVu ZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5k ZXJfYmFzaWMpOwotZXJyb3JfcmVuZGVyX2Jhc2ljOgogCXJldHVybiByZXQ7CiB9CiAKQEAgLTUz MjksNDggKzE4NCw2IEBAIGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2JkdyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICptdXhf cmVnc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKV07CiAJaW50IG11eF9s ZW5zW0FSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOwogCi0JaWYg KGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3JlbmRlcl9iYXNpYyk7Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsKLQlpZiAoZ2V0X3Jl bmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVhZHMpOwotCWlmIChn ZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfbWVtb3J5X3dyaXRlcyk7Ci0JaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKLQlpZiAo Z2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotCWlmIChnZXRfZGF0YV9wb3J0X3JlYWRzX2NvYWxl c2NpbmdfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2RhdGFfcG9y dF9yZWFkc19jb2FsZXNjaW5nKTsKLQlpZiAoZ2V0X2RhdGFfcG9ydF93cml0ZXNfY29hbGVzY2lu Z19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfZGF0YV9wb3J0X3dy aXRlc19jb2FsZXNjaW5nKTsKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotCWlmIChnZXRfbDNfMV9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Ci0JaWYgKGdldF9s M18yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3Jl bW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKLQlp ZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJ c3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wz XzMpOwotCWlmIChnZXRfbDNfNF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfbDNfNCk7Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhl bF9iYWNrZW5kKTsKLQlpZiAoZ2V0X3NhbXBsZXJfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcl8xKTsKLQlpZiAoZ2V0X3NhbXBsZXJfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcl8yKTsKLQlpZiAoZ2V0 X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMSk7 Ci0JaWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfdGRsXzIpOwotCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci0JaWYgKGdldF92bWVfcGlwZV9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwogCWlm IChnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQog CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf dGVzdF9vYSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9ieHQuYwppbmRleCA5Mzg2NGQ4ZjMy ZGQuLjY1ZmMxOWI2NDRhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9v YV9ieHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2J4dC5jCkBAIC0zMiwx NzAwICszMiwxMCBAQAogI2luY2x1ZGUgImk5MTVfb2FfYnh0LmgiCiAKIGVudW0gbWV0cmljX3Nl dF9pZCB7Ci0JTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAotCU1FVFJJQ19TRVRfSURf Q09NUFVURV9CQVNJQywKLQlNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUsCi0JTUVU UklDX1NFVF9JRF9NRU1PUllfUkVBRFMsCi0JTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTLAot CU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRCwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVf TDNfQ0FDSEUsCi0JTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGLAotCU1FVFJJQ19TRVRfSURfTDNf MSwKLQlNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQsCi0JTUVUUklD X1NFVF9JRF9TQU1QTEVSLAotCU1FVFJJQ19TRVRfSURfVERMXzEsCi0JTUVUUklDX1NFVF9JRF9U RExfMiwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkEsCi0JTUVUUklDX1NFVF9JRF9URVNU X09BLAorCU1FVFJJQ19TRVRfSURfVEVTVF9PQSA9IDEsCiB9OwogCi1pbnQgaTkxNV9vYV9uX2J1 aWx0aW5fbWV0cmljX3NldHNfYnh0ID0gMTU7Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4Mjcx MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7Ci0JeyBf TU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAz IH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAw eDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygw eGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX2Jh c2ljXzBfc2t1X2d0ZV8weDAzW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NmMwMGYwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTIwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEy MzIwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMzE3IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE1OTMwM2RmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwYzAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQxOTAwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmQxMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4MmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmQxMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMmUwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmU1OTAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhNGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGYwMDEwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNmMwMDUzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFhMGZjYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMGYwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFjMmMwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTAxMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTAxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMTE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTE0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMTIwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTIwMDIxIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwMTQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTQx MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MzAyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA4MzE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzIwODAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4MzIwODQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw MzIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzQ0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA4MzQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTMxODMxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBmOTM5ZjNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOTM5ZTgw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTMwM2JjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1OTMwMDBlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTMwMDJhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3OTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAw MTg3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDIzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJi OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDJmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMTEwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQzOTAwNDIzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMTExIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ3OTAwYzAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDU5OTAxMTExIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwNDIxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1 OTAwODIxIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQot CUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEp OwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpIDwgMSk7Ci0KLQlpZiAoZGV2X3ByaXYtPmRybS5wZGV2LT5yZXZpc2lvbiA+PSAweDAzKSB7 Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRlcl9iYXNpY18wX3NrdV9ndGVfMHgwMzsKLQkJ bGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNfMF9za3VfZ3RlXzB4 MDMpOwotCQluKys7Ci0JfQotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Ci0JeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9 IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4 ZTc1OCksIDB4MDA3NzgwMDggfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKLQl7 IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5 MDggfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19j b21wdXRlX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEyNGYxYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM5OTAwMzQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmQ1MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmQ0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhMmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ1 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMmUxNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmU1MTAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwMmUwMTE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGNjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNGM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE2NGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGVhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGUyMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjNGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGU4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwNGY2YjQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGY2 MjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGY0MTAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhNGYwMDYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGY2YzRjIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlNGY0YjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGYwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFjNGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 MGY1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMGY4ODAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFjMGYwOGEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmM0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFjMmMxNDUxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlMmMwMDAx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMmMwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAxOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5OTM4YTI4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE5OTAwMTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTAw MTc4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTI1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFmOTAwMTIzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3 OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDJkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDU1OTAwMTExIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9i YXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAg ICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICAgaW50ICpsZW5zKQot ewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21w dXRlX2Jhc2ljOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9iYXNp Yyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1J TygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 NzApLCAweDAwMDdmZmVhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZjIH0sCi0JeyBf TU1JTygweDI3NzgpLCAweDAwMDdhZmZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZk IH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDc5ZmZhIH0sCi0JeyBfTU1JTygweDI3ODQpLCAw eDAwMDBmM2ZiIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdiZjdhIH0sCi0JeyBfTU1JTygw eDI3OGMpLCAweDAwMDBmN2U3IH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZWZhIH0sCi0J eyBfTU1JTygweDI3OTQpLCAweDAwMDBmN2NmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDc3 ZmZhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBlZmRmIH0sCi0JeyBfTU1JTygweDI3YTAp LCAweDAwMDZmZmZhIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBjZmJmIH0sCi0JeyBfTU1J TygweDI3YTgpLCAweDAwMDNmZmZhIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDA1ZjdmIH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jl bmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwK LQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKLQl7IF9N TUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygw eDk4ODgpLCAweDBjMmUwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmYwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwMTg2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODEw MDE5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODEwMDEzIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzODIwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODMwMDIwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE3ODQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODYwMDA3IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIxODYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3 ODcwM2UwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyMmU1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmUwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmUwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4MmYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MTQzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTc0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MTgwMDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTgw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBmODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA5ODEwMjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODEwMDMwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAzODEwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIx ODE5MTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzODE5MDUwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDI1ODEwMDE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODIwOTgwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAzODIwZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODIwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA3ODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODI0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBmODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODMwMDA0IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA1ODMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODMx MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDcyIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExODQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA5ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA3ODYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5 ODYwMDkyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODYwNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAxODY5MTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODcwMDY1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAxODcwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTMwODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBkOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTUyMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFkOTU1MDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTUxNDU1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA5OTJhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTI4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTJhODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzOTIwMjhhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTJhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkOTIyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTA4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIz OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDI3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDJiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTA0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJmOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDMxOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwYzAxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5 OTAwODYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDRiOTAwMDYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwYzIyIH0sCi19OwotCi1zdGF0aWMgaW50Ci1n ZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJ CSAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbWVtb3J5 X3JlYWRzW10gPSB7Ci0JeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygw eDI3MjgpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0J eyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MWMpLCAweGZmZmZm ZmZmIH0sCi0JeyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTQp LCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3NGMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0s Ci0JeyBfTU1JTygweDI3NDQpLCAweDAwMDA2NjY3IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NWMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3 NTgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBf TU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFh IH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAw eDAwMDdmODJhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygw eDI3ODApLCAweDAwMDdmODcyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCi0J eyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBm ZTAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCi0JeyBfTU1JTygweDI3OTQp LCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCi0JeyBfTU1J TygweDI3OWMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0s Ci0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAw MDdmOGYyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZTAwIH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkc1tdID0g ewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgw MDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhl NzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsg X01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2 NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21l bW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwMDM0MyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzOTkwMDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MzgwMzE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgwMzVlMiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzgwMDA2YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyMTgxYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzgxMDAw YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDU1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYjkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkyYTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZjkyMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE3MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwMDE3MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkw MDE3MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwMDE3MyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyNzkwMDE3NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwMDE3NSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyYjkwMDE3NiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE3NyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwMDE3ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MTkwMDEyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwMDEyMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNzkwMDEyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MzkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMTA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Nzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMTA4NCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 NTkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmln KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0K LQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAx KTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRzOwotCWxlbnNb bl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRzKTsKLQluKys7Ci0KLQlyZXR1 cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29u ZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4MjcyYyksIDB4ZmZmZmZmZmYgfSwK LQl7IF9NTUlPKDB4MjcyOCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcx YyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcxOCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9N TUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0OCksIDB4 ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2NjcgfSwKLQl7IF9NTUlPKDB4 Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMyMTAgfSwKLQl7 IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1NCksIDB4MDAwMDY0 NjUgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCks IDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlP KDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZlMDAgfSwK LQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4MjIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEgfSwKLQl7IF9NTUlPKDB4Mjc4 YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2Y4N2EgfSwKLQl7IF9N TUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Y4ZWEg fSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4 MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4 MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZlMDAgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbWVtb3J5 X3dyaXRlc1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8o MHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAot CXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0 NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVj KSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBt dXhfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MDAz NDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzk5MDAzNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4M2Y5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDM4MDMxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MDM1ZTIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MDAwNmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjM4MTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTA1NTAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGI5MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MmEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MjIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTM5MDAxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDAxODEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjM5MDAxODIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxODMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxODQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAx ODUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDAxODYgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MmQ5MDAxODcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDAxNzAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MzE5MDAxMjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMjMgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDEwODQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDEwODAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDEwODQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDEw ODQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDQgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9tZW1vcnlfd3Jp dGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17 Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9y eV93cml0ZXM7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVz KTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4 MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCks IDB4MDAwN2ZjMmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlP KDB4Mjc3OCksIDB4MDAwN2ZjNmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmMDAgfSwK LQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2ZjOTIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAw MGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2ZjYTIgfSwKLQl7IF9NTUlPKDB4Mjc4 YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZjMzIgfSwKLQl7IF9N TUlPKDB4Mjc5NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZjOWEg fSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4 MDAwN2ZlNmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4 MjdhOCksIDB4MDAwN2ZlN2EgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGJmMDAgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01N SU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9 LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgw MDA4ODA3OCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAotCXsgX01NSU8oMHhl NjVjKSwgMHgwMGEwODkwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTA0ZjAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzAxNjAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTYxYzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzAxMjAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGEyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDUwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZDUwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMy ZTU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyZTU1MTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTAyZTAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0Y2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGE0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0Y2MwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTA0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI0YzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTQ0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2Mw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZWEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGE0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZWEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0 ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGU0ZjRiNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjQyMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDI0ZjQwNGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDgxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExYmMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYxYzE5MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzFhMzMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGExYzFiMzUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYzMzMzcgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYzMxYzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgw ZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZmE4YWEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWMwZjBhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWMyYzZhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWUyYzAwMDEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEyYzI5NTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDE5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTk5M2FhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5Mzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGI5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjE5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MmI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0 MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NGQ5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDEgfSwKLX07Ci0K LXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJl Z3MsCi0JCQkJaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpF KG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRl X2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3 NzQpLCAweDAwMDBmZWZlIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmZhIH0sCi0JeyBf TU1JTygweDI3N2MpLCAweDAwMDBmZWZkIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZmZh IH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmYmVmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAw eDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYmRmIH0sCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2Fj aGVbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1 OCksIDB4MDAwMDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9N TUlPKDB4ZTc1OCksIDB4MDAxMDExMDAgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAyMDEyMDAg fSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAzMDEzMDAgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4 MDA0MDE0MDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2Nv bmZpZ19jb21wdXRlX2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NmMwM2Iw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDNmOTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4MmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmQ1 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmUwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlMmUxNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMmUwMTQwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0NGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjNGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0 NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2NGMyMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwNGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4NGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGVhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGY0MDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjNGY1MDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDUxIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2NmM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVkIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlNmM1ZTVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE4MGYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMGZhODAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFjMGYwYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 MmM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMmM0MDE1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFlMmMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTMxOTgwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA1OTMwMDMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTNhMDBhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3OTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAw MTc4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDIzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMx OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMTEx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ1OTAwNDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9sM19jYWNoZV9t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7 Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsK LQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOwotCW4r KzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwZmRmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s Ci0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAw MDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0 NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBf TU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIG11eF9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDRmMDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMTgzNDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJk MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRlODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjRlMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRmNjEwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDRmNDE2YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmMDA0YiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTRmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTBmMDJh OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTJjNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNTgxMDAyMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZjgzMDVjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkz ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZjk1MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyMDIwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzMTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2hkY19hbmRfc2Zf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgIGludCAqbGVucykKLXsKLQlpbnQgbiA9 IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9zZjsKLQls ZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2hkY19hbmRfc2YpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9j b25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzcwKSwgMHgwMDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsg X01NSU8oMHgyNzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYzNm ZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwg MHgwMDAwYzdmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAotCXsgX01NSU8o MHgyNzhjKSwgMHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDcwMCB9LAot CXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAw MTQwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01NSU8oMHgyN2Ew KSwgMHgwMDAwMTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAotCXsgX01N SU8oMHgyN2E4KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmQzZiB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19s M18xW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1 NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBf TU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUw IH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAw eDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9j b25maWdfbDNfMV8wX3NrdV9ndGVfMHgwM1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjY0 MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjY1MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDZjNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjMDAxZSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNjZjMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkNTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkNTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDJlMDE1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJlNTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjRjMjAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRj YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlMjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzRmNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRmMTU1NCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTY0MDAyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDY0MDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDY0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzY1MDAyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDY1MDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjY1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjNTMyNyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjNTQyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZj MmEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMjg1YiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDZjMDA1YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTZjMDkwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzBmMGFhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YTBmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzJjNTQwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZTJjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTJjNTU1MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxOTkzYWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNzkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYjkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDQyMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NTkwMDAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzFfMF9za3VfbHRfMHgwM1tdID0gewotCXsgX01N SU8oMHg5ODg4KSwgMHgxNDY0MDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDY1MDM0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MjZjMDAxZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDAxMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJkNTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkNTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjJkMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJlMDE1NCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzJlNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMDA1NSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjRjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRlYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlMjAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRmNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYTRmMTU1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDY0MjQwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyMjY0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTY0MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjY1MDAyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMjY1 MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzY1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzZjNTMyNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjNTQyNSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDZjMmEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMjg1YiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDA1YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDkwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzBmMGFhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTBmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzJjNTQw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYTJjNTU1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzYWEwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkz ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0YjkwMDQyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Mzkw MDQyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAyMSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotfTsKLQot c3RhdGljIGludAotZ2V0X2wzXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAg aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDIpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMik7Ci0KLQlpZiAoZGV2X3ByaXYt PmRybS5wZGV2LT5yZXZpc2lvbiA+PSAweDAzKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wz XzFfMF9za3VfZ3RlXzB4MDM7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNf MV8wX3NrdV9ndGVfMHgwMyk7Ci0JCW4rKzsKLQl9Ci0JaWYgKGRldl9wcml2LT5kcm0ucGRldi0+ cmV2aXNpb24gPCAweDAzKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzFfMF9za3VfbHRf MHgwMzsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18xXzBfc2t1X2x0XzB4 MDMpOwotCQluKys7Ci0JfQotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k W10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQp LCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAw MDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBlZmZmIH0sCi0JeyBfTU1JTygweDI3 NzgpLCAweDAwMDA2MDAwIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmM2ZmIH0sCi19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7 IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7 Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMmQ3ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEy MmQ3OWUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmYwMDA0IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwMGUzODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MGYwMDA1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMmQwOTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmQ4MDJm IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmQ0MDEzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmUwMDUwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMmYwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGUwNDgwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMGUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGYwMDI3IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFh MGYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1OTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OTM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA5OTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAxNGEwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQ1OTAwMGE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMz OTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJ ICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJCSAgICBpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsK LX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Nh bXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcxNCksIDB4NzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCks IDB4MDAwMGMwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGU3ZmYgfSwKLQl7IF9NTUlP KDB4Mjc3OCksIDB4MDAwMDMwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY5ZmYgfSwK LQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDBjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAw MGZlN2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfc2FtcGxlcltdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsg X01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAx MSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwg MHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8o MHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBtdXhfY29uZmlnX3NhbXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMzAw YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxNjAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTIzMzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzNjAwYWIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTI1MzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1NjAwYWIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUy ZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYyZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZTAxYTAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyZTAwNjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDg0YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZWEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQ0ZTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWMwZjA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgw ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAyM2YgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWUyYzAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEyY2MwMzAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQxMzIxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxNDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUxNDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWUxNTAxNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNTAwNDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMxNjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxNjAw NjggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTgxNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNjQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQzMzAwNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzMzAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQz NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMzNTAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIzNjM0NjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNjAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQzNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDY1MzAwNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGU1NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1NDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY1NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU1NTA0 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1NTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWM1NTAxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NjMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDA1NjM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1NjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1 NjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1NjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5M2E4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MmQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5 MDE0YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4MjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDEwMjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBpbnQKLWdldF9zYW1wbGVyX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAg ICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfc2FtcGxlcjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Nh bXBsZXIpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MzA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3 NCksIDB4MDAwMDdmZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4Mjc3YyksIDB4MDAwMDlmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDIg fSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGVmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGYzZmYgfSwKLQl7IF9NTUlPKDB4 Mjc5MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZkZmYgfSwKLQl7 IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZl N2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25m aWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNDNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDVh MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJkNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDJlMDE1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJlNTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTJlMDA2YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjRjMjAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRl MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYzBmMGJjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTBmMDMwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJjMDAwMyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTJjMDBmMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjFhMzA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFhMzFlNSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjE0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE0YTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYzE1MDA1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE2ODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTE2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzNhMzI4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTNhMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjNhMDA2MSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM0 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTM0MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjM0MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTM1MDE0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYzM1MDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODM2MDAyOCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTVhMzA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVhMzI4MCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjVhMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU0ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDU0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU0MjAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTU1MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYTU1MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzU1MDAwMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxODU2MDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU2ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDU2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkz YTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy ZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDQyMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMSB9LAotfTsKLQotc3RhdGljIGludAotZ2V0 X3RkbF8xX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkg ICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAgaW50ICpsZW5zKQot ewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxf MTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8xKTsKLQluKys7Ci0KLQly ZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8yW10gPSB7Ci0J eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEw MDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgp LCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1J TygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzJb XSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTAyNmIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTQzYTAxNzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YTAyNmIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZDUwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYy ZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUyZTAwNjkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0YzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDI0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTgwZjYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAzMGEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWEyYzAzYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYTM3 ZTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQxNGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNTAwNTAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDgxNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNjgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzYTMzODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYz YTAwNmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzYTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDAzNDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNDIwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWEzNTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMzNTAxMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMzNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YTM3ZTcgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDI1NGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM1NTAwMDUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQ1NjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1Njgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMjAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDU5MDEwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg KipyZWdzLAotCQkgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwot Ci0JcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4 X2NvbmZpZ190ZGxfMik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7Ci0J eyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAw MDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQp LCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1 OCksIDB4MDAwMDEwMDAgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDMwMDIgfSwKLQl7IF9N TUlPKDB4ZTY1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTEwMTAg fSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTAwMTIgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4 MDAwNTIwNTEgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwMDAwMDggfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7 Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0MWEwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0 M2EwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NWEwMDFmIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0MmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMmUwMDk0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGNjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFhMGYwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMmMwYzAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MWEwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWEwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MTQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMTUw MTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMTY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0M2EzMTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyM2EwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MzQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMzUwMDQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhMzY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 NWEwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWEwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0NTQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNTUwMDEwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4NTY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBkOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ3OTAwMDA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVn cywKLQkJCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQly ZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpF KG11eF9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19CitpbnQg aTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfYnh0ID0gMTsKIAogc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKIAl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKQEAgLTE3NTksNDA2ICs2OSw0MiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewogCXsgX01NSU8o MHg5ODg4KSwgMHgxOTgwMDAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgwMDA2MyB9LAog CXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzgx MDAwOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjkyMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgKipyZWdzLAotCQkgICAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQot CUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEp OwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOwotCWxlbnNbbl0gPSBB UlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0K LWludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2J4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCi17Ci0JZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7Ci0J ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz ID0gTlVMTDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKLQotCXN3aXRj aCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKLQljYXNlIE1FVFJJQ19TRVRfSURf UkVOREVSX0JBU0lDOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdl dF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJ RFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFT SUNcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9z eXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUg YmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZl IGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5k ZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9j b25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURf Q09NUFVURV9CQVNJQzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQln ZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsK LQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVU RV9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lz dGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3Qg aGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmln X2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0KLQkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFz aWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShm bGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJ Q19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf Y29uZmlncyA9Ci0JCQlnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2 LAotCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCSAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIlJFTkRFUl9QSVBFX1BST0ZJTEVcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJ LyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwot CQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFj ZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJ CXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf cmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lE X01FTU9SWV9SRUFEUzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQln ZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JF QURTXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZl IGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2 ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVt b3J5X3JlYWRzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVf Y29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lE X01FTU9SWV9XUklURVM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJ Z2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9S WV9XUklURVNcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0 IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0K LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZp Z19tZW1vcnlfd3JpdGVzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3Jp dGVzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo ZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRS SUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQ6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJ CQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3Ig XCJDT01QVVRFX0VYVEVOREVEXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZB TDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291 bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4 dGVuZGVkKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9j b25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0J CXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2wzX2NhY2hlX211 eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0J CQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9MM19DQUNIRVwiIG1ldHJpYyBzZXRcbiIp OwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tl ZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJ CSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19j b21wdXRlX2wzX2NhY2hlKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfSERD X0FORF9TRjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfaGRj X2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKLQkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJpYyBz ZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfaGRjX2FuZF9zZik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz ID0KLQkJCWZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmKTsK LQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMToKLQkJZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LAot CQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZp ZyBmb3IgXCJMM18xXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpf cmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3Vs ZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJ fQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9j b25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJ CUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18xKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9C QUNLRU5EOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yYXN0 ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJCSAg ICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQkJICAgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmln cyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZv ciBcIlJBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJ LyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwot CQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFj ZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJ CXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJ CUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7 Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVI6Ci0JCWRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZf cHJpdiwKLQkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAg ICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRh YmxlIE1VWCBjb25maWcgZm9yIFwiU0FNUExFUlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBF SU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkg KiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFu ZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9 Ci0JCQliX2NvdW50ZXJfY29uZmlnX3NhbXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfc2FtcGxlcik7 Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3Nh bXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0la RShmbGV4X2V1X2NvbmZpZ19zYW1wbGVyKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19T RVRfSURfVERMXzE6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0 X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0J CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzFcIiBtZXRyaWMgc2V0 XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2Vk IHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVk Ci0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMTsKLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ190ZGxfMSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJ CUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzEpOwotCi0JCXJldHVybiAwOwotCWNhc2Ug TUVUUklDX1NFVF9JRF9URExfMjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 Ci0JCQlnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJ RFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwiIG1l dHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFs cmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFk dmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiBy ZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3RkbF8yOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX3RkbF8yKTsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM4MTAwMDggfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTA0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MjIw MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKKwl7IF9NTUlP KDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwK K307CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmln X3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfdGRsXzIpOworc3RhdGljIGludAorZ2V0X3Rlc3Rfb2FfbXV4X2Nv bmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgICBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgICAgaW50ICpsZW5zKQoreworCWludCBu ID0gMDsKIAotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQToK LQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9leHRy YV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9FWFRSQVwiIG1ldHJp YyBzZXRcbiIpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7CiAKLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZl IGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2 ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQorCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX3Rlc3Rfb2E7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z190ZXN0X29hKTsKKwluKys7CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Mg PQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2Nv bXB1dGVfZXh0cmEpOworCXJldHVybiBuOworfQogCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRyYSk7CitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9ieHQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7 CiAKLQkJcmV0dXJuIDA7CisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCkg ewogCWNhc2UgTUVUUklDX1NFVF9JRF9URVNUX09BOgogCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID0KIAkJCWdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsCkBAIC0yMTkx LDMxNCArMTM3LDYgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfYnh0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIH0KIAogc3RhdGljIHNzaXplX3QKLXNob3dfcmVu ZGVyX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfUkVOREVSX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQi LCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAotCS5zdG9y ZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jh c2ljW10gPSB7Ci0JJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19Owot Ci1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7Ci0J Lm5hbWUgPSAiMjJiOTUxOWEtZTliYS00YzQxLThiNTQtZjRmOGNhMTRmYTBhIiwKLQkuYXR0cnMg PSAgYXR0cnNfcmVuZGVyX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0 ZV9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNf U0VUX0lEX0NPTVBVVEVfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQi LCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9iYXNpY19pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVf YmFzaWNbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2Jhc2ljID0g ewotCS5uYW1lID0gIjAxMmQ3MmNmLTgyYTktNGQyNS04ZGRmLTc0MDc2ZmQzMDc5NyIsCi0JLmF0 dHJzID0gIGF0dHJzX2NvbXB1dGVfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19y ZW5kZXJfcGlwZV9wcm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSk7Ci19Ci0KLXN0YXRpYyBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkID0gewot CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19y ZW5kZXJfcGlwZV9wcm9maWxlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCSZkZXZfYXR0 cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUgPSB7Ci0JLm5hbWUg PSAiY2U0MTY1MzMtZTQ5ZS00MjExLTgwYWYtZWM1MTM1OTBhOTE0IiwKLQkuYXR0cnMgPSAgYXR0 cnNfcmVuZGVyX3BpcGVfcHJvZmlsZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9y eV9yZWFkc19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNf U0VUX0lEX01FTU9SWV9SRUFEUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSBkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV9yZWFkc19pZCwKLQkuc3RvcmUg PSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV9yZWFk c1tdID0gewotCSZkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQot c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewotCS5u YW1lID0gIjM5OGUyNDUyLTE4ZDctNDJkMC1iMjQxLWU0ZDBhOTE0OGFkYSIsCi0JLmF0dHJzID0g IGF0dHJzX21lbW9yeV9yZWFkcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9yeV93 cml0ZXNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NF VF9JRF9NRU1PUllfV1JJVEVTKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl IGRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV93cml0ZXNfaWQsCi0JLnN0b3Jl ID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlfd3Jp dGVzW10gPSB7Ci0JJmRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQuYXR0ciwKLQlOVUxMLAotfTsK LQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9IHsK LQkubmFtZSA9ICJkMzI0YTBkNi03MjY5LTQ4NDctYTVjMi02ZjcxZGRjN2ZlZDUiLAotCS5hdHRy cyA9ICBhdHRyc19tZW1vcnlfd3JpdGVzLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29t cHV0ZV9leHRlbmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsKLQkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9leHRl bmRlZF9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHJzX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRl ZF9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBn cm91cF9jb21wdXRlX2V4dGVuZGVkID0gewotCS5uYW1lID0gImNhZjM1OTZhLTdiYjEtNGRlYy1i M2IzLTJhMDgwZDI4M2I0OSIsCi0JLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQsCi19 OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkKHN0cnVjdCBkZXZp Y2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0J cmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNI RSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRl X2wzX2NhY2hlX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9 LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9sM19jYWNoZVtdID0g ewotCSZkZXZfYXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7Ci0J Lm5hbWUgPSAiNDliOTU2ZTItZDViOS00N2UwLTlkOGEtY2VlNWU4Y2VjNTI3IiwKLQkuYXR0cnMg PSAgYXR0cnNfY29tcHV0ZV9sM19jYWNoZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2hk Y19hbmRfc2ZfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9IRENfQU5EX1NGKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl IGRldl9hdHRyX2hkY19hbmRfc2ZfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1v ZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2hkY19hbmRfc2ZfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19oZGNfYW5kX3NmW10gPSB7 Ci0JJmRldl9hdHRyX2hkY19hbmRfc2ZfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfaGRjX2FuZF9zZiA9IHsKLQkubmFtZSA9ICJmNjRl ZjUwYS1iZGJhLTRiMzUtOGYwOS0yMDNjMTNkOGVlNWEiLAotCS5hdHRycyA9ICBhdHRyc19oZGNf YW5kX3NmLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfMV9pZChzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzEpOwotfQotCi1zdGF0 aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMV9pZCA9IHsKLQkuYXR0ciA9 IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMV9pZCwK LQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wz XzFbXSA9IHsKLQkmZGV2X2F0dHJfbDNfMV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18xID0gewotCS5uYW1lID0gIjAwYWQ1YTQx LTdlYWItNGY3YS05MTAzLTQ5ZDQxMWM2NzIxOSIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzEsCi19 OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkFT VEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkID0gewotCS5h dHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yYXN0 ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtd ID0gewotCSZkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkLmF0dHIsCi0J TlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmQgPSB7Ci0JLm5hbWUgPSAiNDZkYzQ0Y2EtNDkxYy00Y2MxLWE5 NTEtZTdiM2U2MmJmMDJiIiwKLQkuYXR0cnMgPSAgYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZCwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3NhbXBsZXJfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsK LQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9TQU1QTEVSKTsKLX0K LQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBsZXJfaWQgPSB7 Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93 X3NhbXBsZXJfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICphdHRyc19zYW1wbGVyW10gPSB7Ci0JJmRldl9hdHRyX3NhbXBsZXJfaWQuYXR0ciwKLQlO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfc2FtcGxlciA9 IHsKLQkubmFtZSA9ICI4MzY0ZTJhOC1hZjYzLTQwYWYtYjBkNS00Mjk2OWEyNTU2NTQiLAotCS5h dHRycyA9ICBhdHRyc19zYW1wbGVyLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdGRsXzFf aWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9U RExfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxf MV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hv dyA9IHNob3dfdGRsXzFfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyc190ZGxfMVtdID0gewotCSZkZXZfYXR0cl90ZGxfMV9pZC5hdHRyLAot CU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMSA9 IHsKLQkubmFtZSA9ICIxNzVjODA5Mi1jYjI1LTRkMWUtOGRjNy1iNGZkZDM5ZTJkOTIiLAotCS5h dHRycyA9ICBhdHRyc190ZGxfMSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3RkbF8yX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVERM XzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzJf aWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cg PSBzaG93X3RkbF8yX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cnNfdGRsXzJbXSA9IHsKLQkmZGV2X2F0dHJfdGRsXzJfaWQuYXR0ciwKLQlO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzIgPSB7 Ci0JLm5hbWUgPSAiZDI2MGYwM2YtYjM0ZC00YjQ5LWE0NGUtNDM2ODE5MTE3MzMyIiwKLQkuYXR0 cnMgPSAgYXR0cnNfdGRsXzIsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2V4 dHJhX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRf SURfQ09NUFVURV9FWFRSQSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBk ZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5t b2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2V4dHJhX2lkLAotCS5zdG9yZSA9 IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9leHRy YVtdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfZXh0cmEgPSB7Ci0J Lm5hbWUgPSAiZmE2ZWNmMjEtMmNiOC00ZDBiLTkzMDgtNmU0YTdiNGNhODdhIiwKLQkuYXR0cnMg PSAgYXR0cnNfY29tcHV0ZV9leHRyYSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90CiBzaG93X3Rlc3Rf b2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKIHsKIAlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9J RF9URVNUX09BKTsKQEAgLTI1MjcsNzYgKzE2NSw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNm c19ieHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCBtdXhfbGVuc1tB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAlpbnQgcmV0ID0g MDsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3JlbmRlcl9iYXNpYzsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMp OwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2Jhc2ljOwotCX0KLQlpZiAoZ2V0 X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JfQotCWlmIChnZXRfbWVtb3J5X3JlYWRzX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9y ZWFkcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21lbW9yeV9yZWFkczsKLQl9Ci0JaWYg KGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9t ZW1vcnlfd3JpdGVzOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7Ci0JfQotCWlmIChn ZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJy b3JfY29tcHV0ZV9sM19jYWNoZTsKLQl9Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotCQlp ZiAocmV0KQotCQkJZ290byBlcnJvcl9oZGNfYW5kX3NmOwotCX0KLQlpZiAoZ2V0X2wzXzFfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Ci0J CWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wzXzE7Ci0JfQotCWlmIChnZXRfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQkJaWYgKHJldCkKLQkJ CWdvdG8gZXJyb3JfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQl9Ci0JaWYgKGdldF9z YW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3NhbXBsZXIpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9zYW1wbGVyOwotCX0KLQlpZiAo Z2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJ cmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3RkbF8xKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzE7Ci0JfQotCWlmIChn ZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQly ZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfdGRsXzIpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl90ZGxfMjsKLQl9Ci0JaWYgKGdl dF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp IHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX2NvbXB1dGVfZXh0cmEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21w dXRlX2V4dHJhOwotCX0KIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkgewogCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CiAJCWlmIChyZXQpCkBAIC0yNjA2 LDQ4ICsxNzQsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfYnh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZXJyb3JfdGVzdF9vYToKLQlpZiAo Z2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX2NvbXB1dGVfZXh0cmEpOwotZXJyb3JfY29tcHV0ZV9leHRyYToKLQlpZiAoZ2V0X3RkbF8y X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci1lcnJv cl90ZGxfMjoKLQlpZiAoZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF90ZGxfMSk7Ci1lcnJvcl90ZGxfMToKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotZXJyb3Jfc2Ft cGxlcjoKLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmQpOwotZXJyb3JfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDoKLQlpZiAoZ2V0X2wzXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotZXJyb3Jf bDNfMToKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotZXJyb3JfaGRjX2FuZF9zZjoKLQlpZiAoZ2V0X2Nv bXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2NvbXB1dGVfbDNfY2FjaGUpOwotZXJyb3JfY29tcHV0ZV9sM19jYWNoZToKLQlpZiAoZ2V0X2Nv bXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2NvbXB1dGVfZXh0ZW5kZWQpOwotZXJyb3JfY29tcHV0ZV9leHRlbmRlZDoKLQlpZiAoZ2V0X21l bW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJ c3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21l bW9yeV93cml0ZXMpOwotZXJyb3JfbWVtb3J5X3dyaXRlczoKLQlpZiAoZ2V0X21lbW9yeV9yZWFk c19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRz KTsKLWVycm9yX21lbW9yeV9yZWFkczoKLQlpZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2Zp bGUpOwotZXJyb3JfcmVuZGVyX3BpcGVfcHJvZmlsZToKLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMp OwotZXJyb3JfY29tcHV0ZV9iYXNpYzoKLQlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKLWVycm9yX3Jl bmRlcl9iYXNpYzoKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNjU3LDM0ICsxODMsNiBAQCBpOTE1 X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19ieHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3NbQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncyldOwogCWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwot CWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9m aWxlKTsKLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwot CWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Ci0JaWYgKGdldF9jb21wdXRlX2wzX2NhY2hl X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2Nh Y2hlKTsKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Ci0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotCWlmIChnZXRf dGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsK LQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Ci0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF90ZGxfMik7Ci0JaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKIAkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jaHYuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMKaW5kZXggYWE2YmVjZTdlNzVmLi45NmYxM2YwY2JkZmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfY2h2LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9jaHYuYwpAQCAtMzIsMTk0MSArMzIsMTAgQEAKICNp bmNsdWRlICJpOTE1X29hX2Nodi5oIgogCiBlbnVtIG1ldHJpY19zZXRfaWQgewotCU1FVFJJQ19T RVRfSURfUkVOREVSX0JBU0lDID0gMSwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfQkFTSUMsCi0J TUVUUklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFLAotCU1FVFJJQ19TRVRfSURfSERDX0FO RF9TRiwKLQlNRVRSSUNfU0VUX0lEX0wzXzEsCi0JTUVUUklDX1NFVF9JRF9MM18yLAotCU1FVFJJ Q19TRVRfSURfTDNfMywKLQlNRVRSSUNfU0VUX0lEX0wzXzQsCi0JTUVUUklDX1NFVF9JRF9SQVNU RVJJWkVSX0FORF9QSVhFTF9CQUNLRU5ELAotCU1FVFJJQ19TRVRfSURfU0FNUExFUl8xLAotCU1F VFJJQ19TRVRfSURfU0FNUExFUl8yLAotCU1FVFJJQ19TRVRfSURfVERMXzEsCi0JTUVUUklDX1NF VF9JRF9URExfMiwKLQlNRVRSSUNfU0VUX0lEX1RFU1RfT0EsCisJTUVUUklDX1NFVF9JRF9URVNU X09BID0gMSwKIH07CiAKLWludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19jaHYgPSAx NDsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jl bmRlcl9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgw MDgwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7 IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTk4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk4MDAwMDEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4Mjg1YTAwMDYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmMxMTAwMTQg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmUxMTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MmMzMTAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmUzMTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MmI4MzAzZGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU4MDAyNGYgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDA1ODA4ODggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU1YTAw MTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjA1YTAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQ1YTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDIxODA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxOTA1NTUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxZDA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIx ZjBhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzODA0NDQgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIzOTA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzYTA2NjYgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAxMDAxMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMTAwMzAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExMTAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUxMTAwNDYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxMTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzAxMTEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAzMDA0NDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMTAw MzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMTAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTAzMTAwNDYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAzMTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMzA0NDQgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YTBhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4 YjBmZmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YjBhMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDE4NTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NTAwNTUgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTM4MzAwMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MzAwMjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MzAwMmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTk4MzAwMmUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAwMmQgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ4MzAwMmMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDE4NDA1NTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NDA1 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4MDAwNzQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjU4MDAwN2QgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDE4MDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MDAwNTUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 NjAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NzUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDM4NzAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDAwYWEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDM4MDAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDk4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NGQ4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM4MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTc4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk4MDAwMDAgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywK LQkJCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX3JlbmRlcl9iYXNpYzsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhf Y29uZmlnX3JlbmRlcl9iYXNpYyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljW10g PSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAw eDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCks IDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKLQl7IF9NTUlP KDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDA3NzgwMDggfSwK LQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4 MDg3MDggfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Ci0J eyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAw MDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJlNTgwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDJlMzgwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1ODAwMjRmIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDNkODAwMTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NTgwMDQyIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjNTgwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw NTgwMDRjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NTgwMDRiIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0NTgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTgwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMTk1NTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzgwMDQy IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzgwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlMzgwMDRjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMzgwMDRiIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MzgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzg0NDQ0IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwM2E1NTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGJm ZmZmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ1NTU1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE3ODAwMDc0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODAwMDdkIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiODAwMDdjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODAwMGI2IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFmODAwMGI3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1 ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQxODAwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzODAwMGFhIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ1ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5ODAwMTJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDRiODAwMTJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkODAwMTJhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDRmODAwMTJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMWNlIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDUzODAwMWNlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1ODAw MDBlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50 Ci1nZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAg ICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0g bXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9iYXNpYyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxl W10gPSB7Ci0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmVhIH0s Ci0JeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZjIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAw MDdhZmZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZkIH0sCi0JeyBfTU1JTygweDI3 ODApLCAweDAwMDc5ZmZhIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmM2ZiIH0sCi0JeyBf TU1JTygweDI3ODgpLCAweDAwMDdiZjdhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmN2U3 IH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZWZhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAw eDAwMDBmN2NmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDc3ZmZhIH0sCi0JeyBfTU1JTygw eDI3OWMpLCAweDAwMDBlZmRmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDZmZmZhIH0sCi0J eyBfTU1JTygweDI3YTQpLCAweDAwMDBjZmJmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDNm ZmZhIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDA1ZjdmIH0sCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVb XSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCks IDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlP KDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwK LQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAw NjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDI2MWUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI4MWYwMDBmIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDI4MTcwMDFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTEwMDFmIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDI3ODgwMDE5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkODkw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGEwMDA3IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDI5OGQwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGUwMDIwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDJiOGYwMDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI5OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwMTg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MTgxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTk0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE0MWUwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MWUwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMWUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIyMWYwMDE1 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MWYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMWY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWYwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyM2E4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTNjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyMTY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI0MTcw MDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTcwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA3OTEwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTEwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAxOTExNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTEwNTAxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBkODgwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFk ODgwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODgwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBiODkwMDMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODkwMDMxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA1ODkwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODkwMDQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODkwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA5OGEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OGEwMDA0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA1OGEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGE4MDUwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzOGEyMDUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGI5 NWE5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGJlNWE5IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAxOGMxNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGMwNTAxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE3OGQwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGQwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEzOGUwMDA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIx OGUwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGUwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAxOGUwNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGUwMTAxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBmOGYwMDI3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGYwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAzOGYwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDEzIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFmOTAwMDE3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAxOTAwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTAw MDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ1NTU1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAzODQ1NTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwMGFhIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQzODAwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1ODAwMGFhIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5 ODAwMThjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiODAwMTRiIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDRkODAwMTI4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRmODAwMTJhIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDUxODAwMTg3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMTRi IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1ODAwMTQ5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDU3ODAwMTBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAwIH0sCi19OwotCi1zdGF0 aWMgaW50Ci1nZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAotCQkJCSAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0J cmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQlsZW5zW25dID0gQVJS QVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCW4rKzsKLQotCXJldHVy biBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25m aWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8o MHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmNyB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19oZGNf YW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygw eGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0J eyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUx MDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMp LCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDVjMDIzMiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU4MDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDM4MDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGRjMDIzMiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMGQ4MDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGI4MDIzMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMThlNDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjVjNjA4 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDVjMDA0YiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDU4MjA4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjU4MDA0YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFm YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDM4NjA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM4NDA0YiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM4NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5ODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM5YTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjM5MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RjMjVj MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYWQ4MjVjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGRiNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYWRiMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlmODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWI4 MjVjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGI4MDE1NCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I5YTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4YzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThhODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhhODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiYWEwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzhiMmE4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxOThjNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhjMDAxNSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwOThkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhk YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThlMDVjMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNThlMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThmMDAyMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWEwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy Mzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTgzNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwOTgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZDgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0 YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1MTgwMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMDQwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NTgwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMGM2MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMTA0MiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMTRhNCB9 LAotfTsKLQotc3RhdGljIGludAotZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq KnJlZ3MsCi0JCQkgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04o QVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0J cmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9zZjsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX2hkY19hbmRfc2YpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNfMVtdID0gewotCXsg X01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAw MCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwg MHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAot CXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAx NDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYzNmZiB9LAotCXsgX01NSU8oMHgyNzgw KSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYzdmZiB9LAotCXsgX01N SU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9 LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDcwMCB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgw MDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMTQwMiB9LAotCXsgX01NSU8oMHgy NzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDAwMTAwMiB9LAotCXsg X01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAwMDQw MiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmQzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygw eGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0J eyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1 MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMp LCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbDNfMVtdID0gewotCXsg X01NSU8oMHg5ODg4KSwgMHgxMGJmMDNkYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNGJmMDAw MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjk4MDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMjk5MDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2JmMTE4NyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZWJmMTIwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGJmMDUwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMmJmMDQyYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGJm MDAyYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZWRhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGRhODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMmRhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGRhNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDk4MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDk4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjk5MDAzNCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDk5MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlkYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTlkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDlkODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjlkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDlkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhOCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzlmYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlmMDBiYSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwY2I4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I5 NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWI5NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMGI5NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmI5NTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNGI5MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI5MjAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2JhNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Zjg4MDAwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg4ODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg4ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTg4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg4ODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg4MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyNThiODAwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzhiMDAyYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyMzhiNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThjNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYjhjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhj NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThjNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYjhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhjNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMThkODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMzhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNzhkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1ODAw YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZjg1YWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgz NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZDgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNzgwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0MTgwMDA2MCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wzXzFfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0g MDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18xOwotCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18yW10g PSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAw eDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAw MDcwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3Nzgp LCAweDAwMDE0MDAyIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBjM2ZmIH0sCi0JeyBfTU1J TygweDI3ODApLCAweDAwMDEwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBjN2ZmIH0s Ci0JeyBfTU1JTygweDI3ODgpLCAweDAwMDA0MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAw MDBkM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMTAwNzAwIH0sCi0JeyBfTU1JTygweDI3 OTQpLCAweDAwMDBmZjFmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDAxNDAyIH0sCi0JeyBf TU1JTygweDI3OWMpLCAweDAwMDBmYzNmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDAxMDAy IH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzdmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAw eDAwMDAwNDAyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZDNmIH0sCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzJbXSA9IHsKLQl7 IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAw MDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCks IDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlP KDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18yW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwM2YwM2RhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE0M2YwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMTgwMzQwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEyMTkwMzQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjM2YxMTg3IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlM2YxMjA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwM2Yw NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyM2YwNDJiIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0M2YwMDJjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNWFjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlNWFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNWE4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyNWFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 NWE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTgzNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwMTgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTkwMDM0IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwMTkwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWRjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMWQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWRjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MWQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWYwMmE4IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMWZhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWYw MGJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMzk1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzk1MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMzk0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzk1MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MzkxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MzkyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjM2E0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFiOGFhODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOGEwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGE4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA5OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBkOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGI0MDA1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDI3OGIwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIy YTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODU4MDBhIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiODMwMTU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3 ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODM0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODRjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODA4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE1ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1ODAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ3ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIx ODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwMDYw IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJl Z3MsCi0JCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX2wzXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z19sM18yKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzNbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKLQl7IF9NTUlPKDB4Mjc3 NCksIDB4MDAwMGZmZjEgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMTQwMDIgfSwKLQl7IF9N TUlPKDB4Mjc3YyksIDB4MDAwMGMzZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMTAwMDIg fSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGM3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4 MDAwMDQwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGQzZmYgfSwKLQl7IF9NTUlPKDB4 Mjc5MCksIDB4MDAxMDA3MDAgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmMWYgfSwKLQl7 IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDE0MDIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZj M2YgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwMDEwMDIgfSwKLQl7IF9NTUlPKDB4MjdhNCks IDB4MDAwMGZjN2YgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwMDA0MDIgfSwKLQl7IF9NTUlP KDB4MjdhYyksIDB4MDAwMGZkM2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgZmxleF9ldV9jb25maWdfbDNfM1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9 LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTIxYjAzNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzZjAyNzQgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTIzZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI5YjAzNDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiZjAyNzQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTJi ZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYjM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTAxYjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGEzZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzZjAwODAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzZjA3OTMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzZjAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1ODgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDA1YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YWMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQ1YTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1YjQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDIxZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxZDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGMxZmEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxZjAwMmEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAz OTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQzOTkwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY5YjAwMzQgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTA5YjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZkYzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGNiZjA5ODEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGViZjBhMGYgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDZkODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkYWMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGVkYWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkYjQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGU5ZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA5ZjAyYTggfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU5ZjAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiODQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiOTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVi OTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiOTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGY4ODAwMGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ODA0MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDM4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4YTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjU4YjgwMDkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc4YjAwMmEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MjM4YjJhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGQ4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ZGEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGY4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4ZDIwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NTgwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4 NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI4MzAxNTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDE4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDc4NDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDBjMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDc4MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NGQ4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDE0YTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NGY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDAwNDUgfSwKLX07 Ci0KLXN0YXRpYyBpbnQKLWdldF9sM18zX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAotCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJ ICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfbDNfMzsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzMp OwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGJfY291bnRlcl9jb25maWdfbDNfNFtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwZmZmMSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgy NzdjKSwgMHgwMDAwYzNmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsg X01NSU8oMHgyNzg0KSwgMHgwMDAwYzdmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAw MiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwg MHgwMDEwMDcwMCB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8o MHgyNzk4KSwgMHgwMDAwMTQwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAot CXsgX01NSU8oMHgyN2EwKSwgMHgwMDAwMTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAw ZmM3ZiB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2Fj KSwgMHgwMDAwZmQzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBm bGV4X2V1X2NvbmZpZ19sM180W10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0s Ci0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAw MDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0 NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBf TU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIG11eF9jb25maWdfbDNfNFtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFh MDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDNmMDAxNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjNmMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjlhMDM0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMGJmMDAxNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMmJmMDAyMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFhMzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDFhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDNiODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYTNlMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDNmMDIwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjNmMDExMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDNmMDAx NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU5MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDVhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjVhYzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDVhNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDFkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFk YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTFlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFmYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTFmMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM5NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDM5MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjlhMDAzNCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDlhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmJiNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYWJlMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2JmMDk4 NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWJmMGEwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMmQ5NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2RhYzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZWRhYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzljMDQwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYzlkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlk YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzllMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDlmMDJhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlmMDA0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwY2I5NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWI5NTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDg4MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhhODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhhODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhhODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiODAwOSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzhiMmE4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxOThjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhjMDAxNSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZDhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhk YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzhkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1ODAwYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgw YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 NTgwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDg0MiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjgwMTA4 NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0MTgwMDA0NCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wzXzRfbXV4X2NvbmZpZyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwg MSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM180OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpF KG11eF9jb25maWdfbDNfNCk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhl bF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3 NzApLCAweDAwMDA2MDAwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmM2ZmIH0sCi0JeyBf TU1JTygweDI3NzgpLCAweDAwMDAxODAwIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmY2Zm IH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwNjAwIH0sCi0JeyBfTU1JTygweDI3ODQpLCAw eDAwMDBmZjNmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDAwMTgwIH0sCi0JeyBfTU1JTygw eDI3OGMpLCAweDAwMDBmZmNmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDAwMDYwIH0sCi0J eyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmYzIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDAw MDE4IH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZmZjIH0sCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygw eDk4ODgpLCAweDE0M2IwMDBlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0M2M1NWMwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhMWUwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWUw NDA4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMzkwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEyMzk3YTFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0YmIwMDBlIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0YmM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhOWUwMjk2IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjOWUwMDA4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw YjkwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyYjk3YTFmIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2M2IwMDQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwM2IwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4M2MwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2UwMDQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0M2Y4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyNTk0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NWE4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMWMwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MWQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4MWUwMmMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWUw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWZhODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlMWYwMjYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWYwMDE0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMzkwNWUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzkwYmMwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyMzkwMDE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 Mzk0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0YmIwMDQyIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwYmIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYmMwNWMwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4YmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhYmUwMDA0 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYmY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyZDkxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyZGE4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4OWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyOWQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4OWU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWUw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlOWZhODA2IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEwOWYwMTQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4YjkwNjE3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhYjkwYmUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyYjk0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBkODhmMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBm ODgwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODg4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5ODg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOGE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBmOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGEyODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBkOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOGI1MmEwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDI1OGI2YTk1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OGIw MDI5IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE5OGMxNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGMwMDE0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA3OGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA5OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBi OGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAzOGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OGQyMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFmODVhYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODVhYWFh IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAxODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5ODM1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTU1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODRjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA3ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5 ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODRjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBkODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODRjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE3ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODBjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDRkODAwNDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNkODAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRmODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzODAxMDgwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1 ODAwMDg0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDQ0IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ3ODAxMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwODQwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1n ZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq KnJlZ3MsCi0JCQkJCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsK LQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0J bGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfMVtdID0gewotCXsgX01NSU8oMHgyNzQw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHg3MDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgw MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwYzAwMCB9LAotCXsgX01NSU8oMHgy Nzc0KSwgMHgwMDAwZTdmZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMzAwMCB9LAotCXsg X01NSU8oMHgyNzdjKSwgMHgwMDAwZjlmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMGMw MCB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19zYW1wbGVyXzFbXSA9IHsKLQl7IF9N TUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMg fSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4 MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4 ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyXzFb XSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg5MjE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTQ5NTAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThiMjE0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTRiNTAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThkMjE0MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTRkNTAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNk YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVkYzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDJkY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkY2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWFiZDAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFiZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGVkODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkODgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWFkYjAwNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkYjgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDZkYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhkYjgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFkYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTA5ZjAyYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZmEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU5ZjAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThiODI1MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRi ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDhiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFiODQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGNiODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiOTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGViOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDBiOTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiOWEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDRiOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiOTIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWFiYTAyMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiYTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiYTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5MTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQ5MjczMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA5MjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTg5MzAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5NDYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGM5NTkwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU5NTAwOTggfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTA5NTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiMDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDRiMjAwNzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBiMjAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDRiMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiMzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDhiMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiNGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiNTk4OTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTBiNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZkMDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDZkMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZkMjAwNzMgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTBkMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThk MzAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGNkMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFkNDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDRkNDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGVkNTkwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkNTk4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTBkNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4ODAwMGUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ODgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDc4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4ODgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGQ4ODA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc4YjAwMmEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjM4YjU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU4YjAwMGEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4YzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGI4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4YzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGY4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ZGEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDc4ZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4NTAw MmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjE4NTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4NDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDU4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTE4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTc4MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDc4MDEwMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y4MDBjNjQgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NGY4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDBjMDIgfSwKLX07Ci0K LXN0YXRpYyBpbnQKLWdldF9zYW1wbGVyXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJ CSBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX3NhbXBsZXJfMTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Nh bXBsZXJfMSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19zYW1wbGVyXzJbXSA9IHsKLQl7IF9NTUlPKDB4 Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4NzA4MDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCks IDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMGMwMDAgfSwKLQl7IF9NTUlP KDB4Mjc3NCksIDB4MDAwMGU3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDMwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY5ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAw MDBjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZlN2YgfSwKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfc2FtcGxlcl8yW10gPSB7Ci0J eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEw MDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgp LCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1J TygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfc2FtcGxl cl8yW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE4MTIxNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE0MTUwMGFiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MzIxNDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE0MzUwMGFiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NTIxNDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NTUwMGFiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjNWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNWM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyNWNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NWNjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFhM2QwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhM2Q4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNTg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlNTg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NTg4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFhNWIwMDUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NWI4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA2NWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4 NWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwMWYwMmEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWZhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMWYwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MzgyNTAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0Mzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2Mzg0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4Mzg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzg0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMzg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzk4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMzk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzlhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MzlhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzkyMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFhM2EwMjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy M2E4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjM2E4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0MTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MTI3MzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMTIwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MTMwMDBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhMTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMTQ2MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMTU5MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMTUwMDk4IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwMTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MzIwMDczIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMzIwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MzM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4MzM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 MzRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzU5ODkwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwMzUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTA0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NTE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTIwMDcz IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE4NTMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjNTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNTQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0NTQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTU5 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTU5ODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEwNTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGFhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFkOGEwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOGE4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA1OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3 OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OGE4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBiOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOGE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDI3OGIwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOGIyYTgw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OGIwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDIzODUwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODVhYTAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIxODUwMDBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODMwMTUwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODM0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBkODM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBmODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAx ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODRjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1ODRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFkODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmODBjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODBjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE3ODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzODAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ3ODAxMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDRkODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmODAwYzY0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRmODAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxODAwYzAyIH0s Ci19OwotCi1zdGF0aWMgaW50Ci1nZXRfc2FtcGxlcl8yX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJl Z3MsCi0JCQkgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ19zYW1wbGVyXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ19zYW1wbGVyXzIpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcy NCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9N TUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZlN2YgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4 MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZmYmYgfSwKLQl7IF9NTUlPKDB4 Mjc4OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZmY2YgfSwKLQl7 IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZm ZjcgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc5Yyks IDB4MDAwMGZmZjkgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwK LQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9N TUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgbXV4X2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjE1 NGQ2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM1MmU2MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjU1NGQ2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjk1MDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNmI1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmQ1MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDVjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjVjNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODNkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTNkODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDU4YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzViODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzFmYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFmMDBhYSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM4 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM4NDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzM4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM5ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDM5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM5MjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDNhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjNhODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwODEzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTEzODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE0MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDE1Y2ZjNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE1MDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjMzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDM0MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM0 NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDM1YzcwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjM1MDBjZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM1MDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNDUzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjUzODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDU0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjU1Y2ZjNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU1MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNmRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGRjNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwY2RjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWRjYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYWJkMDBhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwY2Q4YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZWQ4NDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZWRiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGRiMDgwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYWRiMDI1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTlm YWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDlmMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZWI4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmI4NDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxOGI4MTU2YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI5ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2I5YTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZWI5YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGJhYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYWJhMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjkzNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODkzMDAwYSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTk0NzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzk1YzVjMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTk1MDBjMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDk1MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZWIzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmIz MDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGIzMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNmI0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI0MTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYWI0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNmI1YzUwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGI1MDBjMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZWI1YzEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGI1MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNmQzMTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOGQ0ZTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOGQ1YzEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWQ1YzNj NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGQ1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZDg4ZjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg4MDAwZiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNThhODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOThh ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiYWFhNSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyNzhiMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzhiMmE4MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NzhjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOThjNTUwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjhjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzhkODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOThkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjhkYTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTg1YWFhYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyMzg1MDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjg1YWEwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgz NTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgzMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDgzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg0YzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwOTg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0YzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZDg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg0YzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMzg0YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTg0YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgw YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgwYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZjgwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzgwMGM0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTgwMDA2MyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzgwMDgwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTgwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzZjgwMTRhNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTgwMTA0MiB9LAotfTsKLQotc3Rh dGljIGludAotZ2V0X3RkbF8xX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAg aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4 X2NvbmZpZ190ZGxfMTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8xKTsK LQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDBmZGZmIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmZTdmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3ODQpLCAweDAwMDBmZjlmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmU3IH0sCi0JeyBfTU1JTygweDI3OTApLCAw eDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmZiIH0sCi0JeyBfTU1JTygw eDI3OTgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZmZkIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8y W10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgp LCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1J TygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0s Ci0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAw MDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25m aWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxNTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTYzNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY1NTAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTY5NTJlNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTZi NTRkNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTZkNTJlNjAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDY1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1Y2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGE1Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1YzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTgzZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1ODgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDg1ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1ODQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1YjU4 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YjAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUxZmFhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxZjAyYWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUzODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzODQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTgzODJhNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYz OTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGEzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzOWEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUzOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEzYTAyYTAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTYxMzA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDgxNDYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNWMxMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgxNWM1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNTAw YzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTYzMzUwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNDkwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGEzNDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNTAwYzEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGEzNWM1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMz NTAwYzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTg1MzAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1NGUwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGM1NWM1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NWMxYzMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDBkYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkY2MwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDRkYzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiZDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDZiZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkOGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJkYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDRkYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZkYjQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDhkYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5ZmEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGU5ZjAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJi ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDZiODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDhiODQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGFiODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNiODgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBiOTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDJiOWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiOWEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDZiOTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFiYTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGNiYTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5Mzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQ5NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5NWNmYzcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTA5NTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDhiMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRi NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDZiNDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDBiNWM3MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRiNTAwY2YgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTBiNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFkMzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGNkMzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDZkNDYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRkNWM3MDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDZkNTAwY2YgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTBkNTAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDM4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ODgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDk4ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4ODgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGQ4ODA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4 YWFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjU4YjU1NWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc4YjAwMTUgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MjM4YjU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4YzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDc4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4YzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGI4YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4YzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDE4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4ZGEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDc4ZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4NWFhYWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjM4NTAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4NWFhMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4 MzU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MzAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDM4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDc4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGQ4MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NGMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDk4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4NGMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4NGMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4NGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4NGMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTc4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MGMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4 MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTE4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MGMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTU4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGY4MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM4MDA4ODIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU4MDEwODIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTM4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc4MDE0YTUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MjE4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE4MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ4MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4M2Y4MDAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE4MDBjNjIgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAg IGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11 eF9jb25maWdfdGRsXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMik7 Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19CitpbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3Nl dHNfY2h2ID0gMTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX3Rlc3Rfb2FbXSA9IHsKIAl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKQEAg LTE5OTEsMzg5ICs2MCw1MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfdGVzdF9vYVtdID0gewogCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmZlNyB9 LAogCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAwMSB9LAogCXsgX01NSU8oMHgyN2FjKSwgMHgw MDAwZmZlNyB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ190ZXN0X29hW10gPSB7Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTgwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTgwMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzMzhiMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNThiMDA2NiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNThiMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzhiMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Nzgw MDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzgwMDAwMCB9LAotCXsgX01NSU8oMHgxODIz YTQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAwIH0sCi19Owot Ci1zdGF0aWMgaW50Ci1nZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms Ci0JCSAgICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ190ZXN0X29hKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotaW50IGk5MTVfb2Ffc2Vs ZWN0X21ldHJpY19zZXRfY2h2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsK LQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3NfbGVuID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPSBOVUxMOwotCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPSAwOwotCi0Jc3dpdGNoIChkZXZfcHJpdi0+cGVy Zi5vYS5tZXRyaWNzX3NldCkgewotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6Ci0J CWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3JlbmRlcl9iYXNpY19t dXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz LAotCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVS KCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRc biIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hl Y2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQg dG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQK LQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYzsKLQkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3Vu dGVyX2NvbmZpZ19yZW5kZXJfYmFzaWMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFz aWMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDOgot CQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2Jhc2lj X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzLAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYg KGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RS SVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0JBU0lDXCIgbWV0cmlj IHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0 aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYzsK LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpYzsKLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2Nv bXB1dGVfYmFzaWMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJf UElQRV9QUk9GSUxFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdl dF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkVO REVSX1BJUEVfUFJPRklMRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVz ZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQg d291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28g c2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7 Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50 ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX3Bp cGVfcHJvZmlsZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9m aWxlKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRjoKLQkJ ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfaGRjX2FuZF9zZl9tdXhf Y29uZmlnKGRldl9wcml2LAotCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJ CQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJpYyBzZXRcbiIpOwotCi0J CQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlz Ci0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNw YWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwot CQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdf aGRjX2FuZF9zZik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmKTsKLQotCQlyZXR1cm4g MDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf Y29uZmlncyA9Ci0JCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkg ewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18x XCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lz ZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJl ZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBi ZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMTsK LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19sM18xKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Mg PQotCQkJZmxleF9ldV9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEpOwotCi0JCXJldHVybiAw OwotCWNhc2UgTUVUUklDX1NFVF9JRF9MM18yOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID0KLQkJCWdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzJc IiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNm cyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJl ZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18yOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX2wzXzIpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9 Ci0JCQlmbGV4X2V1X2NvbmZpZ19sM18yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMik7Ci0KLQkJcmV0dXJuIDA7 Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPQotCQkJZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsK LQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfM1wi IG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2Zz IGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVu IGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVl biByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzM7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfbDNfMyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0K LQkJCWZsZXhfZXVfY29uZmlnX2wzXzM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18zKTsKLQotCQlyZXR1cm4gMDsK LQljYXNlIE1FVFJJQ19TRVRfSURfTDNfNDoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9Ci0JCQlnZXRfbDNfNF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewot CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM180XCIg bWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMg YWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4g YWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVu IHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfNDsKLQkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ19sM180KTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQot CQkJZmxleF9ldV9jb25maWdfbDNfNDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzQpOwotCi0JCXJldHVybiAwOwot CWNhc2UgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yYXN0ZXJpemVyX2FuZF9waXhl bF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncywKLQkJCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJBU1RFUklaRVJf QU5EX1BJWEVMX0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFM OwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3Vu dGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmln X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0KLQkJcmV0dXJuIDA7 Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVJfMToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9Ci0JCQlnZXRfc2FtcGxlcl8xX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJ CQkgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi U0FNUExFUl8xXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVn aXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4n dCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRu J3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQot Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25m aWdfc2FtcGxlcl8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfMSk7Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3NhbXBsZXJfMTsKLQkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29u ZmlnX3NhbXBsZXJfMSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBM RVJfMjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfc2FtcGxl cl8yX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MsCi0JCQkJCQkgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIo Ik5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FNUExFUl8yXCIgbWV0cmljIHNldFxuIik7 Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2Vk IHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1 c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJ ICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfc2FtcGxlcl8yOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29u ZmlnX3NhbXBsZXJfMik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZs ZXhfZXVfY29uZmlnX3NhbXBsZXJfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3NhbXBsZXJfMik7Ci0KLQkJcmV0dXJu IDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8xOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID0KLQkJCWdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBc IlRETF8xXCIgbWV0cmljIHNldFxuIik7Cit9OwogCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxk bid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0K K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGVzdF9vYVtd ID0geworfTsKIAotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2Nv dW50ZXJfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8xKTsKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZXN0X29hW10gPSB7CisJeyBfTU1JTygw eDk4ODgpLCAweDU5ODAwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU5ODAwMDAxIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDMzOGIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDI1OGIw MDY2IH0sCisJeyBfTU1JTygweDk4ODgpLCAweDA1OGIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgp LCAweDAzOGIwMDAwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDAzODQ0MDAwIH0sCisJeyBfTU1J TygweDk4ODgpLCAweDQ3ODAwMDgwIH0sCisJeyBfTU1JTygweDk4ODgpLCAweDU3ODAwMDAwIH0s CisJeyBfTU1JTygweDE4MjNhNCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4 NTk4MDAwMDAgfSwKK307CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZs ZXhfZXVfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzEpOworc3RhdGljIGludAorZ2V0X3Rl c3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAg ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgICAgaW50ICpsZW5z KQoreworCWludCBuID0gMDsKIAotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfVERM XzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3RkbF8yX211 eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Ms Ci0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIo Ik5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzJcIiBtZXRyaWMgc2V0XG4iKTsKKwlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsK KwlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KSA8IDEpOwogCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KKwlyZWdzW25dID0gbXV4X2NvbmZp Z190ZXN0X29hOworCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7CisJ bisrOwogCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRl cl9jb25maWdfdGRsXzI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9 Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGRsXzIpOworCXJldHVybiBuOworfQog Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ190ZGxf MjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3RkbF8yKTsKK2ludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2Nodihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJZGV2X3ByaXYtPnBlcmYub2Eu bl9tdXhfY29uZmlncyA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBO VUxMOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7CisJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3NfbGVuID0gMDsKIAotCQlyZXR1cm4gMDsKKwlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1l dHJpY3Nfc2V0KSB7CiAJY2FzZSBNRVRSSUNfU0VUX0lEX1RFU1RfT0E6CiAJCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQogCQkJZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJp diwKQEAgLTI0MDYsMjkyICsxMzcsNiBAQCBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9j aHYoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogfQogCiBzdGF0aWMgc3NpemVf dAotc2hvd19yZW5kZXJfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIl ZFxuIiwgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkID0gewotCS5hdHRyID0geyAu bmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yZW5kZXJfYmFzaWNf aWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRy c19yZW5kZXJfYmFzaWNbXSA9IHsKLQkmZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkLmF0dHIsCi0J TlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9i YXNpYyA9IHsKLQkubmFtZSA9ICI5ZDhhM2FmNS1jMDJjLTRhNGEtYjk0Ny1mMTY3MjQ2OWUwZmIi LAotCS5hdHRycyA9ICBhdHRyc19yZW5kZXJfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAot c2hvd19jb21wdXRlX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkID0gewotCS5hdHRyID0geyAu bmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2Jhc2lj X2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cnNfY29tcHV0ZV9iYXNpY1tdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkLmF0dHIs Ci0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1 dGVfYmFzaWMgPSB7Ci0JLm5hbWUgPSAiZjUyMmE4OWMtZWNkMS00NTIyLTgzMzEtMzM4M2M1NGFm NWY1IiwKLQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9iYXNpYywKLX07Ci0KLXN0YXRpYyBzc2l6 ZV90Ci1zaG93X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50 ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFKTsKLX0KLQot c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3JlbmRlcl9waXBlX3Byb2Zp bGVfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7 Ci0JJmRldl9hdHRyX3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQot c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSA9 IHsKLQkubmFtZSA9ICJhOWNjYzAzZC1hOTQzLTRlNmItOWNkNi0xM2UwNjMwNzU5MjciLAotCS5h dHRycyA9ICBhdHRyc19yZW5kZXJfcGlwZV9wcm9maWxlLAotfTsKLQotc3RhdGljIHNzaXplX3QK LXNob3dfaGRjX2FuZF9zZl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i LCBNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgZGV2X2F0dHJfaGRjX2FuZF9zZl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAi aWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfaGRjX2FuZF9zZl9pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2hkY19hbmRf c2ZbXSA9IHsKLQkmZGV2X2F0dHJfaGRjX2FuZF9zZl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9oZGNfYW5kX3NmID0gewotCS5uYW1l ID0gIjJjZjBjMDY0LTY4ZGYtNGZhYy05YjNmLTU3ZjUxY2E4YTA2OSIsCi0JLmF0dHJzID0gIGF0 dHJzX2hkY19hbmRfc2YsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19sM18xX2lkKHN0cnVj dCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYp Ci17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMSk7Ci19 Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18xX2lkID0gewot CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19s M18xX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAq YXR0cnNfbDNfMVtdID0gewotCSZkZXZfYXR0cl9sM18xX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2wzXzEgPSB7Ci0JLm5hbWUgPSAi NzhhODdmZjktNTQzYS00OWNlLTk1ZWEtMjZkODYwNzFlYTkzIiwKLQkuYXR0cnMgPSAgYXR0cnNf bDNfMSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzJfaWQoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1 cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18yKTsKLX0KLQotc3RhdGlj IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzJfaWQgPSB7Ci0JLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzJfaWQsCi0J LnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18y W10gPSB7Ci0JJmRldl9hdHRyX2wzXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMiA9IHsKLQkubmFtZSA9ICI5ZjJjZWNlNS03 YmZlLTQzMjAtYWQ2Ni04YzdjYzUyNmJlYzUiLAotCS5hdHRycyA9ICBhdHRyc19sM18yLAotfTsK LQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfM19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfM19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAi aWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfM19pZCwKLQkuc3RvcmUgPSBO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzNbXSA9IHsKLQkm ZGV2X2F0dHJfbDNfM19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9sM18zID0gewotCS5uYW1lID0gImQ4OTBlZjM4LWQzMDktNDdlNC1i OGI1LWFhNzc5YmIxOWFiMCIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzMsCi19OwotCi1zdGF0aWMg c3NpemVfdAotc2hvd19sM180X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIE1FVFJJQ19TRVRfSURfTDNfNCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9sM180X2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2Rl ID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19sM180X2lkLAotCS5zdG9yZSA9IE5VTEwsCi19Owot Ci1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfNFtdID0gewotCSZkZXZfYXR0cl9s M180X2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw IGdyb3VwX2wzXzQgPSB7Ci0JLm5hbWUgPSAiNWZkZmY0YTYtOWRjOC00NWUxLWJmZGEtZWY1NDg2 OWZiZGQ0IiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfNCwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1z aG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3By aW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNL RU5EKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tl bmRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICph dHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JJmRldl9hdHRyX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCA9 IHsKLQkubmFtZSA9ICIyYzBlNDVlMS03ZTJjLTRhMTQtYWUwMC0wYjdlYzg2OGI4YWEiLAotCS5h dHRycyA9ICBhdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kLAotfTsKLQotc3RhdGlj IHNzaXplX3QKLXNob3dfc2FtcGxlcl8xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVm LCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfU0FNUExFUl8xKTsKLX0KLQotc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBsZXJfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5h bWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfc2FtcGxlcl8xX2lkLAot CS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfc2Ft cGxlcl8xW10gPSB7Ci0JJmRldl9hdHRyX3NhbXBsZXJfMV9pZC5hdHRyLAotCU5VTEwsCi19Owot Ci1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyXzEgPSB7Ci0JLm5h bWUgPSAiNzExNDhkNzgtYmFmNS00NzRmLTg3OGEtZTIzMTU4ZDAyNjVkIiwKLQkuYXR0cnMgPSAg YXR0cnNfc2FtcGxlcl8xLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfc2FtcGxlcl8yX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfU0FN UExFUl8yKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Nh bXBsZXJfMl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwK LQkuc2hvdyA9IHNob3dfc2FtcGxlcl8yX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfc2FtcGxlcl8yW10gPSB7Ci0JJmRldl9hdHRyX3Nh bXBsZXJfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9n cm91cCBncm91cF9zYW1wbGVyXzIgPSB7Ci0JLm5hbWUgPSAiYjk5NmEyYjctYzU5Yy00OTJkLTg3 N2EtOGNkNTRmZDZkZjg0IiwKLQkuYXR0cnMgPSAgYXR0cnNfc2FtcGxlcl8yLAotfTsKLQotc3Rh dGljIHNzaXplX3QKLXNob3dfdGRsXzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQi LCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfdGRsXzFfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMVtdID0gewotCSZk ZXZfYXR0cl90ZGxfMV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF90ZGxfMSA9IHsKLQkubmFtZSA9ICJlYjJmZWNiYS1iNDMxLTQyZTct ODI2MS1mZTk0MjlhNmU2N2EiLAotCS5hdHRycyA9ICBhdHRyc190ZGxfMSwKLX07Ci0KLXN0YXRp YyBzc2l6ZV90Ci1zaG93X3RkbF8yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfVERMXzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3RkbF8yX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzJbXSA9IHsKLQkmZGV2 X2F0dHJfdGRsXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGVfZ3JvdXAgZ3JvdXBfdGRsXzIgPSB7Ci0JLm5hbWUgPSAiNjA3NDk0NzAtYTY0OC00YTRiLTlm MTAtZGJmZTFlMzZlNDRkIiwKLQkuYXR0cnMgPSAgYXR0cnNfdGRsXzIsCi19OwotCi1zdGF0aWMg c3NpemVfdAogc2hvd190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfVEVTVF9PQSk7CkBAIC0yNzIwLDcxICsxNjUsNiBAQCBpOTE1 X3BlcmZfcmVnaXN0ZXJfc3lzZnNfY2h2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlpbnQgbXV4X2xlbnNbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKV07CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yZW5kZXJfYmFzaWM7Ci0JfQotCWlmIChnZXRfY29t cHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0J CXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9jb21wdXRlX2Jhc2ljKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0ZV9i YXNpYzsKLQl9Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOwotCX0KLQlpZiAo Z2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkg ewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2hkY19hbmRf c2Y7Ci0JfQotCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9sM18xKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMTsK LQl9Ci0JaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2wzXzIpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9sM18yOwotCX0K LQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkg ewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfbDNfMyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wzXzM7Ci0JfQotCWlm IChnZXRfbDNfNF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0J CXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9sM180KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfNDsKLQl9Ci0JaWYgKGdl dF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwot CX0KLQlpZiAoZ2V0X3NhbXBsZXJfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9zYW1wbGVyXzEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9z YW1wbGVyXzE7Ci0JfQotCWlmIChnZXRfc2FtcGxlcl8yX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXJfMik7Ci0JCWlmIChyZXQpCi0JCQln b3RvIGVycm9yX3NhbXBsZXJfMjsKLQl9Ci0JaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMSk7Ci0JCWlmIChyZXQpCi0J CQlnb3RvIGVycm9yX3RkbF8xOwotCX0KLQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKLQkJaWYgKHJldCkKLQkJ CWdvdG8gZXJyb3JfdGRsXzI7Ci0JfQogCWlmIChnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9w cml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7CiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKIAkJaWYgKHJldCkK QEAgLTI3OTQsNDUgKzE3NCw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19jaHYoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiAwOwogCiBlcnJvcl90ZXN0X29h OgotCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3RkbF8yKTsKLWVycm9yX3RkbF8yOgotCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKLWVycm9yX3RkbF8xOgotCWlmIChn ZXRfc2FtcGxlcl8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9z YW1wbGVyXzIpOwotZXJyb3Jfc2FtcGxlcl8yOgotCWlmIChnZXRfc2FtcGxlcl8xX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyXzEpOwotZXJyb3Jfc2Ft cGxlcl8xOgotCWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZCk7Ci1lcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOgotCWlmIChnZXRfbDNf NF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfNCk7Ci1lcnJv cl9sM180OgotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfbDNfMyk7Ci1lcnJvcl9sM18zOgotCWlmIChnZXRfbDNfMl9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci1lcnJvcl9sM18yOgotCWlmIChn ZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7 Ci1lcnJvcl9sM18xOgotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci1lcnJvcl9oZGNfYW5kX3NmOgotCWlm IChnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci1lcnJvcl9yZW5kZXJfcGlwZV9wcm9m aWxlOgotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci1lcnJvcl9jb21wdXRlX2Jhc2ljOgotCWlm IChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9yZW5kZXJfYmFzaWMpOwotZXJyb3JfcmVuZGVyX2Jhc2ljOgogCXJldHVybiByZXQ7CiB9 CiAKQEAgLTI4NDIsMzIgKzE4Myw2IEBAIGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2Nodihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnICptdXhfcmVnc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKV07CiAJ aW50IG11eF9sZW5zW0FSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyld OwogCi0JaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsKLQlp ZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCWlmIChnZXRfaGRjX2FuZF9zZl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci0J aWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9s M18xKTsKLQlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX2wzXzIpOwotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbDNfMyk7Ci0JaWYgKGdldF9sM180X211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9sM180KTsKLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3Bp eGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJ c3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCWlmIChnZXRfc2FtcGxlcl8xX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyXzEpOwotCWlmIChnZXRf c2FtcGxlcl8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1w bGVyXzIpOwotCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3RkbF8xKTsKLQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7CiAJaWYgKGdldF90ZXN0X29hX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCiAJCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKIH0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X29hX2dsay5jCmluZGV4IDJmMzU2ZDUxYmZmOC4uMTBkNzZiZWJkM2ZkIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2dsay5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2FfZ2xrLmMKQEAgLTMyLDE2MTIgKzMyLDEwIEBACiAjaW5jbHVkZSAi aTkxNV9vYV9nbGsuaCIKIAogZW51bSBtZXRyaWNfc2V0X2lkIHsKLQlNRVRSSUNfU0VUX0lEX1JF TkRFUl9CQVNJQyA9IDEsCi0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDLAotCU1FVFJJQ19T RVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSwKLQlNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUywK LQlNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVMsCi0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0VY VEVOREVELAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNIRSwKLQlNRVRSSUNfU0VUX0lE X0hEQ19BTkRfU0YsCi0JTUVUUklDX1NFVF9JRF9MM18xLAotCU1FVFJJQ19TRVRfSURfUkFTVEVS SVpFUl9BTkRfUElYRUxfQkFDS0VORCwKLQlNRVRSSUNfU0VUX0lEX1NBTVBMRVIsCi0JTUVUUklD X1NFVF9JRF9URExfMSwKLQlNRVRSSUNfU0VUX0lEX1RETF8yLAotCU1FVFJJQ19TRVRfSURfQ09N UFVURV9FWFRSQSwKLQlNRVRSSUNfU0VUX0lEX1RFU1RfT0EsCisJTUVUUklDX1NFVF9JRF9URVNU X09BID0gMSwKIH07CiAKLWludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19nbGsgPSAx NTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jl bmRlcl9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgw MDAwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQg fSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4 MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4 ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7 IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTY2YzAwZjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAyODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTIzMjAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MzAzMTcg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MzAzZGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 M2Y5MDBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwYTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAyZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyZDEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUyZTU5MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGM0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0YzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWM0ZjAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE2YzAwNTMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZmNjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWMwZjAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMyYzAwNDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxMDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMDEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMTQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgxMjAwMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNDEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDgxNDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzMDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYz MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYzMjA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzMjA4NDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAzMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGQ5MzE4MzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MzlmM2YgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDE5MzllODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzAzYmMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDU5MzAwMGUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MzAw MmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDk5MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxNzcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWY5MDAxODcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MmI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzE5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDEx MTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0MjMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTU5MDAxMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDExMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5 MDA0MjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDU5MDA4MjEgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9yZW5kZXJf YmFzaWNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkg ICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICBpbnQgKmxlbnMpCi17 Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRl cl9iYXNpYzsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7 Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9N TUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMg fSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4 MDA3NzgwMDggfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKLQl7IF9NTUlPKDB4 ZTU1YyksIDB4MDA4MDg3MDggfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jh c2ljW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEyNGYxYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM5OTAwMzQwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDNmOTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmQ0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhMmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ1MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmUx NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmU1MTAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEwMmUwMTE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGNjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE2NGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGVhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjNGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGU4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwNGY2YjQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGY2MjAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4NGY0MTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGYw MDYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGY2YzRjIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlNGY0YjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGYwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFjNGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MGY1MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFhMGY4ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFj MGYwOGEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFjMmMxNDUxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlMmMwMDAxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhMmMwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE5OTM4YTI4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5OTAwMTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTAwMTc4IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTI1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAw MTIzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDI1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDJiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJk OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMTEx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ1OTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9iYXNpY19tdXhf Y29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICAgaW50ICpsZW5zKQotewotCWludCBu ID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2lj OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0Jbisr OwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9j b3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygweDI3MjQp LCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAw MDdmZmVhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZjIH0sCi0JeyBfTU1JTygweDI3 NzgpLCAweDAwMDdhZmZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZkIH0sCi0JeyBf TU1JTygweDI3ODApLCAweDAwMDc5ZmZhIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmM2Zi IH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdiZjdhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAw eDAwMDBmN2U3IH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZWZhIH0sCi0JeyBfTU1JTygw eDI3OTQpLCAweDAwMDBmN2NmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDc3ZmZhIH0sCi0J eyBfTU1JTygweDI3OWMpLCAweDAwMDBlZmRmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDZm ZmZhIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBjZmJmIH0sCi0JeyBfTU1JTygweDI3YTgp LCAweDAwMDNmZmZhIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDA1ZjdmIH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBl X3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAw eDBjMmUwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmYwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwMTg2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODEwMDE5IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE1ODEwMDEzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODIw MDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE3ODQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODYwMDA3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDIxODYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODcwM2UwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQxMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyMmU1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmUwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMmUwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmYwMDQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MTQzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTc0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MTgwMDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTgwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBkODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODEwMjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODEwMDMwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAzODEwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxODE5MTQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIzODE5MDUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1 ODEwMDE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODIwOTgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAzODIwZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODIwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAxODJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODI4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODMwMDA0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA1ODMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODMxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAxODQ4MDcyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODQw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODQ4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA3ODYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODYwMDkyIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBmODYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAx ODY5MTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODcwMDY1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAxODcwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTMwODAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBiOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFkOTU1MDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTUxNDU1IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA5OTJhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTI4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDExOTJhODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTIw MjhhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTJhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBkOTIyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTA4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDIxOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOTA4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3 OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDJiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTA0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDJmOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTA0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwYzAxIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODYzIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRi OTAwMDYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwYzIyIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVuZGVy X3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCSAgIGludCAq bGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25m aWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmln X3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzW10g PSB7Ci0JeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjgpLCAw eGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCi0J eyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAw MDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NGMp LCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1J TygweDI3NDQpLCAweDAwMDA2NjY3IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NWMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTgpLCAweDg2 NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBfTU1JTygweDI3 NTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCi0JeyBf TU1JTygweDI3NzQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJh IH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAw eDAwMDdmODcyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygw eDI3ODgpLCAweDAwMDdmOGJhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCi0J eyBfTU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBm ZTAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCi0JeyBfTU1JTygweDI3OWMp LCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0sCi0JeyBfTU1J TygweDI3YTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0s Ci0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZTAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkc1tdID0gewotCXsgX01N SU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9 LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgw MDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhl NTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV9yZWFk c1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgwMDM0MyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzOTkwMDM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0MTkwMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgwMzE4MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgwMzVlMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NzgwMDA2YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyMTgxYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzgxMDAwYSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDk1MDU1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkyODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkyYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjkyMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE3MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyMTkwMDE3MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE3MiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwMDE3MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkw MDE3NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwMDE3NSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyYjkwMDE3NiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE3NyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyZjkwMDE3ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEyNSB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwMDEyMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NzkwMDEyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0MzkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0NzkwMTA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0ZDkwMDAwNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9 LAotfTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKipyZWdzLAotCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEp OwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRzOwotCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9y eV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4MjcyYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlP KDB4MjcyOCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxYyksIDB4ZmZm ZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcxOCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4Mjcx NCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAg fSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2NjcgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4 Mjc1OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1NCksIDB4MDAwMDY0NjUgfSwKLQl7 IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4 MWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCks IDB4MDAwN2Y4MmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlP KDB4Mjc4MCksIDB4MDAwN2Y4MjIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwK LQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2Y4N2EgfSwKLQl7IF9NTUlPKDB4Mjc5 NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Y4ZWEgfSwKLQl7IF9N TUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIg fSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4 MDAwN2Y4ZjIgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZlMDAgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1td ID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwg MHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8o MHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAot CXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2 NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmln X21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MDAzNDMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzk5MDAzNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM4MDMxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MDM1ZTIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDc4MDAwNmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjE4MWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM4 MTAwMGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTA1NTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGI5MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MmEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY5MjIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxODAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDAxODEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MjM5MDAxODIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxODMgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4Mjc5MDAxODQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxODUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MmI5MDAxODYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAx ODcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDAxNzAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MzE5MDAxMjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMjMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTc5MDAxMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5 MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDM5MDEwODQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDEwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDEwODQgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDEwODQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9tZW1vcnlfd3JpdGVzX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4g PSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9yeV93cml0ZXM7 Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKLQluKys7 Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2Nv dW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4 ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Zj MmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCks IDB4MDAwN2ZjNmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlP KDB4Mjc4MCksIDB4MDAwN2ZjOTIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGJmMDAgfSwK LQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2ZjYTIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAw MGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZjMzIgfSwKLQl7IF9NTUlPKDB4Mjc5 NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZjOWEgfSwKLQl7IF9N TUlPKDB4Mjc5YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2ZlNmEg fSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4 MDAwN2ZlN2EgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGJmMDAgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRl ZFtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4 KSwgMHgwMDAwMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01N SU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA4ODA3OCB9 LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgw MGEwODkwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29u ZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAwZTAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzAxNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTYxYzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzAxMjAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyZDUw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZDUwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTU0MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyZTU1MTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAy ZTAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGE0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0Y2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGU0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA0YzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTQ0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDY0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDA0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZWEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZWEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0 ZjRiNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjQyMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDI0ZjQwNGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZjAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWE0ZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExYmMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYzE5 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzFhMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGExYzFiMzUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYzMzMzcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQxYzMxYzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgwZjUwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZmE4YWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMw ZjBhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWMyYzZhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWUyYzAwMDEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWEyYzI5NTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE5MzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTk5M2FhYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5Mzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjE5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MmY5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0MjAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NGI5MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5 MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDEgfSwKLX07Ci0KLXN0YXRpYyBp bnQKLWdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAotCQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJ aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4 X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hl W10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQp LCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDBmZWZlIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmZWZkIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZmZhIH0sCi0JeyBf TU1JTygweDI3OTQpLCAweDAwMDBmYmVmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmZmZh IH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYmRmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1 OCksIDB4MDAxMDExMDAgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAyMDEyMDAgfSwKLQl7IF9N TUlPKDB4ZTU1YyksIDB4MDAzMDEzMDAgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDA0MDE0MDAg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21w dXRlX2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NmMwM2IwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwYzAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4MmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmQ1MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMmUwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmUx NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMmUwMTQwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0NGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBjNGNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NGM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw NGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA4NGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNGVhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhNGY0MDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGY1MDA1 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDUxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2NmM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVkIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlNmM1ZTVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE0NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE4MGYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMGZhODAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFjMGYwYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmM0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFjMmM0MDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFl MmMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTMxOTgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1OTMwMDMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAxOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTNhMDBhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA3OTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFkOTAwMTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTc4IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDIzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDJmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFi OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAxMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMTExIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ3OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDRkOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAw NDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmln KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgKipyZWdzLAotCQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQlsZW5zW25d ID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9j b25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmRmZiB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19o ZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s Ci0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRmMDIz MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMTgzNDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZTJlMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRlODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNDRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlMjAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRmNjEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDRmNDE2YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmMDA0YiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTRmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTBmMDJhOCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTJjNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNTgxMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjgzMDVjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjk1 MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyMDIwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzMTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0ZDkwMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZp ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsK LQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9zZjsKLQlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX2hkY19hbmRfc2YpOwotCW4rKzsKLQotCXJldHVybiBuOwot fQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNf MVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0 KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgw MDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsgX01NSU8oMHgy Nzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYzNmZiB9LAotCXsg X01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYzdm ZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwg MHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDcwMCB9LAotCXsgX01NSU8o MHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMTQwMiB9LAot CXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDAw MTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAotCXsgX01NSU8oMHgyN2E4 KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmQzZiB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18xW10gPSB7 Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAw MDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3 NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBf TU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0 IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbDNf MVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjY0MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjY1MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjNjgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMjZjMDAxZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDAxMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJkNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJlMDE1 NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJlNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTJlMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMjRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDRjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNjRjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODRjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjRlYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjRlMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRmNTUwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTRmMTU1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTY0MDAy NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDY0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDY0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzY1MDAyNCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDY1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjY1MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjNTMyNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTZj NTQyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMmEwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjZjMjg1YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDA1YyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDkwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzBmMGFhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ODBmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTBmMDJhYSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzJjNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJjMDAwMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTJjNTU1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzYWEw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0YjkwMDQyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0ZDkwMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MzkwMDQyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAyMSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Nzkw MDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wzXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg KipyZWdzLAotCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0K LQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfbDNfMSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3MTQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAw eDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBlZmZmIH0sCi0JeyBfTU1JTygw eDI3NzgpLCAweDAwMDA2MDAwIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmM2ZmIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUw MDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCks IDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlP KDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwK LQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMmQ3ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEyMmQ3OWUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmYwMDA0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwMGUzODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MGYwMDA1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwMmQwOTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmQ4 MDJmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmQ0MDEzIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2MmQxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmUwMDUwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMmYwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2NGUyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGUwNDgwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMGUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGYwMDI3 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFhMGYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA1OTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OTM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA5OTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE5OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFm OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAxNGEwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwMGE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDMzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJ CQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJCSAgICBpbnQgKmxl bnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmln X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4 X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQluKys7Ci0KLQlyZXR1cm4g bjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmln X3NhbXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcxNCksIDB4NzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAw MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3 MCksIDB4MDAwMGMwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGU3ZmYgfSwKLQl7IF9N TUlPKDB4Mjc3OCksIDB4MDAwMDMwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY5ZmYg fSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDBjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4 MDAwMGZlN2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9l dV9jb25maWdfc2FtcGxlcltdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAot CXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAx MjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVj KSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01N SU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBtdXhfY29uZmlnX3NhbXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIx MzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxNjAwYWIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTIzMzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzNjAwYWIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTI1MzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1NjAwYWIg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDIyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDYyZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZTAx YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUyZTAwNjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY0YzIwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQ0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0 YzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZWEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQ0ZTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMwZjA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTgwZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAyM2YgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWUyYzAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEyY2MwMzAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQxMzIxODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMzAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxNDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUxNDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWUxNTAxNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNTAwNDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxNjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUx NjAwNjggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTgxNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNjQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQzMzAwNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzMzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzNDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMzNTAwMTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDIzNjM0NjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAzNjAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQzNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDY1MzAwNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGU1NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1NDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU1 NTA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1NTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWM1NTAxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NjMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA1NjM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1NjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDI1NjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1NjQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTk5M2E4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5Mzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGI5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MmQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NGI5MDE0YTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGQ5MDAwMDEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4 MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDEwMjIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF9zYW1wbGVyX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAotCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJ ICAgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tu XSA9IG11eF9jb25maWdfc2FtcGxlcjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmln X3NhbXBsZXIpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0 MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4 MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4 Mjc3NCksIDB4MDAwMDdmZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDlmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAw MDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGVmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGYzZmYgfSwKLQl7IF9NTUlP KDB4Mjc5MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZkZmYgfSwK LQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAw MGZlN2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9j b25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9N TUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEg fSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4 MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4 ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgbXV4X2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NDVhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJkNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJkNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjJkNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkNTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDJlMDE1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJlNTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTJlMDA2YSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjRj MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjRlMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlMjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzBmMGJjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODBmNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTBmMDMwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTJjMDAw MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTJjMDBmMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjFhMzA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDFhMzFlNSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjE0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE0YTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYzE1MDA1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE2 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTE2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzNhMzI4MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTNhMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjNhMDA2MSB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzM0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTM0MjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjM0MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTM1MDE0MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYzM1MDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODM2MDAy OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzM2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTVhMzA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVhMzI4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjVhMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU0ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDU0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU0 MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTU1MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYTU1MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzU1MDAwMSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxODU2MDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU2ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDU2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx OTkzYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzkzODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkzODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDQyMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0ZDkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMTA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMSB9LAotfTsKLQotc3RhdGljIGludAot Z2V0X3RkbF8xX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAgaW50ICpsZW5z KQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190 ZGxfMTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3RkbF8xKTsKLQluKys7Ci0K LQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50 ZXJfY29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8yW10gPSB7 Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAw MDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3 NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBf TU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0 IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRs XzJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTAyNmIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTQzYTAxNzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YTAyNmIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZDUwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYyZDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZTUwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGUyZTAwNjkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0YzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY0Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDI0ZWEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTIwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTgwZjYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEwZjAzMGEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWEyYzAzYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQx YTM3ZTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxNGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNTAwNTAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDgxNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExNjgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzYTMzODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzYTAwNmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzYTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAzNDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNDIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWEzNTIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMzNTAx MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMzNjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YTM3ZTcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDI1NGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM1NTAwMDUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1NjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1 NjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDU5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5MzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDk5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTk5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMjAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDU5MDEwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKipyZWdzLAotCQkgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEp OwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ190ZGxfMik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7 Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4 ZTQ1OCksIDB4MDAwMDEwMDAgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDMwMDIgfSwKLQl7 IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTEw MTAgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTAwMTIgfSwKLQl7IF9NTUlPKDB4ZTU1Yyks IDB4MDAwNTIwNTEgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwMDAwMDggfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0MWEwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE0M2EwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NWEwMDFmIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MmQ1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMmUwMDk0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGNj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGVhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhMGYwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMmMwYzAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2MWEwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWEwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA2MTQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFj MTUwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMTY4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0M2EzMTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyM2EwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MzQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMzUwMDQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0NWEwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWEwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0NTQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNTUwMDEwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA4NTY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBkOTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFkOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1 OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ3OTAwMDA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19Owot Ci1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoq cmVncywKLQkJCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0K LQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCWxlbnNbbl0gPSBBUlJBWV9T SVpFKG11eF9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Citp bnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfZ2xrID0gMTsKIAogc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKIAl7IF9N TUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKQEAgLTE2NzEsNDA2ICs2OSw0MiBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewogCXsgX01N SU8oMHg5ODg4KSwgMHgxOTgwMDAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgwMDA2MyB9 LAogCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy MzgxMDAwOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDQwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjkyMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsK LQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8 IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOwotCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19 Ci0KLWludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2dsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCi17Ci0JZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7 Ci0JZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5w ZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0gTlVMTDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKLQotCXN3 aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsKLQljYXNlIE1FVFJJQ19TRVRf SURfUkVOREVSX0JBU0lDOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJ CWdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewot CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJf QkFTSUNcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rl cl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhh dmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBo YXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19y ZW5kZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0J CQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9l dV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRf SURfQ09NUFVURV9CQVNJQzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0J CQlnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09N UFVURV9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxk bid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0K LQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29u ZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0KLQkJ ZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVf YmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0la RShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1F VFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9Ci0JCQlnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9w cml2LAotCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCSAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eu bl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBN VVggY29uZmlnIGZvciBcIlJFTkRFUl9QSVBFX1BST0ZJTEVcIiBtZXRyaWMgc2V0XG4iKTsKLQot CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8K LQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VU X0lEX01FTU9SWV9SRUFEUzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0J CQlnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsK LQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZ X1JFQURTXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0 ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBo YXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3Qg aGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdf bWVtb3J5X3JlYWRzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsK LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VU X0lEX01FTU9SWV9XUklURVM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQot CQkJZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAw KSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1F TU9SWV9XUklURVNcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9y ZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxk bid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3Vs ZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9 Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2Nv bmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0J CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlf d3JpdGVzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBN RVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQ6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwK LQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBm b3IgXCJDT01QVVRFX0VYVEVOREVEXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBi ZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBz byBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkg KiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJ TlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJf Y291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRl X2V4dGVuZGVkKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9l dV9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFOgotCQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2wzX2NhY2hl X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Ms Ci0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5v IHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9MM19DQUNIRVwiIG1ldHJpYyBzZXRc biIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hl Y2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQg dG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQK LQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZp Z19jb21wdXRlX2wzX2NhY2hlKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURf SERDX0FORF9TRjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRf aGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncywKLQkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0J CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJp YyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVh ZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfaGRjX2FuZF9zZik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3Nm KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMToKLQkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2 LAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNv bmZpZyBmb3IgXCJMM18xXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3 b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBz aG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsK LQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRl cl9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19sM18xKTsKLQotCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEp OwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhF TF9CQUNLRU5EOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJ CSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQkJICAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmln IGZvciBcIlJBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKLQot CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8K LQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVI6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhk ZXZfcHJpdiwKLQkJCQkJICAgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkg ICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FNUExFUlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkv KiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0J CQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNl IGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJ cmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn cyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3NhbXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfc2FtcGxl cik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmln X3NhbXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlf U0laRShmbGV4X2V1X2NvbmZpZ19zYW1wbGVyKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJ Q19TRVRfSURfVERMXzE6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJ Z2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7 Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzFcIiBtZXRyaWMg c2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMTsKLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ190ZGxfMSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZs ZXhfZXVfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzEpOwotCi0JCXJldHVybiAwOwotCWNh c2UgTUVUUklDX1NFVF9JRF9URExfMjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmln cyA9Ci0JCQlnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewot CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwi IG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2Zz IGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVu IGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVl biByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3RkbF8yOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX3RkbF8yKTsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MjM4MTAwMDggfSwK Kwl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTA0MDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MGY5 MjIwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4Mzc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAg fSwKK307CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29u ZmlnX3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzIpOworc3RhdGljIGludAorZ2V0X3Rlc3Rfb2FfbXV4 X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAorCQkgICAgICAgaW50ICpsZW5zKQoreworCWlu dCBuID0gMDsKIAotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRS QToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9l eHRyYV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0J CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9FWFRSQVwiIG1l dHJpYyBzZXRcbiIpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzKSA8IDEpOworCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CiAKLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0 ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBo YXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3Qg aGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQorCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX3Rlc3Rfb2E7CisJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ190ZXN0X29hKTsKKwluKys7CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmln X2NvbXB1dGVfZXh0cmEpOworCXJldHVybiBuOworfQogCi0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29t cHV0ZV9leHRyYSk7CitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9nbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9 IDA7CiAKLQkJcmV0dXJuIDA7CisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3Nl dCkgewogCWNhc2UgTUVUUklDX1NFVF9JRF9URVNUX09BOgogCQlkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID0KIAkJCWdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsCkBAIC0y MTAzLDMxNCArMTM3LDYgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfZ2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIH0KIAogc3RhdGljIHNzaXplX3QKLXNob3df cmVuZGVyX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfUkVOREVSX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlIGRldl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAi aWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAotCS5z dG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVy X2Jhc2ljW10gPSB7Ci0JJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7 Ci0JLm5hbWUgPSAiZDcyZGY1YzctNWI0YS00Mjc0LWE0M2YtMDBiMGZkNTFmYzY4IiwKLQkuYXR0 cnMgPSAgYXR0cnNfcmVuZGVyX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29t cHV0ZV9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRS SUNfU0VUX0lEX0NPTVBVVEVfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAi aWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9iYXNpY19pZCwKLQku c3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1 dGVfYmFzaWNbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRyLAotCU5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2Jhc2lj ID0gewotCS5uYW1lID0gIjgxNDI4NWY2LTM1NGQtNDFkMi1iYTQ5LWUyNGU2MjI3MTRhMCIsCi0J LmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hv d19yZW5kZXJfcGlwZV9wcm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSk7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkID0g ewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hv d19yZW5kZXJfcGlwZV9wcm9maWxlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCSZkZXZf YXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUgPSB7Ci0JLm5h bWUgPSAiMDdkMzk3YTYtYjNlNi00OWY2LTk0MzMtYTRmMjkzZDU1OTc4IiwKLQkuYXR0cnMgPSAg YXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21l bW9yeV9yZWFkc19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRS SUNfU0VUX0lEX01FTU9SWV9SRUFEUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV9yZWFkc19pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV9y ZWFkc1tdID0gewotCSZkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQuYXR0ciwKLQlOVUxMLAotfTsK LQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewot CS5uYW1lID0gIjFhMzU2OTQ2LTU0MjgtNDUwYi1hMmYwLTg5Zjg3ODNhMzAyZCIsCi0JLmF0dHJz ID0gIGF0dHJzX21lbW9yeV9yZWFkcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9y eV93cml0ZXNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9NRU1PUllfV1JJVEVTKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV93cml0ZXNfaWQsCi0JLnN0 b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlf d3JpdGVzW10gPSB7Ci0JJmRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQuYXR0ciwKLQlOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9 IHsKLQkubmFtZSA9ICI1Mjk5YmU5ZC03YTYxLTRjOTktOWY4MS1mODdlNmM1YWFjYTkiLAotCS5h dHRycyA9ICBhdHRyc19tZW1vcnlfd3JpdGVzLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3df Y29tcHV0ZV9leHRlbmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4i LCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQpOwotfQotCi1zdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsKLQkuYXR0ciA9 IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9l eHRlbmRlZF9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHJzX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9leHRl bmRlZF9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBncm91cF9jb21wdXRlX2V4dGVuZGVkID0gewotCS5uYW1lID0gImJjOWJjZmYyLTQ1OWEtNGNi Yy05ODZkLWE4NGIwNzcxNTNmMyIsCi0JLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQs Ci19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkKHN0cnVjdCBk ZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17 Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19D QUNIRSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21w dXRlX2wzX2NhY2hlX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0 NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9sM19jYWNoZVtd ID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7 Ci0JLm5hbWUgPSAiODhlYzkzMWYtNWI0YS00NTNhLTlkYjYtYTYxMjMyYjYxNDNkIiwKLQkuYXR0 cnMgPSAgYXR0cnNfY29tcHV0ZV9sM19jYWNoZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93 X2hkY19hbmRfc2ZfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9IRENfQU5EX1NGKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX2hkY19hbmRfc2ZfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2hkY19hbmRfc2ZfaWQsCi0JLnN0b3JlID0g TlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19oZGNfYW5kX3NmW10g PSB7Ci0JJmRldl9hdHRyX2hkY19hbmRfc2ZfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfaGRjX2FuZF9zZiA9IHsKLQkubmFtZSA9ICI1 MzBkMTc2ZC0yYTE4LTQwMTQtYWRmOC0xNTAwYzZjNjA4MzUiLAotCS5hdHRycyA9ICBhdHRyc19o ZGNfYW5kX3NmLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfMV9pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewot CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzEpOwotfQotCi1z dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMV9pZCA9IHsKLQkuYXR0 ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMV9p ZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X2wzXzFbXSA9IHsKLQkmZGV2X2F0dHJfbDNfMV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18xID0gewotCS5uYW1lID0gImZkZWU1 YTVhLWYyM2MtNDNkMS1hYTczLWY2MjU3YzcxNjcxZCIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzEs Ci19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf UkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkID0gewot CS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZFtdID0gewotCSZkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkLmF0dHIs Ci0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQgPSB7Ci0JLm5hbWUgPSAiNjYxNzYyM2UtY2E3My00Nzkx LWIyYjctZGRlZGQwODQ2YTBjIiwKLQkuYXR0cnMgPSAgYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4 ZWxfYmFja2VuZCwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3NhbXBsZXJfaWQoc3RydWN0 IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikK LXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9TQU1QTEVSKTsK LX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBsZXJfaWQg PSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBz aG93X3NhbXBsZXJfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc19zYW1wbGVyW10gPSB7Ci0JJmRldl9hdHRyX3NhbXBsZXJfaWQuYXR0ciwK LQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfc2FtcGxl ciA9IHsKLQkubmFtZSA9ICJmM2IyZWE2My1lODJlLTQyMzQtYjQxOC00NGRkMjBkZDM0ZDAiLAot CS5hdHRycyA9ICBhdHRyc19zYW1wbGVyLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdGRs XzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9J RF9URExfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90 ZGxfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQku c2hvdyA9IHNob3dfdGRsXzFfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMVtdID0gewotCSZkZXZfYXR0cl90ZGxfMV9pZC5hdHRy LAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxf MSA9IHsKLQkubmFtZSA9ICIxNDQxMWQzNS1jYmY2LTRmNWUtYjY4Yi0xOTBmYWY5YTFhODMiLAot CS5hdHRycyA9ICBhdHRyc190ZGxfMSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3RkbF8y X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf VERMXzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRs XzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X3RkbF8yX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzJbXSA9IHsKLQkmZGV2X2F0dHJfdGRsXzJfaWQuYXR0ciwK LQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzIg PSB7Ci0JLm5hbWUgPSAiZmZhM2YyNjMtMDQ3OC00NzI0LThjOWYtYzkxMWM1ZWMwZjFkIiwKLQku YXR0cnMgPSAgYXR0cnNfdGRsXzIsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRl X2V4dHJhX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfQ09NUFVURV9FWFRSQSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSBkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2V4dHJhX2lkLAotCS5zdG9y ZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9l eHRyYVtdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkLmF0dHIsCi0JTlVMTCwKLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfZXh0cmEgPSB7 Ci0JLm5hbWUgPSAiMTUyNzRjODItMjdkMi00ODE5LTg3NmEtN2NiMWEyYzU5YmE0IiwKLQkuYXR0 cnMgPSAgYXR0cnNfY29tcHV0ZV9leHRyYSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90CiBzaG93X3Rl c3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZikKIHsKIAlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NF VF9JRF9URVNUX09BKTsKQEAgLTI0MzksNzYgKzE2NSw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9z eXNmc19nbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCBtdXhfbGVu c1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAlpbnQgcmV0 ID0gMDsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JCWlmIChyZXQpCi0JCQln b3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3Jl YXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFz aWMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2Jhc2ljOwotCX0KLQlpZiAo Z2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0JCWlmIChyZXQpCi0JCQln b3RvIGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JfQotCWlmIChnZXRfbWVtb3J5X3JlYWRz X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lz ZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9y eV9yZWFkcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21lbW9yeV9yZWFkczsKLQl9Ci0J aWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJv cl9tZW1vcnlfd3JpdGVzOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRl ZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7Ci0JfQotCWlm IChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8g ZXJyb3JfY29tcHV0ZV9sM19jYWNoZTsKLQl9Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9oZGNfYW5kX3NmOwotCX0KLQlpZiAoZ2V0X2wzXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNm c19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wzXzE7Ci0JfQotCWlmIChnZXRfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQkJaWYgKHJldCkK LQkJCWdvdG8gZXJyb3JfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQl9Ci0JaWYgKGdl dF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJ cmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3NhbXBsZXIpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9zYW1wbGVyOwotCX0KLQlp ZiAoZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsK LQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX3RkbF8xKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzE7Ci0JfQotCWlm IChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewot CQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfdGRsXzIpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl90ZGxfMjsKLQl9Ci0JaWYg KGdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0cmEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9j b21wdXRlX2V4dHJhOwotCX0KIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkgewogCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CiAJCWlmIChyZXQpCkBAIC0y NTE4LDQ4ICsxNzQsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfZ2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZXJyb3JfdGVzdF9vYToKLQlp ZiAoZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX2NvbXB1dGVfZXh0cmEpOwotZXJyb3JfY29tcHV0ZV9leHRyYToKLQlpZiAoZ2V0X3Rk bF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3Jl bW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci1l cnJvcl90ZGxfMjoKLQlpZiAoZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF90ZGxfMSk7Ci1lcnJvcl90ZGxfMToKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotZXJyb3Jf c2FtcGxlcjoKLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmQpOwotZXJyb3JfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDoKLQlpZiAoZ2V0X2wz XzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotZXJy b3JfbDNfMToKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotZXJyb3JfaGRjX2FuZF9zZjoKLQlpZiAoZ2V0 X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotZXJyb3JfY29tcHV0ZV9sM19jYWNoZToKLQlpZiAoZ2V0 X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotZXJyb3JfY29tcHV0ZV9leHRlbmRlZDoKLQlpZiAoZ2V0 X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X21lbW9yeV93cml0ZXMpOwotZXJyb3JfbWVtb3J5X3dyaXRlczoKLQlpZiAoZ2V0X21lbW9yeV9y ZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3Jl YWRzKTsKLWVycm9yX21lbW9yeV9yZWFkczoKLQlpZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3By b2ZpbGUpOwotZXJyb3JfcmVuZGVyX3BpcGVfcHJvZmlsZToKLQlpZiAoZ2V0X2NvbXB1dGVfYmFz aWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFz aWMpOwotZXJyb3JfY29tcHV0ZV9iYXNpYzoKLQlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKLWVycm9y X3JlbmRlcl9iYXNpYzoKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNTY5LDM0ICsxODMsNiBAQCBp OTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19nbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqbXV4X3JlZ3NbQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyldOwogCWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2lj X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMp OwotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxl X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9w cm9maWxlKTsKLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMp OwotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Ci0JaWYgKGdldF9jb21wdXRlX2wzX2Nh Y2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3Jl bW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wz X2NhY2hlKTsKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMSk7Ci0JaWYgKGdldF9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotCWlmIChn ZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lz ZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8x KTsKLQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF90ZGxfMik7Ci0JaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKIAlpZiAoZ2V0X3Rlc3Rfb2Ff bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKIAkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOwogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMKaW5kZXggMTBmMTY5ZjY4M2I3Li5hNmYzNDAwMDJh ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfaHN3LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9oc3cuYwpAQCAtMzMsMTQgKzMzLDkgQEAKIAog ZW51bSBtZXRyaWNfc2V0X2lkIHsKIAlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCi0J TUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDLAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRF TkRFRCwKLQlNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUywKLQlNRVRSSUNfU0VUX0lEX01FTU9S WV9XUklURVMsCi0JTUVUUklDX1NFVF9JRF9TQU1QTEVSX0JBTEFOQ0UsCiB9OwogCi1pbnQgaTkx NV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfaHN3ID0gNjsKK2ludCBpOTE1X29hX25fYnVpbHRp bl9tZXRyaWNfc2V0c19oc3cgPSAxOwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7CiAJeyBfTU1JTygweDI3MjQpLCAw eDAwODAwMDAwIH0sCkBAIC0xMzEsMzU4ICsxMjYsNiBAQCBnZXRfcmVuZGVyX2Jhc2ljX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXJldHVybiBuOwogfQog Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0 ZV9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE4KSwgMHhhYWFhYWFhYSB9LAot CXsgX01NSU8oMHgyNzFjKSwgMHhhYWFhYWFhYSB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI4 KSwgMHhhYWFhYWFhYSB9LAotCXsgX01NSU8oMHgyNzJjKSwgMHhhYWFhYWFhYSB9LAotCXsgX01N SU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzQ4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzRjKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzUwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzU0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzU4KSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzVjKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyMzZjKSwgMHgwMDAwMDAw MCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZp Z19jb21wdXRlX2Jhc2ljW10gPSB7Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNTNhNCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjY4MWMpLCAweDAxZjAwODAwIH0sCi0JeyBfTU1JTygw eDI2ODIwKSwgMHgwMDAwMTAwMCB9LAotCXsgX01NSU8oMHgyNzgxYyksIDB4MDFmMDA4MDAgfSwK LQl7IF9NTUlPKDB4MjY1MjApLCAweDAwMDAwMDA3IH0sCi0JeyBfTU1JTygweDI2NWEwKSwgMHgw MDAwMDAwNyB9LAotCXsgX01NSU8oMHgyNTM4MCksIDB4MDAwMDAwMTAgfSwKLQl7IF9NTUlPKDB4 MjUzOGMpLCAweDAwMzAwMDAwIH0sCi0JeyBfTU1JTygweDI1Mzg0KSwgMHhhYThhYWFhYSB9LAot CXsgX01NSU8oMHgyNTQwNCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjY4MDApLCAweDAw MDA0MjAyIH0sCi0JeyBfTU1JTygweDI2ODA4KSwgMHgwMDYwNTgxNyB9LAotCXsgX01NSU8oMHgy NjgwYyksIDB4MTAwMDEwMDUgfSwKLQl7IF9NTUlPKDB4MjY4MDQpLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3ODAwKSwgMHgwMDAwMDEwMiB9LAotCXsgX01NSU8oMHgyNzgwOCksIDB4MGMw NzAxZTAgfSwKLQl7IF9NTUlPKDB4Mjc4MGMpLCAweDAwMDIwMGEwIH0sCi0JeyBfTU1JTygweDI3 ODA0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNjQ4NCksIDB4NDQwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjY3MDQpLCAweDQ0MDAwMDAwIH0sCi0JeyBfTU1JTygweDI2NTAwKSwgMHgwMDAw MDAwNiB9LAotCXsgX01NSU8oMHgyNjUxMCksIDB4MDAwMDAwMDEgfSwKLQl7IF9NTUlPKDB4MjY1 MDQpLCAweDg4MDAwMDAwIH0sCi0JeyBfTU1JTygweDI2NTgwKSwgMHgwMDAwMDAwNiB9LAotCXsg X01NSU8oMHgyNjU5MCksIDB4MDAwMDAwMjAgfSwKLQl7IF9NTUlPKDB4MjY1ODQpLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI2MTA0KSwgMHg1NTgyMjIyMiB9LAotCXsgX01NSU8oMHgyNjE4 NCksIDB4YWE4NjY2NjYgfSwKLQl7IF9NTUlPKDB4MjU0MjApLCAweDA4MzIwYzgzIH0sCi0JeyBf TU1JTygweDI1NDI0KSwgMHgwNjgyMGM4MyB9LAotCXsgX01NSU8oMHgyNTQxYyksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4MjU0MjgpLCAweDAwMDAwYzAzIH0sCi19OwotCi1zdGF0aWMgaW50 Ci1nZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAg ICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0g bXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9iYXNpYyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10g PSB7Ci0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZTJhIH0sCi0J eyBfTU1JTygweDI3NzQpLCAweDAwMDBmZjAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdm ZTZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZjAwIH0sCi0JeyBfTU1JTygweDI3ODAp LCAweDAwMDdmZTkyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZjAwIH0sCi0JeyBfTU1J TygweDI3ODgpLCAweDAwMDdmZWEyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZjAwIH0s Ci0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZTMyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAw MDBmZjAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmZTlhIH0sCi0JeyBfTU1JTygweDI3 OWMpLCAweDAwMDBmZjAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmZjIzIH0sCi0JeyBf TU1JTygweDI3YTQpLCAweDAwMDBmZjAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmZmYz IH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZmZlIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRl X2V4dGVuZGVkW10gPSB7Ci0JeyBfTU1JTygweDI2ODFjKSwgMHgzZWIwMDgwMCB9LAotCXsgX01N SU8oMHgyNjgyMCksIDB4MDA5MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjUzODQpLCAweDAyYWFhYWFh IH0sCi0JeyBfTU1JTygweDI1NDA0KSwgMHgwM2ZmZmZmZiB9LAotCXsgX01NSU8oMHgyNjgwMCks IDB4MDAxNDIyODQgfSwKLQl7IF9NTUlPKDB4MjY4MDgpLCAweDBlNjI5MDYyIH0sCi0JeyBfTU1J TygweDI2ODBjKSwgMHgzZjZmNTVjYiB9LAotCXsgX01NSU8oMHgyNjgxMCksIDB4MDAwMDAwMTQg fSwKLQl7IF9NTUlPKDB4MjY4MDQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI2MTA0KSwg MHgwMmFhYWFhYSB9LAotCXsgX01NSU8oMHgyNjE4NCksIDB4MDJhYWFhYWEgfSwKLQl7IF9NTUlP KDB4MjU0MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDI0KSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNTQxYyksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjU0MjgpLCAw eDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhf Y29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0K LQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAx KTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQls ZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCW4rKzsK LQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7Ci0JeyBfTU1JTygweDI3MjQpLCAweGYwODAw MDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQp LCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3NGMpLCAweDc2NTQzMjk4IH0sCi0JeyBfTU1JTygweDI3NDgpLCAweDk4OTg5ODk4IH0s Ci0JeyBfTU1JTygweDI3NDQpLCAweDAwMDAwMGU0IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NWMpLCAweDk4YTk4YTk4IH0sCi0JeyBfTU1JTygweDI3 NTgpLCAweDg4ODg4ODg4IH0sCi0JeyBfTU1JTygweDI3NTQpLCAweDAwMGM1NTAwIH0sCi0JeyBf TU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFh IH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmYzAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAw eDAwMDdmODJhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmYzAwIH0sCi0JeyBfTU1JTygw eDI3ODApLCAweDAwMDdmODcyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmYzAwIH0sCi0J eyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBm YzAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCi0JeyBfTU1JTygweDI3OTQp LCAweDAwMDBmYzAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCi0JeyBfTU1J TygweDI3OWMpLCAweDAwMDBmYzAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0s Ci0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAw MDdmOGYyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmYzAwIH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkc1tdID0g ewotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9y eV9yZWFkc1tdID0gewotCXsgX01NSU8oMHgyNTNhNCksIDB4MzQzMDAwMDAgfSwKLQl7IF9NTUlP KDB4MjU0NDApLCAweDJkODAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDQ0KSwgMHgwMDAwMDAwOCB9 LAotCXsgX01NSU8oMHgyNTEyOCksIDB4MGU2MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjUzODApLCAw eDAwMDAwNDUwIH0sCi0JeyBfTU1JTygweDI1MzkwKSwgMHgwMDA1MmM0MyB9LAotCXsgX01NSU8o MHgyNTM4NCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjU0MDApLCAweDAwMDA2MTQ0IH0s Ci0JeyBfTU1JTygweDI1NDA4KSwgMHgwYTQxODgyMCB9LAotCXsgX01NSU8oMHgyNTQwYyksIDB4 MDAwODIwZTYgfSwKLQl7IF9NTUlPKDB4MjU0MDQpLCAweGZmNTAwMDAwIH0sCi0JeyBfTU1JTygw eDI1MTAwKSwgMHgwMDAwMDVkNiB9LAotCXsgX01NSU8oMHgyNTEwYyksIDB4MGVmMDAwMDAgfSwK LQl7IF9NTUlPKDB4MjUxMDQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDIwKSwgMHgw MjEwODQyMSB9LAotCXsgX01NSU8oMHgyNTQyNCksIDB4MDAwMDg0MjEgfSwKLQl7IF9NTUlPKDB4 MjU0MWMpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDI4KSwgMHgwMDAwMDAwMCB9LAot fTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg KipyZWdzLAotCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwot Ci0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRzOwotCWxlbnNbbl0gPSBBUlJBWV9T SVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93 cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4NzY1NDMy OTggfSwKLQl7IF9NTUlPKDB4Mjc0OCksIDB4OTg5ODk4OTggfSwKLQl7IF9NTUlPKDB4Mjc0NCks IDB4MDAwMDAwZTQgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc1YyksIDB4YmFiYWJhYmEgfSwKLQl7IF9NTUlPKDB4Mjc1OCksIDB4ODg4ODg4ODggfSwK LQl7IF9NTUlPKDB4Mjc1NCksIDB4MDAwYzU1MDAgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4MDAw MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4Mjc3 NCksIDB4MDAwMGZjMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7IF9N TUlPKDB4Mjc3YyksIDB4MDAwMGZjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4MjIg fSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4 MDAwN2Y4YmEgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZjMDAgfSwKLQl7IF9NTUlPKDB4 Mjc5MCksIDB4MDAwN2Y4N2EgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZjMDAgfSwKLQl7 IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Y4ZWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZj MDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4MjdhNCks IDB4MDAwMGZjMDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9NTUlP KDB4MjdhYyksIDB4MDAwMGZjMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0gewotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7 IF9NTUlPKDB4MjUzYTQpLCAweDM0MzAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDQwKSwgMHgwMTUw MDAwMCB9LAotCXsgX01NSU8oMHgyNTQ0NCksIDB4MDAwMDAxMjAgfSwKLQl7IF9NTUlPKDB4MjUx MjgpLCAweDBjMjAwMDAwIH0sCi0JeyBfTU1JTygweDI1MzgwKSwgMHgwMDAwMDQ1MCB9LAotCXsg X01NSU8oMHgyNTM5MCksIDB4MDAwNTJjNDMgfSwKLQl7IF9NTUlPKDB4MjUzODQpLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI1NDAwKSwgMHgwMDAwNzE4NCB9LAotCXsgX01NSU8oMHgyNTQw OCksIDB4MGE0MTg4MjAgfSwKLQl7IF9NTUlPKDB4MjU0MGMpLCAweDAwMDgyMGU2IH0sCi0JeyBf TU1JTygweDI1NDA0KSwgMHhmZjUwMDAwMCB9LAotCXsgX01NSU8oMHgyNTEwMCksIDB4MDAwMDA1 ZDYgfSwKLQl7IF9NTUlPKDB4MjUxMGMpLCAweDFlNzAwMDAwIH0sCi0JeyBfTU1JTygweDI1MTA0 KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNTQyMCksIDB4MDIxMDg0MjEgfSwKLQl7IF9N TUlPKDB4MjU0MjQpLCAweDAwMDA4NDIxIH0sCi0JeyBfTU1JTygweDI1NDFjKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNTQyOCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQK LWdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAg ICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z19tZW1vcnlfd3JpdGVzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfYmFsYW5jZVtdID0g ewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgw MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19zYW1wbGVyX2JhbGFuY2VbXSA9IHsKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyX2JhbGFuY2Vb XSA9IHsKLQl7IF9NTUlPKDB4MmViOWMpLCAweDAxOTA2NDAwIH0sCi0JeyBfTU1JTygweDJmYjlj KSwgMHgwMTkwNjQwMCB9LAotCXsgX01NSU8oMHgyNTNhNCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4MjZiOWMpLCAweDAxOTA2NDAwIH0sCi0JeyBfTU1JTygweDI3YjljKSwgMHgwMTkwNjQw MCB9LAotCXsgX01NSU8oMHgyNzEwNCksIDB4MDBhMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxODQp LCAweDAwYTUwMDAwIH0sCi0JeyBfTU1JTygweDJlODA0KSwgMHgwMDUwMDAwMCB9LAotCXsgX01N SU8oMHgyZTk4NCksIDB4MDA1MDAwMDAgfSwKLQl7IF9NTUlPKDB4MmViMDQpLCAweDAwNTAwMDAw IH0sCi0JeyBfTU1JTygweDJlYjgwKSwgMHgwMDAwMDA4NCB9LAotCXsgX01NSU8oMHgyZWI4Yyks IDB4MTQyMDAwMDAgfSwKLQl7IF9NTUlPKDB4MmViODQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDJmODA0KSwgMHgwMDA1MDAwMCB9LAotCXsgX01NSU8oMHgyZjk4NCksIDB4MDAwNTAwMDAg fSwKLQl7IF9NTUlPKDB4MmZiMDQpLCAweDAwMDUwMDAwIH0sCi0JeyBfTU1JTygweDJmYjgwKSwg MHgwMDAwMDA4NCB9LAotCXsgX01NSU8oMHgyZmI4YyksIDB4MDAwNTA4MDAgfSwKLQl7IF9NTUlP KDB4MmZiODQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI1MzgwKSwgMHgwMDAwMDAxMCB9 LAotCXsgX01NSU8oMHgyNTM4YyksIDB4MDAwMDAwYzAgfSwKLQl7IF9NTUlPKDB4MjUzODQpLCAw eGFhNTUwMDAwIH0sCi0JeyBfTU1JTygweDI1NDA0KSwgMHhmZmZmYzAwMCB9LAotCXsgX01NSU8o MHgyNjgwNCksIDB4NTAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjY5ODQpLCAweDUwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI2YjA0KSwgMHg1MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNmI4MCksIDB4 MDAwMDAwODQgfSwKLQl7IF9NTUlPKDB4MjZiOTApLCAweDAwMDUwODAwIH0sCi0JeyBfTU1JTygw eDI2Yjg0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzgwNCksIDB4MDUwMDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc5ODQpLCAweDA1MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3YjA0KSwgMHgw NTAwMDAwMCB9LAotCXsgX01NSU8oMHgyN2I4MCksIDB4MDAwMDAwODQgfSwKLQl7IF9NTUlPKDB4 MjdiOTApLCAweDAwMDAwMTQyIH0sCi0JeyBfTU1JTygweDI3Yjg0KSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNjEwNCksIDB4YTAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjYxODQpLCAweGE1 MDAwMDAwIH0sCi0JeyBfTU1JTygweDI1NDI0KSwgMHgwMDAwODYyMCB9LAotCXsgX01NSU8oMHgy NTQxYyksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjU0MjgpLCAweDAwMDRhNTRhIH0sCi19 OwotCi1zdGF0aWMgaW50Ci1nZXRfc2FtcGxlcl9iYWxhbmNlX211eF9jb25maWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyAqKnJlZ3MsCi0JCQkgICAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwot CUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMp IDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19zYW1wbGVyX2JhbGFuY2U7Ci0JbGVuc1tu XSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19zYW1wbGVyX2JhbGFuY2UpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCiBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9oc3coc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPSAwOwpAQCAtNTE2LDEzNiArMTU5LDYgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJp Y19zZXRfaHN3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCUFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljKTsKIAogCQlyZXR1cm4gMDsKLQljYXNlIE1F VFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJ ICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25m aWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcg Zm9yIFwiQ09NUFVURV9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVj YXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28g aXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICog c28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5W QUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2Nv dW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNp Yyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmln X2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsK LQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRDoKLQkJZGV2X3ByaXYtPnBlcmYu b2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRl dl9wcml2LAotCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCWRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIkNPTVBVVEVfRVhURU5ERURcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyog RUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJ ICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBh bmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJl dHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Mg PQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmln X2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0J CQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRl bmRlZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUzoK LQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3JlYWRz X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklW RVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JFQURTXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV9y ZWFkcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVM6 Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X21lbW9yeV93cml0 ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlp ZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdf RFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBtZXRy aWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVx dWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVz OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf bWVtb3J5X3dyaXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1NBTVBM RVJfQkFMQU5DRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRf c2FtcGxlcl9iYWxhbmNlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FN UExFUl9CQUxBTkNFXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpf cmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3Vs ZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJ fQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9j b25maWdfc2FtcGxlcl9iYWxhbmNlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn c19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJfYmFsYW5jZSk7 Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3Nh bXBsZXJfYmFsYW5jZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3NhbXBsZXJfYmFsYW5jZSk7Ci0KLQkJcmV0dXJuIDA7 CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQpAQCAtNjczLDExNiArMTg2LDYgQEAg c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0gewogCS5h dHRycyA9ICBhdHRyc19yZW5kZXJfYmFzaWMsCiB9OwogCi1zdGF0aWMgc3NpemVfdAotc2hvd19j b21wdXRlX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2Jhc2ljX2lkLAot CS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29t cHV0ZV9iYXNpY1tdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkLmF0dHIsCi0JTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfYmFz aWMgPSB7Ci0JLm5hbWUgPSAiMzlhZDE0YmMtMjM4MC00NWM0LTkxZWItZmJjYjNhYTdhZTdiIiwK LQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9iYXNpYywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1z aG93X2NvbXB1dGVfZXh0ZW5kZWRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIl ZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKLX0KLQotc3RhdGljIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQgPSB7Ci0JLmF0 dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1 dGVfZXh0ZW5kZWRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVf ZXh0ZW5kZWRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKLQkubmFtZSA9ICIzODY1YmUyOC02OTgy LTQ5ZmUtOTQ5NC1lNGQxYjQ3OTU0MTMiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4dGVu ZGVkLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3JlYWRzX2lkKHN0cnVjdCBk ZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17 Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURT KTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX21lbW9yeV9y ZWFkc19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQku c2hvdyA9IHNob3dfbWVtb3J5X3JlYWRzX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5X3JlYWRzW10gPSB7Ci0JJmRldl9hdHRy X21lbW9yeV9yZWFkc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJp YnV0ZV9ncm91cCBncm91cF9tZW1vcnlfcmVhZHMgPSB7Ci0JLm5hbWUgPSAiYmI1ZWQ0OWItMjQ5 Ny00MDk1LTk0ZjYtMjZiYTI5NGRiODhhIiwKLQkuYXR0cnMgPSAgYXR0cnNfbWVtb3J5X3JlYWRz LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3dyaXRlc19pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewot CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVMp OwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3dy aXRlc19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQku c2hvdyA9IHNob3dfbWVtb3J5X3dyaXRlc19pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV93cml0ZXNbXSA9IHsKLQkmZGV2X2F0 dHJfbWVtb3J5X3dyaXRlc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCBncm91cF9tZW1vcnlfd3JpdGVzID0gewotCS5uYW1lID0gIjMzNThkNjM5 LTliNWYtNDVhYi05NzZkLTliMDhjYmZjNjI0MCIsCi0JLmF0dHJzID0gIGF0dHJzX21lbW9yeV93 cml0ZXMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19zYW1wbGVyX2JhbGFuY2VfaWQoc3Ry dWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1 ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9TQU1QTEVS X0JBTEFOQ0UpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJf c2FtcGxlcl9iYWxhbmNlX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0g MDQ0NCB9LAotCS5zaG93ID0gc2hvd19zYW1wbGVyX2JhbGFuY2VfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19zYW1wbGVyX2JhbGFuY2Vb XSA9IHsKLQkmZGV2X2F0dHJfc2FtcGxlcl9iYWxhbmNlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3NhbXBsZXJfYmFsYW5jZSA9IHsK LQkubmFtZSA9ICJiYzI3NDQ4OC1iNGI2LTQwYzctOTBkYS1iNzdkN2FkMTYxODkiLAotCS5hdHRy cyA9ICBhdHRyc19zYW1wbGVyX2JhbGFuY2UsCi19OwotCiBpbnQKIGk5MTVfcGVyZl9yZWdpc3Rl cl9zeXNmc19oc3coc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewpAQCAtNzk1 LDQ5ICsxOTgsOSBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfaHN3KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkJaWYgKHJldCkKIAkJCWdvdG8gZXJyb3JfcmVuZGVyX2Jh c2ljOwogCX0KLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci0JCWlmIChyZXQpCi0J CQlnb3RvIGVycm9yX2NvbXB1dGVfYmFzaWM7Ci0JfQotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRl ZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5 c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21w dXRlX2V4dGVuZGVkKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0ZV9leHRlbmRl ZDsKLQl9Ci0JaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKLQkJaWYgKHJldCkKLQkJCWdv dG8gZXJyb3JfbWVtb3J5X3JlYWRzOwotCX0KLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVh dGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRl cyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21lbW9yeV93cml0ZXM7Ci0JfQotCWlmIChn ZXRfc2FtcGxlcl9iYWxhbmNlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3NhbXBsZXJfYmFsYW5jZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9y X3NhbXBsZXJfYmFsYW5jZTsKLQl9CiAKIAlyZXR1cm4gMDsKIAotZXJyb3Jfc2FtcGxlcl9iYWxh bmNlOgotCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7Ci1lcnJvcl9tZW1vcnlfd3JpdGVzOgotCWlm IChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9tZW1vcnlfcmVhZHMpOwotZXJyb3JfbWVtb3J5X3JlYWRzOgotCWlmIChnZXRfY29tcHV0 ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlz eXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29t cHV0ZV9leHRlbmRlZCk7Ci1lcnJvcl9jb21wdXRlX2V4dGVuZGVkOgotCWlmIChnZXRfY29tcHV0 ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0 ZV9iYXNpYyk7Ci1lcnJvcl9jb21wdXRlX2Jhc2ljOgotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwog ZXJyb3JfcmVuZGVyX2Jhc2ljOgogCXJldHVybiByZXQ7CiB9CkBAIC04NTAsMTQgKzIxMyw0IEBA IGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX2hzdyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAKIAlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQogCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKLQlpZiAoZ2V0X2NvbXB1dGVfYmFz aWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFz aWMpOwotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Ci0JaWYgKGdldF9tZW1vcnlfcmVh ZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9yZWFk cyk7Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKLQlpZiAoZ2V0X3NhbXBsZXJfYmFsYW5jZV9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcl9iYWxhbmNl KTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX2tibGd0Mi5jCmluZGV4IDg3ZGJkMGEwYjA3 Ni4uZGM3NWM1OTYxM2EwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29h X2tibGd0Mi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QyLmMKQEAg LTMyLDIzMzggKzMyLDgwIEBACiAjaW5jbHVkZSAiaTkxNV9vYV9rYmxndDIuaCIKIAogZW51bSBt ZXRyaWNfc2V0X2lkIHsKLQlNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyA9IDEsCi0JTUVUUklD X1NFVF9JRF9DT01QVVRFX0JBU0lDLAotCU1FVFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklM RSwKLQlNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUywKLQlNRVRSSUNfU0VUX0lEX01FTU9SWV9X UklURVMsCi0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVELAotCU1FVFJJQ19TRVRfSURf Q09NUFVURV9MM19DQUNIRSwKLQlNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YsCi0JTUVUUklDX1NF VF9JRF9MM18xLAotCU1FVFJJQ19TRVRfSURfTDNfMiwKLQlNRVRSSUNfU0VUX0lEX0wzXzMsCi0J TUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5ELAotCU1FVFJJQ19TRVRf SURfU0FNUExFUiwKLQlNRVRSSUNfU0VUX0lEX1RETF8xLAotCU1FVFJJQ19TRVRfSURfVERMXzIs Ci0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVFJBLAotCU1FVFJJQ19TRVRfSURfVk1FX1BJUEUs Ci0JTUVUUklDX1NFVF9JRF9URVNUX09BLAorCU1FVFJJQ19TRVRfSURfVEVTVF9PQSA9IDEsCiB9 OwogCi1pbnQgaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfa2JsZ3QyID0gMTg7CitpbnQg aTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfa2JsZ3QyID0gMTsKIAotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewot CXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgw MDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0 KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFz aWNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1 OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9N TUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAg fSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4 MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2Nv bmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzAxZTAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxNzAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIz NzAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MzAzMTcgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTU5MzAzZGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWE0ZTAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE2YzAwNTMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWM2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExYjQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWMxYzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZjEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQyZjEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Yzg0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZDIwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUw ZjY2MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTYyYzIyMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDgyZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMzMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxMzMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAxNzAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxNzAwMjEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTAxNzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzM2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgzM2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzNzA4 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgzNzA4NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTAzNzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5MzMwMzEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGY5MzNlM2YgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE5MzNkMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDM5MzA3M2MgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU5 MzAwMGUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWQ5MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDAxNTgg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MmI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MmY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTU5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMWYgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTE5MDQ0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwMjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDBjMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwNjEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTc5MDQ0NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTk5MDAwMDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTM5MDQ0NDQgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9yZW5kZXJfYmFzaWNf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50 IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRlcl9iYXNp YzsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9iYXNpYyk7Ci0Jbisr OwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9j b3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4 ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKLQl7 IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDA3Nzgw MDggfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKLQl7IF9NTUlPKDB4ZTU1Yyks IDB4MDA4MDg3MDggfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEyNGYxYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMGUwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTA2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAzIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGUw ODIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NGYwOTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGYwMDMyIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhNGYxODkxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGYwZTAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlNGYwMDNjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw NGYwZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNGYwMDNiIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwNmMwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmMwMTAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBjNmMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNmMwYjAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MWI4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWI4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDI0IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2NWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NWI0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj NWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNWI0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwNWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWI0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhNWM2MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNWMwMDFi IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE0NWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhNGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMjA4IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGQyMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl MGY1NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTU1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmNjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE2MmNmYjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMGJl IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0MmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTAwMTU3IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiOTAwMTU4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTA1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwZmZmIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODIxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwODAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3 OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODAyIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIy IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTA0NDQ0IH0sCi19OwotCi1zdGF0aWMgaW50Ci1n ZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICAg aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4 X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf Y29tcHV0ZV9iYXNpYyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10g PSB7Ci0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfdGVzdF9vYVtdID0gewogCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmZlYSB9LAotCXsgX01NSU8oMHgyNzc0KSwg MHgwMDAwN2ZmYyB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3YWZmYSB9LAotCXsgX01NSU8o MHgyNzdjKSwgMHgwMDAwZjVmZCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3OWZmYSB9LAot CXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZjNmYiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3 YmY3YSB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZjdlNyB9LAotCXsgX01NSU8oMHgyNzkw KSwgMHgwMDA3ZmVmYSB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZjdjZiB9LAotCXsgX01N SU8oMHgyNzk4KSwgMHgwMDA3N2ZmYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZWZkZiB9 LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA2ZmZmYSB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgw MDAwY2ZiZiB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAzZmZmYSB9LAotCXsgX01NSU8oMHgy N2FjKSwgMHgwMDAwNWY3ZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygweGU0 NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBf TU1JTygweGU2NTgpLCAweDAwMDI1MDI0IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0 IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDQ1MDQ0IH0sCi0JeyBfTU1JTygweGU1NWMpLCAw eDAwMDU1MDU0IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDY1MDY0IH0sCi19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmls ZVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBlMDAxZiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDExNjgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNzhhMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgyNGMwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx Mzg0MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg1MDAxOSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTg2MDAwNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg3MGM0MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNzg4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBlNTQwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDBlMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODBm MDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExMDAxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjEzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg5ODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZDg5MDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg5ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwOTgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjhhMDA3NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDhhMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjhhNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMzhhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgx YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNzgxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgyMDAzMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgyNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NTgyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzMDAwMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTgzMDAwYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMzgzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgzODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0MDk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMzg0NGQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg0MDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwOTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg1MDA4MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMzg1MDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg1 MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg2MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjg2MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg3MDAzMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMTg4ODA1MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg4MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjkzMTAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkzMDAwMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxOTkzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjk1ODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZDk1MDA5NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTk1ODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOWU1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYmU1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwM2U1YzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNTkyYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkyODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZDkyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjky NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMzkyYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkyNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMTk4NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzk4ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTk4MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Yjk4MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDk4MjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjk4OTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTk4MjAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyNTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNzkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwYzA4MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMDQ0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0NTkwMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMGMyMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NzkwMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDA0 MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAyNCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDQwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3Jl bmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCi0JCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQkgICBp bnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFk c1tdID0gewotCXsgX01NSU8oMHgyNzJjKSwgMHhmZmZmZmZmZiB9LAotCXsgX01NSU8oMHgyNzI4 KSwgMHhmZmZmZmZmZiB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9 LAotCXsgX01NSU8oMHgyNzE4KSwgMHhmZmZmZmZmZiB9LAorCXsgX01NSU8oMHgyNzQ0KSwgMHgw MDgwMDAwMCB9LAogCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAogCXsgX01NSU8oMHgy NzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzRjKSwgMHg4NjU0MzIxMCB9LAotCXsg X01NSU8oMHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwNjY2 NyB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzVjKSwg MHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8o MHgyNzU0KSwgMHgwMDAwNjQ2NSB9LAotCXsgX01NSU8oMHgyNzUwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAw ZmUwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9LAotCXsgX01NSU8oMHgyNzdj KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3Zjg3MiB9LAotCXsgX01N SU8oMHgyNzg0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZjhiYSB9 LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgw MDA3Zjg3YSB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgy Nzk4KSwgMHgwMDA3ZjhlYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmUwMCB9LAotCXsg X01NSU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmUw MCB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAotCXsgX01NSU8oMHgyN2FjKSwg MHgwMDAwZmUwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4 X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUw MDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCks IDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlP KDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwK LQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTE4MTBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4MTAwMWEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAw NjQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MTEzMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDU4MTFiMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4 MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI5MzAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MjE5MDAxNTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDAxNTIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjU5MDAxNTMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNTQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDAx NTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MmY5MDAxNWYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5 MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDBjMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDc5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9tZW1vcnlfcmVh ZHNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICBpbnQgKmxlbnMpCi17Ci0J aW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9yeV9y ZWFkczsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0J bisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg Yl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Ci0JeyBfTU1JTygweDI3MmMpLCAw eGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjgpLCAweGZmZmZmZmZmIH0sCiAJeyBfTU1JTygw eDI3MjQpLCAweGYwODAwMDAwIH0sCiAJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTgpLCAweGZmZmZm ZmZmIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NGMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1J TygweDI3NDgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwMDA2NjY3IH0s Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NWMpLCAweDg2 NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3 NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBfTU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAw IH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAw eDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDdmODIyIH0sCi0JeyBfTU1JTygw eDI3ODQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCi0J eyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdm ODdhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTgp LCAweDAwMDdmOGVhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1J TygweDI3YTApLCAweDAwMDdmOGUyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAwIH0s Ci0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAw MDBmZTAwIH0sCisJeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDA0IH0sCisJeyBfTU1JTygweDI3 NzQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAzIH0sCisJeyBf TU1JTygweDI3N2MpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDA3 IH0sCisJeyBfTU1JTygweDI3ODQpLCAweDAwMDAwMDAwIH0sCisJeyBfTU1JTygweDI3ODgpLCAw eDAwMTAwMDAyIH0sCisJeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmY3IH0sCisJeyBfTU1JTygw eDI3OTApLCAweDAwMTAwMDAyIH0sCisJeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0sCisJ eyBfTU1JTygweDI3OTgpLCAweDAwMTAwMDgyIH0sCisJeyBfTU1JTygweDI3OWMpLCAweDAwMDBm ZmVmIH0sCisJeyBfTU1JTygweDI3YTApLCAweDAwMTAwMGMyIH0sCisJeyBfTU1JTygweDI3YTQp LCAweDAwMDBmZmU3IH0sCisJeyBfTU1JTygweDI3YTgpLCAweDAwMTAwMDAxIH0sCisJeyBfTU1J TygweDI3YWMpLCAweDAwMDBmZmU3IH0sCiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1 OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9N TUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQg fSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4 MDAwNTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKK3N0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGVzdF9vYVtdID0gewogfTsKIAot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV93cml0ZXNb XSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTM4MTAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4M2Y5MDEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MTEzMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MTFiMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4 MTAwMWEgfSwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZXN0 X29hW10gPSB7CisJeyBfTU1JTygweDk4ODgpLCAweDExODEwMDAwIH0sCisJeyBfTU1JTygweDk4 ODgpLCAweDA3ODEwMDEzIH0sCiAJeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE3ODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODEwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODEwMDAwIH0sCiAJeyBfTU1JTygweDk4ODgpLCAw eDFkODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDU1IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAzZTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ZTVjMDAwIH0sCisJ eyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDQwIH0sCiAJeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTAwMTYwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDIxOTAwMTYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOTAwMTYyIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDI1OTAwMTYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTAwMTY0IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDI5OTAwMTY1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJi OTAwMTY2IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTAwMTY3IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDJmOTAwMTUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTAwMTA1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTAwMTAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTAwMTAx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFkOTA4MDAwIH0sCiAJeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCiAJ eyBfTU1JTygweDk4ODgpLCAweDExOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzYwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwYzAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQ3OTAwYzYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwYzYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMz OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYzIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbWVtb3J5 X3dyaXRlc19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJ CSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgICAgaW50ICpsZW5z KQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19t ZW1vcnlfd3JpdGVzOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3dy aXRlcyk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JeyBfTU1J TygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 NzApLCAweDAwMDdmYzJhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBiZjAwIH0sCi0JeyBf TU1JTygweDI3NzgpLCAweDAwMDdmYzZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBiZjAw IH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDdmYzkyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAw eDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdmY2EyIH0sCi0JeyBfTU1JTygw eDI3OGMpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmYzMyIH0sCi0J eyBfTU1JTygweDI3OTQpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdm YzlhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3YTAp LCAweDAwMDdmZTZhIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1J TygweDI3YTgpLCAweDAwMDdmZTdhIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBiZjAwIH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2Nv bXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7 IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIw MDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDA3NzgwMDggfSwKLQl7IF9NTUlPKDB4ZTQ1Yyks IDB4MDAwODgwNzggfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwKLQl7IF9NTUlP KDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JeyBfTU1JTygweDk4ODgp LCAweDEwNmMwMGUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MTYwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE2MWM4MDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MWMwMTIwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFhNGVhYWEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlNmMwYjAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMjAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyNmMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNmMw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwMWMwMDQxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MWM0MjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MWM0NDQzIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBhMWM0NjQ1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWM3NjQ3IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MWM3MzU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDMw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFhMWMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMWM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGNhYTJhIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjNGMwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGNh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjMGY1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NTE1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwMGYwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE2MmNhYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMGFhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExOTA3ZmZmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQxOTAwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3 OTAwODQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ5OTAwODQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQzOTAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi19OwotCi1zdGF0 aWMgaW50Ci1nZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZDsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhf Y29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9sM19j YWNoZVtdID0gewotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzE0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmZmYSB9LAotCXsgX01NSU8oMHgyNzc0KSwg MHgwMDAwZmVmZSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZmZmYSB9LAotCXsgX01NSU8o MHgyNzdjKSwgMHgwMDAwZmVmZCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmZmYSB9LAot CXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmJlZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3 ZmZmYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmJkZiB9LAotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlW10g PSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAw eDAwMDAwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCi0JeyBfTU1JTygw eGU3NTgpLCAweDAwMTAxMTAwIH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMjAxMjAwIH0sCi0J eyBfTU1JTygweGU1NWMpLCAweDAwMzAxMzAwIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwNDAx NDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdf Y29tcHV0ZV9sM19jYWNoZVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDc2MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDAxZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkw MDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODRlODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTRlODAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDA1MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjZjNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODZjNWM1ZCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTZjNWU1ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxODZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDFiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwODFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFj ZTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMmEwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzRjMDI4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBmMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMTUwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDBmMDE0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNjJjMGEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMzkzMzMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzMDAzMiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkz MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDE1NyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZjkwMDE1OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDMwZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAyMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwNDQ0NCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2Nv bXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCi0JCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQlpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2Nv bXB1dGVfbDNfY2FjaGU7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21wdXRl X2wzX2NhY2hlKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKLQl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MTA4 MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcy NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9N TUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgZmxleF9ldV9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHhlNDU4 KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01N SU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9 LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgw MDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAyMzIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI0ZjQ2 NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAyMzIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTE4MzQ0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjE4ODAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjA4YmIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0 ZjAwMWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzAxMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDY2YzAwMGIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzE4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YmMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1YzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTQ1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY1Yzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE0YzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMw ZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyY2MwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyY2MwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MjgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGY4MzA1YzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDc4MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NTAw ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGY5ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5 MDAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDE5MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKIAl7IF9N TUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAg fSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKIH07CiAKIHN0YXRpYyBpbnQKLWdl dF9oZGNfYW5kX3NmX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAotCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICBpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2hk Y19hbmRfc2Y7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19oZGNfYW5kX3NmKTsK LQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX2wzXzFbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZmZjEgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMTQwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMGMzZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMTAwMDIgfSwKLQl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMGM3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDQwMDIg fSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGQzZmYgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4 MDAxMDA3MDAgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmMWYgfSwKLQl7IF9NTUlPKDB4 Mjc5OCksIDB4MDAwMDE0MDIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZjM2YgfSwKLQl7 IF9NTUlPKDB4MjdhMCksIDB4MDAwMDEwMDIgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZj N2YgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwMDA0MDIgfSwKLQl7IF9NTUlPKDB4MjdhYyks IDB4MDAwMGZkM2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAot CXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAx MjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVj KSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01N SU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBtdXhfY29uZmlnX2wzXzFbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI2Yzdi NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE2MDM0NDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MTM0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWE0ZWE4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDY0ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM2YzUzMjcg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzU0MjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA2YzJhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzI4NWIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ2YzAwNWMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMx YzAwM2MgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTQxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTgxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzA4MDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWE1YzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ2MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MTAwNDQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTA2MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MTAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyYTggfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDg0Y2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMmEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAxNTQgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGMwZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyY2Mw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZmYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA0MjAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDE5MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA0MjEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwNDAg fSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9sM18xX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVn cywKLQkJICAgIGludCAqbGVucykKK2dldF90ZXN0X29hX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn ICoqcmVncywKKwkJICAgICAgIGludCAqbGVucykKIHsKIAlpbnQgbiA9IDA7CiAKIAlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKIAlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEp OwogCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbDNfMTsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX2wzXzEpOworCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3Rlc3Rfb2E7CisJbGVuc1tu XSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0X29hKTsKIAluKys7CiAKIAlyZXR1cm4gbjsK IH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wz XzJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0 NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4 MDAxMDAwNzAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZmZjEgfSwKLQl7IF9NTUlPKDB4 Mjc3OCksIDB4MDAwMjgwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDg3ZmYgfSwKLQl7 IF9NTUlPKDB4Mjc4MCksIDB4MDAwMjAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDhm ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDgwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4Yyks IDB4MDAwMGE3ZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfbDNfMltdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAot CXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAx MjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVj KSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01N SU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyBtdXhfY29uZmlnX2wzXzJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI2YzAy ZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ2YzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE2MjM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0 ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzMzMjQgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQ2YzM0MjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWE2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTQxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTgxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzA4MDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YzEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGM2MjAwNDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MjAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDY2MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0YzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGY4MDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9sM18yX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgIGludCAqbGVucykKK2ludCBpOTE1X29hX3Nl bGVjdF9tZXRyaWNfc2V0X2tibGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiB7Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wz XzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18yKTsKLQluKys7CisJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xl biA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKIAotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNfM1tdID0gewotCXsgX01N SU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhm MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAotCXsg X01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAyODAw MiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwODdmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwg MHgwMDAyMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwOGZmZiB9LAotCXsgX01NSU8o MHgyNzg4KSwgMHgwMDAwODAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwYTdmZiB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19sM18z W10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgp LCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1J TygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0s Ci0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAw MDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25m aWdfbDNfM1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjNGU4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNDZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYzMzQwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRl ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjZjMzMyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMzQyZiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YTZjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNDFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYTFjMTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzYzMDA0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYzMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjYzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wz XzNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5zKQotewotCWlu dCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18zOwotCWxl bnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMyk7Ci0JbisrOwotCi0JcmV0dXJuIG47 Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDMwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAw IH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAw eDAwMDBlZmZmIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDA2MDAwIH0sCi0JeyBfTU1JTygw eDI3N2MpLCAweDAwMDBmM2ZmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7 IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAw MDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCks IDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlP KDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yYXN0ZXJp emVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMmYzODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NGQwNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEyMGQwM2MwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MGQwM2NmIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMGYwMDA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGU0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MmYwNDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmYw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhNGMwMDkwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGQwMDI3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwNGQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQwZDQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyMGQ4MDNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 MGQ4MDIzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGQwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGYwMDEwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDUw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmYzAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQxOTAxNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAx NDg1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ1OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkJICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwot Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwg MSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmQ7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXJbXSA9IHsKLQl7IF9N TUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4 NzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMGMwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGU3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDMw MDAgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGY5ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCks IDB4MDAwMDBjMDAgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZlN2YgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfc2FtcGxlcltdID0g ewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgw MDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhl NzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsg X01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1 NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Nh bXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxNTJjMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTYxNTAwMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxNjAwYTAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTQzNTJjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYzNTAw MDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzNjAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTQ1NTJjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY1NTAwMDUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTI1NjAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZjYwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0 YzAwNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAzNTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMwZmIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwZGEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwMjggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxMzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUxMzIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxM2MwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxNDAwMTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMx NTcwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxNTAwNzggfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTAxNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNjIxODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDIxNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxNzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzM2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQzMzMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQzNDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTYzNDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNTc4NzAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTAzNTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzNjAw NDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIzNjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQzNzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDA1MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1MzMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWM1NDAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1 NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1NTcwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA1NTc4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA1NTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDY1NjAwNDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1NjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1NzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTE5MGZmODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAw NjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwNjAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9z YW1wbGVyX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkg ICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgICAgIGludCAqbGVu cykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdf c2FtcGxlcjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3NhbXBsZXIpOwotCW4r KzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdm ZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMDlmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlP KDB4Mjc4NCksIDB4MDAwMGVmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGYzZmYgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAw MDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZkZmYgfSwKLQl7IF9NTUlPKDB4Mjc5 OCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlN2YgfSwKLX07Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGRsXzFbXSA9 IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7 IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUw NTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190 ZGxfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjEyMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjMyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjUyMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJmODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDNhMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBmZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA5NSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJkNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjJkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjEwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDEwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjExODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDExYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjEyMTg4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEyMTliNSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDEyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjEzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMw ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTMwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjMwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMxODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTMxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMxNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMyMWE4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTMyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMyMDAzMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDMyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzMzNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTMzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzMTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDUwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTUxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUxODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUy MTg4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMWE4MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjUyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUzNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDUzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUzMTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmY4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDgwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0MTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAot fTsKLQotc3RhdGljIGludAotZ2V0X3RkbF8xX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAotCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms Ci0JCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ190ZGxfMTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmln X3RkbF8xKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAw ODAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVf Y29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBf TU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDEx IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAw eDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygw eGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjRkNjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjJlNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTI1MjRkNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGE0YzAwMTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZmUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwOTcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYy ZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxMWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMjFmYjcgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAxMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMzUwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYzMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDYzMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjFiODAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwM2YgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDI1MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MWMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDI1MjFmYjcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5 MGZjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDM5MDAwNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF90ZGxfMl9tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgKipyZWdzLAotCQkgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfdGRsXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ190ZGxfMik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhW10g PSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAw eDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlP KDB4ZTQ1OCksIDB4MDAwMDEwMDAgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDMwMDIgfSwK LQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAw MTEwMTAgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTAwMTIgfSwKLQl7IF9NTUlPKDB4ZTU1 YyksIDB4MDAwNTIwNTEgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwMDAwMDggfSwKLX07Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJh W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTIwM2UwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEyMzIwM2UwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTIwM2UwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMmY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDZjIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmQ4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2MTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTE0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTIwMDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTMxMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MzA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzE4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MzIxOTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzIw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0NTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NTE0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0NTIwMDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTIwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0NTMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEx OTBlMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwYzAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAw IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICAgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnICoqcmVncywKLQkJCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwot CUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMp IDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhOwotCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0JbisrOwotCi0JcmV0dXJu IG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z192bWVfcGlwZVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgz MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDAzMCB9LAotCXsgX01NSU8oMHgy Nzc0KSwgMHgwMDAwZmZmOSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMiB9LAotCXsg X01NSU8oMHgyNzdjKSwgMHgwMDAwZmZmYyB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAw MiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmZmMyB9LAotCXsgX01NSU8oMHgyNzg4KSwg MHgwMDEwMDE4MCB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZjZiB9LAotCXsgX01NSU8o MHgyNzkwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmZjZiB9LAot CXsgX01NSU8oMHgyNzk4KSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAw ZmYzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ192bWVfcGlwZVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsg X01NSU8oMHhlNTU4KSwgMHgwMDAwODAwMyB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBtdXhfY29uZmlnX3ZtZV9waXBlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAw eDE0MWE1ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MWEwMGMwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEyMTgwMjQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MTgwMDAyIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE0M2E1ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2M2Ew MGMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMzgwMjQwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE0MzgwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYxMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMmY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmYzMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NGMxNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGRhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlMGY5NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMDJhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE2MmMwYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmRj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MTkzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MWEyOGMxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMWEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTMzMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA2MTNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4 MTNmMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTcyMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MTc4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTdhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMTgwMDM3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTgwOTQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyMTgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTgzMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MzkzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjM2EyOGMxIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwM2EwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMzNm MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzNmMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhMzdhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzdhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhMzgwOTc3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MzgwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MzgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MzgzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwMGZmIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDQwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwODAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODQ0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19 OwotCi1zdGF0aWMgaW50Ci1nZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkJaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9T SVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0g bXV4X2NvbmZpZ192bWVfcGlwZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Zt ZV9waXBlKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0 MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDQgfSwKLQl7IF9NTUlPKDB4 Mjc3NCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDMgfSwKLQl7 IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAw MDcgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCks IDB4MDAxMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZmZjcgfSwKLQl7IF9NTUlP KDB4Mjc5MCksIDB4MDAxMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwK LQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAxMDAwODIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAw MGZmZWYgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAxMDAwYzIgfSwKLQl7IF9NTUlPKDB4Mjdh NCksIDB4MDAwMGZmZTcgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAxMDAwMDEgfSwKLQl7IF9N TUlPKDB4MjdhYyksIDB4MDAwMGZmZTcgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgZmxleF9ldV9jb25maWdfdGVzdF9vYVtdID0gewotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTE4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMTMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDdlNTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBp bnQKLWdldF90ZXN0X29hX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAotCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgICAg IGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11 eF9jb25maWdfdGVzdF9vYTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rf b2EpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1pbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmlj X3NldF9rYmxndDIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQotewotCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPSAwOwotCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzID0gTlVMTDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PSAwOwotCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9IDA7Ci0KLQlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1l dHJpY3Nfc2V0KSB7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQzoKLQkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25m aWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJ CQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkVOREVSX0JBU0lDXCIgbWV0cmljIHNldFxuIik7Ci0K LQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRo aXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vy c3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICov Ci0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29u ZmlnX3JlbmRlcl9iYXNpYyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJ CWZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYzsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpYyk7Ci0K LQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfQkFTSUM6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0J CQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJO byBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfQkFTSUNcIiBtZXRyaWMgc2V0XG4i KTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNr ZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRv IHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0J CQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljOwotCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9i YXNpYyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BS T0ZJTEU6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3JlbmRl cl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCQkgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQkgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJ RFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfUElQ RV9QUk9GSUxFXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVn aXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4n dCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRu J3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQot Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25m aWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9m aWxlKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25m aWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9NRU1PUllfUkVBRFM6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X21lbW9yeV9yZWFkc19tdXhfY29u ZmlnKGRldl9wcml2LAotCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJ CQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBz dWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9SWV9SRUFEU1wiIG1ldHJpYyBzZXRcbiIpOwot Ci0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0 aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNl cnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAq LwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ19tZW1vcnlfcmVhZHMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0J CQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHMpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVTOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9tZW1vcnlfd3JpdGVzX211eF9j b25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAot CQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigi Tm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1PUllfV1JJVEVTXCIgbWV0cmljIHNldFxu Iik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVj a2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0 byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAot CQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVtb3J5X3dyaXRlczsKLQkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3Vu dGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3MgPQotCQkJZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlczsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV93 cml0ZXMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVO REVEOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRl X2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9FWFRFTkRFRFwiIG1l dHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFs cmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFk dmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiBy ZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0 ZW5kZWQ7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4 X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJ Q19TRVRfSURfQ09NUFVURV9MM19DQUNIRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJ CQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCWRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBc IkNPTVBVVEVfTDNfQ0FDSEVcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFM OwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3Vu dGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNf Y2FjaGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2Nv bmZpZ19jb21wdXRlX2wzX2NhY2hlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfY29tcHV0ZV9sM19jYWNoZSk7Ci0KLQkJ cmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0Y6Ci0JCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhkZXZf cHJpdiwKLQkJCQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVgg Y29uZmlnIGZvciBcIkhEQ19BTkRfU0ZcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFM IGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5k IHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJ CSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAt RUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJ Yl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3NmOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Yp OwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19o ZGNfYW5kX3NmOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfaGRjX2FuZF9zZik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBN RVRSSUNfU0VUX0lEX0wzXzE6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQot CQkJZ2V0X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7 Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfMVwiIG1ldHJpYyBz ZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzE7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfbDNfMSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX2wzXzE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18xKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1F VFJJQ19TRVRfSURfTDNfMjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0J CQlnZXRfbDNfMl9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK LQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RF QlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18yXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMjsKLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ19sM18yKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9l dV9jb25maWdfbDNfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzIpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVU UklDX1NFVF9JRF9MM18zOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJ CWdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwot CQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVC VUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzNcIiBtZXRyaWMgc2V0 XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2Vk IHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVk Ci0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18zOwotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29u ZmlnX2wzXzMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1 X2NvbmZpZ19sM18zOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFS UkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRS SUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQ6Ci0JCWRldl9wcml2LT5wZXJm Lm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRf bXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzLAotCQkJCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkFTVEVSSVpFUl9BTkRfUElYRUxf QkFDS0VORFwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lz dGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3Qg aGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmln X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0K LQkJCWZsZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZp Z19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1F VFJJQ19TRVRfSURfU0FNUExFUjoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 Ci0JCQlnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkg ewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJTQU1Q TEVSXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZl IGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2 ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfc2Ft cGxlcjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoYl9jb3VudGVyX2NvbmZpZ19zYW1wbGVyKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfc2FtcGxlcjsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3NhbXBsZXIp OwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9URExfMToKLQkJZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJp diwKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f bXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVY IGNvbmZpZyBmb3IgXCJURExfMVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVj YXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28g aXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICog c28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5W QUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2Nv dW50ZXJfY29uZmlnX3RkbF8xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8xKTsKLQotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfdGRsXzE7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZp Z190ZGxfMSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8yOgotCQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF90ZGxfMl9tdXhfY29uZmln KGRldl9wcml2LAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkg ICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0 YWJsZSBNVVggY29uZmlnIGZvciBcIlRETF8yXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJ TlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAq IGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5k Ci0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1 cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0K LQkJCWJfY291bnRlcl9jb25maWdfdGRsXzI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGRsXzIpOwotCi0J CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ190ZGxfMjsK LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX3RkbF8yKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09N UFVURV9FWFRSQToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRf Y29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9F WFRSQVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVy X3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2 ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhh dmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2Nv bXB1dGVfZXh0cmE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0J CQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmE7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4 X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19T RVRfSURfVk1FX1BJUEU6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJ Z2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQlkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncywKLQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlp ZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdf RFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlZNRV9QSVBFXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfdm1lX3BpcGU7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfdm1lX3BpcGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0J CQlmbGV4X2V1X2NvbmZpZ192bWVfcGlwZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX3ZtZV9waXBlKTsKLQotCQlyZXR1 cm4gMDsKKwlzd2l0Y2ggKGRldl9wcml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0KSB7CiAJY2FzZSBN RVRSSUNfU0VUX0lEX1RFU1RfT0E6CiAJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PQogCQkJZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwKQEAgLTIzOTYsMzgwICsxMzgs NiBAQCBpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9rYmxndDIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogfQogCiBzdGF0aWMgc3NpemVfdAotc2hvd19yZW5kZXJfYmFz aWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9J RF9SRU5ERVJfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2 X2F0dHJfcmVuZGVyX2Jhc2ljX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2Rl ID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yZW5kZXJfYmFzaWNfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJfYmFzaWNbXSA9 IHsKLQkmZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9iYXNpYyA9IHsKLQkubmFtZSA9 ICJmOGQ2NzdlOS1mZjZmLTRkZjEtOTMxMC0wMzM0YzZlZmFjY2UiLAotCS5hdHRycyA9ICBhdHRy c19yZW5kZXJfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2Jhc2lj X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf Q09NUFVURV9CQVNJQyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9jb21wdXRlX2Jhc2ljX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2Rl ID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2Jhc2ljX2lkLAotCS5zdG9yZSA9IE5V TEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9iYXNpY1td ID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfYmFzaWMgPSB7Ci0JLm5h bWUgPSAiZTE3ZmM0MmEtZTYxNC00MWI2LTkwYzQtMTA3NDg0MWE2Yzc3IiwKLQkuYXR0cnMgPSAg YXR0cnNfY29tcHV0ZV9iYXNpYywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3JlbmRlcl9w aXBlX3Byb2ZpbGVfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQgPSB7Ci0JLmF0dHIg PSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3JlbmRlcl9w aXBlX3Byb2ZpbGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc19yZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JJmRldl9hdHRyX3JlbmRl cl9waXBlX3Byb2ZpbGVfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSA9IHsKLQkubmFtZSA9ICJkN2Ex N2EzYS1jYTcxLTQwZDItYTkxOS1hY2U4MGQ1MDYzM2YiLAotCS5hdHRycyA9ICBhdHRyc19yZW5k ZXJfcGlwZV9wcm9maWxlLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3JlYWRz X2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURf TUVNT1JZX1JFQURTKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9h dHRyX21lbW9yeV9yZWFkc19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9 IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbWVtb3J5X3JlYWRzX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5X3JlYWRzW10gPSB7 Ci0JJmRldl9hdHRyX21lbW9yeV9yZWFkc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9tZW1vcnlfcmVhZHMgPSB7Ci0JLm5hbWUgPSAi NTdiNTkyMDItMTcyYi00NzdhLTg3ZGUtMzNmODU1NzJjNTg5IiwKLQkuYXR0cnMgPSAgYXR0cnNf bWVtb3J5X3JlYWRzLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3dyaXRlc19p ZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01F TU9SWV9XUklURVMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0 dHJfbWVtb3J5X3dyaXRlc19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9 IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbWVtb3J5X3dyaXRlc19pZCwKLQkuc3RvcmUgPSBOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV93cml0ZXNbXSA9 IHsKLQkmZGV2X2F0dHJfbWVtb3J5X3dyaXRlc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9tZW1vcnlfd3JpdGVzID0gewotCS5uYW1l ID0gIjNhZGRmOGVmLThlOWItNDBmNS1hNDQ4LTNkYmI1ZDUxMjhiMCIsCi0JLmF0dHJzID0gIGF0 dHJzX21lbW9yeV93cml0ZXMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2V4 dGVuZGVkX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfQ09NUFVURV9FWFRFTkRFRCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9jb21wdXRlX2V4dGVuZGVkX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2V4dGVuZGVkX2lk LAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNf Y29tcHV0ZV9leHRlbmRlZFtdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dGVuZGVkX2lkLmF0 dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2Nv bXB1dGVfZXh0ZW5kZWQgPSB7Ci0JLm5hbWUgPSAiNGFmMDQwMGEtODFjMy00N2RiLWE2YjYtZGVk ZGJkNzU2ODBlIiwKLQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9leHRlbmRlZCwKLX07Ci0KLXN0 YXRpYyBzc2l6ZV90Ci1zaG93X2NvbXB1dGVfbDNfY2FjaGVfaWQoc3RydWN0IGRldmljZSAqa2Rl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4g c3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFKTsKLX0K LQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfbDNfY2Fj aGVfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X2NvbXB1dGVfbDNfY2FjaGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2wzX2NhY2hlW10gPSB7Ci0JJmRl dl9hdHRyX2NvbXB1dGVfbDNfY2FjaGVfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSA9IHsKLQkubmFtZSA9 ICIwZTIyZjk5NS03OWNhLTRmNjctODNhYi1lOWQ5NzcyNDg4ZDgiLAotCS5hdHRycyA9ICBhdHRy c19jb21wdXRlX2wzX2NhY2hlLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfaGRjX2FuZF9z Zl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X0hEQ19BTkRfU0YpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0 dHJfaGRjX2FuZF9zZl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0 NDQgfSwKLQkuc2hvdyA9IHNob3dfaGRjX2FuZF9zZl9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsK LQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2hkY19hbmRfc2ZbXSA9IHsKLQkmZGV2 X2F0dHJfaGRjX2FuZF9zZl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCBncm91cF9oZGNfYW5kX3NmID0gewotCS5uYW1lID0gImJjMmEwMGY3LWNi OGEtNGZmMi04YWQwLWUyNDFkYWQxNjkzNyIsCi0JLmF0dHJzID0gIGF0dHJzX2hkY19hbmRfc2Ys Ci19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19sM18xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNw cmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18xX2lkID0gewotCS5hdHRyID0geyAubmFt ZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19sM18xX2lkLAotCS5zdG9y ZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfMVtdID0g ewotCSZkZXZfYXR0cl9sM18xX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGdyb3VwX2wzXzEgPSB7Ci0JLm5hbWUgPSAiZDJiYmU3OTAtZjA1OC00 MmQ5LTgxYzYtY2RlZGNmNjU1YmMyIiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfMSwKLX07Ci0KLXN0 YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzJfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYs ICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18yKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlIGRldl9hdHRyX2wzXzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzJfaWQsCi0JLnN0b3JlID0gTlVMTCwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18yW10gPSB7Ci0JJmRldl9h dHRyX2wzXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgZ3JvdXBfbDNfMiA9IHsKLQkubmFtZSA9ICIyZjhlMzJlNC01OTU2LTQ2ZTItYWYzMS1j OGVhOTU4ODczMzIiLAotCS5hdHRycyA9ICBhdHRyc19sM18yLAotfTsKLQotc3RhdGljIHNzaXpl X3QKLXNob3dfbDNfM19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX0wzXzMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg ZGV2X2F0dHJfbDNfM19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0 NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfM19pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzNbXSA9IHsKLQkmZGV2X2F0dHJfbDNfM19p ZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF9sM18zID0gewotCS5uYW1lID0gImNhMDQ2YWFkLWI1ZmItNDEwMS1hZGNlLTY0NzNlZTZlNWIx NCIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYo YnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCk7 Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2Rl ID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lk LAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNf cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0gewotCSZkZXZfYXR0cl9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQgPSB7Ci0J Lm5hbWUgPSAiNjA1ZjM4OGYtMjRiYi00NTVjLTg4ZTMtOGQ1N2FlMGQ3ZTlmIiwKLQkuYXR0cnMg PSAgYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCwKLX07Ci0KLXN0YXRpYyBzc2l6 ZV90Ci1zaG93X3NhbXBsZXJfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9TQU1QTEVSKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlIGRldl9hdHRyX3NhbXBsZXJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwg Lm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3NhbXBsZXJfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19zYW1wbGVyW10gPSB7Ci0J JmRldl9hdHRyX3NhbXBsZXJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfc2FtcGxlciA9IHsKLQkubmFtZSA9ICIzMWRkMTU3Yy1iZjRl LTRiYWItYmYyYi1mNWM4MTc0YWYxYWYiLAotCS5hdHRycyA9ICBhdHRyc19zYW1wbGVyLAotfTsK LQotc3RhdGljIHNzaXplX3QKLXNob3dfdGRsXzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50 ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUg PSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfdGRsXzFfaWQsCi0JLnN0b3Jl ID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMVtdID0g ewotCSZkZXZfYXR0cl90ZGxfMV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMSA9IHsKLQkubmFtZSA9ICIxMDVkYjkyOC01NTQy LTQ2NmItOTEyOC1lMWYzYzkxNDI2Y2IiLAotCS5hdHRycyA9ICBhdHRyc190ZGxfMSwKLX07Ci0K LXN0YXRpYyBzc2l6ZV90Ci1zaG93X3RkbF8yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYo YnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVERMXzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3RkbF8yX2lkLAotCS5zdG9yZSA9 IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzJbXSA9IHsK LQkmZGV2X2F0dHJfdGRsXzJfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzIgPSB7Ci0JLm5hbWUgPSAiMDNkYjk0ZDItYjM3Zi00 YzU4LWE3OTEtMGQyMDY3YjAxM2JiIiwKLQkuYXR0cnMgPSAgYXR0cnNfdGRsXzIsCi19OwotCi1z dGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2V4dHJhX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNw cmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSk7Ci19Ci0KLXN0 YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkID0g ewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hv d19jb21wdXRlX2V4dHJhX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9leHRyYVtdID0gewotCSZkZXZfYXR0cl9jb21wdXRl X2V4dHJhX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGdyb3VwX2NvbXB1dGVfZXh0cmEgPSB7Ci0JLm5hbWUgPSAiYWE3YTNmYjktMjJmYi00M2Zm LWEzMmQtMGFiNmMxM2JiZDE2IiwKLQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9leHRyYSwKLX07 Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3ZtZV9waXBlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNw cmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVk1FX1BJUEUpOwotfQotCi1zdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdm1lX3BpcGVfaWQgPSB7Ci0JLmF0dHIg PSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3ZtZV9waXBl X2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0 cnNfdm1lX3BpcGVbXSA9IHsKLQkmZGV2X2F0dHJfdm1lX3BpcGVfaWQuYXR0ciwKLQlOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdm1lX3BpcGUgPSB7Ci0J Lm5hbWUgPSAiMzk4YTQyNjgtZWY2Zi00ZmZjLWI1NWYtM2M3YjUzNjNjZTYxIiwKLQkuYXR0cnMg PSAgYXR0cnNfdm1lX3BpcGUsCi19OwotCi1zdGF0aWMgc3NpemVfdAogc2hvd190ZXN0X29hX2lk KHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFy ICpidWYpCiB7CiAJcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVEVT VF9PQSk7CkBAIC0yNzk4LDkxICsxNjYsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfa2Js Z3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpbnQgbXV4X2xlbnNbQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07CiAJaW50IHJldCA9IDA7 CiAKLQlpZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwotCQlpZiAocmV0KQotCQkJZ290byBl cnJvcl9yZW5kZXJfYmFzaWM7Ci0JfQotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsK LQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0ZV9iYXNpYzsKLQl9Ci0JaWYgKGdldF9y ZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCQlpZiAocmV0KQotCQkJZ290byBl cnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOwotCX0KLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVh ZHMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9tZW1vcnlfcmVhZHM7Ci0JfQotCWlmIChn ZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbWVt b3J5X3dyaXRlczsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dGVuZGVkOwotCX0KLQlpZiAoZ2V0 X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9y X2NvbXB1dGVfbDNfY2FjaGU7Ci0JfQotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLQkJaWYg KHJldCkKLQkJCWdvdG8gZXJyb3JfaGRjX2FuZF9zZjsKLQl9Ci0JaWYgKGdldF9sM18xX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3Jl YXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotCQlp ZiAocmV0KQotCQkJZ290byBlcnJvcl9sM18xOwotCX0KLQlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci0JCWlmIChy ZXQpCi0JCQlnb3RvIGVycm9yX2wzXzI7Ci0JfQotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKLQkJaWYgKHJldCkK LQkJCWdvdG8gZXJyb3JfbDNfMzsKLQl9Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9i YWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJv cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCX0KLQlpZiAoZ2V0X3NhbXBsZXJfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3NhbXBsZXI7Ci0JfQotCWlmIChnZXRfdGRsXzFf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNm c19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEp OwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl90ZGxfMTsKLQl9Ci0JaWYgKGdldF90ZGxfMl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2Zz X2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3RkbF8yOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVf ZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQg PSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf Y29tcHV0ZV9leHRyYSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0cmE7 Ci0JfQotCWlmIChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl92 bWVfcGlwZTsKLQl9CiAJaWYgKGdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKIAkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOwogCQlpZiAocmV0KQpAQCAtMjg5Miw1 NyArMTc1LDYgQEAgaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX2tibGd0MihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiAKIGVycm9yX3Rlc3Rfb2E6Ci0JaWYg KGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQot CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf dm1lX3BpcGUpOwotZXJyb3Jfdm1lX3BpcGU6Ci0JaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKLWVy cm9yX2NvbXB1dGVfZXh0cmE6Ci0JaWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIpOwotZXJyb3JfdGRsXzI6Ci0JaWYgKGdldF90ZGxf MV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwotZXJy b3JfdGRsXzE6Ci0JaWYgKGdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9zYW1wbGVyKTsKLWVycm9yX3NhbXBsZXI6Ci0JaWYgKGdldF9yYXN0ZXJp emVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLWVycm9yX3Jhc3Rlcml6ZXJf YW5kX3BpeGVsX2JhY2tlbmQ6Ci0JaWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKLWVycm9yX2wzXzM6Ci0JaWYgKGdldF9sM18yX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKLWVycm9yX2wz XzI6Ci0JaWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9sM18xKTsKLWVycm9yX2wzXzE6Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLWVycm9yX2hkY19h bmRfc2Y6Ci0JaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLWVycm9yX2NvbXB1dGVfbDNf Y2FjaGU6Ci0JaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKLWVycm9yX2NvbXB1dGVfZXh0 ZW5kZWQ6Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsKLWVycm9yX21lbW9yeV93cml0ZXM6Ci0J aWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX21lbW9yeV9yZWFkcyk7Ci1lcnJvcl9tZW1vcnlfcmVhZHM6Ci0JaWYgKGdldF9yZW5k ZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Ci0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKLWVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU6Ci0JaWYg KGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9jb21wdXRlX2Jhc2ljKTsKLWVycm9yX2NvbXB1dGVfYmFzaWM6Ci0JaWYgKGdldF9yZW5k ZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lz ZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRl cl9iYXNpYyk7Ci1lcnJvcl9yZW5kZXJfYmFzaWM6CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMjk1 Miw0MCArMTg0LDYgQEAgaTkxNV9wZXJmX3VucmVnaXN0ZXJfc3lzZnNfa2JsZ3QyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11 eF9yZWdzW0FSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpXTsKIAlpbnQgbXV4 X2xlbnNbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07CiAKLQlp ZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfcmVuZGVyX2Jhc2ljKTsKLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOwotCWlmIChnZXRf cmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0JaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7Ci0JaWYg KGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF9tZW1vcnlfd3JpdGVzKTsKLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRl dl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotCWlm IChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLQlpZiAoZ2V0 X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwot CWlmIChnZXRfbDNfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQot CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bDNfMik7Ci0JaWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9sM18zKTsKLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3Bp eGVsX2JhY2tlbmQpOwotCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7Ci0JaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwotCWlmIChnZXRfdGRsXzJfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKLQlpZiAoZ2V0 X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2NvbXB1dGVfZXh0cmEpOwotCWlmIChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3ZtZV9waXBlKTsKIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKIAkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDMuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMKaW5kZXggNmVkMDkyNTY2YTMyLi4xOWUwMDk3OWIw ODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffa2JsZ3QzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9rYmxndDMuYwpAQCAtMzIsMjM4NyArMzIs ODAgQEAKICNpbmNsdWRlICJpOTE1X29hX2tibGd0My5oIgogCiBlbnVtIG1ldHJpY19zZXRfaWQg ewotCU1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDID0gMSwKLQlNRVRSSUNfU0VUX0lEX0NPTVBV VEVfQkFTSUMsCi0JTUVUUklDX1NFVF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFLAotCU1FVFJJQ19T RVRfSURfTUVNT1JZX1JFQURTLAotCU1FVFJJQ19TRVRfSURfTUVNT1JZX1dSSVRFUywKLQlNRVRS SUNfU0VUX0lEX0NPTVBVVEVfRVhURU5ERUQsCi0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NB Q0hFLAotCU1FVFJJQ19TRVRfSURfSERDX0FORF9TRiwKLQlNRVRSSUNfU0VUX0lEX0wzXzEsCi0J TUVUUklDX1NFVF9JRF9MM18yLAotCU1FVFJJQ19TRVRfSURfTDNfMywKLQlNRVRSSUNfU0VUX0lE X1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQsCi0JTUVUUklDX1NFVF9JRF9TQU1QTEVSLAot CU1FVFJJQ19TRVRfSURfVERMXzEsCi0JTUVUUklDX1NFVF9JRF9URExfMiwKLQlNRVRSSUNfU0VU X0lEX0NPTVBVVEVfRVhUUkEsCi0JTUVUUklDX1NFVF9JRF9WTUVfUElQRSwKLQlNRVRSSUNfU0VU X0lEX1RFU1RfT0EsCisJTUVUUklDX1NFVF9JRF9URVNUX09BID0gMSwKIH07CiAKLWludCBpOTE1 X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19rYmxndDMgPSAxODsKK2ludCBpOTE1X29hX25fYnVp bHRpbl9tZXRyaWNfc2V0c19rYmxndDMgPSAxOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGJfY291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDI3 MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAw IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewotCXsg X01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAw MyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwg MHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8o MHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9i YXNpY1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDFlMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjE3MDI4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjM3MDI4MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNmVjMDFlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDMx NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDNkZiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzZjkwMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlMDM4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYTZjMDA1MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFi NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDJmMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJmMTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjODQwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzBmMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNjYw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYTIwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJkODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDEzMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODEz MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE3MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODE3MDAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjMzYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODMzYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM3MDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODM3MDg0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDM3MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYWNlMDIwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWVjNTMwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMGVjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxY2VjMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTliODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYzljMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwY2NjMDAwMiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYThkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDhmMDAwMSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNmFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkz MzAzMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkzM2UzZiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTkzM2QwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzMDczYyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNTkzMDAwZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkzMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDE1NyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZjkwMDE1OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyYjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzMTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNzkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw MDAzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMjI0MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0MTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDI0MiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMDA4NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMTQwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMjIyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 OTkwMGM2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMGM2 MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMjIyMiB9LAotfTsKLQotc3RhdGljIGludAot Z2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgIGlu dCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9j b25maWdfcmVuZGVyX2Jhc2ljOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVu ZGVyX2Jhc2ljKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9N TUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4 MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpY1td ID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwg MHgwMDAwMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01NSU8o MHhlNzU4KSwgMHgwMDc3ODAwOCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA4ODA3OCB9LAot CXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMGEw ODkwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmln X2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAwZTAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTI0ZjFjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAw ZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4M2Y5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWE0ZTA4MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZjA5MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0 ZjAwMzIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZjE4OTEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGM0ZjBlMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZjAwM2MgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA0ZjBkODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjAwM2Ig fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDg2YzAxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM2YzAwMGMgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGU2YzBiMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg2YzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYjQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMx YzAwMjQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDg1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE1YmMwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGM1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1YjQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDI1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE1YzYwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWM1YzAwMWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1YzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTQ1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0Yzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGM0YzAyMDggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjU0MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUwZjU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAxNTUg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYyY2ZiMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTgyYzAwYmUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyY2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDAx NTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDAxNTggfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWQ5MDAxMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDAxMDMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDBmZmYgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5 MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDU5MDA4MjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4MDIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4MDIg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NGI5MDAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDM5MDA0MjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDQ0NDQgfSwKLX07 Ci0KLXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg KipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERf QlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsK LQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JbGVuc1tuXSA9IEFSUkFZ X1NJWkUobXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRl cl9waXBlX3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hW10gPSB7CiAJeyBfTU1JTygw eDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmVhIH0sCi0J eyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZjIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdh ZmZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmNWZkIH0sCi0JeyBfTU1JTygweDI3ODAp LCAweDAwMDc5ZmZhIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmM2ZiIH0sCi0JeyBfTU1J TygweDI3ODgpLCAweDAwMDdiZjdhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmN2U3IH0s Ci0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZWZhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAw MDBmN2NmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDc3ZmZhIH0sCi0JeyBfTU1JTygweDI3 OWMpLCAweDAwMDBlZmRmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDZmZmZhIH0sCi0JeyBf TU1JTygweDI3YTQpLCAweDAwMDBjZmJmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDNmZmZh IH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDA1ZjdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9 IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7 IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUw NjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19y ZW5kZXJfcGlwZV9wcm9maWxlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjMGUwMDFmIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw MTE2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OGEwM2UwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDExODI0YzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODMwMDIwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEzODQwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODUwMDE5 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODYwMDA3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAxODcwYzQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODgwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMmY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDQwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGQ0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyMGU1NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGUwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA4MGYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGYwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl MGYwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTEwMDEyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2MTMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODk4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODkwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAzODk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBiODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODBjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmOGEwMDc1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOGEw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFiOGE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOGE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFkODFhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODE4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE3ODE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBi ODIwMDMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODI4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBkODI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA1ODI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODMwMDAz IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA5ODMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3ODM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODQwOTgwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzODQ0ZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODQw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA5ODUwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODUwMDAzIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAxODUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODYwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBmODYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5 ODcwMDMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODg4MDUyIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDExODgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODg0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFiOTMxMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTMwMDAx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFiOTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTUwMDk0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5OTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ZTU4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBiZTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzZTVj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBiOTI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTI0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBmOTI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTI4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEzOTJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5 OTI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOTg1MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3OTg4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTgxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBiOTgyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTgyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTg5MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA1OTgyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDIxOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOTA0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDI1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTA0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDJiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDMxOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5 OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDExOTBjMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQxOTAwNDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ3OTAwYzIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwNDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQ5OTAwMDQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAw MDI0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQzOTAwODQxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwNDAwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg KipyZWdzLAotCQkJCSAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdf T04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwot Ci0JcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9j b25maWdfbWVtb3J5X3JlYWRzW10gPSB7Ci0JeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0s Ci0JeyBfTU1JTygweDI3MjgpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MWMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCisJeyBf TU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCiAJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAw IH0sCiAJeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NGMpLCAw eDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygw eDI3NDQpLCAweDAwMDA2NjY3IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3NWMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTgpLCAweDg2NTQz MjEwIH0sCi0JeyBfTU1JTygweDI3NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBfTU1JTygweDI3NTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCi0JeyBfTU1J TygweDI3NzQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0s Ci0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAw MDdmODcyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3 ODgpLCAweDAwMDdmOGJhIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCi0JeyBf TU1JTygweDI3OTApLCAweDAwMDdmODdhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZTAw IH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmOGVhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAw eDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0sCi0JeyBfTU1JTygw eDI3YTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0sCi0J eyBfTU1JTygweDI3YWMpLCAweDAwMDBmZTAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8o MHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAot CXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAz NTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVj KSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV9yZWFkc1td ID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMzgxMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzZjkwMDA2NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgx MDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNzgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw M2U1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNWU1YzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwN2U1NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE1MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyMTkwMDE1MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE1 MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwMDE1MyB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyNzkwMDE1NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyOTkwMDE1NSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyYjkwMDE1NiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE1NyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwMDE1ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkw MDEwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwMDEwMyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNzkwMDEwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGM2MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0Mzkw MDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAg IGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11 eF9jb25maWdfbWVtb3J5X3JlYWRzOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf bWVtb3J5X3JlYWRzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7 IF9NTUlPKDB4MjcyYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyOCksIDB4ZmZmZmZm ZmYgfSwKIAl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKIAl7IF9NTUlPKDB4MjcyMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlP KDB4MjcxOCksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1 NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0 NCksIDB4MDAwMDY2NjcgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4Mjc1YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAg fSwKLQl7IF9NTUlPKDB4Mjc1NCksIDB4MDAwMDY0NjUgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4 Mjc3NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7 IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4 MjIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCks IDB4MDAwN2Y4YmEgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlP KDB4Mjc5MCksIDB4MDAwN2Y4N2EgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwK LQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2Y4ZWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4Mjdh NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9N TUlPKDB4MjdhYyksIDB4MDAwMGZlMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDQg fSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4 MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4 Mjc4MCksIDB4MDAwMDAwMDcgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZm ZjcgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc5NCks IDB4MDAwMGZmY2YgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAxMDAwODIgfSwKKwl7IF9NTUlP KDB4Mjc5YyksIDB4MDAwMGZmZWYgfSwKKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAxMDAwYzIgfSwK Kwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZmZTcgfSwKKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAx MDAwMDEgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZmZTcgfSwKIH07CiAKLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0g ewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgw MDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhl NzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsg X01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2 NCB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0 X29hW10gPSB7CiB9OwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25m aWdfbWVtb3J5X3dyaXRlc1tdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkw NjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMzgxMTMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgxMDAxYSB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBtdXhfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTAwMDAg fSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMTMgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4 MWY4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTk4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MTAwMDAgfSwKIAl7 IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAw NTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDVlNWMwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNDAgfSwKIAl7IF9NTUlP KDB4OTg4OCksIDB4MDdlNTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDAxNjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5 MDAxNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxNjMgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mjc5MDAxNjQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNjUgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MmI5MDAxNjYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNjcg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDAxNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzE5MDAxMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTc5MDAxMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCks IDB4MWY5MDgwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDM5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBpbnQKLWdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4 X2NvbmZpZ19tZW1vcnlfd3JpdGVzKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5k ZWRbXSA9IHsKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcy MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZjMmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4 MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2ZjNmEgfSwKLQl7IF9NTUlPKDB4 Mjc3YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2ZjOTIgfSwKLQl7 IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Zj YTIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCks IDB4MDAwN2ZjMzIgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlP KDB4Mjc5OCksIDB4MDAwN2ZjOWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGJmMDAgfSwK LQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwN2ZlNmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAw MGJmMDAgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwN2ZlN2EgfSwKLQl7IF9NTUlPKDB4Mjdh YyksIDB4MDAwMGJmMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg ZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHhlNDU4KSwg MHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAotCXsgX01NSU8o MHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAot CXsgX01NSU8oMHhlNDVjKSwgMHgwMDA4ODA3OCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgw ODcwOCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMGEwODkwOCB9LAotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQx YzgxNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTgxYzAxMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGU0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZWFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWM0ZTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzBiMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDA2YzAyMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzAwMGMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUx YmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwNDEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYxYzQyMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzQ0NDMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGExYzQ2NDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMxYzc2NDcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYzczNTcgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWMxYzAwMzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWExYzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxYzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE0Y2FhMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyYWEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDg0Y2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUwZjU1MTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTYyY2FhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAw YWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDdmZmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4MDIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDc5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NGI5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAw MDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWco c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCWNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqKnJlZ3MsCi0JCQkJaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwg MSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0JbisrOwotCi0JcmV0 dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2Nv bmZpZ19jb21wdXRlX2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmZhIH0sCi0J eyBfTU1JTygweDI3NzQpLCAweDAwMDBmZWZlIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdm ZmZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBmZWZkIH0sCi0JeyBfTU1JTygweDI3OTAp LCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmYmVmIH0sCi0JeyBfTU1J TygweDI3OTgpLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYmRmIH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2Nv bXB1dGVfbDNfY2FjaGVbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7 IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIw MDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAxMDExMDAgfSwKLQl7IF9NTUlPKDB4ZTQ1Yyks IDB4MDAyMDEyMDAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAzMDEzMDAgfSwKLQl7IF9NTUlP KDB4ZTY1YyksIDB4MDA0MDE0MDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgp LCAweDE2NmMwNzYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDNmOTAwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGU4MDIwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFjNGUwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDUxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NmM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVk IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNmM1ZTVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwMWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MWI4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFhMWNlMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDMwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NGMyYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMjgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlMGYxNTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTQwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE2MmMwYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmMw MGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTMzMzAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA1OTMwMDMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiOTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTU4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1 OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwMzBmIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ1OTAwMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTA0NDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdz LAotCQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJS QVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tu XSA9IG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfaGRjX2FuZF9z ZltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0 KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzE0KSwgMHgxMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgw MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgy Nzc0KSwgMHgwMDAwZmRmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAw MDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2 NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBf TU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUy IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDRmMDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgz NDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRmMTg4MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjRmMDhiYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRmMDAxYiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjZjMDAwYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTFjMTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjVjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxODVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRj MDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjgzMDVjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNzgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDA4MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjk4 ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTkwZmMwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAogCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAogCXsg X01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAogfTsKIAogc3RhdGljIGludAotZ2V0X2hkY19h bmRfc2ZfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkg IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgIGludCAqbGVucykKLXsKLQlp bnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2FuZF9z ZjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2hkY19hbmRfc2YpOwotCW4rKzsK LQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291 bnRlcl9jb25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9 LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgw MDAwYzNmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8oMHgy Nzg0KSwgMHgwMDAwYzdmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAotCXsg X01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDcw MCB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4KSwg MHgwMDAwMTQwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01NSU8o MHgyN2EwKSwgMHgwMDAwMTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9LAot CXsgX01NSU8oMHgyN2E4KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAw ZmQzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s Ci0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjN2I0MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYw MzQ0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYxMzQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYTRlYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjRmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjNTMyNyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTZjNTQyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMmEw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMjg1YiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDZjMDA1YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFi YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzYyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NDFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxODFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVjMTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDYwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzYxMDA0NCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDYxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYxMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDJhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRj YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1NCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBmNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxODJjMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmZjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Nzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDQyMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0YjkwMDAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAotfTsK LQotc3RhdGljIGludAotZ2V0X2wzXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkg ICAgaW50ICpsZW5zKQorZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdz LAorCQkgICAgICAgaW50ICpsZW5zKQogewogCWludCBuID0gMDsKIAogCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwogCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CiAKLQly ZWdzW25dID0gbXV4X2NvbmZpZ19sM18xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfbDNfMSk7CisJcmVnc1tuXSA9IG11eF9jb25maWdfdGVzdF9vYTsKKwlsZW5zW25dID0gQVJS QVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOwogCW4rKzsKIAogCXJldHVybiBuOwogfQogCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNfMltdID0g ewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgw MDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3 MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsgX01NSU8oMHgyNzc4KSwg MHgwMDAyODAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwODdmZiB9LAotCXsgX01NSU8o MHgyNzgwKSwgMHgwMDAyMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwOGZmZiB9LAot CXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwODAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAw YTdmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2Nv bmZpZ19sM18yW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1J TygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0s Ci0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAw MDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2 NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfbDNfMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjMDJlMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNDZjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYy MzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMzMyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDZjMzQyMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxODFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVjMTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjYxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzYy MDA0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjYyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTRjMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Mzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wzXzJfbXV4X2NvbmZpZyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5zKQoraW50IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfa2JsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlp bnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOworCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0gTlVMTDsKKwlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9IDA7CiAK LQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18yOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfbDNfMik7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18zW10gPSB7Ci0JeyBfTU1JTygweDI3 NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAw IH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAw eDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygw eDI3NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDI4MDAyIH0sCi0J eyBfTU1JTygweDI3N2MpLCAweDAwMDA4N2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDIw MDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDA4ZmZmIH0sCi0JeyBfTU1JTygweDI3ODgp LCAweDAwMDA4MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBhN2ZmIH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzNbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1 OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9N TUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18z W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmM0ZTgwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE0NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjMzNDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyNmMzMzIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NmMzNDJmIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MWI0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE0MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE4MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWMx ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NjA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjNjMwMDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNjMwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2NjMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA4MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmODAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQyIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAyIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfM19tdXhf Y29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAw OwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Mp IDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzM7Ci0JbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18zKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAg fSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGVm ZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDYwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGYzZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxl eF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0gewotCXsgX01NSU8o MHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAot CXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAx NTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVj KSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5k X3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZjM4MDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTQ0ZDA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIwZDAz YzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQwZDAzY2YgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjAwMDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQyZjA0ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyZjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0 YzAwOTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZDAwMjcgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA0ZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDBkNDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDIwZDgwM2YgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZDgwMjMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZjAwMTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAwZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyYzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDE5MDE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDE0ODUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBp bnQKLWdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnICoqcmVncywKLQkJCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8 IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZDsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmQpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfc2FtcGxlcltdID0gewotCXsgX01NSU8oMHgy NzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHg3MDgwMDAw MCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwg MHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwYzAwMCB9LAotCXsgX01NSU8o MHgyNzc0KSwgMHgwMDAwZTdmZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMzAwMCB9LAot CXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjlmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAw MGMwMCB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3RhdGljIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19zYW1wbGVyW10gPSB7Ci0JeyBf TU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAz IH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAw eDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygw eGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfc2FtcGxlcltd ID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE1MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNjE1MDAwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE2MDBhMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxNDM1MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM1MDAwNSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMjM2MDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDU1 MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjU1MDAwNSB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMjU2MDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJmNjAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjJmMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDA1MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDM1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBmYjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDBkYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxODJjMDAyOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJk NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzEzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTEzMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYzE0MDAxOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzE1NzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTE1MDA3OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MDE1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE2MjE4MCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjE2MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE3NDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjMzYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMzMzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDM0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNjM0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM1Nzg3MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDM1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM2MDA0MyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjM2MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM3 MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDUzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjUzMzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYzU0MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjU0ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU1NzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDU1NzgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU1MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjU2MDA0MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU2MDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjU3MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmY4 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0MzkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMDA2MCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3NhbXBsZXJf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgICAgaW50ICpsZW5zKQotewot CWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19zYW1wbGVy OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfc2FtcGxlcik7Ci0JbisrOwotCi0J cmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8o MHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwN2ZmZiB9LAot CXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAw OWZmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0 KSwgMHgwMDAwZWZmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzhjKSwgMHgwMDAwZjNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDAwMDAwMiB9 LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmRmZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZGxfMVtdID0gewotCXsg X01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAw MyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwg MHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8o MHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3RkbF8xW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEyMzIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTIwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMmY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGQ4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwM2EwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MGZmMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDk1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MTBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTE4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MTFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTIx ODgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTIxOWI1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MTM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzA4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMzA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MzA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzE4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlMzE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzE0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBjMzIxYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzIwMDMz IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzIwMDMxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMzIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlMzMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlNTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTA4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlNTE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTE4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNTE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTIxODgwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwNTIxYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy NTIwMDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwNTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTMxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDExOTBmZjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDRiOTAwMDYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAw YzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfdGRsXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAg ICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX3RkbF8xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGRsXzEp OwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGJfY291bnRlcl9jb25maWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAw MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcx MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdf dGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4 ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7 IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEw NTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1Yyks IDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4 X2NvbmZpZ190ZGxfMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjEyNGQ2MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMjMyMmU2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjUyNGQ2 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTRjMDAxNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBm ZTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA5NyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDExYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEyMWZiNyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDEyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzNTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDMwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjMxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMWI4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjMyMDAzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUw YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMjUyMWZiNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjUzNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDgwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0MzkwMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3RkbF8yX211eF9jb25maWcoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq KnJlZ3MsCi0JCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0K LQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxfMjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhf Y29uZmlnX3RkbF8yKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRyYVtdID0gewotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhf Y29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAzZTAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTI1MjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI5MjAzZTAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTJiMjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTJkMjAzZTAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDI0ZWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZWMw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDIyZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2EwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGE0YzAwNDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNmQgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDYxMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMTQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDYxMjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDQzMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQzMjE5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1 MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQ1MjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQ1MzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBhZjgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFjYzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGM4ZmIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU4ZjAwMDEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDZhYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJhZDQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDI5MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MjE5ODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDA5MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJi MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDBiMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMzEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDBkMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkMTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkMjE5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDBkMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAw MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDA0MjAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDAwYTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdz LAotCQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfZXh0cmE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBlW10g PSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0J eyBfTU1JTygweDI3NzApLCAweDAwMTAwMDMwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBm ZmY5IH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3N2Mp LCAweDAwMDBmZmZjIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1J TygweDI3ODQpLCAweDAwMDBmZmYzIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMTAwMTgwIH0s Ci0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmNmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAw MDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0sCi0JeyBfTU1JTygweDI3 OTgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZjNmIH0sCi19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3ZtZV9waXBl W10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgp LCAweDAwMDA4MDAzIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfdm1lX3BpcGVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTU4MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYTAwYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIx ODAyNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxODAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTQ5YTU4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY5YTAwYzAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTI5ODAyNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ5ODAwMDIg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTNmYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAyZjEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQyZjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE0Yzk1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAw MmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUw ZjU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTYyY2FhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwMGEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxOTMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgxYTI4YzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYTAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxMzMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxM2MwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDgxM2YwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxNzIw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgxN2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxODAwMzcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYxODA5NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxODAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQx ODMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRhZmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDZhZjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFjYzQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGNjYzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE4ZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGU4ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA4ZjAwMTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTZhY2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThhYzAwMGEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY5OTMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5YTI4 YzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA5YTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGE5M2YwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5M2YwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGE5N2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5N2EwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5ODA5NzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg5 ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDY5ODMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwZmYgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTE5MDAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwMjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4YTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDIgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF92bWVfcGlwZV9tdXhfY29uZmlnKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq KnJlZ3MsCi0JCQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX3ZtZV9waXBlOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfdm1lX3BpcGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGVzdF9vYVtdID0gewotCXsgX01N SU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwNCB9LAotCXsg X01NSU8oMHgyNzc0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAw MyB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwg MHgwMDAwMDAwNyB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzg4KSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZmNyB9LAot CXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAw ZmZjZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDEwMDA4MiB9LAotCXsgX01NSU8oMHgyNzlj KSwgMHgwMDAwZmZlZiB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDEwMDBjMiB9LAotCXsgX01N SU8oMHgyN2E0KSwgMHgwMDAwZmZlNyB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAwMSB9 LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmZlNyB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7Ci19OwotCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewotCXsg X01NSU8oMHg5ODg4KSwgMHgxMTgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAx MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZDgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDA0MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwN2U1NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQot c3RhdGljIGludAotZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkgICAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ190ZXN0X29hOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfdGVzdF9vYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLWludCBpOTE1X29hX3NlbGVj dF9tZXRyaWNfc2V0X2tibGd0MyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17 Ci0JZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9y ZWdzX2xlbiA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKLQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKLQotCXN3aXRjaCAoZGV2X3ByaXYtPnBl cmYub2EubWV0cmljc19zZXQpIHsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lDOgot CQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yZW5kZXJfYmFzaWNf bXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cywKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZF UigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMgc2V0 XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNo ZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2Vk IHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVk Ci0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3MgPQotCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwotCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX2Jh c2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQzoK LQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9iYXNp Y19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9CQVNJQ1wiIG1ldHJp YyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVh ZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWM7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpF KGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19j b21wdXRlX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVS X1BJUEVfUFJPRklMRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQln ZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCSAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAw KSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJF TkRFUl9QSVBFX1BST0ZJTEVcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1 c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0 IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNv IHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFM OwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3Vu dGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9w aXBlX3Byb2ZpbGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4 X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJv ZmlsZSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFEUzoK LQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3JlYWRz X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklW RVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JFQURTXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9yeV9y ZWFkcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVM6 Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X21lbW9yeV93cml0 ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlp ZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdf RFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBtZXRy aWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVx dWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVz OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0la RShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9h LmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf bWVtb3J5X3dyaXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0NPTVBV VEVfRVhURU5ERUQ6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0 X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCQlkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJN X0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0VYVEVO REVEXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJf c3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZl IGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2 ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfY29t cHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKLQotCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9l eHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9T SVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCXJldHVybiAwOwotCWNh c2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3By aXYsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25m aWcgZm9yIFwiQ09NUFVURV9MM19DQUNIRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5W QUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBh bmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAot CQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJu IC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0J CQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfY29t cHV0ZV9sM19jYWNoZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZs ZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2NhY2hl KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRjoKLQkJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfaGRjX2FuZF9zZl9tdXhfY29u ZmlnKGRldl9wcml2LAotCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJ CSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVy Zi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRh YmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkv KiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0J CQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNl IGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJ cmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn cyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfaGRj X2FuZF9zZik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVf Y29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmKTsKLQotCQlyZXR1cm4gMDsK LQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9Ci0JCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewot CQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18xXCIg bWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMg YWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4g YWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVu IHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMTsKLQkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ19sM18xKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQot CQkJZmxleF9ldV9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEpOwotCi0JCXJldHVybiAwOwot CWNhc2UgTUVUUklDX1NFVF9JRF9MM18yOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25m aWdzID0KLQkJCWdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0J CQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzJcIiBt ZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBh bHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBh ZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4g cmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18yOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX2wzXzIpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0J CQlmbGV4X2V1X2NvbmZpZ19sM18yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVu ID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMik7Ci0KLQkJcmV0dXJuIDA7Ci0J Y2FzZSBNRVRSSUNfU0VUX0lEX0wzXzM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPQotCQkJZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfM1wiIG1l dHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFs cmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFk dmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiBy ZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzM7Ci0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfbDNfMyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJ CWZsZXhfZXVfY29uZmlnX2wzXzM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18zKTsKLQotCQlyZXR1cm4gMDsKLQlj YXNlIE1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORDoKLQkJZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCi0JCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJN X0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSQVNURVJJWkVSX0FO RF9QSVhFTF9CQUNLRU5EXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3 b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBz aG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsK LQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRl cl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsK LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCXJldHVybiAwOwot CWNhc2UgTUVUUklDX1NFVF9JRF9TQU1QTEVSOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID0KLQkJCWdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAg ICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgICAgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmln cyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZv ciBcIlNBTVBMRVJcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9y ZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxk bid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3Vs ZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9 Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2Nv bmZpZ19zYW1wbGVyOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXIpOwotCi0JCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19zYW1wbGVyOwotCQlkZXZfcHJp di0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdf c2FtcGxlcik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8xOgotCQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF90ZGxfMV9tdXhfY29uZmln KGRldl9wcml2LAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkg ICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBl cmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0 YWJsZSBNVVggY29uZmlnIGZvciBcIlRETF8xXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJ TlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAq IGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5k Ci0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1 cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0K LQkJCWJfY291bnRlcl9jb25maWdfdGRsXzE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGRsXzEpOwotCi0J CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ190ZGxfMTsK LQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhf ZXVfY29uZmlnX3RkbF8xKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfVERM XzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3RkbF8yX211 eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Ms Ci0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIo Ik5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzJcIiBtZXRyaWMgc2V0XG4iKTsKLQot CQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhp cwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJz cGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8K LQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVy X3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMjsKLQkJZGV2X3ByaXYtPnBlcmYub2Eu Yl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZGxf Mik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmln X3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJ WkUoZmxleF9ldV9jb25maWdfdGRsXzIpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NF VF9JRF9DT01QVVRFX0VYVFJBOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0K LQkJCWdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0g MCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJD T01QVVRFX0VYVFJBXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpf cmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3Vs ZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91 bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJ fQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9j b25maWdfY29tcHV0ZV9leHRyYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRyYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9T SVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwotCi0JCXJldHVybiAwOwotCWNhc2Ug TUVUUklDX1NFVF9JRF9WTUVfUElQRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmln cyA9Ci0JCQlnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCWRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVu cyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURS TV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVk1FX1BJUEVcIiBt ZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBh bHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBh ZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4g cmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ192bWVfcGlwZTsK LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ192bWVfcGlwZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3ZtZV9waXBlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdm1lX3BpcGUpOwot Ci0JCXJldHVybiAwOworCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQpIHsK IAljYXNlIE1FVFJJQ19TRVRfSURfVEVTVF9PQToKIAkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf Y29uZmlncyA9CiAJCQlnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LApAQCAtMjQ0NSwz ODAgKzEzOCw2IEBAIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X2tibGd0MyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB9CiAKIHN0YXRpYyBzc2l6ZV90Ci1zaG93X3Jl bmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRS SUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9i YXNpY1tdID0gewotCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKLQlOVUxMLAotfTsK LQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0gewot CS5uYW1lID0gIjAyODZjOTIwLTJmNmQtNDkzYi1iMjJkLTdhNTI4MGRmNDNkZSIsCi0JLmF0dHJz ID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2NvbXB1 dGVfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9DT01QVVRFX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlIGRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1dGVfYmFzaWNfaWQsCi0JLnN0 b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRl X2Jhc2ljW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQuYXR0ciwKLQlOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9iYXNpYyA9 IHsKLQkubmFtZSA9ICI5ODIzYWFhMS1iMDZmLTQwY2UtODg0Yi1jZDc5OGM3OWYwYzIiLAotCS5h dHRycyA9ICBhdHRyc19jb21wdXRlX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3df cmVuZGVyX3BpcGVfcHJvZmlsZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVk XG4iLCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUpOwotfQotCi1zdGF0aWMgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCA9IHsK LQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3df cmVuZGVyX3BpcGVfcHJvZmlsZV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQkmZGV2X2F0 dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0gewotCS5uYW1l ID0gImM3YzczNWYzLWNlNTgtNDVjZi1hYTA0LTMwYjE4M2YxZmFmZiIsCi0JLmF0dHJzID0gIGF0 dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGUsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19tZW1v cnlfcmVhZHNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9NRU1PUllfUkVBRFMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19tZW1vcnlfcmVhZHNfaWQsCi0JLnN0b3Jl ID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlfcmVh ZHNbXSA9IHsKLQkmZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0K LXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV9yZWFkcyA9IHsKLQku bmFtZSA9ICI5NmVjMjIxOS0wNDBiLTQyOGEtODU2YS02YmMwMzM2M2EwNTciLAotCS5hdHRycyA9 ICBhdHRyc19tZW1vcnlfcmVhZHMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19tZW1vcnlf d3JpdGVzX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfTUVNT1JZX1dSSVRFUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSBkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19tZW1vcnlfd3JpdGVzX2lkLAotCS5zdG9y ZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5X3dy aXRlc1tdID0gewotCSZkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkLmF0dHIsCi0JTlVMTCwKLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV93cml0ZXMgPSB7 Ci0JLm5hbWUgPSAiMDMzNzJiNjQtNDk5Ni00ZDNiLWFhMTgtNzkwZTc1ZWViOWMyIiwKLQkuYXR0 cnMgPSAgYXR0cnNfbWVtb3J5X3dyaXRlcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2Nv bXB1dGVfZXh0ZW5kZWRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg TUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQgPSB7Ci0JLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1dGVfZXh0 ZW5kZWRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVfZXh0ZW5k ZWRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Z3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKLQkubmFtZSA9ICIzMWI0Y2U1YS1iZDYxLTRjMWYt YmI1ZC1mMmU3MzE0MTIxNTAiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4dGVuZGVkLAot fTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9sM19jYWNoZV9pZChzdHJ1Y3QgZGV2 aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewot CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FD SEUpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0 ZV9sM19jYWNoZV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQg fSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9sM19jYWNoZV9pZCwKLQkuc3RvcmUgPSBOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfbDNfY2FjaGVbXSA9 IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9sM19jYWNoZV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2wzX2NhY2hlID0gewot CS5uYW1lID0gIjJjZTA5MTFhLTI3ZmMtNDg4Ny05NmYwLTExMDg0ZmE4MDdjMyIsCi0JLmF0dHJz ID0gIGF0dHJzX2NvbXB1dGVfbDNfY2FjaGUsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19o ZGNfYW5kX3NmX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfSERDX0FORF9TRik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSBkZXZfYXR0cl9oZGNfYW5kX3NmX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5t b2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19oZGNfYW5kX3NmX2lkLAotCS5zdG9yZSA9IE5V TEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2FuZF9zZltdID0g ewotCSZkZXZfYXR0cl9oZGNfYW5kX3NmX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2hkY19hbmRfc2YgPSB7Ci0JLm5hbWUgPSAiNTQ2 YzRjMWQtOTliOC00MmZiLWExMDctNWFhYWJiNTMxNGE4IiwKLQkuYXR0cnMgPSAgYXR0cnNfaGRj X2FuZF9zZiwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzFfaWQoc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQly ZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18xKTsKLX0KLQotc3Rh dGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7Ci0JLmF0dHIg PSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzFfaWQs Ci0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19s M18xW10gPSB7Ci0JJmRldl9hdHRyX2wzXzFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMSA9IHsKLQkubmFtZSA9ICI0ZTkzZDE1 Ni05YjM5LTQyNjgtODU0NC1hOGUwNDgwODA2ZDciLAotCS5hdHRycyA9ICBhdHRyc19sM18xLAot fTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfMl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJp bnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzIpOwotfQotCi1zdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUg PSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMl9pZCwKLQkuc3RvcmUg PSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzJbXSA9IHsK LQkmZGV2X2F0dHJfbDNfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZV9ncm91cCBncm91cF9sM18yID0gewotCS5uYW1lID0gImRlMWJlYzg2LWNhOTItNGI0 My04OWZhLTE0NzY1MzIyMWNjMCIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzIsCi19OwotCi1zdGF0 aWMgc3NpemVfdAotc2hvd19sM18zX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAi JWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9sM18zX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5t b2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19sM18zX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfM1tdID0gewotCSZkZXZfYXR0 cl9sM18zX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGdyb3VwX2wzXzMgPSB7Ci0JLm5hbWUgPSAiZTYzNTM3YmItMTBiZS00ZDRhLTkyYzQtYzZi MGM2NWUwMmVmIiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfMywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90 Ci1zaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQoc3RydWN0IGRldmljZSAqa2Rl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4g c3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9C QUNLRU5EKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlk IiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2Jh Y2tlbmRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JJmRldl9hdHRyX3Jh c3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZCA9IHsKLQkubmFtZSA9ICI3YTAzYTlmOC1lYzVlLTQ2YmItOGI2Ny0xZjBmZjE0NzYyODEiLAot CS5hdHRycyA9ICBhdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kLAotfTsKLQotc3Rh dGljIHNzaXplX3QKLXNob3dfc2FtcGxlcl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1 ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1NBTVBMRVIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRl dmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfc2FtcGxlcl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUg PSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfc2FtcGxlcl9pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3NhbXBsZXJb XSA9IHsKLQkmZGV2X2F0dHJfc2FtcGxlcl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyID0gewotCS5uYW1lID0gImIyNWQy ZWJmLWE2ZTAtNGIyOS05NmJlLWE5YjAxMGVkZWVkYSIsCi0JLmF0dHJzID0gIGF0dHJzX3NhbXBs ZXIsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd190ZGxfMV9pZChzdHJ1Y3QgZGV2aWNlICpr ZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVy biBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8xKTsKLX0KLQotc3RhdGlj IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8xX2lkID0gewotCS5hdHRyID0g eyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd190ZGxfMV9pZCwK LQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3Rk bF8xW10gPSB7Ci0JJmRldl9hdHRyX3RkbF8xX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8xID0gewotCS5uYW1lID0gIjQ2OWEw NWU1LWUyOTktNDZmNy05NTk4LTdiMDVmM2MzNDk5MSIsCi0JLmF0dHJzID0gIGF0dHJzX3RkbF8x LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdGRsXzJfaWQoc3RydWN0IGRldmljZSAqa2Rl diwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4g c3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMik7Ci19Ci0KLXN0YXRpYyBz dHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMl9pZCA9IHsKLQkuYXR0ciA9IHsg Lm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfdGRsXzJfaWQsCi0J LnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZGxf MltdID0gewotCSZkZXZfYXR0cl90ZGxfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMiA9IHsKLQkubmFtZSA9ICI1MmY5MjVj Ni03ODZhLTRlYzYtODZjZS1jYmE4NWM4MzQ1M2EiLAotCS5hdHRycyA9ICBhdHRyc190ZGxfMiwK LX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2NvbXB1dGVfZXh0cmFfaWQoc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQly ZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVFJBKTsK LX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0 cmFfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X2NvbXB1dGVfZXh0cmFfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2V4dHJhW10gPSB7Ci0JJmRldl9hdHRy X2NvbXB1dGVfZXh0cmFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsKLQkubmFtZSA9ICJlZmM0OTdhYy04 ODRlLTRlZTQtYTRhOC0xNWZiYTIyYWFmMjEiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4 dHJhLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdm1lX3BpcGVfaWQoc3RydWN0IGRldmlj ZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQly ZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9WTUVfUElQRSk7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl92bWVfcGlwZV9pZCA9IHsK LQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3df dm1lX3BpcGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICphdHRyc192bWVfcGlwZVtdID0gewotCSZkZXZfYXR0cl92bWVfcGlwZV9pZC5hdHRyLAot CU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF92bWVfcGlw ZSA9IHsKLQkubmFtZSA9ICJiZmQ5NzY0ZC0yYzViLTRjMTYtYmZjMS04OWRlM2NhMTA5MTciLAot CS5hdHRycyA9ICBhdHRyc192bWVfcGlwZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90CiBzaG93X3Rl c3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0 dHIsIGNoYXIgKmJ1ZikKIHsKIAlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NF VF9JRF9URVNUX09BKTsKQEAgLTI4NDcsOTEgKzE2Niw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9z eXNmc19rYmxndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCBtdXhf bGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAlpbnQg cmV0ID0gMDsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JCWlmIChyZXQpCi0J CQlnb3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVf YmFzaWMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2Jhc2ljOwotCX0KLQlp ZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0JCWlmIChyZXQpCi0J CQlnb3RvIGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JfQotCWlmIChnZXRfbWVtb3J5X3Jl YWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0g c3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21l bW9yeV9yZWFkcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21lbW9yeV9yZWFkczsKLQl9 Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCQlpZiAocmV0KQotCQkJZ290byBl cnJvcl9tZW1vcnlfd3JpdGVzOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVh dGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRl bmRlZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7Ci0JfQot CWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQkJaWYgKHJldCkKLQkJCWdv dG8gZXJyb3JfY29tcHV0ZV9sM19jYWNoZTsKLQl9Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3Jl YXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2Yp OwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9oZGNfYW5kX3NmOwotCX0KLQlpZiAoZ2V0X2wz XzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNf MSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wzXzE7Ci0JfQotCWlmIChnZXRfbDNfMl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2Zz X2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsK LQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMjsKLQl9Ci0JaWYgKGdldF9sM18zX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3Jl YXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOwotCQlp ZiAocmV0KQotCQkJZ290byBlcnJvcl9sM18zOwotCX0KLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJfYW5k X3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkg ewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0JCWlmIChyZXQpCi0JCQln b3RvIGVycm9yX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JfQotCWlmIChnZXRfc2Ft cGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9 IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9z YW1wbGVyKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jfc2FtcGxlcjsKLQl9Ci0JaWYgKGdl dF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF90ZGxfMSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3RkbF8xOwotCX0KLQlpZiAoZ2V0 X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3RkbF8yKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzI7Ci0JfQotCWlmIChnZXRf Y29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7 Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9jb21wdXRlX2V4dHJhKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0 ZV9leHRyYTsKLQl9Ci0JaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF92bWVfcGlwZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3ZtZV9waXBlOwotCX0KIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewogCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CiAJCWlmIChyZXQpCkBA IC0yOTQxLDU3ICsxNzUsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfa2JsZ3QzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZXJyb3JfdGVzdF9v YToKLQlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF92bWVfcGlwZSk7Ci1lcnJvcl92bWVfcGlwZToKLQlpZiAoZ2V0X2NvbXB1dGVfZXh0 cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0 cmEpOwotZXJyb3JfY29tcHV0ZV9leHRyYToKLQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci1lcnJvcl90ZGxfMjoKLQlpZiAo Z2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxf MSk7Ci1lcnJvcl90ZGxfMToKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotZXJyb3Jfc2FtcGxlcjoKLQlpZiAoZ2V0 X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotZXJyb3JfcmFz dGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDoKLQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOwotZXJyb3JfbDNfMzoKLQlpZiAoZ2V0 X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzIpOwot ZXJyb3JfbDNfMjoKLQlpZiAoZ2V0X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2wzXzEpOwotZXJyb3JfbDNfMToKLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dy b3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwotZXJy b3JfaGRjX2FuZF9zZjoKLQlpZiAoZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotZXJyb3JfY29t cHV0ZV9sM19jYWNoZToKLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotZXJyb3JfY29t cHV0ZV9leHRlbmRlZDoKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotZXJyb3JfbWVtb3J5X3dy aXRlczoKLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKLWVycm9yX21lbW9yeV9yZWFkczoKLQlpZiAo Z2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotZXJyb3JfcmVuZGVyX3BpcGVfcHJvZmls ZToKLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOwotZXJyb3JfY29tcHV0ZV9iYXNpYzoKLQlpZiAo Z2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfcmVuZGVyX2Jhc2ljKTsKLWVycm9yX3JlbmRlcl9iYXNpYzoKIAlyZXR1cm4gcmV0OwogfQog CkBAIC0zMDAxLDQwICsxODQsNiBAQCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19rYmxndDMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyAqbXV4X3JlZ3NbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyldOwog CWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMp XTsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci0J aWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKLQlpZiAoZ2V0X21lbW9yeV9yZWFk c19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRz KTsKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRl ZCk7Ci0JaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQlpZiAoZ2V0X2hkY19hbmRfc2Zf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwot CWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQot CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bDNfMSk7Ci0JaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9sM18yKTsKLQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2wzXzMpOwotCWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0JaWYgKGdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3By aXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyKTsKLQlpZiAoZ2V0X3RkbF8xX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMSk7Ci0JaWYgKGdldF90 ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIpOwot CWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci0JaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwogCWlmIChnZXRfdGVzdF9v YV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQogCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CiB9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0Mi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDIuYwppbmRleCAxMjY4YmVkYTIxMmMuLmJh M2RhZTdiNDkzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xn dDIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0Mi5jCkBAIC0zMiwy ODI2ICszMiw3OSBAQAogI2luY2x1ZGUgImk5MTVfb2Ffc2tsZ3QyLmgiCiAKIGVudW0gbWV0cmlj X3NldF9pZCB7Ci0JTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAotCU1FVFJJQ19TRVRf SURfQ09NUFVURV9CQVNJQywKLQlNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUsCi0J TUVUUklDX1NFVF9JRF9NRU1PUllfUkVBRFMsCi0JTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJVEVT LAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRCwKLQlNRVRSSUNfU0VUX0lEX0NPTVBV VEVfTDNfQ0FDSEUsCi0JTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGLAotCU1FVFJJQ19TRVRfSURf TDNfMSwKLQlNRVRSSUNfU0VUX0lEX0wzXzIsCi0JTUVUUklDX1NFVF9JRF9MM18zLAotCU1FVFJJ Q19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCwKLQlNRVRSSUNfU0VUX0lEX1NB TVBMRVIsCi0JTUVUUklDX1NFVF9JRF9URExfMSwKLQlNRVRSSUNfU0VUX0lEX1RETF8yLAotCU1F VFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSwKLQlNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFLAotCU1F VFJJQ19TRVRfSURfVEVTVF9PQSwKKwlNRVRSSUNfU0VUX0lEX1RFU1RfT0EgPSAxLAogfTsKIAot aW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX3NrbGd0MiA9IDE4OworaW50IGk5MTVf b2Ffbl9idWlsdGluX21ldHJpY19zZXRzX3NrbGd0MiA9IDE7CiAKLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7IF9N TUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4 MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljW10g PSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAw eDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygw eGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0J eyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1 MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdf cmVuZGVyX2Jhc2ljXzFfc2t1X2d0ZV8weDAyW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2 NmMwMWUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMTcwMjgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEyMzcwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMzE3IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTMwM2RmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAz IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGUwMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhNmMwMDUzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMWI0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYx MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGM4NDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGYwNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlMGY2NjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE2MmMyMjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMTMzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTMzMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwMTcwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MTcwMDIxIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwMTcwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzNj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MzNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2MzcwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MzcwODQwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwMzcwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTMzMDMxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBmOTMzZTNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAx OTMzZDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzOTMwNzNjIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1OTMwMDBlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTMwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE5OTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFmOTAwMTU4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDJiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTA4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDJmOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDFmIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxOTA0NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQx OTAwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ1OTAwYzIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwMDYxIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDU3OTA0NDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDU5OTAwMDA0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDUzOTA0NDQ0IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVu ZGVyX2Jhc2ljX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgaW50ICpsZW5z KQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlpZiAoZGV2X3ByaXYtPmRybS5wZGV2 LT5yZXZpc2lvbiA+PSAweDAyKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3JlbmRlcl9iYXNp Y18xX3NrdV9ndGVfMHgwMjsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5k ZXJfYmFzaWNfMV9za3VfZ3RlXzB4MDIpOwotCQluKys7Ci0JfQotCi0JcmV0dXJuIG47Ci19Ci0K LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRl X2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAw MDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwK LQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAw MDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDA3NzgwMDggfSwKLQl7IF9NTUlPKDB4ZTQ1 YyksIDB4MDAwODgwNzggfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwKLQl7IF9N TUlPKDB4ZTY1YyksIDB4MDBhMDg5MDggfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljXzBfc2xpY2VzXzB4MDFfYW5kX3NrdV9s dF8weDAyW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwNGYwMGUwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEyNGYxYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMGUwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM3OTA2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAx NDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhNGU4MjAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwNGYwZGIyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGYwOTAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NGYxODgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NGYwMDExIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGYwZTNjIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlNGYxZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmMwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhNmMwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNmMwMDBj IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNmMwMDBiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4MWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMWI4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWI0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFjMWMwMDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwNWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NWI4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA4NWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNWJjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlNWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNWM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhNWNhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNWMwMDJk IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhNGMwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMDgyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA4NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGRhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY1NDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw MGYwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmNjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlMmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MmNiZTAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE4MmMwMGVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmNjMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE5OTAwMTU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTAwMTY3IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFkOTAwMTA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTAzIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweGQyOCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDBmZmYgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4NDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4NDIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4NDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDExMTEgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljXzBfc2xpY2VzXzB4MDFf YW5kX3NrdV9ndGVfMHgwMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDRmMDBlMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmMWMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzZjkwMTQwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTRlMDgyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmMDkwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODRmMDAzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRmMTgxMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzRmMGUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRmMDAzYyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDRmMGQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRmMDAz YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwODZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjMDAwYyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTZjMGIwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODZjMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZj MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFiNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFjODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YzFjMDAyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjViODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTViYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzViODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTViNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDViODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVjNjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYzVjMDAxYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzRjMDIwOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTQwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTBmNTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1 NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjZmIwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxODJjMDBiZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJjYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkw MDE1NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwMDE2NyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDkwMDEwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDEwMyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMGZmZiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0NTkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDgwMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDgw MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0YjkwMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MzkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMTExMSB9LAot fTsKLQotc3RhdGljIGludAotZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyAqKnJlZ3MsCi0JCQkgICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAyKTsKLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDIp OwotCi0JaWYgKChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zbGljZV9tYXNrICYgMHgwMSkg JiYKLQkgICAgKGRldl9wcml2LT5kcm0ucGRldi0+cmV2aXNpb24gPCAweDAyKSkgewotCQlyZWdz W25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2Jhc2ljXzBfc2xpY2VzXzB4MDFfYW5kX3NrdV9sdF8w eDAyOwotCQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNfMF9z bGljZXNfMHgwMV9hbmRfc2t1X2x0XzB4MDIpOwotCQluKys7Ci0JfQotCWlmICgoSU5URUxfSU5G TyhkZXZfcHJpdiktPnNzZXUuc2xpY2VfbWFzayAmIDB4MDEpICYmCi0JCSAgIChkZXZfcHJpdi0+ ZHJtLnBkZXYtPnJldmlzaW9uID49IDB4MDIpKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2Nv bXB1dGVfYmFzaWNfMF9zbGljZXNfMHgwMV9hbmRfc2t1X2d0ZV8weDAyOwotCQlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNfMF9zbGljZXNfMHgwMV9hbmRfc2t1 X2d0ZV8weDAyKTsKLQkJbisrOwotCX0KLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtd ID0gewotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8o MHgyNzEwKSwgMHgwMDAwMDAwMCB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBi X2NvdW50ZXJfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKIAl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCks IDB4MDAwMDdmZmMgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2FmZmEgfSwKLQl7IF9NTUlP KDB4Mjc3YyksIDB4MDAwMGY1ZmQgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwNzlmZmEgfSwK LQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMGYzZmIgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAw N2JmN2EgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGY3ZTcgfSwKLQl7IF9NTUlPKDB4Mjc5 MCksIDB4MDAwN2ZlZmEgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGY3Y2YgfSwKLQl7IF9N TUlPKDB4Mjc5OCksIDB4MDAwNzdmZmEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGVmZGYg fSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4MDAwNmZmZmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4 MDAwMGNmYmYgfSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwM2ZmZmEgfSwKLQl7IF9NTUlPKDB4 MjdhYyksIDB4MDAwMDVmN2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCXsgX01NSU8oMHhl NDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsg X01NSU8oMHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAz NCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwg MHgwMDA1NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2Zp bGVfMF9za3VfbHRfMHgwMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBlMDAxZiB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYTBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDEx NjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzhhMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgyNGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAyMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMzg0MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg1MDAxOSB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg2MDAwNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MTg3MGM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzg4MDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjJmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjBlNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBlMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwODBmMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBmMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBm MDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjEwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExMDAxMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjEzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg5ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg5MDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Mzg5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgwODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYjgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgwYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZjhhMDA3NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDhhMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMThhODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYjhhNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzhhODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxZDgxYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgxODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjgy MDAzMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZDgyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNTgyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDgzMDAwMyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzMDAwYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw OTgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNzgzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0MDk4MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMzg0NGQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg0MDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwOTg1MDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg1MDAwMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMTg1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg2MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjg2MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg3 MDAzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg4ODA1MiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTg4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4NDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTk2ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzk2ODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjk2YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx Zjk1MDAxMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDAxNCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNTkyYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkyODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZDkyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkyNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMzkyYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkyNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMTk4NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzk4ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwOTk4MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjk4 MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDk4MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjk4OTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTk4MjAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy NTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNzkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjk3ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjk3NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTk3 NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzk3ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwOTk3NDAwMCB9LAotCXsgX01NSU8oMHhkMjgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDExOTBjMDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAxMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1 OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAxMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ3OTAwMDg0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTA0NDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ5OTAwMGE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDRiOTAwMDgxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQzOTAxNGE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwNDAwIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmVuZGVyX3Bp cGVfcHJvZmlsZV8wX3NrdV9ndGVfMHgwMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBl MDAxZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDExNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzhhMDNlMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMTgyNGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgzMDAyMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzg0MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MTg1MDAxOSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTg2MDAwNyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMTg3MGM0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzg4MDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjJmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDBkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjBlNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBlMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwODBmMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBm MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTBmMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjEwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExMDAxMiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MTg5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDg5MDEwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMzg5ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYjgwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgwYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjhhMDA3NSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZDhhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMThhODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYjhhNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzhhODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTgx ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYjgyMDAzMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgyODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZDgyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDgzMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgzMDAwYyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwOTgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgzODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNzgzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjg0MDk4 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg0NGQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMTg0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg0ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwOTg1MDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzg1MDAwMyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMTg1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzg2 MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjg2MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwOTg3MDAzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTg4ODA1MiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMTg4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTg4NDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMTAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZDkzMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjk1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDA5NCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxOTk1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNWU1YTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMWU1YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNTkyYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjkyODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZDkyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjkyNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzky YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTkyNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTk4NTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzk4ODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwOTk4MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYjk4MjAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDk4MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Zjk4OTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTk4MjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyMzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNTkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgyOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgyZjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkw ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYjkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwYzA4MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMTBhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 NTkwMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDA4NCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1NzkwNDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDBhNSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA4MSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMTRhNCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDQwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3JlbmRlcl9waXBl X3Byb2ZpbGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0J CQkJICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQkgICBpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMik7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAyKTsKLQotCWlmIChkZXZfcHJpdi0+ZHJtLnBkZXYt PnJldmlzaW9uIDwgMHgwMikgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9w cm9maWxlXzBfc2t1X2x0XzB4MDI7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf cmVuZGVyX3BpcGVfcHJvZmlsZV8wX3NrdV9sdF8weDAyKTsKLQkJbisrOwotCX0KLQlpZiAoZGV2 X3ByaXYtPmRybS5wZGV2LT5yZXZpc2lvbiA+PSAweDAyKSB7Ci0JCXJlZ3Nbbl0gPSBtdXhfY29u ZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVfMF9za3VfZ3RlXzB4MDI7Ci0JCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZV8wX3NrdV9ndGVfMHgwMik7Ci0J CW4rKzsKLQl9Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBiX2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8oMHgyNzJj KSwgMHhmZmZmZmZmZiB9LAotCXsgX01NSU8oMHgyNzI4KSwgMHhmZmZmZmZmZiB9LAotCXsgX01N SU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzFjKSwgMHhmZmZmZmZmZiB9LAotCXsgX01NSU8oMHgyNzE4KSwgMHhm ZmZmZmZmZiB9LAogCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAogCXsgX01NSU8oMHgy NzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzRjKSwgMHg4NjU0MzIxMCB9LAotCXsg X01NSU8oMHgyNzQ4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwNjY2 NyB9LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzVjKSwg MHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8o MHgyNzU0KSwgMHgwMDAwNjQ2NSB9LAotCXsgX01NSU8oMHgyNzUwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZjgxYSB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAw ZmUwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9LAotCXsgX01NSU8oMHgyNzdj KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3Zjg3MiB9LAotCXsgX01N SU8oMHgyNzg0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZjhiYSB9 LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgw MDA3Zjg3YSB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgy Nzk4KSwgMHgwMDA3ZjhlYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmUwMCB9LAotCXsg X01NSU8oMHgyN2EwKSwgMHgwMDA3ZjhlMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmUw MCB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAotCXsgX01NSU8oMHgyN2FjKSwg MHgwMDAwZmUwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4 X2V1X2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUw MDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCks IDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlP KDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwK LQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNfMF9zbGljZXNfMHgwMV9hbmRf c2t1X2x0XzB4MDJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTBjMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTM4MTAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5NDYwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 M2Y5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MTEzMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDU4MTFiMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMWEgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4MTAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWI4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGY5NjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5NmMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5NjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5 MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5M2ZlMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDE5NDAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5NDExMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDk5NDEzMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5NDE1MTQg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5NDE3MTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTE5NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5NDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWI5NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWI5NTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5NWE1 NTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5NTAyYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MmY5MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5 MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MjM5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4Mjc5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MmQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4ZDI4KSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Nzkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV9yZWFkc18wX3NrdV9sdF8weDA1X2Fu ZF9za3VfZ3RlXzB4MDJbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTBjMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTM4MTAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5NDYw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5NDAwMTYgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4MTEzMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDU4MTFiMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MTAwMWEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4 MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTk5MzA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5M2FhNTUg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDE5NDAwMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5NDExMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDk5NDEzMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5NDE1MTQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGQ5NDE3MTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5NDAw MTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTE5NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDFlNTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDNlNTcwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5 MDAxMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTM5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MjM5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 Mjk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MmQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMjAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5 MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA0MjEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA0MjEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDM5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNfMF9za3Vf Z3RlXzB4MDVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTBjMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTM4MTAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDY4MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwNjQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4 MTEzMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MTFiMTIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4MTAwMWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTc4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWQ4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDNlNTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAx NTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDAxNTEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjM5MDAxNTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDAxNTMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4Mjc5MDAxNTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNTUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDAxNTYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5 MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmY5MDAxNWYgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzE5MDAxMDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTc5MDAxMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWY5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBj NjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjNjMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5 MDAwNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0K LXN0YXRpYyBpbnQKLWdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVn cywKLQkJCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMyk7Ci0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAzKTsKLQotCWlm ICgoSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc2xpY2VfbWFzayAmIDB4MDEpICYmCi0JICAg IChkZXZfcHJpdi0+ZHJtLnBkZXYtPnJldmlzaW9uIDwgMHgwMikpIHsKLQkJcmVnc1tuXSA9IG11 eF9jb25maWdfbWVtb3J5X3JlYWRzXzBfc2xpY2VzXzB4MDFfYW5kX3NrdV9sdF8weDAyOwotCQls ZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV9yZWFkc18wX3NsaWNlc18weDAx X2FuZF9za3VfbHRfMHgwMik7Ci0JCW4rKzsKLQl9Ci0JaWYgKChkZXZfcHJpdi0+ZHJtLnBkZXYt PnJldmlzaW9uIDwgMHgwNSkgJiYKLQkJICAgKGRldl9wcml2LT5kcm0ucGRldi0+cmV2aXNpb24g Pj0gMHgwMikpIHsKLQkJcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRzXzBfc2t1X2x0 XzB4MDVfYW5kX3NrdV9ndGVfMHgwMjsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z19tZW1vcnlfcmVhZHNfMF9za3VfbHRfMHgwNV9hbmRfc2t1X2d0ZV8weDAyKTsKLQkJbisrOwot CX0KLQlpZiAoZGV2X3ByaXYtPmRybS5wZGV2LT5yZXZpc2lvbiA+PSAweDA1KSB7Ci0JCXJlZ3Nb bl0gPSBtdXhfY29uZmlnX21lbW9yeV9yZWFkc18wX3NrdV9ndGVfMHgwNTsKLQkJbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfcmVhZHNfMF9za3VfZ3RlXzB4MDUpOwotCQlu Kys7Ci0JfQotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Ci0JeyBfTU1JTygweDI3MmMp LCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjgpLCAweGZmZmZmZmZmIH0sCiAJeyBfTU1J TygweDI3MjQpLCAweGYwODAwMDAwIH0sCiAJeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTgpLCAweGZm ZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NGMpLCAweDg2NTQzMjEwIH0sCi0JeyBf TU1JTygweDI3NDgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwMDA2NjY3 IH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NWMpLCAw eDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygw eDI3NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBfTU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBm ZTAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0sCi0JeyBfTU1JTygweDI3N2Mp LCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDdmODIyIH0sCi0JeyBfTU1J TygweDI3ODQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0s Ci0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAw MDdmODdhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3 OTgpLCAweDAwMDdmOGVhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTAwIH0sCi0JeyBf TU1JTygweDI3YTApLCAweDAwMDdmOGUyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAw IH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAw eDAwMDBmZTAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhf ZXVfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUw MDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTY1OCks IDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwKLQl7IF9NTUlP KDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTUwNTQgfSwK LQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzXzBfc2xpY2VzXzB4MDFfYW5k X3NrdV9sdF8weDAyW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDExODEwYzAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEzODEwMDFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzOTQ1NDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTA2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDNmOTAxNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODExMzAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA1ODExYjEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDFhIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODEw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5ODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFiODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODEwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBmOTY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTZjMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEzOTY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEx OTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTNmZTAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAxOTQwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OTQxMTAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA5OTQxMzEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTQxNTE0 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTQxNzE2IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDExOTQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTQwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiOTQwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTQwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFiOTU0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTVh NTUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTUwMmFhIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDJmOTAwMTY3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTAwMTA1IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE1OTAwMTAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTAwMTAxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEz OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDIzOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1OTA4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDI3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI5OTA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDJkOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTA4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCi0JeyBfTU1JTygweGQyOCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4 MDAwMDAwMDQgfSwKKwl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4 Mjc3OCksIDB4MDAwMDAwMDMgfSwKKwl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDAwMDAgfSwKKwl7 IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDcgfSwKKwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDAw MDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4Yyks IDB4MDAwMGZmZjcgfSwKKwl7IF9NTUlPKDB4Mjc5MCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlP KDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKKwl7IF9NTUlPKDB4Mjc5OCksIDB4MDAxMDAwODIgfSwK Kwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmZWYgfSwKKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAx MDAwYzIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZmZTcgfSwKKwl7IF9NTUlPKDB4Mjdh OCksIDB4MDAxMDAwMDEgfSwKKwl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZmZTcgfSwKIH07CiAK LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVz XzBfc2t1X2x0XzB4MDVfYW5kX3NrdV9ndGVfMHgwMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwg MHgxMTgxMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMzk0NTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgx MTMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNzgxMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNzgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx ZDgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkzMDgwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjkzYWE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkzMDAyYSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMTk0MDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzk0MTEw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTk0MTMxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYjk0MTUxNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDk0MTcxNiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYjk0MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTk0MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMWU1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwM2U1 NzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZjkwMDE2NyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzMTkwMDEwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkwMDEwMyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNzkwMDEwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy MTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgyNTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgyOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMyMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDQwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NzkwMDQyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDQyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7CiB9OwogCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbWVtb3J5X3dyaXRlc18wX3NrdV9ndGVfMHgwNVtd ID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMzgxMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzZjkwMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgx MDAxYSB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Rlc3Rf b2FbXSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4MTAwMTYgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTc4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MTAwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4 MWQ4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDNlNTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwKKwl7 IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MjE5MDAxNjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDAxNjIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MjU5MDAxNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNjQgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5 MDAxNjYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNjcgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MmY5MDAxNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ5MDgwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKIAl7 IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDBjMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDc5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9tZW1vcnlf d3JpdGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMp Ci17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MpIDwgMyk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAzKTsKLQotCWlmICgoSU5URUxfSU5GTyhkZXZfcHJp diktPnNzZXUuc2xpY2VfbWFzayAmIDB4MDEpICYmCi0JICAgIChkZXZfcHJpdi0+ZHJtLnBkZXYt PnJldmlzaW9uIDwgMHgwMikpIHsKLQkJcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3dyaXRl c18wX3NsaWNlc18weDAxX2FuZF9za3VfbHRfMHgwMjsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUo bXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzXzBfc2xpY2VzXzB4MDFfYW5kX3NrdV9sdF8weDAyKTsK LQkJbisrOwotCX0KLQlpZiAoKGRldl9wcml2LT5kcm0ucGRldi0+cmV2aXNpb24gPCAweDA1KSAm JgotCQkgICAoZGV2X3ByaXYtPmRybS5wZGV2LT5yZXZpc2lvbiA+PSAweDAyKSkgewotCQlyZWdz W25dID0gbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzXzBfc2t1X2x0XzB4MDVfYW5kX3NrdV9ndGVf MHgwMjsKLQkJbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzXzBf c2t1X2x0XzB4MDVfYW5kX3NrdV9ndGVfMHgwMik7Ci0JCW4rKzsKLQl9Ci0JaWYgKGRldl9wcml2 LT5kcm0ucGRldi0+cmV2aXNpb24gPj0gMHgwNSkgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19t ZW1vcnlfd3JpdGVzXzBfc2t1X2d0ZV8weDA1OwotCQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhf Y29uZmlnX21lbW9yeV93cml0ZXNfMF9za3VfZ3RlXzB4MDUpOwotCQluKys7Ci0JfQotCi0JcmV0 dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2Nv bmZpZ19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAw IH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAw eGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmYzJhIH0sCi0J eyBfTU1JTygweDI3NzQpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdm YzZhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3ODAp LCAweDAwMDdmYzkyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1J TygweDI3ODgpLCAweDAwMDdmY2EyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBiZjAwIH0s Ci0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmYzMyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAw MDBiZjAwIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmYzlhIH0sCi0JeyBfTU1JTygweDI3 OWMpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMDdmZTZhIH0sCi0JeyBf TU1JTygweDI3YTQpLCAweDAwMDBiZjAwIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmZTdh IH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBiZjAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1 OCksIDB4MDA3NzgwMDggfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwODgwNzggfSwKLQl7IF9N TUlPKDB4ZTU1YyksIDB4MDA4MDg3MDggfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDBhMDg5MDgg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21w dXRlX2V4dGVuZGVkXzBfc3Vic2xpY2VzXzB4MDFbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTA2YzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgxNjAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTYxYzgwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzAxMjAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWE0ZWFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGU2YzBiMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAyMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDI2YzAwMGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWE2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYzQy MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzQ0NDMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGExYzQ2NDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYzc2NDcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQxYzczNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMzAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEx YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Y2FhMmEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGM0YzAyYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2EwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1MTUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYy Y2FhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4ZDI4KSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwN2ZmZiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDA0MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDgw MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDg0MiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2NvbXB1dGVfZXh0ZW5kZWRf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAw OwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Mp IDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucykgPCAxKTsKLQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGlj ZV9tYXNrICYgMHgwMSkgewotCQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVk XzBfc3Vic2xpY2VzXzB4MDE7Ci0JCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29t cHV0ZV9leHRlbmRlZF8wX3N1YnNsaWNlc18weDAxKTsKLQkJbisrOwotCX0KLQotCXJldHVybiBu OwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9sM19jYWNoZVtdID0gewotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzE0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDA3ZmZmYSB9LAotCXsgX01N SU8oMHgyNzc0KSwgMHgwMDAwZmVmZSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDA3ZmZmYSB9 LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmVmZCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgw MDA3ZmZmYSB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmJlZiB9LAotCXsgX01NSU8oMHgy Nzk4KSwgMHgwMDA3ZmZmYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmJkZiB9LAotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRl X2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1J TygweGU1NTgpLCAweDAwMDAwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0s Ci0JeyBfTU1JTygweGU3NTgpLCAweDAwMTAxMTAwIH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAw MjAxMjAwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMzAxMzAwIH0sCi0JeyBfTU1JTygweGU2 NWMpLCAweDAwNDAxNDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNoZVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgx NjZjMDc2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNTkzMDAxZSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzZjkwMTQwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODRlODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlODAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYzRlMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDA1MSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjZjNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODZjNWM1ZCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjNWU1ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDFiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZTFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDFjODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTFjZTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMmEw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDI4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBm MTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE0MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNjJjMGEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzkzMzMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NTkzMDAzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYjkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDE1NyB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxZjkwMDE2NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDMwZiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkw MDA0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MzkwMTExMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMCB9LAotfTsKLQotc3RhdGlj IGludAotZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJ CQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2Nv bmZpZ19jb21wdXRlX2wzX2NhY2hlKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2ZbXSA9 IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4 MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxNCksIDB4MTA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAw MDIgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZkZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsg X01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAw MyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwg MHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8o MHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2hkY19hbmRf c2ZbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAyMzIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTI0ZjQ2NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAyMzIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE4MzQ0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDA0ZjE4ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjA4YmIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ0ZjAwMWIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzAxMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDY2YzAwMGIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzE4MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDA1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YmMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1 YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTY1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg1YzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGE0YzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMwZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDIyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyY2Mw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MjgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4MzA1YzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4 MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ5NTAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MjgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY5ODgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4 Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NGI5MDAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4 NDIgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDAwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKIH07CiAKIHN0 YXRpYyBpbnQKLWdldF9oZGNfYW5kX3NmX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAotCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJ ICBpbnQgKmxlbnMpCitnZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms CisJCSAgICAgICBpbnQgKmxlbnMpCiB7CiAJaW50IG4gPSAwOwogCiAJQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CiAJQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKIAotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX2hkY19hbmRfc2Y7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4 X2NvbmZpZ19oZGNfYW5kX3NmKTsKKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWxl bnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7CiAJbisrOwogCiAJcmV0dXJu IG47CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZp Z19sM18xW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygw eDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzAp LCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1J TygweDI3NzgpLCAweDAwMDE0MDAyIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDBjM2ZmIH0s Ci0JeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAw MDBjN2ZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDA0MDAyIH0sCi0JeyBfTU1JTygweDI3 OGMpLCAweDAwMDBkM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMTAwNzAwIH0sCi0JeyBf TU1JTygweDI3OTQpLCAweDAwMDBmZjFmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDAxNDAy IH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYzNmIH0sCi0JeyBfTU1JTygweDI3YTApLCAw eDAwMDAxMDAyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzdmIH0sCi0JeyBfTU1JTygw eDI3YTgpLCAweDAwMDAwNDAyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBmZDNmIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzFb XSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCks IDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlP KDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwK LQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAw NTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z19sM18xW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmM3YjQwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE2NmMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjAzNDQ0IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhNjEzNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNGVh ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 NGY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNmM1MzI3IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlNmM1NDI1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMyYTAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyNmMyODViIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NmMwMDVj IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFhNmMwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWJjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMWI4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDNjIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEyMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNWMxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwNjAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NjAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNjEwMDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwNjEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NjEwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjNGMwMmE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGNhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGRh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTU0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MGY1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE4MmMwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDExOTBmZmMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQ5OTAwNDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDRiOTAwMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwNDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUz OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCi19OwotCi1zdGF0aWMg aW50Ci1nZXRfbDNfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICBpbnQgKmxl bnMpCitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0cmljX3NldF9za2xndDIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ19sM18xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdf bDNfMSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkx NV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18yW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0J eyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAw MDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygweDI3NzQp LCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDI4MDAyIH0sCi0JeyBfTU1J TygweDI3N2MpLCAweDAwMDA4N2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDIwMDAyIH0s Ci0JeyBfTU1JTygweDI3ODQpLCAweDAwMDA4ZmZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAw MDA4MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBhN2ZmIH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzJbXSA9IHsKLQl7IF9N TUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMg fSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4 MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4 ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19sM18yW10gPSB7 Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmMwMmUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0 NmMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjIzNDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyNmMzMzI0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NmMzNDIyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MWJj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE2MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MWM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFhMWMwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NWI0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFhNWMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 NjE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNjIwMDQ0IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEwNjIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NjIwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4NGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJh IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMGY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDExOTBmODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQz OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQ1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19Owot Ci1zdGF0aWMgaW50Ci1nZXRfbDNfMl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAg ICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX2wzXzI7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18yKTsK LQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBiX2NvdW50ZXJfY29uZmlnX2wzXzNbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGZmZjEgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMjgwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMDg3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMjAwMDIgfSwKLQl7IF9N TUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwMDgwMDIg fSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGE3ZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfM1tdID0gewotCXsgX01NSU8oMHhl NDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsg X01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAx NCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwg MHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzNbXSA9IHsKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTI2YzRlODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ2YzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MzM0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQ0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI2YzMz MjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzM0MmYgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTA2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzIwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxYmMwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQx YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTgxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzE4MDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDY2MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM2MzAwNDQg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDY2MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0YzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGE0YzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGUwZjAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMy YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9sM18zX211eF9jb25maWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnICoqcmVncywKLQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9C VUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlM RF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEp OwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbDNfMzsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX2wzXzMpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZFtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzE0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcw KSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZWZmZiB9LAotCXsgX01N SU8oMHgyNzc4KSwgMHgwMDAwNjAwMCB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjNmZiB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19y YXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAw MDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2 NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBf TU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUy IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZFtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJmMzgwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNDRkMDUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjBkMDNjMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNDBkMDNjZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmMDAwNCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDJmMDQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJmMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjJmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA5MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjRkMDAyNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRkMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMGQ0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjBkODAzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkODAyMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDBkMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjBmMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBm MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 MTkwMTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMTQ4NSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkJCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJB WV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdz W25dID0gbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCWxlbnNbbl0g PSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0J bisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg Yl9jb3VudGVyX2NvbmZpZ19zYW1wbGVyW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDcwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMDBjMDAwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDBlN2ZmIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAzMDAwIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmOWZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwYzAwIH0sCi0JeyBf TU1JTygweDI3ODQpLCAweDAwMDBmZTdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3NhbXBsZXJbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCks IDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlP KDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwK LQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAw NTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyW10gPSB7Ci0JeyBfTU1J TygweDk4ODgpLCAweDE0MTUyYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MTUwMDA1IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTYwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0 MzUyYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MzUwMDA1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDEyMzYwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NTUyYzAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE2NTUwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTYwMGEw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmY2MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyMmYyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMDUwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhNGMwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwMGYwMzUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGZiMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMGRhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4 MmMwMDI4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyMmRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmQ0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBjMTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMTMyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjMTQwMDE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMTU3MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlMTUwMDc4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMTUwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MTYyMTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTYw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTc0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyMzNhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzMzMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE0MzQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MzQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyMzU3ODcwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw MzUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzYwMDQzIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyMzYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzcxMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlNTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTMzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFjNTQwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTQ4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlNTU3MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTU3ODAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwNTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTYw MDQzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NTcxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmZjgwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMz OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQxOTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQy IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ1OTAwMDYwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfc2FtcGxlcl9tdXhfY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwot Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwg MSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3NhbXBsZXI7Ci0JbGVuc1tuXSA9 IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19zYW1wbGVyKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3RkbF8x W10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQp LCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAw MDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZmIH0sCi0JeyBfTU1JTygweDI3 NzgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDA5ZmZmIH0sCi0JeyBf TU1JTygweDI3ODApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBlZmZm IH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3OGMpLCAw eDAwMDBmM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygw eDI3OTQpLCAweDAwMDBmZGZmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8xW10gPSB7Ci0JeyBfTU1JTygweGU0NTgp LCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1J TygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0s Ci0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAw MDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzFbXSA9IHsKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTIxMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAy ZjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGE0YzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTAwZjAzYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZmYwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwOTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGUyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyZDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQx MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQxMWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMjE4ODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQxMjE5YjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxMjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQxMzUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGUzMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMzMTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMTQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMzMjFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMjAwMzMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYzMjAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUz MzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGU1MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDI1MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MTgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDI1MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MjE4ODAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDA1MjFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MjAwMzMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU1MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MzQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTE5MGZmODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDk5MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5 MDAwNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwNDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdl dF90ZGxfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJ ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgIGludCAqbGVucykK LXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfdGRs XzE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMSk7Ci0JbisrOwotCi0J cmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ190ZGxfMltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotfTsKLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZGxfMltdID0gewot CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01N SU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3RkbF8y W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTI0ZDYwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEyMzIyZTYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTI0ZDYwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMmYzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDE0IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGZlMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlMGYwMDk3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwMmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA0MTBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTFjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA0MTIxZmI3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTIw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMzA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzA0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMzE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzE0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAwMzIxYjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MzIwMDNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzM0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MzMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTBjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyNTFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTIxZmI3 IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyNTM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmYzAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAw MDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ1OTAwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1z dGF0aWMgaW50Ci1nZXRfdGRsXzJfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAg ICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX3RkbF8yOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGRsXzIp OwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRyYVtdID0gewotCXsgX01NSU8oMHgyNzQw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgw MDgwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19jb21wdXRlX2V4dHJhW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDAxMDAw IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDAzMDAyIH0sCi0JeyBfTU1JTygweGU2NTgpLCAw eDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDExMDEwIH0sCi0JeyBfTU1JTygw eGU0NWMpLCAweDAwMDUwMDEyIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUyMDUxIH0sCi0J eyBfTU1JTygweGU2NWMpLCAweDAwMDAwMDA4IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9leHRyYVtdID0gewotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjEyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjMyMDNlMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMjUyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTBmMDA2YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjEyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjEzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDMyMTk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDMzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDUxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUyMDAz MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDUzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkw MDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkg ICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfY29tcHV0ZV9leHRyYTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29u ZmlnX2NvbXB1dGVfZXh0cmEpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdm1lX3BpcGVbXSA9IHsKLQl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc3MCksIDB4MDAxMDAwMzAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZmZjkgfSwK LQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAw MGZmZmMgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4 NCksIDB4MDAwMGZmZjMgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAxODAgfSwKLQl7IF9N TUlPKDB4Mjc4YyksIDB4MDAwMGZmY2YgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIg fSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4 MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmM2YgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdm1lX3BpcGVbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MDgwMDMgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z192bWVfcGlwZVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhNTgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNjFhMDBjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE4MDI0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE4MDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NDNhNTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjNhMDBjMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjM4MDI0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDM4MDAwMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJmMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDRjNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMTUwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBk YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBmMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmOTUwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDBmMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NjJjMGEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJkYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzJkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE5MzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwODFhMjhjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFhMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEzMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjEzYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODEzZjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDE3MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3ODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwODE3YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE4 MDAzNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjE4MDk0MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODE4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjE4MDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNDE4MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM5MzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzNhMjhjMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDNhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTMzZjAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzMzZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM3YTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzM3YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTM4MDk3 NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDM4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjM4MzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMTkwMDBmZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzkwMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0OTkwMDg0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0 X3ZtZV9waXBlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCWludCAqbGVucykKLXsKLQlp bnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfdm1lX3BpcGU7 Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ192bWVfcGlwZSk7Ci0JbisrOwotCi0J cmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVy X2NvbmZpZ190ZXN0X29hW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDA0IH0sCi0JeyBfTU1J TygweDI3NzQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAzIH0s Ci0JeyBfTU1JTygweDI3N2MpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAw MDAwMDA3IH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 ODgpLCAweDAwMTAwMDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmY3IH0sCi0JeyBf TU1JTygweDI3OTApLCAweDAwMTAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNm IH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMTAwMDgyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAw eDAwMDBmZmVmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMTAwMGMyIH0sCi0JeyBfTU1JTygw eDI3YTQpLCAweDAwMDBmZmU3IH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMTAwMDAxIH0sCi0J eyBfTU1JTygweDI3YWMpLCAweDAwMDBmZmU3IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZXN0X29hW10gPSB7Ci0JeyBfTU1J TygweDk4ODgpLCAweDExODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDE2IH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFk ODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDQwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA3ZTU0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDExOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1zdGF0 aWMgaW50Ci1nZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAg ICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0g PSBtdXhfY29uZmlnX3Rlc3Rfb2E7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190 ZXN0X29hKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotaW50IGk5MTVfb2Ffc2VsZWN0X21l dHJpY19zZXRfc2tsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVncyA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPSBOVUxMOwotCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPSAwOwotCi0Jc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5v YS5tZXRyaWNzX3NldCkgewotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6Ci0JCWRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3JlbmRlcl9iYXNpY19tdXhf Y29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAot CQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3By aXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJO byBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIp OwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tl ZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8g dXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJ CSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYzsKLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9 Ci0JCQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWMp OwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDOgotCQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRl dl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZF UigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0JBU0lDXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYzsKLQkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9j b3VudGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpYzsKLQkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1 dGVfYmFzaWMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfUElQ RV9QUk9GSUxFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9y ZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsK LQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkVOREVS X1BJUEVfUFJPRklMRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAq X3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291 bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hv dWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0J CX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVf cHJvZmlsZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVf Y29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn c19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxl KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTOgotCQlk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9tZW1vcnlfcmVhZHNfbXV4 X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywK LQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigi Tm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1PUllfUkVBRFNcIiBtZXRyaWMgc2V0XG4i KTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNr ZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRv IHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0J CQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHM7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfbWVtb3J5X3JlYWRzKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Mg PQotCQkJZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRz KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTUVNT1JZX1dSSVRFUzoKLQkJ ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3dyaXRlc19t dXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklW RVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1dSSVRFU1wiIG1ldHJpYyBz ZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfbWVtb3J5X3dyaXRlcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0JCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19tZW1v cnlfd3JpdGVzKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9F WFRFTkRFRDoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29t cHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCWRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzLAotCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwot CQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVC VUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhURU5ERURc IiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNm cyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJl ZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRl X2V4dGVuZGVkOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVu ZGVkOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo ZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBN RVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEU6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4 X2NvbmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwK LQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBm b3IgXCJDT01QVVRFX0wzX0NBQ0hFXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBi ZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBz byBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkg KiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJ TlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJf Y291bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRl X2wzX2NhY2hlKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9l dV9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGOgotCQlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9oZGNfYW5kX3NmX211eF9jb25maWco ZGV2X3ByaXYsCi0JCQkJCQkgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJICBk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9h Lm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUg TVVYIGNvbmZpZyBmb3IgXCJIRENfQU5EX1NGXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJ TlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAq IGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5k Ci0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1 cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0K LQkJCWJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5k X3NmKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25m aWdfaGRjX2FuZF9zZjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2YpOwotCi0JCXJldHVybiAwOwotCWNh c2UgTUVUUklDX1NFVF9JRF9MM18xOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdz ID0KLQkJCWdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlE Uk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzFcIiBtZXRy aWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJl YWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZl cnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVx dWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18xOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX2wzXzEpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlm bGV4X2V1X2NvbmZpZ19sM18xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0K LQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2Fz ZSBNRVRSSUNfU0VUX0lEX0wzXzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PQotCQkJZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVu cyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURS TV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfMlwiIG1ldHJp YyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVh ZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzI7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRl cl9jb25maWdfbDNfMik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZs ZXhfZXVfY29uZmlnX2wzXzI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18yKTsKLQotCQlyZXR1cm4gMDsKLQljYXNl IE1FVFJJQ19TRVRfSURfTDNfMzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 Ci0JCQlnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJN X0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18zXCIgbWV0cmlj IHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0 aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMzsKLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVy X2NvbmZpZ19sM18zKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxl eF9ldV9jb25maWdfbDNfMzsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0J CQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzMpOwotCi0JCXJldHVybiAwOwotCWNhc2Ug TUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EOgotCQlkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNr ZW5kX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKLQkJCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwot CQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVC VUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJBU1RFUklaRVJfQU5EX1BJ WEVMX0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9y ZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxk bid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3Vs ZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9 Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2Nv bmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn cyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9j b25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2Fz ZSBNRVRSSUNfU0VUX0lEX1NBTVBMRVI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZp Z3MgPQotCQkJZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgICAgIGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09 IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwi U0FNUExFUlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lz dGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3Qg aGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0 IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmln X3NhbXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfc2FtcGxlcik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3NhbXBsZXI7Ci0JCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19zYW1w bGVyKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfVERMXzE6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3RkbF8xX211eF9jb25maWcoZGV2 X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICAg ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5v YS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxl IE1VWCBjb25maWcgZm9yIFwiVERMXzFcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFM IGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5k IHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJ CSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAt RUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJ Yl9jb3VudGVyX2NvbmZpZ190ZGxfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZGxfMSk7Ci0KLQkJZGV2 X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3RkbF8xOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9j b25maWdfdGRsXzEpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9URExfMjoK LQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfdGRsXzJfbXV4X2Nv bmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJ CQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8g c3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkv KiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0J CQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNl IGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJ cmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVn cyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8yKTsK LQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfdGRs XzI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShm bGV4X2V1X2NvbmZpZ190ZGxfMik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lE X0NPTVBVVEVfRVhUUkE6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJ Z2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBV VEVfRVhUUkFcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0 IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0K LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZp Z19jb21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwotCi0JCWRl dl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4 dHJhOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo ZmxleF9ldV9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRS SUNfU0VUX0lEX1ZNRV9QSVBFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0K LQkJCWdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCi0JCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK LQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RF QlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJWTUVfUElQRVwiIG1ldHJp YyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVh ZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVy dGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1 ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVy Zi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBlOwotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2Nv dW50ZXJfY29uZmlnX3ZtZV9waXBlKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Mg PQotCQkJZmxleF9ldV9jb25maWdfdm1lX3BpcGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ192bWVfcGlwZSk7CisJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9j b3VudGVyX3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xl biA9IDA7CisJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+ cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKIAotCQlyZXR1cm4gMDsKKwlzd2l0Y2ggKGRldl9w cml2LT5wZXJmLm9hLm1ldHJpY3Nfc2V0KSB7CiAJY2FzZSBNRVRSSUNfU0VUX0lEX1RFU1RfT0E6 CiAJCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQogCQkJZ2V0X3Rlc3Rfb2FfbXV4 X2NvbmZpZyhkZXZfcHJpdiwKQEAgLTI4ODQsMzgwICsxMzcsNiBAQCBpbnQgaTkxNV9vYV9zZWxl Y3RfbWV0cmljX3NldF9za2xndDIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog fQogCiBzdGF0aWMgc3NpemVfdAotc2hvd19yZW5kZXJfYmFzaWNfaWQoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1 cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMpOwotfQot Ci1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX2Jhc2ljX2lk ID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0g c2hvd19yZW5kZXJfYmFzaWNfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJfYmFzaWNbXSA9IHsKLQkmZGV2X2F0dHJfcmVuZGVy X2Jhc2ljX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dy b3VwIGdyb3VwX3JlbmRlcl9iYXNpYyA9IHsKLQkubmFtZSA9ICJmNTE5ZTQ4MS0yNGQyLTRkNDIt ODdjOS0zZmRkMTJjMDAyMDIiLAotCS5hdHRycyA9ICBhdHRyc19yZW5kZXJfYmFzaWMsCi19Owot Ci1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2Jhc2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJQyk7Ci19Ci0K LXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2Jhc2ljX2lk ID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0g c2hvd19jb21wdXRlX2Jhc2ljX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9iYXNpY1tdID0gewotCSZkZXZfYXR0cl9jb21w dXRlX2Jhc2ljX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIGdyb3VwX2NvbXB1dGVfYmFzaWMgPSB7Ci0JLm5hbWUgPSAiZmU0N2IyOWQtYWU1MS00 MjNlLWJmZjQtMjdkOTY1YTk1YjYwIiwKLQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9iYXNpYywK LX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQoc3RydWN0 IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikK LXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SRU5ERVJfUElQ RV9QUk9GSUxFKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRy X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1v ZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQsCi0JLnN0 b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19yZW5kZXJf cGlwZV9wcm9maWxlW10gPSB7Ci0JJmRldl9hdHRyX3JlbmRlcl9waXBlX3Byb2ZpbGVfaWQuYXR0 ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVu ZGVyX3BpcGVfcHJvZmlsZSA9IHsKLQkubmFtZSA9ICJlMGFkNWFlMC04NGJhLTRmMjktYTcyMy0x OTA2YzEyY2I3NzQiLAotCS5hdHRycyA9ICBhdHRyc19yZW5kZXJfcGlwZV9wcm9maWxlLAotfTsK LQotc3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3JlYWRzX2lkKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTKTsKLX0KLQot c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX21lbW9yeV9yZWFkc19pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfbWVtb3J5X3JlYWRzX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5X3JlYWRzW10gPSB7Ci0JJmRldl9hdHRyX21lbW9yeV9y ZWFkc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBncm91cF9tZW1vcnlfcmVhZHMgPSB7Ci0JLm5hbWUgPSAiOWJjNDM2ZGQtNjEzMC00YWRkLWFm ZmMtMjgzZWI2ZWFhODY0IiwKLQkuYXR0cnMgPSAgYXR0cnNfbWVtb3J5X3JlYWRzLAotfTsKLQot c3RhdGljIHNzaXplX3QKLXNob3dfbWVtb3J5X3dyaXRlc19pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklURVMpOwotfQotCi1z dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3dyaXRlc19pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfbWVtb3J5X3dyaXRlc19pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV93cml0ZXNbXSA9IHsKLQkmZGV2X2F0dHJfbWVtb3J5 X3dyaXRlc19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9n cm91cCBncm91cF9tZW1vcnlfd3JpdGVzID0gewotCS5uYW1lID0gIjJlYTBkYThmLTM1MjctNDY2 OS05ZDlkLTEzMDk5YTc0MzViZiIsCi0JLmF0dHJzID0gIGF0dHJzX21lbW9yeV93cml0ZXMsCi19 OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2V4dGVuZGVkX2lkKHN0cnVjdCBkZXZp Y2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0J cmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRF RCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRl X2V4dGVuZGVkX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9 LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2V4dGVuZGVkX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9leHRlbmRlZFtdID0g ewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dGVuZGVkX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQgPSB7Ci0J Lm5hbWUgPSAiZDk3ZDE2YWYtMDI4Yi00Y2QxLWE2NzItNjIxMGNiNTUxM2RkIiwKLQkuYXR0cnMg PSAgYXR0cnNfY29tcHV0ZV9leHRlbmRlZCwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2Nv bXB1dGVfbDNfY2FjaGVfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg TUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZp Y2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfbDNfY2FjaGVfaWQgPSB7Ci0JLmF0dHIgPSB7 IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1dGVfbDNf Y2FjaGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyc19jb21wdXRlX2wzX2NhY2hlW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVfbDNfY2Fj aGVfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg Z3JvdXBfY29tcHV0ZV9sM19jYWNoZSA9IHsKLQkubmFtZSA9ICI5ZmIyMjg0Mi1lNzA4LTQzZjct OTc1Mi1lMGU0MTY3MGMzOWUiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2wzX2NhY2hlLAot fTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfaGRjX2FuZF9zZl9pZChzdHJ1Y3QgZGV2aWNlICpr ZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVy biBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0hEQ19BTkRfU0YpOwotfQotCi1z dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfaGRjX2FuZF9zZl9pZCA9IHsK LQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3df aGRjX2FuZF9zZl9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHJzX2hkY19hbmRfc2ZbXSA9IHsKLQkmZGV2X2F0dHJfaGRjX2FuZF9zZl9pZC5h dHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9o ZGNfYW5kX3NmID0gewotCS5uYW1lID0gIjUzNzhlMmExLTQyNDgtNDE4OC1hNGFlLWRhMjVhNzk0 YzYwMyIsCi0JLmF0dHJzID0gIGF0dHJzX2hkY19hbmRfc2YsCi19OwotCi1zdGF0aWMgc3NpemVf dAotc2hvd19sM18xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfTDNfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBk ZXZfYXR0cl9sM18xX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0 NCB9LAotCS5zaG93ID0gc2hvd19sM18xX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfMVtdID0gewotCSZkZXZfYXR0cl9sM18xX2lk LmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3Vw X2wzXzEgPSB7Ci0JLm5hbWUgPSAiZjQyY2RkNmEtYjAwMC00MmNiLTg3MGYtNWViNDIzYTdmNTE0 IiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfMSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wz XzJfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9J RF9MM18yKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wz XzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X2wzXzJfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICphdHRyc19sM18yW10gPSB7Ci0JJmRldl9hdHRyX2wzXzJfaWQuYXR0ciwKLQlO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMiA9IHsK LQkubmFtZSA9ICJiOWJmMjQyMy1kODhjLTRhN2ItYTA1MS02Mjc2MTFkMDBkY2MiLAotCS5hdHRy cyA9ICBhdHRyc19sM18yLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfM19pZChzdHJ1 Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVm KQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzMpOwot fQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfM19pZCA9IHsK LQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3df bDNfM19pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHJzX2wzXzNbXSA9IHsKLQkmZGV2X2F0dHJfbDNfM19pZC5hdHRyLAotCU5VTEwsCi19Owot Ci1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18zID0gewotCS5uYW1lID0g IjI0MTRhOTNkLWQ4NGYtNDA2ZS05OWMwLTQ3MjE2MTE5NGI0MCIsCi0JLmF0dHJzID0gIGF0dHJz X2wzXzMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9i YWNrZW5kX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3Qg ZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lk ID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0g c2hvd19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19 OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZFtdID0gewotCSZkZXZfYXR0cl9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX2lk LmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3Vw X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQgPSB7Ci0JLm5hbWUgPSAiNTNhNDVkMmQtMTcw Yi00Y2Y1LWI3YmItNTg1MTIwYzhlMmY1IiwKLQkuYXR0cnMgPSAgYXR0cnNfcmFzdGVyaXplcl9h bmRfcGl4ZWxfYmFja2VuZCwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3NhbXBsZXJfaWQo c3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg KmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9TQU1Q TEVSKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3NhbXBs ZXJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNo b3cgPSBzaG93X3NhbXBsZXJfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyc19zYW1wbGVyW10gPSB7Ci0JJmRldl9hdHRyX3NhbXBsZXJfaWQu YXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBf c2FtcGxlciA9IHsKLQkubmFtZSA9ICJiNGNmZjUxNC1hOTFlLTQ3OTgtYTBiMy00MjZjYTEzZmM5 YzEiLAotCS5hdHRycyA9ICBhdHRyc19zYW1wbGVyLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNo b3dfdGRsXzFfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9URExfMSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl90ZGxfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQg fSwKLQkuc2hvdyA9IHNob3dfdGRsXzFfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190ZGxfMVtdID0gewotCSZkZXZfYXR0cl90ZGxfMV9p ZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91 cF90ZGxfMSA9IHsKLQkubmFtZSA9ICI3ODIxZDEzYi05YjhiLTQ0MDUtOTYxOC03OGNkNTZiNjJj Y2UiLAotCS5hdHRycyA9ICBhdHRyc190ZGxfMSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93 X3RkbF8yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19T RVRfSURfVERMXzIpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0 dHJfdGRsXzJfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0s Ci0JLnNob3cgPSBzaG93X3RkbF8yX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzJbXSA9IHsKLQkmZGV2X2F0dHJfdGRsXzJfaWQu YXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBf dGRsXzIgPSB7Ci0JLm5hbWUgPSAiODkzZjFhNGQtOTE5ZC00Mzg4LThjYjctNzQ2ZDczZWE3MjU5 IiwKLQkuYXR0cnMgPSAgYXR0cnNfdGRsXzIsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19j b21wdXRlX2V4dHJhX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19jb21wdXRlX2V4dHJhX2lkLAot CS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29t cHV0ZV9leHRyYVtdID0gewotCSZkZXZfYXR0cl9jb21wdXRlX2V4dHJhX2lkLmF0dHIsCi0JTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfZXh0 cmEgPSB7Ci0JLm5hbWUgPSAiNDFhMjQwNDctNzQ4NC00ZWFkLWFlMzctZGU5MDdlNWZmMmIyIiwK LQkuYXR0cnMgPSAgYXR0cnNfY29tcHV0ZV9leHRyYSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1z aG93X3ZtZV9waXBlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfVk1FX1BJUEUpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgZGV2X2F0dHJfdm1lX3BpcGVfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1v ZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3ZtZV9waXBlX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdm1lX3BpcGVbXSA9IHsKLQkm ZGV2X2F0dHJfdm1lX3BpcGVfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdm1lX3BpcGUgPSB7Ci0JLm5hbWUgPSAiOTU5MTA0OTItOTQz Zi00NGJkLTk0NjEtMzkwMjQwZjI0M2ZkIiwKLQkuYXR0cnMgPSAgYXR0cnNfdm1lX3BpcGUsCi19 OwotCi1zdGF0aWMgc3NpemVfdAogc2hvd190ZXN0X29hX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYs IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCiB7CiAJcmV0dXJuIHNw cmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVEVTVF9PQSk7CkBAIC0zMjg2LDkxICsx NjUsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfc2tsZ3QyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAlpbnQgbXV4X2xlbnNbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKV07CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoZ2V0X3JlbmRlcl9i YXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9 IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9y ZW5kZXJfYmFzaWMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yZW5kZXJfYmFzaWM7Ci0J fQotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8g ZXJyb3JfY29tcHV0ZV9iYXNpYzsKLQl9Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9w aXBlX3Byb2ZpbGUpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yZW5kZXJfcGlwZV9wcm9m aWxlOwotCX0KLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVhZHMpOwotCQlpZiAocmV0KQotCQkJ Z290byBlcnJvcl9tZW1vcnlfcmVhZHM7Ci0JfQotCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfd3Jp dGVzKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbWVtb3J5X3dyaXRlczsKLQl9Ci0JaWYg KGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotCQlpZiAocmV0KQotCQkJZ290byBl cnJvcl9jb21wdXRlX2V4dGVuZGVkOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9s M19jYWNoZSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfbDNfY2FjaGU7Ci0J fQotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jf aGRjX2FuZF9zZjsKLQl9Ci0JaWYgKGdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJv cl9sM18xOwotCX0KLQlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wz XzI7Ci0JfQotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9sM18zKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMzsK LQl9Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmQpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9yYXN0ZXJpemVyX2FuZF9waXhl bF9iYWNrZW5kOwotCX0KLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYt PnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3NhbXBsZXI7Ci0JfQotCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3By aXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwotCQlpZiAocmV0KQotCQkJZ290 byBlcnJvcl90ZGxfMTsKLQl9Ci0JaWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci0JCWlmIChyZXQpCi0JCQlnb3Rv IGVycm9yX3RkbF8yOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci0JCWlm IChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0cmE7Ci0JfQotCWlmIChnZXRfdm1lX3Bp cGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBz eXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1l X3BpcGUpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl92bWVfcGlwZTsKLQl9CiAJaWYgKGdl dF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKIAkJ cmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3Rlc3Rfb2EpOwogCQlpZiAocmV0KQpAQCAtMzM4MCw1NyArMTc0LDYgQEAgaTkxNV9wZXJm X3JlZ2lzdGVyX3N5c2ZzX3NrbGd0MihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJcmV0dXJuIDA7CiAKIGVycm9yX3Rlc3Rfb2E6Ci0JaWYgKGdldF92bWVfcGlwZV9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwotZXJyb3Jfdm1l X3BpcGU6Ci0JaWYgKGdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKLWVycm9yX2NvbXB1dGVfZXh0cmE6Ci0J aWYgKGdldF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQot CQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf dGRsXzIpOwotZXJyb3JfdGRsXzI6Ci0JaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2 LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzEpOwotZXJyb3JfdGRsXzE6Ci0JaWYgKGdldF9z YW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVy KTsKLWVycm9yX3NhbXBsZXI6Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2Fu ZF9waXhlbF9iYWNrZW5kKTsKLWVycm9yX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ6Ci0J aWYgKGdldF9sM18zX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9s M18zKTsKLWVycm9yX2wzXzM6Ci0JaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9sM18yKTsKLWVycm9yX2wzXzI6Ci0JaWYgKGdldF9sM18xX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKLWVycm9yX2wz XzE6Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9oZGNfYW5kX3NmKTsKLWVycm9yX2hkY19hbmRfc2Y6Ci0JaWYgKGdldF9jb21w dXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9j b21wdXRlX2wzX2NhY2hlKTsKLWVycm9yX2NvbXB1dGVfbDNfY2FjaGU6Ci0JaWYgKGdldF9jb21w dXRlX2V4dGVuZGVkX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9j b21wdXRlX2V4dGVuZGVkKTsKLWVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ6Ci0JaWYgKGdldF9tZW1v cnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1v cnlfd3JpdGVzKTsKLWVycm9yX21lbW9yeV93cml0ZXM6Ci0JaWYgKGdldF9tZW1vcnlfcmVhZHNf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7 Ci1lcnJvcl9tZW1vcnlfcmVhZHM6Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxl KTsKLWVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU6Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsK LWVycm9yX2NvbXB1dGVfYmFzaWM6Ci0JaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci1lcnJvcl9yZW5k ZXJfYmFzaWM6CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzQ0MCw0MCArMTgzLDYgQEAgaTkxNV9w ZXJmX3VucmVnaXN0ZXJfc3lzZnNfc2tsZ3QyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKm11eF9yZWdzW0FSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpXTsKIAlpbnQgbXV4X2xlbnNbQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKV07CiAKLQlpZiAoZ2V0X3JlbmRlcl9iYXNpY19t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsK LQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOwotCWlmIChnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJv ZmlsZSk7Ci0JaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX21lbW9yeV9yZWFkcyk7Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfd3JpdGVzKTsK LQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotCWlmIChnZXRfY29tcHV0ZV9sM19jYWNo ZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19j YWNoZSk7Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9oZGNfYW5kX3NmKTsKLQlpZiAoZ2V0X2wzXzFfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotCWlmIChnZXRfbDNfMl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci0JaWYgKGdldF9sM18z X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92 ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18zKTsKLQlpZiAo Z2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCWlmIChn ZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlz eXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfc2Ft cGxlcik7Ci0JaWYgKGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfdGRsXzEpOwotCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKLQlpZiAoZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2Nv bmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3Vw KGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0cmEpOwotCWlm IChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3ZtZV9waXBlKTsKIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKIAkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX3Rlc3Rfb2EpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9za2xndDMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2ts Z3QzLmMKaW5kZXggNzc2NWUyMmRmYTE3Li5lM2MyZWIzNGMyOGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ffc2tsZ3QzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9vYV9za2xndDMuYwpAQCAtMzIsMjM4NiArMzIsODAgQEAKICNpbmNsdWRlICJpOTE1 X29hX3NrbGd0My5oIgogCiBlbnVtIG1ldHJpY19zZXRfaWQgewotCU1FVFJJQ19TRVRfSURfUkVO REVSX0JBU0lDID0gMSwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfQkFTSUMsCi0JTUVUUklDX1NF VF9JRF9SRU5ERVJfUElQRV9QUk9GSUxFLAotCU1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTLAot CU1FVFJJQ19TRVRfSURfTUVNT1JZX1dSSVRFUywKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhU RU5ERUQsCi0JTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFLAotCU1FVFJJQ19TRVRfSURf SERDX0FORF9TRiwKLQlNRVRSSUNfU0VUX0lEX0wzXzEsCi0JTUVUUklDX1NFVF9JRF9MM18yLAot CU1FVFJJQ19TRVRfSURfTDNfMywKLQlNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVM X0JBQ0tFTkQsCi0JTUVUUklDX1NFVF9JRF9TQU1QTEVSLAotCU1FVFJJQ19TRVRfSURfVERMXzEs Ci0JTUVUUklDX1NFVF9JRF9URExfMiwKLQlNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkEsCi0J TUVUUklDX1NFVF9JRF9WTUVfUElQRSwKLQlNRVRSSUNfU0VUX0lEX1RFU1RfT0EsCisJTUVUUklD X1NFVF9JRF9URVNUX09BID0gMSwKIH07CiAKLWludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNf c2V0c19za2xndDMgPSAxODsKK2ludCBpOTE1X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19za2xn dDMgPSAxOwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25m aWdfcmVuZGVyX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3MTQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZs ZXhfZXVfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAw NTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4 KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01N SU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9 LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9iYXNpY1tdID0gewotCXsgX01NSU8o MHg5ODg4KSwgMHgxNjZjMDFlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE3MDI4MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMjM3MDI4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNmVj MDFlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkzMDMxNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNTkzMDNkZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMDAwMyB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYTRlMDM4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTZjMDA1MyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTFiNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYzFjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDJmMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjODQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzRjMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBm MDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNjYwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMDBmMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNjJjYTIwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDEzMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODEzMzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDE3MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE3MDAyMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDE3MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODMzYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjM3MDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODM3MDg0MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMDM3MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYWNlMDIwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYWVjNTMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMGVj MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxY2VjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTliODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzljMDAwMiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwY2NjMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYThkODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDhmMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NmFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDkzMzAzMSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjkzM2UzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMTkzM2QwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMzkzMDczYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNTkzMDAw ZSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxOTkzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxZDkwMDE1NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwMDE1OCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkw ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyZjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAzZiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTkwNzcxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMjBhMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMTUxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDUy OSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMTAyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NzkwNzc3MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMjEwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDEwOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkw MDAwNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMjEwOCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1MzkwNzc3NyB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3JlbmRlcl9iYXNpY19tdXhf Y29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9 IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn cykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfcmVuZGVyX2Jhc2ljOwot CWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQluKys7Ci0K LQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50 ZXJfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0gewotCXsgX01NSU8oMHhlNDU4 KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAotCXsgX01N SU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9 LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA4ODA3OCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgw MDgwODcwOCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMGEwODkwOCB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVfYmFzaWNbXSA9IHsK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTA0ZjAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI0 ZjFjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mzc5MDY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTA4MjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDY0ZjA5MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZjAwMzIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGE0ZjE4OTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZjBlMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU0ZjAwM2MgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZjBk ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZjAwM2IgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDA2YzAwMDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg2YzAxMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGM2YzAwMGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU2YzBiMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTg2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM2 YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDAxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYjgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGMxYjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYjgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWExYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMjQgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDY1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg1YjQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE1YmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM1Yjgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1YjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDA1YjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1YjQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MWE1YzYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM1YzAwMWIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ1 YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGE0YzIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0YzAyMDggfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZDIwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGMwZjU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyY2MwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTYyY2ZiMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYmUgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyY2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQy Y2MwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI5MDAxNTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxMDUgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MWY5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDBmZmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA4MDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4NjMgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDBjNjIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDMzMzMgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9j b21wdXRlX2Jhc2ljX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQg KmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29u ZmlnX2NvbXB1dGVfYmFzaWM7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19jb21w dXRlX2Jhc2ljKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsK LQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAw MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcx MCksIDB4MDAwMDAwMDAgfSwKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3Vu dGVyX2NvbmZpZ190ZXN0X29hW10gPSB7CiAJeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmVhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDA3ZmZjIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdhZmZhIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmNWZkIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDc5ZmZhIH0sCi0JeyBf TU1JTygweDI3ODQpLCAweDAwMDBmM2ZiIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdiZjdh IH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmN2U3IH0sCi0JeyBfTU1JTygweDI3OTApLCAw eDAwMDdmZWZhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmN2NmIH0sCi0JeyBfTU1JTygw eDI3OTgpLCAweDAwMDc3ZmZhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBlZmRmIH0sCi0J eyBfTU1JTygweDI3YTApLCAweDAwMDZmZmZhIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBj ZmJmIH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMDNmZmZhIH0sCi0JeyBfTU1JTygweDI3YWMp LCAweDAwMDA1ZjdmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZs ZXhfZXVfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCks IDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlP KDB4ZTY1OCksIDB4MDAwMjUwMjQgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMzUwMzQgfSwK LQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNDUwNDQgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAw NTUwNTQgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNjUwNjQgfSwKLX07Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDBjMGUwMDFmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMTE2ODAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE3OGEwM2UwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODI0YzAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDExODMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODQw MDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODUwMDE5IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExODYwMDA3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODcwYzQwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE3ODgwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmY0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGQ0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGU1NDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMGUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGYwMDQw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEwMGYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDQwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTA0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MTEwMDEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MTMx MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODk4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBkODkwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODk4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA5ODA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODA4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAzODBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBm OGEwMDc1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOGEwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDExOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOGE0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEzOGE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODFhMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1ODE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE3ODE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiODIwMDMwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3ODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODI0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODI0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkODMwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA1ODMwMDBjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODMwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAzODM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBiODQwOTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAz ODQ0ZDgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODQwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA5ODQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODUwMDgwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAzODUwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxODUwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmODYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODcwMDMyIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAxODg4MDUyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODgwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA5ODg0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMx MDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE5OTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTU4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFkOTUwMDk0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTU4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA5ZTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBi ZTU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzZTVjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1OTJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTI4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBkOTI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTI0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDEzOTJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5OTI0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAxOTg1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3OTg4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA5OTgxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBiOTgy MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTgyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBmOTg5MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTgyMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTA0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDIzOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI1 OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDI5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJiOTA0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDJmOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE1OTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE3OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFiOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBjMDgwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDUxOTAxMTUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAx NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTA1MTExIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQ1OTAxNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwNGE1IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU3OTAzNDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMz OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMGEwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDU5OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDA1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDUzOTAwNDU1IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVuZGVy X3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKLQkJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCSAgIGludCAq bGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25m aWdfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmln X3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzW10g PSB7Ci0JeyBfTU1JTygweDI3MmMpLCAweGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjgpLCAw eGZmZmZmZmZmIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MWMpLCAweGZmZmZmZmZmIH0sCi0J eyBfTU1JTygweDI3MTgpLCAweGZmZmZmZmZmIH0sCisJeyBfTU1JTygweDI3NDQpLCAweDAwODAw MDAwIH0sCiAJeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCiAJeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NGMpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1J TygweDI3NDgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwMDA2NjY3IH0s Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NWMpLCAweDg2 NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3NTgpLCAweDg2NTQzMjEwIH0sCi0JeyBfTU1JTygweDI3 NTQpLCAweDAwMDA2NDY1IH0sCi0JeyBfTU1JTygweDI3NTApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3NzApLCAweDAwMDdmODFhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZTAw IH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmODJhIH0sCi0JeyBfTU1JTygweDI3N2MpLCAw eDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDdmODcyIH0sCi0JeyBfTU1JTygw eDI3ODQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDdmOGJhIH0sCi0J eyBfTU1JTygweDI3OGMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdm ODdhIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1JTygweDI3OTgp LCAweDAwMDdmOGVhIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTAwIH0sCi0JeyBfTU1J TygweDI3YTApLCAweDAwMDdmOGUyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmZTAwIH0s Ci0JeyBfTU1JTygweDI3YTgpLCAweDAwMDdmOGYyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAw MDBmZTAwIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVf Y29uZmlnX21lbW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9 LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgw MDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsgX01NSU8oMHhl NDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1NCB9LAotCXsg X01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X29hX3JlZyBtdXhfY29uZmlnX21lbW9yeV9yZWFkc1tdID0gewotCXsgX01NSU8oMHg5ODg4 KSwgMHgxMTgxMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzgxMDAxYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMDA2NCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NTgxMWIxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAxYSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzgxMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjgxMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYjkzMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwM2U1ODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNWU1YzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkw MDE1MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE1MiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyNTkwMDE1MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwMDE1NCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyOTkwMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwMDE1NiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE1NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy ZjkwMDE1ZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEwNSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNTkwMDEwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwMDEwMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZDkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGM2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzkwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV9yZWFkc19t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAgICBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQg biA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3JlYWRz OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbWVtb3J5X3JlYWRzKTsKLQluKys7 Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2Nv dW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXNbXSA9IHsKLQl7IF9NTUlPKDB4MjcyYyksIDB4ZmZm ZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyOCksIDB4ZmZmZmZmZmYgfSwKIAl7IF9NTUlPKDB4Mjcy NCksIDB4ZjA4MDAwMDAgfSwKIAl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcxOCksIDB4ZmZmZmZmZmYg fSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4 Mjc0OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2NjcgfSwKLQl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMy MTAgfSwKLQl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1NCks IDB4MDAwMDY0NjUgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZlMDAgfSwK LQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4MjIgfSwKLQl7IF9NTUlPKDB4Mjc4 NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEgfSwKLQl7IF9N TUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2Y4N2Eg fSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4 MDAwN2Y4ZWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4 MjdhMCksIDB4MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAgfSwKLQl7 IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZl MDAgfSwKKwl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDQgfSwKKwl7IF9NTUlPKDB4Mjc3NCks IDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDMgfSwKKwl7IF9NTUlP KDB4Mjc3YyksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDcgfSwK Kwl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDAwMDAgfSwKKwl7IF9NTUlPKDB4Mjc4OCksIDB4MDAx MDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGZmZjcgfSwKKwl7IF9NTUlPKDB4Mjc5 MCksIDB4MDAxMDAwMDIgfSwKKwl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKKwl7IF9N TUlPKDB4Mjc5OCksIDB4MDAxMDAwODIgfSwKKwl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmZWYg fSwKKwl7IF9NTUlPKDB4MjdhMCksIDB4MDAxMDAwYzIgfSwKKwl7IF9NTUlPKDB4MjdhNCksIDB4 MDAwMGZmZTcgfSwKKwl7IF9NTUlPKDB4MjdhOCksIDB4MDAxMDAwMDEgfSwKKwl7IF9NTUlPKDB4 MjdhYyksIDB4MDAwMGZmZTcgfSwKIH07CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgZmxleF9ldV9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0gewotCXsgX01NSU8oMHhlNDU4KSwg MHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8o MHhlNjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAot CXsgX01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1 NTA1NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAorc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7CiB9OwogCi1zdGF0 aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0g ewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MzgxMDAxYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwNjgwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzZjkwMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMzgxMTMwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNTgxMWIxMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgxMDAx YSB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Rlc3Rfb2Fb XSA9IHsKKwl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MTAwMDAgfSwKKwl7IF9NTUlPKDB4OTg4OCks IDB4MDc4MTAwMTMgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MWY4MTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTc4MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk4MTAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4MTAwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4 MTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDNlNTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDVlNWMwMDAgfSwKKwl7IF9N TUlPKDB4OTg4OCksIDB4MWI5MzAwNDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MDdlNTQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5MDAxNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MjE5MDAxNjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjM5MDAxNjIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MjU5MDAxNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDAxNjQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mjk5MDAxNjUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDAx NjYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmQ5MDAxNjcgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MmY5MDAxNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDAxMDUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MDAxMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5MDAxMDEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5 MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWQ5MDgwMDAgfSwKIAl7IF9NTUlPKDB4OTg4OCksIDB4MWY5MDgwMDAgfSwKIAl7IF9N TUlPKDB4OTg4OCksIDB4MTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjNjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDBjMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDc5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDk5MDBjNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwNjMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9tZW1vcnlfd3Jp dGVzX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17 Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX21lbW9y eV93cml0ZXM7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVz KTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4 MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCks IDB4MDAwN2ZjMmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlP KDB4Mjc3OCksIDB4MDAwN2ZjNmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAwMGJmMDAgfSwK LQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2ZjOTIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAw MGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2ZjYTIgfSwKLQl7IF9NTUlPKDB4Mjc4 YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZjMzIgfSwKLQl7IF9N TUlPKDB4Mjc5NCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZjOWEg fSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4MjdhMCksIDB4 MDAwN2ZlNmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGJmMDAgfSwKLQl7IF9NTUlPKDB4 MjdhOCksIDB4MDAwN2ZlN2EgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGJmMDAgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01N SU8oMHhlNTU4KSwgMHgwMDAwMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9 LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDc3ODAwOCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgw MDA4ODA3OCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDgwODcwOCB9LAotCXsgX01NSU8oMHhl NjVjKSwgMHgwMGEwODkwOCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBtdXhfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTA2YzAwZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYzgxNjAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTYxYzgwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgxYzAxMjAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0ZTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MWE0ZWFhYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDI0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGU2YzBiMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA2YzAyMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDI2YzAwMGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MWE2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDAxYzAwNDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYzQy MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxYzQ0NDMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGExYzQ2NDUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMxYzc2NDcgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQxYzczNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMzAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxYzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWEx YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA0YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Y2FhMmEgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGM0YzAyYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2EwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMwZjU0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjU1MTUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTAwZjAxNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYy Y2FhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTE5MDdmZmYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDE5MDAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NDU5MDA4MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4 NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDk5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5 MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBp bnQKLWdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAotCQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJ aW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRl dl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpF KGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4 X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25m aWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wzX2NhY2hl W10gPSB7Ci0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQp LCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDBmZWZlIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDdmZmZhIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmZWZkIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDdmZmZhIH0sCi0JeyBf TU1JTygweDI3OTQpLCAweDAwMDBmYmVmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAwMDdmZmZh IH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYmRmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MDAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMDIwMDEgfSwKLQl7IF9NTUlPKDB4ZTc1 OCksIDB4MDAxMDExMDAgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAyMDEyMDAgfSwKLQl7IF9N TUlPKDB4ZTU1YyksIDB4MDAzMDEzMDAgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDA0MDE0MDAg fSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19jb21w dXRlX2wzX2NhY2hlW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NmMwNzYwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE1OTMwMDFlIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAz IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBlNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4NGU4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFhNGU4MDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAwNmMwMDUxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NmM1 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NmM1YzVkIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlNmM1ZTVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE4NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNmMwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw MWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MWI4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA4MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEwMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWNlMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwNGM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMyYTAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjNGMwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMGYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYxNTAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwMGYwMTQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2 MmMwYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE4MmMwMGEwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAzOTMzMzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDMyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDExOTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTAwMTU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDFmOTAwMTU4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDExOTAwMzBmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDU1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDYzIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQ3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3 OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAzMzMzIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQzOTAwODQwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfY29tcHV0 ZV9sM19jYWNoZV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK LQkJCQljb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkJCWludCAqbGVucykKLXsK LQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfY29tcHV0 ZV9sM19jYWNoZTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVfbDNf Y2FjaGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01NSU8oMHgy NzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgxMDgwMDAw MCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwg MHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8o MHgyNzc0KSwgMHgwMDAwZmRmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29h X3JlZyBmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAw eDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygw eGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0J eyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUz MDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfaGRjX2FuZF9zZltdID0gewotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDRmMDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmNDY0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDIzMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MTgzNDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRmMTg4MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjRmMDhiYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRmMDAx YiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDZjMDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjZjMDAwYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFiNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDVi ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNDVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjVjODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YTRjMDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjYzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjgyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZjgzMDVjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwOTgzMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNzgzMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDk1MDA4MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzkyODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Zjk4ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTkwZmMwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0MTkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDg0MiB9LAogCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAog CXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAogfTsKIAogc3RhdGljIGludAotZ2V0X2hk Y19hbmRfc2ZfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0J CQkgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgIGludCAqbGVucykKLXsK LQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfaGRjX2Fu ZF9zZjsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2hkY19hbmRfc2YpOwotCW4r KzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJf Y291bnRlcl9jb25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzcwKSwgMHgwMDEwMDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZm MSB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAxNDAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwg MHgwMDAwYzNmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAxMDAwMiB9LAotCXsgX01NSU8o MHgyNzg0KSwgMHgwMDAwYzdmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwNDAwMiB9LAot CXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZDNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEw MDcwMCB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmYxZiB9LAotCXsgX01NSU8oMHgyNzk4 KSwgMHgwMDAwMTQwMiB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmMzZiB9LAotCXsgX01N SU8oMHgyN2EwKSwgMHgwMDAwMTAwMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmM3ZiB9 LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDAwMDQwMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgw MDAwZmQzZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBf TU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDEx IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAw eDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygw eGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfbDNfMVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjN2I0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjZjMDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YTYwMzQ0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTYxMzQwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTRlYTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwODRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjRmNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzZjNTMyNyB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjNTQyNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZj MmEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMjg1YiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDZjMDA1YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZjMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAz YyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNDFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxODFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVj MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNDYwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzYxMDA0NCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDYxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYxMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDJhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ODRjYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAyYSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1NCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzBmNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1NSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjYzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmZjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDQyMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0YjkwMDAyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0MTkwMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAot fTsKLQotc3RhdGljIGludAotZ2V0X2wzXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAot CQkgICAgaW50ICpsZW5zKQorZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAorCQkgICAgICAgaW50ICpsZW5zKQogewogCWludCBuID0gMDsKIAogCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwogCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7CiAK LQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfbDNfMSk7CisJcmVnc1tuXSA9IG11eF9jb25maWdfdGVzdF9vYTsKKwlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX3Rlc3Rfb2EpOwogCW4rKzsKIAogCXJldHVybiBuOwogfQog Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfbDNfMltd ID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwg MHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDEw MDA3MCB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmZmMSB9LAotCXsgX01NSU8oMHgyNzc4 KSwgMHgwMDAyODAwMiB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwODdmZiB9LAotCXsgX01N SU8oMHgyNzgwKSwgMHgwMDAyMDAwMiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwOGZmZiB9 LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwODAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgw MDAwYTdmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1 X2NvbmZpZ19sM18yW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBf TU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDEx IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAw eDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygw eGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2Ff cmVnIG11eF9jb25maWdfbDNfMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjZjMDJlMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDZjMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YTYyMzQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRmNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjZjMzMyNCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDZjMzQyMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxYTZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxODFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTVjMTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjYxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzYyMDA0NCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDYyMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjYyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTRjMDAyYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBmNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwZTBmMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZjgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2wzXzJfbXV4X2NvbmZp ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgaW50ICpsZW5zKQoraW50IGk5MTVfb2Ffc2VsZWN0 X21ldHJpY19zZXRfc2tsZ3QzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbDNfMjsK LQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzIpOwotCW4rKzsKKwlkZXZfcHJp di0+cGVyZi5vYS5uX211eF9jb25maWdzID0gMDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0g MDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPSBOVUxMOworCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVnc19sZW4gPSAwOwogCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18zW10gPSB7Ci0JeyBfTU1JTygw eDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0J eyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAw MDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQp LCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1J TygweDI3NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDI4MDAyIH0s Ci0JeyBfTU1JTygweDI3N2MpLCAweDAwMDA4N2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAw MDIwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDA4ZmZmIH0sCi0JeyBfTU1JTygweDI3 ODgpLCAweDAwMDA4MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBhN2ZmIH0sCi19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX2wzXzNbXSA9 IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4 MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4 ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7 IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUw NTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19s M18zW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmM0ZTgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE0NmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjMzNDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGU4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyNmMzMzIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NmMzNDJmIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMy MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA0MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MWI0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE0MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE4MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFh MWMxODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NjA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjNjMwMDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNjMwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NjMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA4MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBjMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmODAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUx OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQyIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAyIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfM19t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4g PSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2wzXzM7Ci0JbGVuc1tu XSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19sM18zKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0K LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3Jhc3Rl cml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAwMDAgfSwK LQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAw MGVmZmYgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDYwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3 YyksIDB4MDAwMGYzZmYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg ZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZFtdID0gewotCXsgX01N SU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxMDAwMyB9 LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgw MDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01NSU8oMHhl NTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9LAotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3Jhc3Rlcml6ZXJf YW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAyZjM4MDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ0ZDA1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIw ZDAzYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQwZDAzY2YgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMwZjAwMDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQyZjA0ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyZjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGE0YzAwOTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZDAwMjcgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDA0ZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDBkNDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDIwZDgwM2YgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZDgw MjMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZjAwMTAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAwZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNTAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMy YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NDE5MDE0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDE0ODUg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRp YyBpbnQKLWdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211eF9jb25maWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCQkgICAgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnICoqcmVncywKLQkJCQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlC VUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsK LQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5z KSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZDsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3Bp eGVsX2JhY2tlbmQpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfc2FtcGxlcltdID0gewotCXsgX01NSU8o MHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAot CXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHg3MDgw MDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0 KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwYzAwMCB9LAotCXsgX01N SU8oMHgyNzc0KSwgMHgwMDAwZTdmZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMzAwMCB9 LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZjlmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgw MDAwMGMwMCB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3RhdGlj IGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19zYW1wbGVyW10gPSB7Ci0J eyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEw MDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgp LCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1J TygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0s Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfc2FtcGxl cltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE1MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjE1MDAwNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE2MDBhMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNDM1MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjM1MDAwNSB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjM2MDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NDU1MmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjU1MDAwNSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjU2MDBhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJmNjAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjJmMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDA1 MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk MjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDM1MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYzBmYjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDBkYSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxODJjMDAyOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJkYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDJkNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzEzODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZTEzMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzYzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYzE0MDAxOCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzE1NzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTE1MDA3OCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxMDE1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE2MjE4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjE2MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE3NDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjMzYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMz MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDM0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjM0ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM1Nzg3MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxMDM1MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDM2MDA0MyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjM2MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDM3MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTUzODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDUzODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjUzMzAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYzU0MDAyMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjU0ODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTU1NzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDU1NzgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDU1MDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjU2MDA0MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjU2MDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjU3MTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw ZmY4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGMwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0MzkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0NTkwMDA2MCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3NhbXBs ZXJfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAgICAgaW50ICpsZW5zKQot ewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19zYW1w bGVyOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfc2FtcGxlcik7Ci0JbisrOwot Ci0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3Vu dGVyX2NvbmZpZ190ZGxfMVtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAot CXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwN2ZmZiB9 LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgw MDAwOWZmZiB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgy Nzg0KSwgMHgwMDAwZWZmZiB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDAwMDAwMCB9LAotCXsg X01NSU8oMHgyNzhjKSwgMHgwMDAwZjNmZiB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDAwMDAw MiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmRmZiB9LAotCXsgX01NSU8oMHgyNzk4KSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmU3ZiB9LAotfTsKLQotc3Rh dGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZGxfMVtdID0gewot CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01N SU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3RkbF8x W10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEyMzIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTIwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMmY4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDE1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwM2EwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjMGZmMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDk1IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmQ4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2MmQ0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTA4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MTBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTE4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MTFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MTIxODgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTIxOWI1IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMTM0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MTM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MzA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzE4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBlMzE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzE0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjMzIxYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMzIw MDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzIwMDMxIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMzIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMzM0MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBlMzMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlNTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw NTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTA0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlNTE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTE4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyNTE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTIxODgw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTIxYTgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAyNTIwMDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTM0MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAwNTM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTMxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDExOTBmZjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRiOTAwMDYyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQx OTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCi19Owot Ci1zdGF0aWMgaW50Ci1nZXRfdGRsXzFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJ ICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZ X1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0g PSBtdXhfY29uZmlnX3RkbF8xOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfdGRs XzEpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIGJfY291bnRlcl9jb25maWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0MCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAwMDAgfSwKLQl7 IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MDA4MDAw MDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25m aWdfdGRsXzJbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ190ZGxfMltdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjEyNGQ2MCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMjMyMmU2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjUy NGQ2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRjMDAxNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzBmZTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA5NyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwODJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMDJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjJkNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDExYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEyMWZiNyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDEyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDEzNTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDMwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjMxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMWI4MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjMyMDAzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjMzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjUwYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjUxYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjUyMWZiNyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjUzNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDgwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MzkwMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkw MDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X3RkbF8yX211eF9jb25maWcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyAqKnJlZ3MsCi0JCSAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JV R19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7 Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ190ZGxfMjsKLQlsZW5zW25dID0gQVJSQVlfU0laRSht dXhfY29uZmlnX3RkbF8yKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsK LX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29t cHV0ZV9leHRyYVtdID0gewotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBt dXhfY29uZmlnX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAz ZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIzMjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTI1MjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI5MjAzZTAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTJiMjAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTJkMjAzZTAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDI0ZWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ0 ZWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDIyZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0Y2EwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGE0YzAwNDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMwZjUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNmQgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDIyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyZDgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDYxMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMTQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAx MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDQzMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMTgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDQzMjE5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAzMjAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQzMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQ1MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ1MTQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQ1MjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQ1MzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBhZjgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFjYzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDA4ZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI4ZGEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGM4ZmIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU4ZjAwMDEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDZhYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJh ZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDI5MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MjE5ODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA5MjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI5MzQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDJiMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMjAwMzMgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDBiMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDJiMzEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDBkMDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkMTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDBkMjE5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDBkMzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGZjMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBjMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5 MDA0MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDE1NTAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4NDU5MDAwODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0K LXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipy ZWdzLAotCQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQot CXJlZ3Nbbl0gPSBtdXhfY29uZmlnX2NvbXB1dGVfZXh0cmE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJ WkUobXV4X2NvbmZpZ19jb21wdXRlX2V4dHJhKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBl W10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDMwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAw MDBmZmY5IH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3 N2MpLCAweDAwMDBmZmZjIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAyIH0sCi0JeyBf TU1JTygweDI3ODQpLCAweDAwMDBmZmYzIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMTAwMTgw IH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmNmIH0sCi0JeyBfTU1JTygweDI3OTApLCAw eDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0sCi0JeyBfTU1JTygw eDI3OTgpLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZjNmIH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3ZtZV9w aXBlW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1 NTgpLCAweDAwMDA4MDAzIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IG11eF9jb25maWdfdm1lX3BpcGVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxYTU4MDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYTAwYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTIxODAyNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQxODAwMDIgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTQ5YTU4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY5YTAwYzAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTI5ODAyNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTQ5ODAw MDIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE0ZTNmYzAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAyZjEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQyZjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0YzQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0Yzk1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0 YzAwMmEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGEwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGUwZjU1MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAwMTUgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTYyY2FhMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAw MGEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxOTMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgxYTI4YzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYTAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAxMzMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxM2MwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxM2YwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAx NzIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxNzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDgxN2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxODAwMzcgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYxODA5NDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgxODAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQxODMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDRhZmMwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDZhZjMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGFjYzQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGNjYzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE4ZGEw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM4ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGU4ZjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA4ZjAwMTUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTZhY2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MThhYzAwMGEgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDY5OTMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5 YTI4YzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA5YTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGE5M2YwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5M2YwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGE5N2EwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM5N2EwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE5ODA5NzcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDg5ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ5ODAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDY5ODMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MDAwZmYgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwNTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDAxMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NDU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDA4ODQgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwMDIgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5 MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF92bWVfcGlwZV9tdXhfY29uZmlnKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCWNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyAqKnJlZ3MsCi0JCQlpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQot CXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3ZtZV9waXBlOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11 eF9jb25maWdfdm1lX3BpcGUpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdGVzdF9vYVtdID0gewotCXsg X01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAw MCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8o MHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwNCB9LAot CXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAw MDAwMyB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzgw KSwgMHgwMDAwMDAwNyB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzg4KSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZmNyB9 LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDEwMDAwMiB9LAotCXsgX01NSU8oMHgyNzk0KSwgMHgw MDAwZmZjZiB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDEwMDA4MiB9LAotCXsgX01NSU8oMHgy NzljKSwgMHgwMDAwZmZlZiB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDEwMDBjMiB9LAotCXsg X01NSU8oMHgyN2E0KSwgMHgwMDAwZmZlNyB9LAotCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAw MSB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmZlNyB9LAotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190ZXN0X29hW10gPSB7Ci19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0gewot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzgx MDAxMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxZDgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDA0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg0NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsK LQotc3RhdGljIGludAotZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdz LAotCQkgICAgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihB UlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19P TihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQly ZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfdGVzdF9vYSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLWludCBpOTE1X29hX3Nl bGVjdF9tZXRyaWNfc2V0X3NrbGd0MyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Ci17Ci0JZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9IDA7Ci0JZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRl cl9yZWdzX2xlbiA9IDA7Ci0JZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0gTlVMTDsKLQlk ZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0gMDsKLQotCXN3aXRjaCAoZGV2X3ByaXYt PnBlcmYub2EubWV0cmljc19zZXQpIHsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVOREVSX0JBU0lD OgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yZW5kZXJfYmFz aWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYg KGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RS SVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSRU5ERVJfQkFTSUNcIiBtZXRyaWMg c2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfcmVuZGVyX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2ljOwotCQlkZXZfcHJpdi0+cGVy Zi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVy X2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9CQVNJ QzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0ZV9i YXNpY19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncywKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0J CWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJV R19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiQ09NUFVURV9CQVNJQ1wiIG1l dHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFs cmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFk dmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiBy ZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+ cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfYmFz aWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9T SVpFKGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfYmFzaWM7Ci0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZp Z19jb21wdXRlX2Jhc2ljKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfUkVO REVSX1BJUEVfUFJPRklMRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0J CQlnZXRfcmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCSAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJCSAgIGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9 PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBc IlJFTkRFUl9QSVBFX1BST0ZJTEVcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAq IHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlO VkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9j b3VudGVyX2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3JlbmRl cl9waXBlX3Byb2ZpbGUpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlm bGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfcmVuZGVyX3BpcGVf cHJvZmlsZSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9SRUFE UzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3Jl YWRzX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3MsCi0JCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlm IChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19E UklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1JFQURTXCIgbWV0cmlj IHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFk eSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0 aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVl c3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbWVtb3J5X3JlYWRzOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX21lbW9yeV9yZWFkcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV9yZWFkczsKLQkJZGV2X3ByaXYtPnBl cmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX21lbW9y eV9yZWFkcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX01FTU9SWV9XUklU RVM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X21lbW9yeV93 cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwot CQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVC VUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIk1FTU9SWV9XUklURVNcIiBt ZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBh bHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBh ZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4g cmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfd3Jp dGVzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlf U0laRShiX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXMpOwotCi0JCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfbWVtb3J5X3dyaXRlcyk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0NP TVBVVEVfRVhURU5ERUQ6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJ Z2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCQlkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJ RFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0VY VEVOREVEXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0 ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBo YXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3Qg aGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVu ID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dGVuZGVkKTsKLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0 ZV9leHRlbmRlZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCXJldHVybiAwOwot CWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0wzX0NBQ0hFOgotCQlkZXZfcHJpdi0+cGVyZi5v YS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2 X3ByaXYsCi0JCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBj b25maWcgZm9yIFwiQ09NUFVURV9MM19DQUNIRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBF SU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkg KiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFu ZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9 Ci0JCQliX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdf Y29tcHV0ZV9sM19jYWNoZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJ CWZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZs ZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2wzX2Nh Y2hlKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfSERDX0FORF9TRjoKLQkJ ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfaGRjX2FuZF9zZl9tdXhf Y29uZmlnKGRldl9wcml2LAotCQkJCQkJICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJ CQkJCSAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1 aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiSERDX0FORF9TRlwiIG1ldHJpYyBzZXRcbiIpOwotCi0J CQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlz Ci0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNw YWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwot CQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJf cmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJm Lm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdf aGRjX2FuZF9zZik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX2hkY19hbmRfc2Y7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19oZGNfYW5kX3NmKTsKLQotCQlyZXR1cm4g MDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTDNfMToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhf Y29uZmlncyA9Ci0JCQlnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkg ewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18x XCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lz ZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJl ZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBi ZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9w cml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMTsK LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUo Yl9jb3VudGVyX2NvbmZpZ19sM18xKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Mg PQotCQkJZmxleF9ldV9jb25maWdfbDNfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdz X2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzEpOwotCi0JCXJldHVybiAw OwotCWNhc2UgTUVUUklDX1NFVF9JRF9MM18yOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9j b25maWdzID0KLQkJCWdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7 Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzJc IiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNm cyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJl ZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18yOwot CQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShi X2NvdW50ZXJfY29uZmlnX2wzXzIpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9 Ci0JCQlmbGV4X2V1X2NvbmZpZ19sM18yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3Nf bGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMik7Ci0KLQkJcmV0dXJuIDA7 Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0wzXzM6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPQotCQkJZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsK LQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfM1wi IG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2Zz IGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVu IGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVl biByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzM7Ci0J CWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJf Y291bnRlcl9jb25maWdfbDNfMyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0K LQkJCWZsZXhfZXVfY29uZmlnX2wzXzM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18zKTsKLQotCQlyZXR1cm4gMDsK LQljYXNlIE1FVFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORDoKLQkJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfcmFzdGVyaXplcl9hbmRfcGl4 ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCQkgICAgZGV2X3ByaXYtPnBl cmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19s ZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJ RFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJSQVNURVJJWkVS X0FORF9QSVhFTF9CQUNLRU5EXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZB TDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291 bnRlcl9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQkJZGV2X3ByaXYtPnBl cmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZp Z19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5m bGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2Vu ZDsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCXJldHVybiAw OwotCWNhc2UgTUVUUklDX1NFVF9JRF9TQU1QTEVSOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211 eF9jb25maWdzID0KLQkJCWdldF9zYW1wbGVyX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAg ICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJICAgICAgIGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmln IGZvciBcIlNBTVBMRVJcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2Ug Kl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdv dWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNo b3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwot CQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVy X2NvbmZpZ19zYW1wbGVyOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4g PQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3NhbXBsZXIpOwotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19zYW1wbGVyOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfc2FtcGxlcik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX1RETF8xOgot CQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF90ZGxfMV9tdXhfY29u ZmlnKGRldl9wcml2LAotCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJ CQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBz dWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlRETF8xXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8q IEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJ CSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2Ug YW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQly ZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdz ID0KLQkJCWJfY291bnRlcl9jb25maWdfdGRsXzE7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291 bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfdGRsXzEpOwot Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ190ZGxf MTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZs ZXhfZXVfY29uZmlnX3RkbF8xKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURf VERMXzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3RkbF8y X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3Jl Z3MsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChk ZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklW RVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVERMXzJcIiBtZXRyaWMgc2V0XG4iKTsK LQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQg dGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVz ZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkg Ki8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ190ZGxfMjsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190 ZGxfMik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29u ZmlnX3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZ X1NJWkUoZmxleF9ldV9jb25maWdfdGRsXzIpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklD X1NFVF9JRF9DT01QVVRFX0VYVFJBOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdz ID0KLQkJCWdldF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAg IGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3Ig XCJDT01QVVRFX0VYVFJBXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNl ICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3 b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBz aG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsK LQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRl cl9jb25maWdfY29tcHV0ZV9leHRyYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3Jl Z3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4dHJhKTsK LQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfY29t cHV0ZV9leHRyYTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwotCi0JCXJldHVybiAwOwotCWNh c2UgTUVUUklDX1NFVF9JRF9WTUVfUElQRToKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29u ZmlncyA9Ci0JCQlnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCWRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiVk1FX1BJUEVc IiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNm cyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVl biBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJl ZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ192bWVfcGlw ZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJ WkUoYl9jb3VudGVyX2NvbmZpZ192bWVfcGlwZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxl eF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3ZtZV9waXBlOwotCQlkZXZfcHJpdi0+cGVyZi5v YS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfdm1lX3BpcGUp OwotCi0JCXJldHVybiAwOworCXN3aXRjaCAoZGV2X3ByaXYtPnBlcmYub2EubWV0cmljc19zZXQp IHsKIAljYXNlIE1FVFJJQ19TRVRfSURfVEVTVF9PQToKIAkJZGV2X3ByaXYtPnBlcmYub2Eubl9t dXhfY29uZmlncyA9CiAJCQlnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LApAQCAtMjQ0 NCwzODAgKzEzOCw2IEBAIGludCBpOTE1X29hX3NlbGVjdF9tZXRyaWNfc2V0X3NrbGd0MyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB9CiAKIHN0YXRpYyBzc2l6ZV90Ci1zaG93 X3JlbmRlcl9iYXNpY19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBN RVRSSUNfU0VUX0lEX1JFTkRFUl9CQVNJQyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3JlbmRlcl9iYXNpY19pZCwKLQku c3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRl cl9iYXNpY1tdID0gewotCSZkZXZfYXR0cl9yZW5kZXJfYmFzaWNfaWQuYXR0ciwKLQlOVUxMLAot fTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmVuZGVyX2Jhc2ljID0g ewotCS5uYW1lID0gIjQ2MTZkNDUwLTIzOTMtNDgzNi04MTQ2LTUzYzVlZDg0ZDM1OSIsCi0JLmF0 dHJzID0gIGF0dHJzX3JlbmRlcl9iYXNpYywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2Nv bXB1dGVfYmFzaWNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9DT01QVVRFX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0 cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1dGVfYmFzaWNfaWQsCi0J LnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21w dXRlX2Jhc2ljW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVfYmFzaWNfaWQuYXR0ciwKLQlOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9iYXNp YyA9IHsKLQkubmFtZSA9ICI0MzIwNDkyYi1mZDAzLTQyYWMtOTIyZi1kYmUxZWYzYjdiNTgiLAot CS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNo b3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiVkXG4iLCBNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUpOwotfQotCi1zdGF0aWMg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsKLQkmZGV2 X2F0dHJfcmVuZGVyX3BpcGVfcHJvZmlsZV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlID0gewotCS5u YW1lID0gImJkMmQ5Y2FlLWI5ZWMtNGY1Yi05ZDJmLTkzNGJlZDM5OGEyZCIsCi0JLmF0dHJzID0g IGF0dHJzX3JlbmRlcl9waXBlX3Byb2ZpbGUsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19t ZW1vcnlfcmVhZHNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1 dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVU UklDX1NFVF9JRF9NRU1PUllfUkVBRFMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19tZW1vcnlfcmVhZHNfaWQsCi0JLnN0 b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlf cmVhZHNbXSA9IHsKLQkmZGV2X2F0dHJfbWVtb3J5X3JlYWRzX2lkLmF0dHIsCi0JTlVMTCwKLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV9yZWFkcyA9IHsK LQkubmFtZSA9ICI0Y2EwZjNmZS03ZmQzLTQ5MjQtOThjYi0xODA3ZDk4Nzk3NjciLAotCS5hdHRy cyA9ICBhdHRyc19tZW1vcnlfcmVhZHMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19tZW1v cnlfd3JpdGVzX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJ Q19TRVRfSURfTUVNT1JZX1dSSVRFUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJp ZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19tZW1vcnlfd3JpdGVzX2lkLAotCS5z dG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbWVtb3J5 X3dyaXRlc1tdID0gewotCSZkZXZfYXR0cl9tZW1vcnlfd3JpdGVzX2lkLmF0dHIsCi0JTlVMTCwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX21lbW9yeV93cml0ZXMg PSB7Ci0JLm5hbWUgPSAiYTBjMDE3MmMtZWUxMy00MDNkLTk5ZmYtMmJkZjY5MzZjZjE0IiwKLQku YXR0cnMgPSAgYXR0cnNfbWVtb3J5X3dyaXRlcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93 X2NvbXB1dGVfZXh0ZW5kZWRfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxu IiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVEVOREVEKTsKLX0KLQotc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVfZXh0ZW5kZWRfaWQgPSB7Ci0JLmF0dHIg PSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2NvbXB1dGVf ZXh0ZW5kZWRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICphdHRyc19jb21wdXRlX2V4dGVuZGVkW10gPSB7Ci0JJmRldl9hdHRyX2NvbXB1dGVfZXh0 ZW5kZWRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3Jv dXAgZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCA9IHsKLQkubmFtZSA9ICI1MjQzNWUwYi1mMTg4LTQy ZWEtODY4MC0yMWE1NmVlMjBkZWUiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRlX2V4dGVuZGVk LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9sM19jYWNoZV9pZChzdHJ1Y3Qg ZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQot ewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfTDNf Q0FDSEUpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29t cHV0ZV9sM19jYWNoZV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0 NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9sM19jYWNoZV9pZCwKLQkuc3RvcmUgPSBOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfbDNfY2FjaGVb XSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9sM19jYWNoZV9pZC5hdHRyLAotCU5VTEwsCi19Owot Ci1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2wzX2NhY2hlID0g ewotCS5uYW1lID0gIjI3MDc2ZWViLTQ5ZjMtNGZlZC04NDIzLWM2NjUwNjAwNWM2MyIsCi0JLmF0 dHJzID0gIGF0dHJzX2NvbXB1dGVfbDNfY2FjaGUsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hv d19oZGNfYW5kX3NmX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfSERDX0FORF9TRik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJp YnV0ZSBkZXZfYXR0cl9oZGNfYW5kX3NmX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19oZGNfYW5kX3NmX2lkLAotCS5zdG9yZSA9 IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfaGRjX2FuZF9zZltd ID0gewotCSZkZXZfYXR0cl9oZGNfYW5kX3NmX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2hkY19hbmRfc2YgPSB7Ci0JLm5hbWUgPSAi ODA3MWI0MDktYzM5YS00Njc0LTk0ZDctMzI5NjJlY2ZiNTEyIiwKLQkuYXR0cnMgPSAgYXR0cnNf aGRjX2FuZF9zZiwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2wzXzFfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsK LQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9MM18xKTsKLX0KLQot c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2wzXzFfaWQgPSB7Ci0JLmF0 dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzFf aWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRy c19sM18xW10gPSB7Ci0JJmRldl9hdHRyX2wzXzFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbDNfMSA9IHsKLQkubmFtZSA9ICI1ZTBi MzkxZS05ZWE4LTQ5MDEtYjJmZi1iNjRmZjYxNmM3ZWQiLAotCS5hdHRycyA9ICBhdHRyc19sM18x LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfMl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzIpOwotfQotCi1zdGF0aWMgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5h bWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMl9pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzJbXSA9 IHsKLQkmZGV2X2F0dHJfbDNfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18yID0gewotCS5uYW1lID0gIjI1ZGM4MjhlLTFkMmQt NDI2ZS05NTQ2LWExZDQyMzNjZGYxNiIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzIsCi19OwotCi1z dGF0aWMgc3NpemVfdAotc2hvd19sM18zX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVm LCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18zX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19sM18zX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfM1tdID0gewotCSZkZXZf YXR0cl9sM18zX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIGdyb3VwX2wzXzMgPSB7Ci0JLm5hbWUgPSAiM2RiYTk0MDUtMmQ3ZS00ZDcwLTgxOTkt ZTczNGU4MmZkNmJmIiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfMywKLX07Ci0KLXN0YXRpYyBzc2l6 ZV90Ci1zaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1 cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhF TF9CQUNLRU5EKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRy X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0g ImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3Jhc3Rlcml6ZXJfYW5kX3BpeGVs X2JhY2tlbmRfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlICphdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JJmRldl9hdHRy X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFj a2VuZCA9IHsKLQkubmFtZSA9ICI3NjkzNWQ3Yi0wOWM5LTQ2YmYtODdmMS1jMThiNGE4NmViZTUi LAotCS5hdHRycyA9ICBhdHRyc19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kLAotfTsKLQot c3RhdGljIHNzaXplX3QKLXNob3dfc2FtcGxlcl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1NBTVBMRVIpOwotfQotCi1zdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfc2FtcGxlcl9pZCA9IHsKLQkuYXR0ciA9IHsgLm5h bWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfc2FtcGxlcl9pZCwKLQku c3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3NhbXBs ZXJbXSA9IHsKLQkmZGV2X2F0dHJfc2FtcGxlcl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9zYW1wbGVyID0gewotCS5uYW1lID0gIjFi MzRjMGQ2LTRmNGMtNGQ3Yi04MzNmLTRhYWYyMzZkODdhNiIsCi0JLmF0dHJzID0gIGF0dHJzX3Nh bXBsZXIsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd190ZGxfMV9pZChzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJl dHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8xKTsKLX0KLQotc3Rh dGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8xX2lkID0gewotCS5hdHRy ID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd190ZGxfMV9p ZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X3RkbF8xW10gPSB7Ci0JJmRldl9hdHRyX3RkbF8xX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8xID0gewotCS5uYW1lID0gImIz NzVjOTg1LTk5NTMtNDU1Yi1iZGEyLWIwM2Y3NTk0ZTlkYiIsCi0JLmF0dHJzID0gIGF0dHJzX3Rk bF8xLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdGRsXzJfaWQoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1 cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9URExfMik7Ci19Ci0KLXN0YXRp YyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl90ZGxfMl9pZCA9IHsKLQkuYXR0ciA9 IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfdGRsXzJfaWQs Ci0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc190 ZGxfMltdID0gewotCSZkZXZfYXR0cl90ZGxfMl9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF90ZGxfMiA9IHsKLQkubmFtZSA9ICIzZTJi ZTJiYi04ODRhLTQ5YmItODJjNS0yMzU4ZTZiZDVmMmQiLAotCS5hdHRycyA9ICBhdHRyc190ZGxf MiwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2NvbXB1dGVfZXh0cmFfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsK LQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9DT01QVVRFX0VYVFJB KTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX2NvbXB1dGVf ZXh0cmFfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0J LnNob3cgPSBzaG93X2NvbXB1dGVfZXh0cmFfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19jb21wdXRlX2V4dHJhW10gPSB7Ci0JJmRldl9h dHRyX2NvbXB1dGVfZXh0cmFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfY29tcHV0ZV9leHRyYSA9IHsKLQkubmFtZSA9ICIyZDgwYTY0 OC03YjVhLTRlOTItYmJlNy0zYjVjNzZmMmUyMjEiLAotCS5hdHRycyA9ICBhdHRyc19jb21wdXRl X2V4dHJhLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfdm1lX3BpcGVfaWQoc3RydWN0IGRl dmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsK LQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9WTUVfUElQRSk7Ci19 Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl92bWVfcGlwZV9pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfdm1lX3BpcGVfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyc192bWVfcGlwZVtdID0gewotCSZkZXZfYXR0cl92bWVfcGlwZV9pZC5hdHRy LAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF92bWVf cGlwZSA9IHsKLQkubmFtZSA9ICJjZmFlOTIzMi02ZmZjLTQyY2MtYTcwMy05NzkwMDE2OTI1ZjAi LAotCS5hdHRycyA9ICBhdHRyc192bWVfcGlwZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90CiBzaG93 X3Rlc3Rfb2FfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKIHsKIAlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklD X1NFVF9JRF9URVNUX09BKTsKQEAgLTI4NDYsOTEgKzE2Niw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rl cl9zeXNmc19za2xndDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludCBt dXhfbGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpXTsKIAlp bnQgcmV0ID0gMDsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JCWlmIChyZXQp Ci0JCQlnb3RvIGVycm9yX3JlbmRlcl9iYXNpYzsKLQl9Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2lj X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lz ZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1 dGVfYmFzaWMpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2Jhc2ljOwotCX0K LQlpZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBl cmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci0JCWlmIChyZXQp Ci0JCQlnb3RvIGVycm9yX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JfQotCWlmIChnZXRfbWVtb3J5 X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X21lbW9yeV9yZWFkcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21lbW9yeV9yZWFkczsK LQl9Ci0JaWYgKGdldF9tZW1vcnlfd3JpdGVzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdz LCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCQlpZiAocmV0KQotCQkJZ290 byBlcnJvcl9tZW1vcnlfd3JpdGVzOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9l eHRlbmRlZCk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfZXh0ZW5kZWQ7Ci0J fQotCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQkJaWYgKHJldCkKLQkJ CWdvdG8gZXJyb3JfY29tcHV0ZV9sM19jYWNoZTsKLQl9Ci0JaWYgKGdldF9oZGNfYW5kX3NmX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRf c2YpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9oZGNfYW5kX3NmOwotCX0KLQlpZiAoZ2V0 X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQg PSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBf bDNfMSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2wzXzE7Ci0JfQotCWlmIChnZXRfbDNf Ml9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5 c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18y KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMjsKLQl9Ci0JaWYgKGdldF9sM18zX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOwot CQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9sM18zOwotCX0KLQlpZiAoZ2V0X3Jhc3Rlcml6ZXJf YW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0JCWlmIChyZXQpCi0J CQlnb3RvIGVycm9yX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQ7Ci0JfQotCWlmIChnZXRf c2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9zYW1wbGVyKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jfc2FtcGxlcjsKLQl9Ci0JaWYg KGdldF90ZGxfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0J CXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZn cm91cF90ZGxfMSk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX3RkbF8xOwotCX0KLQlpZiAo Z2V0X3RkbF8yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJ cmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdy b3VwX3RkbF8yKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzI7Ci0JfQotCWlmIChn ZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9jb21wdXRlX2V4dHJhKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29t cHV0ZV9leHRyYTsKLQl9Ci0JaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF92bWVfcGlwZSk7Ci0JCWlmIChyZXQpCi0JCQln b3RvIGVycm9yX3ZtZV9waXBlOwotCX0KIAlpZiAoZ2V0X3Rlc3Rfb2FfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewogCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7CiAJCWlmIChyZXQp CkBAIC0yOTQwLDU3ICsxNzUsNiBAQCBpOTE1X3BlcmZfcmVnaXN0ZXJfc3lzZnNfc2tsZ3QzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZXJyb3JfdGVz dF9vYToKLQlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF92bWVfcGlwZSk7Ci1lcnJvcl92bWVfcGlwZToKLQlpZiAoZ2V0X2NvbXB1dGVf ZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNf cmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVf ZXh0cmEpOwotZXJyb3JfY29tcHV0ZV9leHRyYToKLQlpZiAoZ2V0X3RkbF8yX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci1lcnJvcl90ZGxfMjoKLQlp ZiAoZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0J CXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90 ZGxfMSk7Ci1lcnJvcl90ZGxfMToKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJp diwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5w ZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotZXJyb3Jfc2FtcGxlcjoKLQlpZiAo Z2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotZXJyb3Jf cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDoKLQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOwotZXJyb3JfbDNfMzoKLQlpZiAo Z2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lz ZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzIp OwotZXJyb3JfbDNfMjoKLQlpZiAoZ2V0X2wzXzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2wzXzEpOwotZXJyb3JfbDNfMToKLQlpZiAoZ2V0X2hkY19hbmRfc2Zf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3Zl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2YpOwot ZXJyb3JfaGRjX2FuZF9zZjoKLQlpZiAoZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotZXJyb3Jf Y29tcHV0ZV9sM19jYWNoZToKLQlpZiAoZ2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfZXh0ZW5kZWQpOwotZXJyb3Jf Y29tcHV0ZV9leHRlbmRlZDoKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZf cHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2 LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotZXJyb3JfbWVtb3J5 X3dyaXRlczoKLQlpZiAoZ2V0X21lbW9yeV9yZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3JlYWRzKTsKLWVycm9yX21lbW9yeV9yZWFkczoKLQlp ZiAoZ2V0X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotZXJyb3JfcmVuZGVyX3BpcGVfcHJv ZmlsZToKLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX2NvbXB1dGVfYmFzaWMpOwotZXJyb3JfY29tcHV0ZV9iYXNpYzoKLQlp ZiAoZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfcmVuZGVyX2Jhc2ljKTsKLWVycm9yX3JlbmRlcl9iYXNpYzoKIAlyZXR1cm4gcmV0Owog fQogCkBAIC0zMDAwLDQwICsxODQsNiBAQCBpOTE1X3BlcmZfdW5yZWdpc3Rlcl9zeXNmc19za2xn dDMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqbXV4X3JlZ3NbQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncyld OwogCWludCBtdXhfbGVuc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xl bnMpXTsKIAotCWlmIChnZXRfcmVuZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9yZW5kZXJfYmFzaWMpOwotCWlmIChnZXRfY29tcHV0ZV9iYXNpY19t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7 Ci0JaWYgKGdldF9yZW5kZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9y ZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKLQlpZiAoZ2V0X21lbW9yeV9y ZWFkc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3Jl YWRzKTsKLQlpZiAoZ2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3Jl Z3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJp Y3Nfa29iaiwgJmdyb3VwX21lbW9yeV93cml0ZXMpOwotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRl ZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1v dmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRl bmRlZCk7Ci0JaWYgKGdldF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11 eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5t ZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2wzX2NhY2hlKTsKLQlpZiAoZ2V0X2hkY19hbmRf c2ZfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2hkY19hbmRfc2Yp OwotCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfbDNfMSk7Ci0JaWYgKGdldF9sM18yX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tv YmosICZncm91cF9sM18yKTsKLQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX2wzXzMpOwotCWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfcmFzdGVy aXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0JaWYgKGdldF9zYW1wbGVyX211eF9jb25maWcoZGV2 X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJp di0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9zYW1wbGVyKTsKLQlpZiAoZ2V0X3RkbF8xX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMSk7Ci0JaWYgKGdl dF90ZGxfMl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNm c19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIp OwotCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywg bXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci0JaWYgKGdldF92bWVfcGlwZV9tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdm1lX3BpcGUpOwogCWlmIChnZXRfdGVz dF9vYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQogCQlzeXNmc19y ZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGVzdF9vYSk7 CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0NC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9za2xndDQuYwppbmRleCA5ZGRhYjQzYTIxNzYu LjQ1OTY0MjI1NjNiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9z a2xndDQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3NrbGd0NC5jCkBAIC0z MiwyNDQwICszMiw4MCBAQAogI2luY2x1ZGUgImk5MTVfb2Ffc2tsZ3Q0LmgiCiAKIGVudW0gbWV0 cmljX3NldF9pZCB7Ci0JTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUMgPSAxLAotCU1FVFJJQ19T RVRfSURfQ09NUFVURV9CQVNJQywKLQlNRVRSSUNfU0VUX0lEX1JFTkRFUl9QSVBFX1BST0ZJTEUs Ci0JTUVUUklDX1NFVF9JRF9NRU1PUllfUkVBRFMsCi0JTUVUUklDX1NFVF9JRF9NRU1PUllfV1JJ VEVTLAotCU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRFTkRFRCwKLQlNRVRSSUNfU0VUX0lEX0NP TVBVVEVfTDNfQ0FDSEUsCi0JTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGLAotCU1FVFJJQ19TRVRf SURfTDNfMSwKLQlNRVRSSUNfU0VUX0lEX0wzXzIsCi0JTUVUUklDX1NFVF9JRF9MM18zLAotCU1F VFJJQ19TRVRfSURfUkFTVEVSSVpFUl9BTkRfUElYRUxfQkFDS0VORCwKLQlNRVRSSUNfU0VUX0lE X1NBTVBMRVIsCi0JTUVUUklDX1NFVF9JRF9URExfMSwKLQlNRVRSSUNfU0VUX0lEX1RETF8yLAot CU1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRSQSwKLQlNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFLAot CU1FVFJJQ19TRVRfSURfVEVTVF9PQSwKKwlNRVRSSUNfU0VUX0lEX1RFU1RfT0EgPSAxLAogfTsK IAotaW50IGk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX3NrbGd0NCA9IDE4OworaW50IGk5 MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX3NrbGd0NCA9IDE7CiAKLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19yZW5kZXJfYmFzaWNbXSA9IHsKLQl7 IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4MDA4MDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCks IDB4MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfcmVuZGVyX2Jhc2lj W10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgp LCAweDAwMDEwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1J TygweGU3NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0s Ci0JeyBfTU1JTygweGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAw MDU1MDU0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25m aWdfcmVuZGVyX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2NmMwMWUwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEyMTcwMjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMzcw MjgwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2ZWMwMWUwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE3NmMwMWUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTMwMzE3IH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE1OTMwM2RmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDAzIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFhNGUwM2IwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBh NmMwMDUzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMWI0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFjMWMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmYxMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDAwNGM0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGNhNDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBjNGMwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQyMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MGRh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMGYwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGY1NjAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDEwMGYwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMmM4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDE2MmNhYTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTMzMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA4MTMzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMTcwMDIwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA4MTcwMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMTcwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MzcwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMzcwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFhY2UwMjMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhZWM1MzAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwZWMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjZWMw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhOWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFjOWMwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhY2MyMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBjY2MwMDAyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4OGQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhOGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBl OGYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwOGYwMDAxIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE2YWM4ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiNGUwMDIwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA5NmM1MzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExNmMwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA5MWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiMWM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBiNGMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5MGQ4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBmMGYxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3MmMw ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBkOTMzMDMxIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBmOTMzZTNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAxOTMzZDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAzOTMwNzNjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1OTMwMDBlIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFkOTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5 OTMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFkOTAwMTU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTAwMTU4IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJiOTA4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJkOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDJmOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE1OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTA4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTAwMDNmIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUxOTBmZjMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwMDYwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU1OTAzMDMzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAxNDIxIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDQ3OTAwODAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3 OTBmZmYxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDRiOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDBm IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDUzOTBmZmZmIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfcmVuZGVyX2Jhc2ljX211eF9jb25m aWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsK LQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8 IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JbGVu c1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwotCW4rKzsKLQotCXJl dHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9j b25maWdfY29tcHV0ZV9iYXNpY1tdID0gewotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzQwKSwgMHgwMDAwMDAwMCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3Jl ZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2Jhc2ljW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAw eDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDAwMDAzIH0sCi0JeyBfTU1JTygw eGU2NTgpLCAweDAwMDAyMDAxIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwNzc4MDA4IH0sCi0J eyBfTU1JTygweGU0NWMpLCAweDAwMDg4MDc4IH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwODA4 NzA4IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwYTA4OTA4IH0sCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfY29tcHV0ZV9iYXNpY1tdID0gewotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDRmMDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjRmMWMw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZjMDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzNzkwNjgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzZjkwMDAwMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTRlMDgyMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRm MDkwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRmMDAzMiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTRmMTg5MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRmMGUwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTRmMDAzYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRmMGQ4MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjRmMDAzYiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDZjMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODZjMDEwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwYzZjMDAwYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTZjMGIwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxODZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDFiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODFiODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzFiNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMDFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFj ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAyNCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjViODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODViNDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTViYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzViODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTViNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDViODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjViNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxYTVjNjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzVjMDAxYiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMjVjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDVjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYTRjMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDIwOCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBkODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTBk YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkMjAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzBmNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNTUwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJjYzAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNjJjZmIwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBiZSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjJjYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjYzAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwMDE1NyB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYjkwMDE1OCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxZDkwMDEwNSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxZjkwMDEwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMGZmZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDgwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg1NTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDgyMSB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NzkwMDgwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDgwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgz MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDQyMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1MzkwNTU1NSB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X2NvbXB1 dGVfYmFzaWNfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0J CQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgIGludCAqbGVu cykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+ cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJp di0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdf Y29tcHV0ZV9iYXNpYzsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX2NvbXB1dGVf YmFzaWMpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCXsg X01NSU8oMHgyNzI0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAw MCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwg MHgwMDAwMDAwMCB9LAorc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX3Rlc3Rfb2FbXSA9IHsKIAl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMDdm ZmMgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2FmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGY1ZmQgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwNzlmZmEgfSwKLQl7IF9NTUlP KDB4Mjc4NCksIDB4MDAwMGYzZmIgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2JmN2EgfSwK LQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGY3ZTcgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAw N2ZlZmEgfSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGY3Y2YgfSwKLQl7IF9NTUlPKDB4Mjc5 OCksIDB4MDAwNzdmZmEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGVmZGYgfSwKLQl7IF9N TUlPKDB4MjdhMCksIDB4MDAwNmZmZmEgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGNmYmYg fSwKLQl7IF9NTUlPKDB4MjdhOCksIDB4MDAwM2ZmZmEgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4 MDAwMDVmN2YgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9l dV9jb25maWdfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgw MDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhl NjU4KSwgMHgwMDAyNTAyNCB9LAotCXsgX01NSU8oMHhlNzU4KSwgMHgwMDAzNTAzNCB9LAotCXsg X01NSU8oMHhlNDVjKSwgMHgwMDA0NTA0NCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1NTA1 NCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA2NTA2NCB9LAotfTsKLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGVbXSA9IHsK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZTAwMWYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEw ZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAxMTY4MDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTc4YTAzZTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4MjRjMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE4MzAwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM4NDAwMjAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NTAwMTkgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTE4NjAwMDcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NzBjNDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTc4ODAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZTU0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDAwZTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZjAwNDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTAw ZjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwNDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMDQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYxMTAwMTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxMzEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4OTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGQ4OTAxMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4OTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDk4MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MDgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDM4MGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4YTAw NzUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4YTAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTE4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI4YTQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTM4YTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ4MWEwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTU4MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc4 MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI4MjAwMzAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDc4MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MjQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGY4MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU4MjQwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ4MzAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDU4MzAwMGMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4MzAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDM4MzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4MzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGI4NDA5ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDM4NDRk ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4NDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDk4NDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NTAwODAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDM4NTAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDE4NTAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDc4NjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY4 NjA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk4NzAwMzIgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDE4ODgwNTIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE4ODAwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDk4ODQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzEwMDEg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MzAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTk5MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5NTgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MWQ5NTAwOTQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5NTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDllNTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGJlNTgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDNlNWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDU5MmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5MjgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MGQ5MjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGY5MjQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTM5 MmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDk5MjQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDE5ODUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDc5ODgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDk5ODEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGI5ODIwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGQ5ODIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGY5ODkwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU5ODIwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTM5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjE5MDQwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MjM5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MjU5MDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mjc5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4Mjk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MmI5MDQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MmY5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzE5MDQwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTU5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTc5 MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWI5MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGMwODAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4NTE5MDExMTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDA0NDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTU5MDExMTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NDU5MDA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDc5MDBjMjEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NTc5MDE0MTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDAwNDIgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMjQgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDEgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NTM5MDA0MTEgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9yZW5kZXJfcGlw ZV9wcm9maWxlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAot CQkJCSAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJICAgaW50ICpsZW5z KQotewotCWludCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5w ZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2 LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19y ZW5kZXJfcGlwZV9wcm9maWxlOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmVu ZGVyX3BpcGVfcHJvZmlsZSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHNbXSA9IHsK LQl7IF9NTUlPKDB4MjcyYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyOCksIDB4ZmZm ZmZmZmYgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjcy MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxYyksIDB4ZmZmZmZmZmYgfSwKLQl7IF9N TUlPKDB4MjcxOCksIDB4ZmZmZmZmZmYgfSwKKwl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAg fSwKIAl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKIAl7IF9NTUlPKDB4MjcxMCksIDB4 MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0YyksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4 Mjc0OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDAwMDY2NjcgfSwKLQl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc1YyksIDB4ODY1NDMy MTAgfSwKLQl7IF9NTUlPKDB4Mjc1OCksIDB4ODY1NDMyMTAgfSwKLQl7IF9NTUlPKDB4Mjc1NCks IDB4MDAwMDY0NjUgfSwKLQl7IF9NTUlPKDB4Mjc1MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc3MCksIDB4MDAwN2Y4MWEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZlMDAgfSwK LQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2Y4MmEgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAw MGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwN2Y4NzIgfSwKLQl7IF9NTUlPKDB4Mjc4 NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAwN2Y4YmEgfSwKLQl7IF9N TUlPKDB4Mjc4YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2Y4N2Eg fSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4 MDAwN2Y4ZWEgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZlMDAgfSwKLQl7IF9NTUlPKDB4 MjdhMCksIDB4MDAwN2Y4ZTIgfSwKLQl7IF9NTUlPKDB4MjdhNCksIDB4MDAwMGZlMDAgfSwKLQl7 IF9NTUlPKDB4MjdhOCksIDB4MDAwN2Y4ZjIgfSwKLQl7IF9NTUlPKDB4MjdhYyksIDB4MDAwMGZl MDAgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25m aWdfbWVtb3J5X3JlYWRzW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0J eyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDI1 MDI0IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCi0JeyBfTU1JTygweGU0NWMp LCAweDAwMDQ1MDQ0IH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0IH0sCi0JeyBfTU1J TygweGU2NWMpLCAweDAwMDY1MDY0IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVf b2FfcmVnIG11eF9jb25maWdfbWVtb3J5X3JlYWRzW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAw eDExODEwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODEwMDFhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTA2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDNmOTAwMDY0IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAzODExMzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA1ODEx YjEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDFhIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFmODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3ODEwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDE5ODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiODEwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFkODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFi OTMwMDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzZTU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA1ZTVjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ZTU0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEzOTAwMTUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIxOTAwMTUx IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDIzOTAwMTUyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDI1OTAwMTUzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDI3OTAwMTU0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDI5OTAwMTU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJiOTAwMTU2IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDJkOTAwMTU3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDJmOTAw MTVmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTAwMTA1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDE1OTAwMTAzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE3OTAwMTAxIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDM1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE5OTA4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDFiOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFk OTA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDExOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQxOTAwYzYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU1OTAwMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ3OTAwYzYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDQ5OTAwYzYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAzIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDUzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbWVtb3J5X3JlYWRzX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgIGNvbnN0IHN0 cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0g MDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz KSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9y ZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19tZW1vcnlfcmVhZHM7Ci0J bGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19tZW1vcnlfcmVhZHMpOwotCW4rKzsKLQot CXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRl cl9jb25maWdfbWVtb3J5X3dyaXRlc1tdID0gewotCXsgX01NSU8oMHgyNzJjKSwgMHhmZmZmZmZm ZiB9LAotCXsgX01NSU8oMHgyNzI4KSwgMHhmZmZmZmZmZiB9LAogCXsgX01NSU8oMHgyNzI0KSwg MHhmMDgwMDAwMCB9LAogCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8o MHgyNzFjKSwgMHhmZmZmZmZmZiB9LAotCXsgX01NSU8oMHgyNzE4KSwgMHhmZmZmZmZmZiB9LAot CXsgX01NSU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzRjKSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzQ4 KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDAwNjY2NyB9LAotCXsgX01N SU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzVjKSwgMHg4NjU0MzIxMCB9 LAotCXsgX01NSU8oMHgyNzU4KSwgMHg4NjU0MzIxMCB9LAotCXsgX01NSU8oMHgyNzU0KSwgMHgw MDAwNjQ2NSB9LAotCXsgX01NSU8oMHgyNzUwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgy NzcwKSwgMHgwMDA3ZjgxYSB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZmUwMCB9LAotCXsg X01NSU8oMHgyNzc4KSwgMHgwMDA3ZjgyYSB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwZmUw MCB9LAotCXsgX01NSU8oMHgyNzgwKSwgMHgwMDA3ZjgyMiB9LAotCXsgX01NSU8oMHgyNzg0KSwg MHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZjhiYSB9LAotCXsgX01NSU8o MHgyNzhjKSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3Zjg3YSB9LAot CXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3 ZjhlYSB9LAotCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmUwMCB9LAotCXsgX01NSU8oMHgyN2Ew KSwgMHgwMDA3ZjhlMiB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwZmUwMCB9LAotCXsgX01N SU8oMHgyN2E4KSwgMHgwMDA3ZjhmMiB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwZmUwMCB9 LAorCXsgX01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwNCB9LAorCXsgX01NSU8oMHgyNzc0KSwgMHgw MDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwMDAwMyB9LAorCXsgX01NSU8oMHgy NzdjKSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzgwKSwgMHgwMDAwMDAwNyB9LAorCXsg X01NSU8oMHgyNzg0KSwgMHgwMDAwMDAwMCB9LAorCXsgX01NSU8oMHgyNzg4KSwgMHgwMDEwMDAw MiB9LAorCXsgX01NSU8oMHgyNzhjKSwgMHgwMDAwZmZmNyB9LAorCXsgX01NSU8oMHgyNzkwKSwg MHgwMDEwMDAwMiB9LAorCXsgX01NSU8oMHgyNzk0KSwgMHgwMDAwZmZjZiB9LAorCXsgX01NSU8o MHgyNzk4KSwgMHgwMDEwMDA4MiB9LAorCXsgX01NSU8oMHgyNzljKSwgMHgwMDAwZmZlZiB9LAor CXsgX01NSU8oMHgyN2EwKSwgMHgwMDEwMDBjMiB9LAorCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAw ZmZlNyB9LAorCXsgX01NSU8oMHgyN2E4KSwgMHgwMDEwMDAwMSB9LAorCXsgX01NSU8oMHgyN2Fj KSwgMHgwMDAwZmZlNyB9LAogfTsKIAotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBm bGV4X2V1X2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAw MDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU2 NTgpLCAweDAwMDI1MDI0IH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDM1MDM0IH0sCi0JeyBf TU1JTygweGU0NWMpLCAweDAwMDQ1MDQ0IH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwMDU1MDU0 IH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDY1MDY0IH0sCitzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKIH07CiAKLXN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19tZW1vcnlfd3JpdGVzW10gPSB7Ci0J eyBfTU1JTygweDk4ODgpLCAweDExODEwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEzODEw MDFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTA2ODAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDNmOTAxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAzODExMzAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA1ODExYjEyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDFhIH0s CitzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGVzdF9vYVtdID0g eworCXsgX01NSU8oMHg5ODg4KSwgMHgxMTgxMDAwMCB9LAorCXsgX01NSU8oMHg5ODg4KSwgMHgw NzgxMDAxMyB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgxZjgxMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNzgxMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTgxMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYjgxMDAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgxZDgxMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkzMDA1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwM2U1ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNWU1YzAwMCB9LAorCXsgX01NSU8o MHg5ODg4KSwgMHgxYjkzMDA0MCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgwN2U1NDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxMzkwMDE2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMTkw MDE2MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyMzkwMDE2MiB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgyNTkwMDE2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyNzkwMDE2NCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgyOTkwMDE2NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyYjkwMDE2NiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgyZDkwMDE2NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgy ZjkwMDE1MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMTkwMDEwNSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNTkwMDEwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNzkwMDEwMSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgzNTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOTkwODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxZDkwODAwMCB9LAogCXsgX01NSU8oMHg5ODg4KSwgMHgxZjkwODAwMCB9LAogCXsgX01NSU8o MHg5ODg4KSwgMHgxMTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMGM2MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkw MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0NzkwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0OTkwMGM2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDA2MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1 OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDAwMyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAotZ2V0X21lbW9yeV93cml0ZXNf bXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkgICAgIGludCAqbGVucykKLXsKLQlp bnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5t dXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbWVtb3J5X3dy aXRlczsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29uZmlnX21lbW9yeV93cml0ZXMpOwot CW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHgyNzI0 KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01N SU8oMHgyNzE0KSwgMHhmMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzcwKSwgMHgw MDA3ZmMyYSB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgy Nzc4KSwgMHgwMDA3ZmM2YSB9LAotCXsgX01NSU8oMHgyNzdjKSwgMHgwMDAwYmYwMCB9LAotCXsg X01NSU8oMHgyNzgwKSwgMHgwMDA3ZmM5MiB9LAotCXsgX01NSU8oMHgyNzg0KSwgMHgwMDAwYmYw MCB9LAotCXsgX01NSU8oMHgyNzg4KSwgMHgwMDA3ZmNhMiB9LAotCXsgX01NSU8oMHgyNzhjKSwg MHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyNzkwKSwgMHgwMDA3ZmMzMiB9LAotCXsgX01NSU8o MHgyNzk0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyNzk4KSwgMHgwMDA3ZmM5YSB9LAot CXsgX01NSU8oMHgyNzljKSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyN2EwKSwgMHgwMDA3 ZmU2YSB9LAotCXsgX01NSU8oMHgyN2E0KSwgMHgwMDAwYmYwMCB9LAotCXsgX01NSU8oMHgyN2E4 KSwgMHgwMDA3ZmU3YSB9LAotCXsgX01NSU8oMHgyN2FjKSwgMHgwMDAwYmYwMCB9LAotfTsKLQot c3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4 dGVuZGVkW10gPSB7Ci0JeyBfTU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygw eGU1NTgpLCAweDAwMDAwMDAzIH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDAyMDAxIH0sCi0J eyBfTU1JTygweGU3NTgpLCAweDAwNzc4MDA4IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDg4 MDc4IH0sCi0JeyBfTU1JTygweGU1NWMpLCAweDAwODA4NzA4IH0sCi0JeyBfTU1JTygweGU2NWMp LCAweDAwYTA4OTA4IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11 eF9jb25maWdfY29tcHV0ZV9leHRlbmRlZFtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDZj MDBlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFjODE2MCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgxNjFjODAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODFjMDEyMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTRlODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx YTRlYWFhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNjRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRlODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRlODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZTZjMGIwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDZjMDIwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjZjMDAwYyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzZjMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgxZTZjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTZj MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTFiYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDFiODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjFiYzAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMDFjMDA0MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjFjNDIwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODFjNDQ0MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YTFjNDY0NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzFjNzY0NyB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDFjNzM1NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzFjMDAzMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMDFjMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYTFjMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDRjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjYWEyYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYzRjMDJhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODRjYTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw YzBmNTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNTUxNSB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMDBmMDE1NSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJjODAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjJjYWEw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhYSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkw N2ZmZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHg0MTkwMDA0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NTkwMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHg0NTkwMDgwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDg0MiB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0 OTkwMDg0MiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0YjkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMDgw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGludAot Z2V0X2NvbXB1dGVfZXh0ZW5kZWRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCQlpbnQg KmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3By aXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29u ZmlnX2NvbXB1dGVfZXh0ZW5kZWQ7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19j b21wdXRlX2V4dGVuZGVkKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGVbXSA9 IHsKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4 MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4 MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7 IF9NTUlPKDB4Mjc3MCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZl ZmUgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9NTUlPKDB4Mjc3Yyks IDB4MDAwMGZlZmQgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwN2ZmZmEgfSwKLQl7IF9NTUlP KDB4Mjc5NCksIDB4MDAwMGZiZWYgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4MDAwN2ZmZmEgfSwK LQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZiZGYgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfY29tcHV0ZV9sM19jYWNoZVtdID0gewotCXsg X01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAwMDAw MyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAwMjAwMSB9LAotCXsgX01NSU8oMHhlNzU4KSwg MHgwMDEwMTEwMCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDIwMTIwMCB9LAotCXsgX01NSU8o MHhlNTVjKSwgMHgwMDMwMTMwMCB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDQwMTQwMCB9LAot fTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2NvbXB1dGVf bDNfY2FjaGVbXSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTY2YzA3NjAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTU5MzAwMWUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4M2Y5MDAwMDMgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MWE0ZTgwMjAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM0ZTAwMDIgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDA2YzAwNTEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY2YzUwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg2YzVjNWQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGU2YzVlNWYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTg2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWM2YzAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MWU2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAxYjQw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDgxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUxYmMwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTAxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExY2UwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWMxYzAwMzAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA0 YzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzJhMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGM0YzAyODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAwZDIwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MDYwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgwZGEwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MGMwZjA0MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjE1MDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTAwZjAxNDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDAyYzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGUyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYyYzBh MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTgyYzAwYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDM5MzMzMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDU5MzAwMzIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MTE5MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MzAwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MWQ5MDAxNTcgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWY5 MDAxNTggfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MTk5MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWI5MDgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE5MDAzMGYgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 NTU5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMjEgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NDc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NGI5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTk5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTM5MDU1NTUgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4NDM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9jb21wdXRlX2wz X2NhY2hlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJ CWNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkJaW50ICpsZW5zKQotewotCWlu dCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19jb21wdXRlX2wz X2NhY2hlOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfY29tcHV0ZV9sM19jYWNo ZSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9v YV9yZWcgYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygweDI3NDAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDEwODAwMDAwIH0s Ci0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDAw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3 NzQpLCAweDAwMDBmZGZmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVn IGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2ZbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAw MDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1 OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9N TUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIg fSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19oZGNfYW5kX3NmW10gPSB7Ci0JeyBfTU1JTygw eDk4ODgpLCAweDEwNGYwMjMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNGY0NjQwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEwNmMwMjMyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExODM0 NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNGYxODgwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNGYwOGJiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGYwMDFiIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0NmMwMTAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 NmMwMDBiIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA0MWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MWI0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDFhMWMxODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNWI4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNWM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE0NWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2NWM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE4NWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMw MGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY1MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAy MmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmNjMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2MmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmNjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmODI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBmODMwNWMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA5ODMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA3ODMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkOTUwMDgwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEzOTI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBmOTg4 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMxOTA0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDExOTBmYzAwIH0sCiAJeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDU5OTAwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDQwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQx OTAwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwODQyIH0sCiAJeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCiAJeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCiAJeyBf TU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCiB9OwogCiBzdGF0aWMgaW50Ci1nZXRfaGRjX2Fu ZF9zZl9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJCSAg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJCSAgaW50ICpsZW5zKQotewotCWlu dCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19oZGNfYW5kX3Nm OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfaGRjX2FuZF9zZik7Ci0JbisrOwot Ci0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3Vu dGVyX2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0J eyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAw MDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjAp LCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1J TygweDI3NzApLCAweDAwMTAwMDcwIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0s Ci0JeyBfTU1JTygweDI3NzgpLCAweDAwMDE0MDAyIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAw MDBjM2ZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDEwMDAyIH0sCi0JeyBfTU1JTygweDI3 ODQpLCAweDAwMDBjN2ZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDA0MDAyIH0sCi0JeyBf TU1JTygweDI3OGMpLCAweDAwMDBkM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMTAwNzAw IH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZjFmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAw eDAwMDAxNDAyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmYzNmIH0sCi0JeyBfTU1JTygw eDI3YTApLCAweDAwMDAxMDAyIH0sCi0JeyBfTU1JTygweDI3YTQpLCAweDAwMDBmYzdmIH0sCi0J eyBfTU1JTygweDI3YTgpLCAweDAwMDAwNDAyIH0sCi0JeyBfTU1JTygweDI3YWMpLCAweDAwMDBm ZDNmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX2wzXzFbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19sM18xW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmM3YjQwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE2NmMwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjAz NDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjEzNDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDFhNGVhODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjNGUwMDAyIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4 NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2NGY0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNmM1MzI3IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDBlNmM1NDI1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNmMyYTAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNmMyODViIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0NmMwMDVjIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDFjNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFlNmMwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFhNmMwODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMWJj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwMWI4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDA0MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFjMWMwMDNjIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0 MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDE4MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNWMxMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNjAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA0NjAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNjEwMDQ0IH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwNjEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NjEwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDBjNGMwMmE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGNh MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBjMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMTU0IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBjMGY1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDE4MmMwMGFhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMmNjMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDExOTBmZmMwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ5OTAwNDIwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDRiOTAwMDIxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQx OTAwNDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQzOTAwNDIxIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCi19Owot Ci1zdGF0aWMgaW50Ci1nZXRfbDNfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAg ICBpbnQgKmxlbnMpCitnZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3Ms CisJCSAgICAgICBpbnQgKmxlbnMpCiB7CiAJaW50IG4gPSAwOwogCiAJQlVJTERfQlVHX09OKEFS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7CiAJQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKIAotCXJl Z3Nbbl0gPSBtdXhfY29uZmlnX2wzXzE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZp Z19sM18xKTsKKwlyZWdzW25dID0gbXV4X2NvbmZpZ190ZXN0X29hOworCWxlbnNbbl0gPSBBUlJB WV9TSVpFKG11eF9jb25maWdfdGVzdF9vYSk7CiAJbisrOwogCiAJcmV0dXJuIG47CiB9CiAKLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19sM18yW10gPSB7 Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAw ODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3 MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3MjQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMTAwMDcw IH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDBmZmYxIH0sCi0JeyBfTU1JTygweDI3NzgpLCAw eDAwMDI4MDAyIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDA4N2ZmIH0sCi0JeyBfTU1JTygw eDI3ODApLCAweDAwMDIwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDA4ZmZmIH0sCi0J eyBfTU1JTygweDI3ODgpLCAweDAwMDA4MDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBh N2ZmIH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29u ZmlnX2wzXzJbXSA9IHsKLQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlP KDB4ZTU1OCksIDB4MDAwMTAwMDMgfSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwK LQl7IF9NTUlPKDB4ZTc1OCksIDB4MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAw NTEwNTAgfSwKLQl7IF9NTUlPKDB4ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1 YyksIDB4MDAwNTUwNTQgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcg bXV4X2NvbmZpZ19sM18yW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyNmMwMmUwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDE0NmMwMDAxIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhNjIz NDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGU4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhNGU4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NGY0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDAyNmMzMzI0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 NmMzNDIyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDFhNmMwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMWJjMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MWJjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MWM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE4MWM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhMWMwODAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2NWI0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFhNWMxMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2NjE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNjIw MDQ0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNjIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA2NjIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4NGM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDBhNGMwMDJhIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2 MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGY0MDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDBlMGYwMDU1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmM4MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA4MmM4MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjMmNjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmODAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAwMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDQzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDMzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfbDNfMl9tdXhfY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1 X29hX3JlZyAqKnJlZ3MsCi0JCSAgICBpbnQgKmxlbnMpCitpbnQgaTkxNV9vYV9zZWxlY3RfbWV0 cmljX3NldF9za2xndDQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlu dCBuID0gMDsKLQotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11 eF9yZWdzKSA8IDEpOwotCUJVSUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzX2xlbnMpIDwgMSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19sM18yOwotCWxl bnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfbDNfMik7Ci0JbisrOworCWRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPSAwOworCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9y ZWdzID0gTlVMTDsKKwlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPSAwOwor CWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9IE5VTEw7CisJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzX2xlbiA9IDA7CiAKLQlyZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X29hX3JlZyBiX2NvdW50ZXJfY29uZmlnX2wzXzNbXSA9IHsKLQl7IF9NTUlPKDB4Mjc0 MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc0NCksIDB4MDA4MDAwMDAgfSwKLQl7IF9N TUlPKDB4MjcxMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAg fSwKLQl7IF9NTUlPKDB4MjcyMCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4 MDA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4Mjc3MCksIDB4MDAxMDAwNzAgfSwKLQl7IF9NTUlPKDB4 Mjc3NCksIDB4MDAwMGZmZjEgfSwKLQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMjgwMDIgfSwKLQl7 IF9NTUlPKDB4Mjc3YyksIDB4MDAwMDg3ZmYgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMjAw MDIgfSwKLQl7IF9NTUlPKDB4Mjc4NCksIDB4MDAwMDhmZmYgfSwKLQl7IF9NTUlPKDB4Mjc4OCks IDB4MDAwMDgwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4YyksIDB4MDAwMGE3ZmYgfSwKLX07Ci0KLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfbDNfM1tdID0gewot CXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhlNTU4KSwgMHgwMDAx MDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsgX01NSU8oMHhlNzU4 KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1MCB9LAotCXsgX01N SU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwgMHgwMDA1NTA1NCB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhfY29uZmlnX2wzXzNb XSA9IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI2YzRlODAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MTQ2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE2MzM0MDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQ0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY0ZTgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0 ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGM0ZTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDI2YzMzMjEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQ2YzM0MmYgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTA2YzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWE2YzIwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDQxYmMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYxYjQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MTQxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTYxYzgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MTgxYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MWExYzE4 MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDY2MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGM2MzAwNDQgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTA2MzAwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDY2MzAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDg0YzgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwYWEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIw ZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYwZDIwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZjQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGUwZjAwNTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQyYzgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDgyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGMyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTE5MGY4MDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDA4NDIgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwMDIgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLX07Ci0KLXN0YXRpYyBpbnQKLWdldF9sM18zX211eF9j b25maWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkgICAgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnICoqcmVncywKLQkJICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7 Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykg PCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVn c19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11eF9jb25maWdfbDNfMzsKLQlsZW5zW25dID0g QVJSQVlfU0laRShtdXhfY29uZmlnX2wzXzMpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZFtdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAwMDAwMCB9 LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEwKSwgMHgw MDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgzMDgwMDAwMCB9LAotCXsgX01NSU8oMHgy NzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9LAotCXsg X01NSU8oMHgyNzcwKSwgMHgwMDAwMDAwMiB9LAotCXsgX01NSU8oMHgyNzc0KSwgMHgwMDAwZWZm ZiB9LAotCXsgX01NSU8oMHgyNzc4KSwgMHgwMDAwNjAwMCB9LAotCXsgX01NSU8oMHgyNzdjKSwg MHgwMDAwZjNmZiB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4 X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kW10gPSB7Ci0JeyBfTU1JTygw eGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAzIH0sCi0J eyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAweDAwMDE1 MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygweGU1NWMp LCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19OwotCi1z dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRf cGl4ZWxfYmFja2VuZFtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDJmMzgwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxNDRkMDUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjBkMDNj MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDBkMDNjZiB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwYzBmMDAwNCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRlNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNDJmMDQ4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODJmMDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRj MDA5MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjRkMDAyNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMDRkMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMGQ0MCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjBkODAzZiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkODAyMyB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBkMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjBmMDAxMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwMDBmMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA1MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYTJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwZmMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1MTkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg0MTkwMTQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMTQ4NSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg1MzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkw MDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgKipyZWdzLAotCQkJCQkgICAgaW50ICpsZW5zKQotewotCWludCBuID0gMDsKLQotCUJVSUxE X0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKSA8IDEpOwotCUJV SUxEX0JVR19PTihBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpIDwg MSk7Ci0KLQlyZWdzW25dID0gbXV4X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k OwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9jb25maWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZCk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ19zYW1wbGVyW10gPSB7Ci0JeyBfTU1JTygweDI3 NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3MTApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTQpLCAweDcwODAwMDAw IH0sCi0JeyBfTU1JTygweDI3MjApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAw eDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDBjMDAwIH0sCi0JeyBfTU1JTygw eDI3NzQpLCAweDAwMDBlN2ZmIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAzMDAwIH0sCi0J eyBfTU1JTygweDI3N2MpLCAweDAwMDBmOWZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAw YzAwIH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDBmZTdmIH0sCi19OwotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3NhbXBsZXJbXSA9IHsKLQl7IF9N TUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAwMTAwMDMg fSwKLQl7IF9NTUlPKDB4ZTY1OCksIDB4MDAwMTIwMTEgfSwKLQl7IF9NTUlPKDB4ZTc1OCksIDB4 MDAwMTUwMTQgfSwKLQl7IF9NTUlPKDB4ZTQ1YyksIDB4MDAwNTEwNTAgfSwKLQl7IF9NTUlPKDB4 ZTU1YyksIDB4MDAwNTMwNTIgfSwKLQl7IF9NTUlPKDB4ZTY1YyksIDB4MDAwNTUwNTQgfSwKLX07 Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ19zYW1wbGVyW10g PSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDE0MTUyYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE2MTUwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyMTYwMGEwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE0MzUyYzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2MzUwMDA1IH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDEyMzYwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0NTUy YzAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE2NTUwMDA1IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDEyNTYwMGEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmY2MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyMmYyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjNGMwMDUwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBhNGMwMDEwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBj MGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwMGYwMzUwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBjMGZiMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMGRhIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDE4MmMwMDI4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyMmRjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MmQ0 MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDBlMTMyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTNjMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFjMTQwMDE4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMTU3MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlMTUwMDc4IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEw MTUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTYyMTgwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAyMTYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTc0MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAyMzNhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzMzMDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDE0MzQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDE2MzQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMzU3ODcwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDEwMzUwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MzYwMDQzIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDAyMzYwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0Mzcx MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlNTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAwNTM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2NTMzMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDFjNTQwMDIwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTQ4MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDBlNTU3MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAw NTU3ODAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEwNTUwMDAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDA2NTYwMDQzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTYwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDA2NTcxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmZjgw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDU3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDQ5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDMzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDRiOTAwMDYwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDU5OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUxOTAw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwYzAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDQzOTAwODQyIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDQ1OTAwMDYwIH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfc2FtcGxlcl9t dXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICAgIGNv bnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAgICBpbnQgKmxlbnMpCi17Ci0J aW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2Eu bXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3NhbXBsZXI7 Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ19zYW1wbGVyKTsKLQluKys7Ci0KLQly ZXR1cm4gbjsKLX0KLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBiX2NvdW50ZXJf Y29uZmlnX3RkbF8xW10gPSB7Ci0JeyBfTU1JTygweDI3NDApLCAweDAwMDAwMDAwIH0sCi0JeyBf TU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjQpLCAweDMwODAwMDAwIH0sCi0JeyBfTU1JTygw eDI3NzApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3NzQpLCAweDAwMDA3ZmZmIH0sCi0J eyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3N2MpLCAweDAwMDA5 ZmZmIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAwMDAyIH0sCi0JeyBfTU1JTygweDI3ODQp LCAweDAwMDBlZmZmIH0sCi0JeyBfTU1JTygweDI3ODgpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1J TygweDI3OGMpLCAweDAwMDBmM2ZmIH0sCi0JeyBfTU1JTygweDI3OTApLCAweDAwMDAwMDAyIH0s Ci0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZGZmIH0sCi0JeyBfTU1JTygweDI3OTgpLCAweDAw MDAwMDAwIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAwMDBmZTdmIH0sCi19OwotCi1zdGF0aWMg Y29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3RkbF8xW10gPSB7Ci0JeyBf TU1JTygweGU0NTgpLCAweDAwMDA1MDA0IH0sCi0JeyBfTU1JTygweGU1NTgpLCAweDAwMDEwMDAz IH0sCi0JeyBfTU1JTygweGU2NTgpLCAweDAwMDEyMDExIH0sCi0JeyBfTU1JTygweGU3NTgpLCAw eDAwMDE1MDE0IH0sCi0JeyBfTU1JTygweGU0NWMpLCAweDAwMDUxMDUwIH0sCi0JeyBfTU1JTygw eGU1NWMpLCAweDAwMDUzMDUyIH0sCi0JeyBfTU1JTygweGU2NWMpLCAweDAwMDU1MDU0IH0sCi19 OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9jb25maWdfdGRsXzFbXSA9 IHsKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTIxMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MTIzMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MTI1MjAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDAyZjgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIyZjMwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGE0YzAwMTUgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMwZDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAwZDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIwZGEwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQwZGEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYwZDIwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MTAwZjAzYTAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMw ZmYwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUwZjAwOTUgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDYyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDgyYzgwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGEyYzgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMyZDgwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDYyZDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMDgwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MDQxMGMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMTgwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MDQxMWMwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMjE4 ODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDQxMjE5YjUgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MDAxMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDIxMzQwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDQxMzUwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMDgwMDAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYz MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MGUzMTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMTQwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MGMzMjFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGUzMjAwMzMg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMjAwMzEgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 MDAzMjAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGMzMzQwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4MGUzMzEwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDYzMzEwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4MGU1MDgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MDgw MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MDQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4MGU1MTgwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MTgwMDAgfSwKLQl7IF9NTUlP KDB4OTg4OCksIDB4MDI1MTQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MjE4ODAgfSwK LQl7IF9NTUlPKDB4OTg4OCksIDB4MDA1MjFhODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1 MjAwMzMgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MGU1MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4 OCksIDB4MDA1MzQwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MDI1MzEwMDAgfSwKLQl7IF9N TUlPKDB4OTg4OCksIDB4MTE5MGZmODAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTc5MDAwMDAg fSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDk5MDA4MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4 Mzc5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4MzM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4 OTg4OCksIDB4NGI5MDAwNjIgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NTk5MDAwMDAgfSwKLQl7 IF9NTUlPKDB4OTg4OCksIDB4NTE5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDE5MDBj MDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDM5MDAwMDMgfSwKLQl7IF9NTUlPKDB4OTg4OCks IDB4NTM5MDAwMDAgfSwKLQl7IF9NTUlPKDB4OTg4OCksIDB4NDU5MDAwNDAgfSwKLX07Ci0KLXN0 YXRpYyBpbnQKLWdldF90ZGxfMV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKLQkJICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgKipyZWdzLAotCQkgICAg IGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0laRShk ZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9IG11 eF9jb25maWdfdGRsXzE7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZGxfMSk7 Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9y ZWcgYl9jb3VudGVyX2NvbmZpZ190ZGxfMltdID0gewotCXsgX01NSU8oMHgyNzQwKSwgMHgwMDAw MDAwMCB9LAotCXsgX01NSU8oMHgyNzQ0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01NSU8oMHgyNzEw KSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzE0KSwgMHgwMDgwMDAwMCB9LAotCXsgX01N SU8oMHgyNzIwKSwgMHgwMDAwMDAwMCB9LAotCXsgX01NSU8oMHgyNzI0KSwgMHgwMDgwMDAwMCB9 LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ190 ZGxfMltdID0gewotCXsgX01NSU8oMHhlNDU4KSwgMHgwMDAwNTAwNCB9LAotCXsgX01NSU8oMHhl NTU4KSwgMHgwMDAxMDAwMyB9LAotCXsgX01NSU8oMHhlNjU4KSwgMHgwMDAxMjAxMSB9LAotCXsg X01NSU8oMHhlNzU4KSwgMHgwMDAxNTAxNCB9LAotCXsgX01NSU8oMHhlNDVjKSwgMHgwMDA1MTA1 MCB9LAotCXsgX01NSU8oMHhlNTVjKSwgMHgwMDA1MzA1MiB9LAotCXsgX01NSU8oMHhlNjVjKSwg MHgwMDA1NTA1NCB9LAotfTsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBtdXhf Y29uZmlnX3RkbF8yW10gPSB7Ci0JeyBfTU1JTygweDk4ODgpLCAweDEyMTI0ZDYwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDEyMzIyZTYwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDEyNTI0ZDYw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyMmYzMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDBhNGMwMDE0IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMGQ4MDAwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDAyMGRhMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MGRhMDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MGQyMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBjMGZl MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBlMGYwMDk3IH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA4MmM4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDBhMmM4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAwMmQ4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MmQ0MDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDA0MTBjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0 MTFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTIxZmI3IH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDAwMTIwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA0MTM1MDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDAwMzA4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA2MzA0MDAw IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzE4MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAw eDA2MzE0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzIxYjgwIH0sCi0JeyBfTU1JTygw eDk4ODgpLCAweDA2MzIwMDNmIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwMzM0MDAwIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDA2MzMxMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTBj MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAyNTFjMDAwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDAyNTIxZmI3IH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDAwNTIwMDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDAyNTM1MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDExOTBmYzAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUx OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQxOTAwODAwIH0sCi0JeyBfTU1JTygweDk4 ODgpLCAweDQzOTAwMDYzIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBf TU1JTygweDk4ODgpLCAweDQ1OTAwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAw IH0sCi19OwotCi1zdGF0aWMgaW50Ci1nZXRfdGRsXzJfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoq cmVncywKLQkJICAgICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09O KEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVH X09OKEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQot CXJlZ3Nbbl0gPSBtdXhfY29uZmlnX3RkbF8yOwotCWxlbnNbbl0gPSBBUlJBWV9TSVpFKG11eF9j b25maWdfdGRsXzIpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29uc3Qgc3Ry dWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfY29tcHV0ZV9leHRyYVtdID0gewotfTsK LQotc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyBmbGV4X2V1X2NvbmZpZ19jb21wdXRl X2V4dHJhW10gPSB7Ci19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnIG11eF9j b25maWdfY29tcHV0ZV9leHRyYVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjEyMDNlMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjMyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx MjUyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjkyMDNlMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMmIyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMmQyMDNlMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxMzEyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzMyMDNl MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMzUyMDNlMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxYTRlZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYzRlMDAwMyB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMjRlYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDRlYzAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjRlYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJm NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDJhMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwODRjYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTRjMDA0MiB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBkYTAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDBkYTAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNjBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDE1MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzBmNTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmMDA2 ZCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDBhOCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDJjODAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzJjODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNDJkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEw NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjExNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjEyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDEyMDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwNjEzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMwODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDMxODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NDMyMTk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDMyMDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNDMzNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUwNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDUxNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDUyMDAz MyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDUyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDUzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxYWNlZjAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgxY2NlMDAwMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGFmODAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwY2NjMDJhMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWNj MDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhkODAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwZThkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDhkODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDhmMDE1MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzhmYjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZThmMDAwMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGFjMDBhOCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwNmFjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmFkNDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwMjkwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjkxODAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjkyMTk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDkyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjkzNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMmIwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIxNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMmIyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGIy MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMmIzMTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMGQwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQxODAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMGQyMTk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMGQzNDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNzJmODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw ZDRjMDEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDBkODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwZjBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTBmMDFiMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxOTJjMDA4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjJkNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjEwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwZjExODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjEyMTk4MCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwMTEyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjEzNDAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwZjMwNDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjMx NDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjMyMDAzMyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwMTMyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZjMzMTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwZDUwODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDUxODAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDUyMTk4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MTUyMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZDUzNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMTkwZmY4MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1NzkwMDAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg0OTkwMGMwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzNzkwMDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg0YjkwMDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1OTkwMDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHg1MTkwMTEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMTAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHg0MzkwMTQyMyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg1Mzkw MzMzMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMDA0NCB9LAotfTsKLQotc3RhdGljIGlu dAotZ2V0X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCQkg ICAgIGludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfY29tcHV0ZV9leHRyYTsKLQlsZW5zW25dID0gQVJSQVlfU0laRShtdXhfY29u ZmlnX2NvbXB1dGVfZXh0cmEpOwotCW4rKzsKLQotCXJldHVybiBuOwotfQotCi1zdGF0aWMgY29u c3Qgc3RydWN0IGk5MTVfb2FfcmVnIGJfY291bnRlcl9jb25maWdfdm1lX3BpcGVbXSA9IHsKLQl7 IF9NTUlPKDB4Mjc0MCksIDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcxMCksIDB4MDAwMDAw MDAgfSwKLQl7IF9NTUlPKDB4MjcxNCksIDB4ZjA4MDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyMCks IDB4MDAwMDAwMDAgfSwKLQl7IF9NTUlPKDB4MjcyNCksIDB4MzA4MDAwMDAgfSwKLQl7IF9NTUlP KDB4Mjc3MCksIDB4MDAxMDAwMzAgfSwKLQl7IF9NTUlPKDB4Mjc3NCksIDB4MDAwMGZmZjkgfSwK LQl7IF9NTUlPKDB4Mjc3OCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc3YyksIDB4MDAw MGZmZmMgfSwKLQl7IF9NTUlPKDB4Mjc4MCksIDB4MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc4 NCksIDB4MDAwMGZmZjMgfSwKLQl7IF9NTUlPKDB4Mjc4OCksIDB4MDAxMDAxODAgfSwKLQl7IF9N TUlPKDB4Mjc4YyksIDB4MDAwMGZmY2YgfSwKLQl7IF9NTUlPKDB4Mjc5MCksIDB4MDAwMDAwMDIg fSwKLQl7IF9NTUlPKDB4Mjc5NCksIDB4MDAwMGZmY2YgfSwKLQl7IF9NTUlPKDB4Mjc5OCksIDB4 MDAwMDAwMDIgfSwKLQl7IF9NTUlPKDB4Mjc5YyksIDB4MDAwMGZmM2YgfSwKLX07Ci0KLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgZmxleF9ldV9jb25maWdfdm1lX3BpcGVbXSA9IHsK LQl7IF9NTUlPKDB4ZTQ1OCksIDB4MDAwMDUwMDQgfSwKLQl7IF9NTUlPKDB4ZTU1OCksIDB4MDAw MDgwMDMgfSwKLX07Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZp Z192bWVfcGlwZVtdID0gewotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDFhNTgwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgxNjFhMDBjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMjE4MDI0MCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDE4MDAwMiB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgx NDlhNTgwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNjlhMDBjMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxMjk4MDI0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxNDk4MDAwMiB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgxYTRlM2ZjMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDJmMTAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMjJmODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwNDJmMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDRjNDAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwYTRjOTUwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzRjMDAyYSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDBkMjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjBk ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTBkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzBkYTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYzBmMDQwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTBmNTUwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDBmMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw MDJjODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZTJjODAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgxNjJjYWEwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxODJjMDAwYSB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwNDE5MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODFhMjhj MSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDFhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgwMDEzMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNjEzYzAwMCB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwODEzZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE3MjAwMCB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwNjE3ODAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE3 YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwMDE4MDAzNyB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwNjE4MDk0MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODE4MDAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwMjE4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDE4MzAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNGFmYzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw NmFmMzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYWNjNDAwMCB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHgwY2NjMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYThkYTAwMCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHgwYzhkYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwZThmNDAw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMDhmMDAxNSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHgxNmFjYTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxOGFjMDAwYSB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgwNjk5MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzlhMjhjMSB9LAot CXsgX01NSU8oMHg5ODg4KSwgMHgwMDlhMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYTkz ZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzkzZjAwMCB9LAotCXsgX01NSU8oMHg5ODg4 KSwgMHgwYTk3YTAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwYzk3YTAwMCB9LAotCXsgX01N SU8oMHg5ODg4KSwgMHgwYTk4MDk3NyB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwODk4MDAwMCB9 LAotCXsgX01NSU8oMHg5ODg4KSwgMHgwNDk4MDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgw Njk4MzAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgxMTkwMDBmZiB9LAotCXsgX01NSU8oMHg5 ODg4KSwgMHg1MTkwMDAxMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0MTkwMDA2MCB9LAotCXsg X01NSU8oMHg5ODg4KSwgMHg1NTkwMDExMSB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NTkwMGMw MCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0NzkwMDgyMSB9LAotCXsgX01NSU8oMHg5ODg4KSwg MHg1NzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHg0OTkwMDAwMiB9LAotCXsgX01NSU8o MHg5ODg4KSwgMHgzNzkwMDAwMCB9LAotCXsgX01NSU8oMHg5ODg4KSwgMHgzMzkwMDAwMCB9LAot fTsKLQotc3RhdGljIGludAotZ2V0X3ZtZV9waXBlX211eF9jb25maWcoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAotCQkJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICoqcmVncywK LQkJCWludCAqbGVucykKLXsKLQlpbnQgbiA9IDA7Ci0KLQlCVUlMRF9CVUdfT04oQVJSQVlfU0la RShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncykgPCAxKTsKLQlCVUlMRF9CVUdfT04oQVJSQVlf U0laRShkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKSA8IDEpOwotCi0JcmVnc1tuXSA9 IG11eF9jb25maWdfdm1lX3BpcGU7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ192 bWVfcGlwZSk7Ci0JbisrOwotCi0JcmV0dXJuIG47Ci19Ci0KLXN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9vYV9yZWcgYl9jb3VudGVyX2NvbmZpZ190ZXN0X29hW10gPSB7Ci0JeyBfTU1JTygweDI3 NDApLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NDQpLCAweDAwODAwMDAwIH0sCi0JeyBf TU1JTygweDI3MTQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MTApLCAweDAwMDAwMDAw IH0sCi0JeyBfTU1JTygweDI3MjQpLCAweGYwODAwMDAwIH0sCi0JeyBfTU1JTygweDI3MjApLCAw eDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzApLCAweDAwMDAwMDA0IH0sCi0JeyBfTU1JTygw eDI3NzQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3NzgpLCAweDAwMDAwMDAzIH0sCi0J eyBfTU1JTygweDI3N2MpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3ODApLCAweDAwMDAw MDA3IH0sCi0JeyBfTU1JTygweDI3ODQpLCAweDAwMDAwMDAwIH0sCi0JeyBfTU1JTygweDI3ODgp LCAweDAwMTAwMDAyIH0sCi0JeyBfTU1JTygweDI3OGMpLCAweDAwMDBmZmY3IH0sCi0JeyBfTU1J TygweDI3OTApLCAweDAwMTAwMDAyIH0sCi0JeyBfTU1JTygweDI3OTQpLCAweDAwMDBmZmNmIH0s Ci0JeyBfTU1JTygweDI3OTgpLCAweDAwMTAwMDgyIH0sCi0JeyBfTU1JTygweDI3OWMpLCAweDAw MDBmZmVmIH0sCi0JeyBfTU1JTygweDI3YTApLCAweDAwMTAwMGMyIH0sCi0JeyBfTU1JTygweDI3 YTQpLCAweDAwMDBmZmU3IH0sCi0JeyBfTU1JTygweDI3YTgpLCAweDAwMTAwMDAxIH0sCi0JeyBf TU1JTygweDI3YWMpLCAweDAwMDBmZmU3IH0sCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfb2FfcmVnIGZsZXhfZXVfY29uZmlnX3Rlc3Rfb2FbXSA9IHsKLX07Ci0KLXN0YXRpYyBjb25z dCBzdHJ1Y3QgaTkxNV9vYV9yZWcgbXV4X2NvbmZpZ190ZXN0X29hW10gPSB7Ci0JeyBfTU1JTygw eDk4ODgpLCAweDExODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDA3ODEwMDEzIH0sCi0J eyBfTU1JTygweDk4ODgpLCAweDFmODEwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFkODEw MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFiOTMwMDQwIH0sCi0JeyBfTU1JTygweDk4ODgp LCAweDA3ZTU0MDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDFmOTA4MDAwIH0sCi0JeyBfTU1J TygweDk4ODgpLCAweDExOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDM3OTAwMDAwIH0s Ci0JeyBfTU1JTygweDk4ODgpLCAweDUzOTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDQ1 OTAwMDAwIH0sCi0JeyBfTU1JTygweDk4ODgpLCAweDMzOTAwMDAwIH0sCi19OwotCi1zdGF0aWMg aW50Ci1nZXRfdGVzdF9vYV9tdXhfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKLQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAqKnJlZ3MsCi0JCSAgICAg ICBpbnQgKmxlbnMpCi17Ci0JaW50IG4gPSAwOwotCi0JQlVJTERfQlVHX09OKEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MpIDwgMSk7Ci0JQlVJTERfQlVHX09OKEFSUkFZX1NJ WkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucykgPCAxKTsKLQotCXJlZ3Nbbl0gPSBt dXhfY29uZmlnX3Rlc3Rfb2E7Ci0JbGVuc1tuXSA9IEFSUkFZX1NJWkUobXV4X2NvbmZpZ190ZXN0 X29hKTsKLQluKys7Ci0KLQlyZXR1cm4gbjsKLX0KLQotaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJp Y19zZXRfc2tsZ3Q0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVncyA9IE5VTEw7Ci0JZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVu ID0gMDsKLQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPSBOVUxMOwotCWRldl9wcml2LT5w ZXJmLm9hLmZsZXhfcmVnc19sZW4gPSAwOwotCi0Jc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5t ZXRyaWNzX3NldCkgewotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfQkFTSUM6Ci0JCWRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3JlbmRlcl9iYXNpY19tdXhfY29u ZmlnKGRldl9wcml2LAotCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJ CQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlpZiAoZGV2X3ByaXYt PnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdfRFJJVkVSKCJObyBz dWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJFTkRFUl9CQVNJQ1wiIG1ldHJpYyBzZXRcbiIpOwot Ci0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0 aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNl cnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAq LwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3JlbmRlcl9iYXNpYzsKLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ19yZW5kZXJfYmFzaWMpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0J CQlmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWM7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhf cmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfYmFzaWMpOwot Ci0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9DT01QVVRFX0JBU0lDOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9jb21wdXRlX2Jhc2ljX211eF9j b25maWcoZGV2X3ByaXYsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAot CQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9w cml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigi Tm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJDT01QVVRFX0JBU0lDXCIgbWV0cmljIHNldFxu Iik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVj a2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0 byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAot CQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJf Y291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfY29tcHV0ZV9iYXNpYzsKLQkJZGV2 X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3Vu dGVyX2NvbmZpZ19jb21wdXRlX2Jhc2ljKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3Jl Z3MgPQotCQkJZmxleF9ldV9jb25maWdfY29tcHV0ZV9iYXNpYzsKLQkJZGV2X3ByaXYtPnBlcmYu b2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVf YmFzaWMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9SRU5ERVJfUElQRV9Q Uk9GSUxFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yZW5k ZXJfcGlwZV9wcm9maWxlX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJICAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkJICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3Nf bGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJ CURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiUkVOREVSX1BJ UEVfUFJPRklMRVwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3Jl Z2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRu J3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxk bid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0K LQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29u ZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9y ZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9jb25maWdfcmVuZGVyX3BpcGVfcHJv ZmlsZSk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29u ZmlnX3JlbmRlcl9waXBlX3Byb2ZpbGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19s ZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19yZW5kZXJfcGlwZV9wcm9maWxlKTsK LQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTUVNT1JZX1JFQURTOgotCQlkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9tZW1vcnlfcmVhZHNfbXV4X2Nv bmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJ CQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8g c3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJNRU1PUllfUkVBRFNcIiBtZXRyaWMgc2V0XG4iKTsK LQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQg dGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVz ZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkg Ki8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19tZW1vcnlfcmVhZHM7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfbWVtb3J5X3JlYWRzKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQot CQkJZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRzOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4 X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbWVtb3J5X3JlYWRzKTsK LQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfTUVNT1JZX1dSSVRFUzoKLQkJZGV2 X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfbWVtb3J5X3dyaXRlc19tdXhf Y29uZmlnKGRldl9wcml2LAotCQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywK LQkJCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZf cHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIo Ik5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTUVNT1JZX1dSSVRFU1wiIG1ldHJpYyBzZXRc biIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hl Y2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQg dG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQK LQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5i X2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0JCWRl dl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291 bnRlcl9jb25maWdfbWVtb3J5X3dyaXRlcyk7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9y ZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX21lbW9yeV93cml0ZXM7Ci0JCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19tZW1vcnlf d3JpdGVzKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfQ09NUFVURV9FWFRF TkRFRDoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfY29tcHV0 ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJCWRldl9wcml2LT5wZXJmLm9h Lm11eF9yZWdzLAotCQkJCQkJCWRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlp ZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdf RFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVfRVhURU5ERURcIiBt ZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBh bHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBh ZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4g cmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2V4 dGVuZGVkOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJS QVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0ZW5kZWQpOwotCi0JCWRldl9wcml2 LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dGVuZGVk OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfY29tcHV0ZV9leHRlbmRlZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRS SUNfU0VUX0lEX0NPTVBVVEVfTDNfQ0FDSEU6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2Nv bmZpZ3MgPQotCQkJZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJ CQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJCQlkZXZfcHJpdi0+cGVyZi5v YS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3Ig XCJDT01QVVRFX0wzX0NBQ0hFXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNh dXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBp dCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBz byBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZB TDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291 bnRlcl9jb25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19jb21wdXRlX2wz X2NhY2hlKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9j b25maWdfY29tcHV0ZV9sM19jYWNoZTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xl biA9Ci0JCQlBUlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2NvbXB1dGVfbDNfY2FjaGUpOwotCi0J CXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9IRENfQU5EX1NGOgotCQlkZXZfcHJpdi0+ cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9oZGNfYW5kX3NmX211eF9jb25maWcoZGV2 X3ByaXYsCi0JCQkJCQkgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkJICBkZXZf cHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5f bXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVY IGNvbmZpZyBmb3IgXCJIRENfQU5EX1NGXCIgbWV0cmljIHNldFxuIik7Ci0KLQkJCS8qIEVJTlZB TCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBjaGVja2VkIHRoaXMKLQkJCSAqIGFu ZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNlZCB0byB1c2Vyc3BhY2UgYW5kCi0J CQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3RlZAotCQkJICovCi0JCQlyZXR1cm4g LUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzID0KLQkJ CWJfY291bnRlcl9jb25maWdfaGRjX2FuZF9zZjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3Vu dGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ19oZGNfYW5kX3Nm KTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdf aGRjX2FuZF9zZjsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlBUlJB WV9TSVpFKGZsZXhfZXVfY29uZmlnX2hkY19hbmRfc2YpOwotCi0JCXJldHVybiAwOwotCWNhc2Ug TUVUUklDX1NFVF9JRF9MM18xOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0K LQkJCWdldF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVy Zi5vYS5tdXhfcmVncywKLQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMp OwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1f REVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkwzXzFcIiBtZXRyaWMg c2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5 IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRp c2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVz dGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYu b2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19sM18xOwotCQlkZXZfcHJp di0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJf Y29uZmlnX2wzXzEpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4 X2V1X2NvbmZpZ19sM18xOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJ CUFSUkFZX1NJWkUoZmxleF9ldV9jb25maWdfbDNfMSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBN RVRSSUNfU0VUX0lEX0wzXzI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQot CQkJZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgIGRldl9wcml2LT5wZXJm Lm9hLm11eF9yZWdzLAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7 Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9E RUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiTDNfMlwiIG1ldHJpYyBz ZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX2wzXzI7Ci0JCWRldl9wcml2 LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJBWV9TSVpFKGJfY291bnRlcl9j b25maWdfbDNfMik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhf ZXVfY29uZmlnX2wzXzI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJ QVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19sM18yKTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1F VFJJQ19TRVRfSURfTDNfMzoKLQkJZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0J CQlnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkgICAgZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCi0JCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsK LQkJaWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RF QlVHX0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJMM18zXCIgbWV0cmljIHNl dFxuIik7Ci0KLQkJCS8qIEVJTlZBTCBiZWNhdXNlICpfcmVnaXN0ZXJfc3lzZnMgYWxyZWFkeSBj aGVja2VkIHRoaXMKLQkJCSAqIGFuZCBzbyBpdCB3b3VsZG4ndCBoYXZlIGJlZW4gYWR2ZXJ0aXNl ZCB0byB1c2Vyc3BhY2UgYW5kCi0JCQkgKiBzbyBzaG91bGRuJ3QgaGF2ZSBiZWVuIHJlcXVlc3Rl ZAotCQkJICovCi0JCQlyZXR1cm4gLUVJTlZBTDsKLQkJfQotCi0JCWRldl9wcml2LT5wZXJmLm9h LmJfY291bnRlcl9yZWdzID0KLQkJCWJfY291bnRlcl9jb25maWdfbDNfMzsKLQkJZGV2X3ByaXYt PnBlcmYub2EuYl9jb3VudGVyX3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2Nv bmZpZ19sM18zKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9l dV9jb25maWdfbDNfMzsKLQkJZGV2X3ByaXYtPnBlcmYub2EuZmxleF9yZWdzX2xlbiA9Ci0JCQlB UlJBWV9TSVpFKGZsZXhfZXVfY29uZmlnX2wzXzMpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVU UklDX1NFVF9JRF9SQVNURVJJWkVSX0FORF9QSVhFTF9CQUNLRU5EOgotCQlkZXZfcHJpdi0+cGVy Zi5vYS5uX211eF9jb25maWdzID0KLQkJCWdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5k X211eF9jb25maWcoZGV2X3ByaXYsCi0JCQkJCQkJCSAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhf cmVncywKLQkJCQkJCQkJICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzX2xlbnMpOwotCQlp ZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0JCQlEUk1fREVCVUdf RFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIlJBU1RFUklaRVJfQU5EX1BJWEVM X0JBQ0tFTkRcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdp c3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0 IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4n dCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0K LQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZp Z19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2Nv dW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3Jhc3Rlcml6 ZXJfYW5kX3BpeGVsX2JhY2tlbmQpOwotCi0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVncyA9 Ci0JCQlmbGV4X2V1X2NvbmZpZ19yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBN RVRSSUNfU0VUX0lEX1NBTVBMRVI6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3Mg PQotCQkJZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJICAgICAgIGRldl9w cml2LT5wZXJmLm9hLm11eF9yZWdzLAotCQkJCQkgICAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4 X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID09IDAp IHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1VWCBjb25maWcgZm9yIFwiU0FN UExFUlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVy X3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2 ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhh dmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlk ZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3Nh bXBsZXI7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmJfY291bnRlcl9yZWdzX2xlbiA9Ci0JCQlBUlJB WV9TSVpFKGJfY291bnRlcl9jb25maWdfc2FtcGxlcik7Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2Eu ZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3NhbXBsZXI7Ci0JCWRldl9wcml2LT5wZXJm Lm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ19zYW1wbGVy KTsKLQotCQlyZXR1cm4gMDsKLQljYXNlIE1FVFJJQ19TRVRfSURfVERMXzE6Ci0JCWRldl9wcml2 LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0X3RkbF8xX211eF9jb25maWcoZGV2X3By aXYsCi0JCQkJCSAgICAgZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCSAgICAgZGV2 X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyk7Ci0JCWlmIChkZXZfcHJpdi0+cGVyZi5vYS5u X211eF9jb25maWdzID09IDApIHsKLQkJCURSTV9ERUJVR19EUklWRVIoIk5vIHN1aXRhYmxlIE1V WCBjb25maWcgZm9yIFwiVERMXzFcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJl Y2F1c2UgKl9yZWdpc3Rlcl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNv IGl0IHdvdWxkbid0IGhhdmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAq IHNvIHNob3VsZG4ndCBoYXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlO VkFMOwotCQl9Ci0KLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9j b3VudGVyX2NvbmZpZ190ZGxfMTsKLQkJZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3Nf bGVuID0KLQkJCUFSUkFZX1NJWkUoYl9jb3VudGVyX2NvbmZpZ190ZGxfMSk7Ci0KLQkJZGV2X3By aXYtPnBlcmYub2EuZmxleF9yZWdzID0KLQkJCWZsZXhfZXVfY29uZmlnX3RkbF8xOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxleF9ldV9jb25m aWdfdGRsXzEpOwotCi0JCXJldHVybiAwOwotCWNhc2UgTUVUUklDX1NFVF9JRF9URExfMjoKLQkJ ZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9Ci0JCQlnZXRfdGRsXzJfbXV4X2NvbmZp ZyhkZXZfcHJpdiwKLQkJCQkJICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVncywKLQkJCQkJ ICAgICBkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJaWYgKGRldl9wcml2LT5w ZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVHX0RSSVZFUigiTm8gc3Vp dGFibGUgTVVYIGNvbmZpZyBmb3IgXCJURExfMlwiIG1ldHJpYyBzZXRcbiIpOwotCi0JCQkvKiBF SU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkgY2hlY2tlZCB0aGlzCi0JCQkg KiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlzZWQgdG8gdXNlcnNwYWNlIGFu ZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0ZWQKLQkJCSAqLwotCQkJcmV0 dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVncyA9 Ci0JCQliX2NvdW50ZXJfY29uZmlnX3RkbF8yOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50 ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX3RkbF8yKTsKLQot CQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQotCQkJZmxleF9ldV9jb25maWdfdGRsXzI7 Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4 X2V1X2NvbmZpZ190ZGxfMik7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNfU0VUX0lEX0NP TVBVVEVfRVhUUkE6Ci0JCWRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPQotCQkJZ2V0 X2NvbXB1dGVfZXh0cmFfbXV4X2NvbmZpZyhkZXZfcHJpdiwKLQkJCQkJCSAgICAgZGV2X3ByaXYt PnBlcmYub2EubXV4X3JlZ3MsCi0JCQkJCQkgICAgIGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdz X2xlbnMpOwotCQlpZiAoZGV2X3ByaXYtPnBlcmYub2Eubl9tdXhfY29uZmlncyA9PSAwKSB7Ci0J CQlEUk1fREVCVUdfRFJJVkVSKCJObyBzdWl0YWJsZSBNVVggY29uZmlnIGZvciBcIkNPTVBVVEVf RVhUUkFcIiBtZXRyaWMgc2V0XG4iKTsKLQotCQkJLyogRUlOVkFMIGJlY2F1c2UgKl9yZWdpc3Rl cl9zeXNmcyBhbHJlYWR5IGNoZWNrZWQgdGhpcwotCQkJICogYW5kIHNvIGl0IHdvdWxkbid0IGhh dmUgYmVlbiBhZHZlcnRpc2VkIHRvIHVzZXJzcGFjZSBhbmQKLQkJCSAqIHNvIHNob3VsZG4ndCBo YXZlIGJlZW4gcmVxdWVzdGVkCi0JCQkgKi8KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0KLQkJ ZGV2X3ByaXYtPnBlcmYub2EuYl9jb3VudGVyX3JlZ3MgPQotCQkJYl9jb3VudGVyX2NvbmZpZ19j b21wdXRlX2V4dHJhOwotCQlkZXZfcHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQot CQkJQVJSQVlfU0laRShiX2NvdW50ZXJfY29uZmlnX2NvbXB1dGVfZXh0cmEpOwotCi0JCWRldl9w cml2LT5wZXJmLm9hLmZsZXhfcmVncyA9Ci0JCQlmbGV4X2V1X2NvbmZpZ19jb21wdXRlX2V4dHJh OwotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3NfbGVuID0KLQkJCUFSUkFZX1NJWkUoZmxl eF9ldV9jb25maWdfY29tcHV0ZV9leHRyYSk7Ci0KLQkJcmV0dXJuIDA7Ci0JY2FzZSBNRVRSSUNf U0VUX0lEX1ZNRV9QSVBFOgotCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdzID0KLQkJ CWdldF92bWVfcGlwZV9tdXhfY29uZmlnKGRldl9wcml2LAotCQkJCQkJZGV2X3ByaXYtPnBlcmYu b2EubXV4X3JlZ3MsCi0JCQkJCQlkZXZfcHJpdi0+cGVyZi5vYS5tdXhfcmVnc19sZW5zKTsKLQkJ aWYgKGRldl9wcml2LT5wZXJmLm9hLm5fbXV4X2NvbmZpZ3MgPT0gMCkgewotCQkJRFJNX0RFQlVH X0RSSVZFUigiTm8gc3VpdGFibGUgTVVYIGNvbmZpZyBmb3IgXCJWTUVfUElQRVwiIG1ldHJpYyBz ZXRcbiIpOwotCi0JCQkvKiBFSU5WQUwgYmVjYXVzZSAqX3JlZ2lzdGVyX3N5c2ZzIGFscmVhZHkg Y2hlY2tlZCB0aGlzCi0JCQkgKiBhbmQgc28gaXQgd291bGRuJ3QgaGF2ZSBiZWVuIGFkdmVydGlz ZWQgdG8gdXNlcnNwYWNlIGFuZAotCQkJICogc28gc2hvdWxkbid0IGhhdmUgYmVlbiByZXF1ZXN0 ZWQKLQkJCSAqLwotCQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KLQotCQlkZXZfcHJpdi0+cGVyZi5v YS5iX2NvdW50ZXJfcmVncyA9Ci0JCQliX2NvdW50ZXJfY29uZmlnX3ZtZV9waXBlOwotCQlkZXZf cHJpdi0+cGVyZi5vYS5iX2NvdW50ZXJfcmVnc19sZW4gPQotCQkJQVJSQVlfU0laRShiX2NvdW50 ZXJfY29uZmlnX3ZtZV9waXBlKTsKLQotCQlkZXZfcHJpdi0+cGVyZi5vYS5mbGV4X3JlZ3MgPQot CQkJZmxleF9ldV9jb25maWdfdm1lX3BpcGU7Ci0JCWRldl9wcml2LT5wZXJmLm9hLmZsZXhfcmVn c19sZW4gPQotCQkJQVJSQVlfU0laRShmbGV4X2V1X2NvbmZpZ192bWVfcGlwZSk7Ci0KLQkJcmV0 dXJuIDA7CisJc3dpdGNoIChkZXZfcHJpdi0+cGVyZi5vYS5tZXRyaWNzX3NldCkgewogCWNhc2Ug TUVUUklDX1NFVF9JRF9URVNUX09BOgogCQlkZXZfcHJpdi0+cGVyZi5vYS5uX211eF9jb25maWdz ID0KIAkJCWdldF90ZXN0X29hX211eF9jb25maWcoZGV2X3ByaXYsCkBAIC0yNDk4LDM4MCArMTM4 LDYgQEAgaW50IGk5MTVfb2Ffc2VsZWN0X21ldHJpY19zZXRfc2tsZ3Q0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIH0KIAogc3RhdGljIHNzaXplX3QKLXNob3dfcmVuZGVyX2Jh c2ljX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRf SURfUkVOREVSX0JBU0lDKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRl dl9hdHRyX3JlbmRlcl9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfcmVuZGVyX2Jhc2ljX2lkLAotCS5zdG9yZSA9IE5V TEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX2Jhc2ljW10g PSB7Ci0JJmRldl9hdHRyX3JlbmRlcl9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yZW5kZXJfYmFzaWMgPSB7Ci0JLm5hbWUg PSAiYmFkNzdjMjQtY2M2NC00ODBkLTk5YmYtZTdiNzQwNzEzODAwIiwKLQkuYXR0cnMgPSAgYXR0 cnNfcmVuZGVyX2Jhc2ljLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9iYXNp Y19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X0NPTVBVVEVfQkFTSUMpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2 X2F0dHJfY29tcHV0ZV9iYXNpY19pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9iYXNpY19pZCwKLQkuc3RvcmUgPSBO VUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfYmFzaWNb XSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9iYXNpY19pZC5hdHRyLAotCU5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9jb21wdXRlX2Jhc2ljID0gewotCS5u YW1lID0gIjcyNzcyMjhmLWU3ZjMtNDc0My05NDVhLTZhMjA0OWQxMTM3NyIsCi0JLmF0dHJzID0g IGF0dHJzX2NvbXB1dGVfYmFzaWMsCi19OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd19yZW5kZXJf cGlwZV9wcm9maWxlX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRcbiIsIE1F VFJJQ19TRVRfSURfUkVOREVSX1BJUEVfUFJPRklMRSk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9yZW5kZXJfcGlwZV9wcm9maWxlX2lkID0gewotCS5hdHRy ID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19yZW5kZXJf cGlwZV9wcm9maWxlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cnNfcmVuZGVyX3BpcGVfcHJvZmlsZVtdID0gewotCSZkZXZfYXR0cl9yZW5k ZXJfcGlwZV9wcm9maWxlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlX2dyb3VwIGdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUgPSB7Ci0JLm5hbWUgPSAiNDYz YzY2OGMtM2Y2MC00OWI2LThmODUtZDk5NWI2MzViM2IyIiwKLQkuYXR0cnMgPSAgYXR0cnNfcmVu ZGVyX3BpcGVfcHJvZmlsZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9yeV9yZWFk c19pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lE X01FTU9SWV9SRUFEUyk7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZf YXR0cl9tZW1vcnlfcmVhZHNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUg PSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV9yZWFkc19pZCwKLQkuc3RvcmUgPSBOVUxM LAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX21lbW9yeV9yZWFkc1tdID0g ewotCSZkZXZfYXR0cl9tZW1vcnlfcmVhZHNfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGlj IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3JlYWRzID0gewotCS5uYW1lID0g IjNhZTZlNzRjLTcyYzMtNDA0MC05YmQwLTc5NjE0MzBiOGNjOCIsCi0JLmF0dHJzID0gIGF0dHJz X21lbW9yeV9yZWFkcywKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X21lbW9yeV93cml0ZXNf aWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNo YXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9JRF9N RU1PUllfV1JJVEVTKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9h dHRyX21lbW9yeV93cml0ZXNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUg PSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X21lbW9yeV93cml0ZXNfaWQsCi0JLnN0b3JlID0gTlVM TCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19tZW1vcnlfd3JpdGVzW10g PSB7Ci0JJmRldl9hdHRyX21lbW9yeV93cml0ZXNfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfbWVtb3J5X3dyaXRlcyA9IHsKLQkubmFt ZSA9ICIwNTVmMjU2ZC00MDUyLTQ2N2MtOGRlYy02MDY0YTQ4MDY0MzMiLAotCS5hdHRycyA9ICBh dHRyc19tZW1vcnlfd3JpdGVzLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9l eHRlbmRlZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNf U0VUX0lEX0NPTVBVVEVfRVhURU5ERUQpOwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUg PSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfY29tcHV0ZV9leHRlbmRlZF9p ZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X2NvbXB1dGVfZXh0ZW5kZWRbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0ZV9leHRlbmRlZF9pZC5h dHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBncm91cF9j b21wdXRlX2V4dGVuZGVkID0gewotCS5uYW1lID0gIjc1Mzk3MmQ0LTg3Y2QtNDQ2MC04MjRkLTc1 NDQ2M2FjNTA1NCIsCi0JLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0ZW5kZWQsCi19OwotCi1z dGF0aWMgc3NpemVfdAotc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkKHN0cnVjdCBkZXZpY2UgKmtk ZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJu IHNwcmludGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfQ09NUFVURV9MM19DQUNIRSk7Ci19 Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBkZXZfYXR0cl9jb21wdXRlX2wzX2Nh Y2hlX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5z aG93ID0gc2hvd19jb21wdXRlX2wzX2NhY2hlX2lkLAotCS5zdG9yZSA9IE5VTEwsCi19OwotCi1z dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfY29tcHV0ZV9sM19jYWNoZVtdID0gewotCSZk ZXZfYXR0cl9jb21wdXRlX2wzX2NhY2hlX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBz dHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX2NvbXB1dGVfbDNfY2FjaGUgPSB7Ci0JLm5hbWUg PSAiNGU0MzkyZTktOGY3My00NTdiLWFiNDQtYjQ5ZjdhMGM3MzNiIiwKLQkuYXR0cnMgPSAgYXR0 cnNfY29tcHV0ZV9sM19jYWNoZSwKLX07Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X2hkY19hbmRf c2ZfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIs IGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwgTUVUUklDX1NFVF9J RF9IRENfQU5EX1NGKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9h dHRyX2hkY19hbmRfc2ZfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCi0JLnNob3cgPSBzaG93X2hkY19hbmRfc2ZfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07 Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19oZGNfYW5kX3NmW10gPSB7Ci0JJmRl dl9hdHRyX2hkY19hbmRfc2ZfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfaGRjX2FuZF9zZiA9IHsKLQkubmFtZSA9ICI3MzBkOTVkZC03 ZGE4LTRlMWMtYWI4ZC1jMGViMWU0YzE4MDUiLAotCS5hdHRycyA9ICBhdHRyc19oZGNfYW5kX3Nm LAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3dfbDNfMV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0wzXzEpOwotfQotCi1zdGF0aWMgc3Ry dWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfbDNfMV9pZCA9IHsKLQkuYXR0ciA9IHsgLm5h bWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfbDNfMV9pZCwKLQkuc3Rv cmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX2wzXzFbXSA9 IHsKLQkmZGV2X2F0dHJfbDNfMV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF9sM18xID0gewotCS5uYW1lID0gImQ5ZTg2ZDcwLTQ2MmIt NDYyYS04NTFlLWZkNjNlOGMxM2Q2MyIsCi0JLmF0dHJzID0gIGF0dHJzX2wzXzEsCi19OwotCi1z dGF0aWMgc3NpemVfdAotc2hvd19sM18yX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVm LCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfTDNfMik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNl X2F0dHJpYnV0ZSBkZXZfYXR0cl9sM18yX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19sM18yX2lkLAotCS5zdG9yZSA9IE5VTEws Ci19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfbDNfMltdID0gewotCSZkZXZf YXR0cl9sM18yX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl X2dyb3VwIGdyb3VwX2wzXzIgPSB7Ci0JLm5hbWUgPSAiNTIyMDA0MjQtNmVlOS00OGIzLWI3ZmEt MGFmY2YxOTc1ZTRkIiwKLQkuYXR0cnMgPSAgYXR0cnNfbDNfMiwKLX07Ci0KLXN0YXRpYyBzc2l6 ZV90Ci1zaG93X2wzXzNfaWQoc3RydWN0IGRldmljZSAqa2Rldiwgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gc3ByaW50ZihidWYsICIlZFxuIiwg TUVUUklDX1NFVF9JRF9MM18zKTsKLX0KLQotc3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl IGRldl9hdHRyX2wzXzNfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1lID0gImlkIiwgLm1vZGUgPSAw NDQ0IH0sCi0JLnNob3cgPSBzaG93X2wzXzNfaWQsCi0JLnN0b3JlID0gTlVMTCwKLX07Ci0KLXN0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICphdHRyc19sM18zW10gPSB7Ci0JJmRldl9hdHRyX2wzXzNf aWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgZ3Jv dXBfbDNfMyA9IHsKLQkubmFtZSA9ICIxOTg4MzE1Zi0wYTI2LTQ0ZGYtYWNiMC1kZjdlYzg2YjE0 NTYiLAotCS5hdHRycyA9ICBhdHRyc19sM18zLAotfTsKLQotc3RhdGljIHNzaXplX3QKLXNob3df cmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1JBU1RFUklaRVJfQU5EX1BJWEVMX0JBQ0tFTkQp OwotfQotCi1zdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9pZCA9IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9k ZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNob3dfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZF9p ZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJz X3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmRbXSA9IHsKLQkmZGV2X2F0dHJfcmFzdGVyaXpl cl9hbmRfcGl4ZWxfYmFja2VuZF9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBncm91cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kID0gewot CS5uYW1lID0gImYxZjE3Y2E3LTI4NmUtNGFlNS05ZDE1LTlmY2NhZDZjNjY1ZCIsCi0JLmF0dHJz ID0gIGF0dHJzX3Jhc3Rlcml6ZXJfYW5kX3BpeGVsX2JhY2tlbmQsCi19OwotCi1zdGF0aWMgc3Np emVfdAotc2hvd19zYW1wbGVyX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0cnVjdCBkZXZpY2Vf YXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmludGYoYnVmLCAiJWRc biIsIE1FVFJJQ19TRVRfSURfU0FNUExFUik7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSBkZXZfYXR0cl9zYW1wbGVyX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9ICJpZCIs IC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd19zYW1wbGVyX2lkLAotCS5zdG9yZSA9IE5V TEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfc2FtcGxlcltdID0gewot CSZkZXZfYXR0cl9zYW1wbGVyX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGdyb3VwX3NhbXBsZXIgPSB7Ci0JLm5hbWUgPSAiMDBhOWUwZmItM2Qy ZS00NDA1LTg1MmMtZGNlNjMzNGZmYjNiIiwKLQkuYXR0cnMgPSAgYXR0cnNfc2FtcGxlciwKLX07 Ci0KLXN0YXRpYyBzc2l6ZV90Ci1zaG93X3RkbF8xX2lkKHN0cnVjdCBkZXZpY2UgKmtkZXYsIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCi17Ci0JcmV0dXJuIHNwcmlu dGYoYnVmLCAiJWRcbiIsIE1FVFJJQ19TRVRfSURfVERMXzEpOwotfQotCi1zdGF0aWMgc3RydWN0 IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfdGRsXzFfaWQgPSB7Ci0JLmF0dHIgPSB7IC5uYW1l ID0gImlkIiwgLm1vZGUgPSAwNDQ0IH0sCi0JLnNob3cgPSBzaG93X3RkbF8xX2lkLAotCS5zdG9y ZSA9IE5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNfdGRsXzFbXSA9 IHsKLQkmZGV2X2F0dHJfdGRsXzFfaWQuYXR0ciwKLQlOVUxMLAotfTsKLQotc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgZ3JvdXBfdGRsXzEgPSB7Ci0JLm5hbWUgPSAiMTNkY2M1MGEtN2Vj MC00MDliLTk5ZDYtYTNmOTMyY2VkY2IzIiwKLQkuYXR0cnMgPSAgYXR0cnNfdGRsXzEsCi19Owot Ci1zdGF0aWMgc3NpemVfdAotc2hvd190ZGxfMl9pZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1 Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RETF8yKTsKLX0KLQotc3RhdGljIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3RkbF8yX2lkID0gewotCS5hdHRyID0geyAubmFtZSA9 ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd190ZGxfMl9pZCwKLQkuc3RvcmUg PSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHJzX3RkbF8yW10gPSB7 Ci0JJmRldl9hdHRyX3RkbF8yX2lkLmF0dHIsCi0JTlVMTCwKLX07Ci0KLXN0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGdyb3VwX3RkbF8yID0gewotCS5uYW1lID0gIjk3ODc1ZTIxLTY2MjQt NGFlZS05MTkxLTY4MmZlYjNlYWUyMSIsCi0JLmF0dHJzID0gIGF0dHJzX3RkbF8yLAotfTsKLQot c3RhdGljIHNzaXplX3QKLXNob3dfY29tcHV0ZV9leHRyYV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX0NPTVBVVEVfRVhUUkEpOwotfQotCi1z dGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgZGV2X2F0dHJfY29tcHV0ZV9leHRyYV9pZCA9 IHsKLQkuYXR0ciA9IHsgLm5hbWUgPSAiaWQiLCAubW9kZSA9IDA0NDQgfSwKLQkuc2hvdyA9IHNo b3dfY29tcHV0ZV9leHRyYV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHJzX2NvbXB1dGVfZXh0cmFbXSA9IHsKLQkmZGV2X2F0dHJfY29tcHV0 ZV9leHRyYV9pZC5hdHRyLAotCU5VTEwsCi19OwotCi1zdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9n cm91cCBncm91cF9jb21wdXRlX2V4dHJhID0gewotCS5uYW1lID0gImE1YWE4NTdkLWU4ZjAtNGRm YS04OTgxLWNlMzQwZmE3NDhmZCIsCi0JLmF0dHJzID0gIGF0dHJzX2NvbXB1dGVfZXh0cmEsCi19 OwotCi1zdGF0aWMgc3NpemVfdAotc2hvd192bWVfcGlwZV9pZChzdHJ1Y3QgZGV2aWNlICprZGV2 LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQotewotCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1ZNRV9QSVBFKTsKLX0KLQotc3RhdGlj IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIGRldl9hdHRyX3ZtZV9waXBlX2lkID0gewotCS5hdHRy ID0geyAubmFtZSA9ICJpZCIsIC5tb2RlID0gMDQ0NCB9LAotCS5zaG93ID0gc2hvd192bWVfcGlw ZV9pZCwKLQkuc3RvcmUgPSBOVUxMLAotfTsKLQotc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHJzX3ZtZV9waXBlW10gPSB7Ci0JJmRldl9hdHRyX3ZtZV9waXBlX2lkLmF0dHIsCi0JTlVMTCwK LX07Ci0KLXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGdyb3VwX3ZtZV9waXBlID0gewot CS5uYW1lID0gIjBlOGQ4Yjg2LTRlZTctNGNkZC1hYWFhLTU4YWRjOTJjYjI5ZSIsCi0JLmF0dHJz ID0gIGF0dHJzX3ZtZV9waXBlLAotfTsKLQotc3RhdGljIHNzaXplX3QKIHNob3dfdGVzdF9vYV9p ZChzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hh ciAqYnVmKQogewogCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVkXG4iLCBNRVRSSUNfU0VUX0lEX1RF U1RfT0EpOwpAQCAtMjkwMCw5MSArMTY2LDYgQEAgaTkxNV9wZXJmX3JlZ2lzdGVyX3N5c2ZzX3Nr bGd0NChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaW50IG11eF9sZW5zW0FS UkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOwogCWludCByZXQgPSAw OwogCi0JaWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3Ms IG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfcmVuZGVyX2Jhc2ljKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8g ZXJyb3JfcmVuZGVyX2Jhc2ljOwotCX0KLQlpZiAoZ2V0X2NvbXB1dGVfYmFzaWNfbXV4X2NvbmZp ZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9iYXNpYyk7 Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX2NvbXB1dGVfYmFzaWM7Ci0JfQotCWlmIChnZXRf cmVuZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNz X2tvYmosICZncm91cF9yZW5kZXJfcGlwZV9wcm9maWxlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8g ZXJyb3JfcmVuZGVyX3BpcGVfcHJvZmlsZTsKLQl9Ci0JaWYgKGdldF9tZW1vcnlfcmVhZHNfbXV4 X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19j cmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3Jl YWRzKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbWVtb3J5X3JlYWRzOwotCX0KLQlpZiAo Z2V0X21lbW9yeV93cml0ZXNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5z KSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19r b2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7Ci0JCWlmIChyZXQpCi0JCQlnb3RvIGVycm9yX21l bW9yeV93cml0ZXM7Ci0JfQotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRl dl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsK LQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfY29tcHV0ZV9leHRlbmRlZDsKLQl9Ci0JaWYgKGdl dF9jb21wdXRlX2wzX2NhY2hlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVu cykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nf a29iaiwgJmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJv cl9jb21wdXRlX2wzX2NhY2hlOwotCX0KLQlpZiAoZ2V0X2hkY19hbmRfc2ZfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci0JCWlm IChyZXQpCi0JCQlnb3RvIGVycm9yX2hkY19hbmRfc2Y7Ci0JfQotCWlmIChnZXRfbDNfMV9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJldCA9IHN5c2ZzX2Ny ZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsKLQkJ aWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfbDNfMTsKLQl9Ci0JaWYgKGdldF9sM18yX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRl X2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX2wzXzIpOwotCQlpZiAo cmV0KQotCQkJZ290byBlcnJvcl9sM18yOwotCX0KLQlpZiAoZ2V0X2wzXzNfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNmc19jcmVhdGVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMyk7Ci0JCWlmIChyZXQp Ci0JCQlnb3RvIGVycm9yX2wzXzM7Ci0JfQotCWlmIChnZXRfcmFzdGVyaXplcl9hbmRfcGl4ZWxf YmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKSB7Ci0JCXJl dCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJy b3JfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZDsKLQl9Ci0JaWYgKGdldF9zYW1wbGVyX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNf Y3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIp OwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9zYW1wbGVyOwotCX0KLQlpZiAoZ2V0X3RkbF8x X211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0ID0gc3lz ZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8x KTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3JfdGRsXzE7Ci0JfQotCWlmIChnZXRfdGRsXzJf bXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkgewotCQlyZXQgPSBzeXNm c19jcmVhdGVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfdGRsXzIp OwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl90ZGxfMjsKLQl9Ci0JaWYgKGdldF9jb21wdXRl X2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpIHsKLQkJcmV0 ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2NvbXB1dGVfZXh0cmEpOwotCQlpZiAocmV0KQotCQkJZ290byBlcnJvcl9jb21wdXRlX2V4dHJh OwotCX0KLQlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBt dXhfbGVucykpIHsKLQkJcmV0ID0gc3lzZnNfY3JlYXRlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3ZtZV9waXBlKTsKLQkJaWYgKHJldCkKLQkJCWdvdG8gZXJyb3Jf dm1lX3BpcGU7Ci0JfQogCWlmIChnZXRfdGVzdF9vYV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKSB7CiAJCXJldCA9IHN5c2ZzX2NyZWF0ZV9ncm91cChkZXZfcHJpdi0+ cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKIAkJaWYgKHJldCkKQEAgLTI5OTQs NTcgKzE3NSw2IEBAIGk5MTVfcGVyZl9yZWdpc3Rlcl9zeXNmc19za2xndDQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiAwOwogCiBlcnJvcl90ZXN0X29hOgotCWlm IChnZXRfdm1lX3BpcGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X3ZtZV9waXBlKTsKLWVycm9yX3ZtZV9waXBlOgotCWlmIChnZXRfY29tcHV0ZV9leHRyYV9tdXhf Y29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3Jv dXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRyYSk7Ci1l cnJvcl9jb21wdXRlX2V4dHJhOgotCWlmIChnZXRfdGRsXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwg bXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJm Lm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8yKTsKLWVycm9yX3RkbF8yOgotCWlmIChnZXRfdGRs XzFfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVt b3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKLWVy cm9yX3RkbF8xOgotCWlmIChnZXRfc2FtcGxlcl9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVn cywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmlj c19rb2JqLCAmZ3JvdXBfc2FtcGxlcik7Ci1lcnJvcl9zYW1wbGVyOgotCWlmIChnZXRfcmFzdGVy aXplcl9hbmRfcGl4ZWxfYmFja2VuZF9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfcmFzdGVyaXplcl9hbmRfcGl4ZWxfYmFja2VuZCk7Ci1lcnJvcl9yYXN0ZXJpemVy X2FuZF9waXhlbF9iYWNrZW5kOgotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMyk7Ci1lcnJvcl9sM18zOgotCWlmIChnZXRfbDNfMl9t dXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVf Z3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfbDNfMik7Ci1lcnJvcl9s M18yOgotCWlmIChnZXRfbDNfMV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfbDNfMSk7Ci1lcnJvcl9sM18xOgotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29uZmln KGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2 X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci1lcnJvcl9oZGNf YW5kX3NmOgotCWlmIChnZXRfY29tcHV0ZV9sM19jYWNoZV9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9sM19jYWNoZSk7Ci1lcnJvcl9jb21wdXRlX2wz X2NhY2hlOgotCWlmIChnZXRfY29tcHV0ZV9leHRlbmRlZF9tdXhfY29uZmlnKGRldl9wcml2LCBt dXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYu bWV0cmljc19rb2JqLCAmZ3JvdXBfY29tcHV0ZV9leHRlbmRlZCk7Ci1lcnJvcl9jb21wdXRlX2V4 dGVuZGVkOgotCWlmIChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhf cmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0 cmljc19rb2JqLCAmZ3JvdXBfbWVtb3J5X3dyaXRlcyk7Ci1lcnJvcl9tZW1vcnlfd3JpdGVzOgot CWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhf bGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmos ICZncm91cF9tZW1vcnlfcmVhZHMpOwotZXJyb3JfbWVtb3J5X3JlYWRzOgotCWlmIChnZXRfcmVu ZGVyX3BpcGVfcHJvZmlsZV9tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMp KQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3Jv dXBfcmVuZGVyX3BpcGVfcHJvZmlsZSk7Ci1lcnJvcl9yZW5kZXJfcGlwZV9wcm9maWxlOgotCWlm IChnZXRfY29tcHV0ZV9iYXNpY19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfY29tcHV0ZV9iYXNpYyk7Ci1lcnJvcl9jb21wdXRlX2Jhc2ljOgotCWlmIChnZXRfcmVu ZGVyX2Jhc2ljX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5 c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yZW5k ZXJfYmFzaWMpOwotZXJyb3JfcmVuZGVyX2Jhc2ljOgogCXJldHVybiByZXQ7CiB9CiAKQEAgLTMw NTQsNDAgKzE4NCw2IEBAIGk5MTVfcGVyZl91bnJlZ2lzdGVyX3N5c2ZzX3NrbGd0NChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJY29uc3Qgc3RydWN0IGk5MTVfb2FfcmVnICpt dXhfcmVnc1tBUlJBWV9TSVpFKGRldl9wcml2LT5wZXJmLm9hLm11eF9yZWdzKV07CiAJaW50IG11 eF9sZW5zW0FSUkFZX1NJWkUoZGV2X3ByaXYtPnBlcmYub2EubXV4X3JlZ3NfbGVucyldOwogCi0J aWYgKGdldF9yZW5kZXJfYmFzaWNfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX3JlbmRlcl9iYXNpYyk7Ci0JaWYgKGdldF9jb21wdXRlX2Jhc2ljX211eF9jb25maWco ZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZf cHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2Jhc2ljKTsKLQlpZiAoZ2V0 X3JlbmRlcl9waXBlX3Byb2ZpbGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9s ZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwg Jmdyb3VwX3JlbmRlcl9waXBlX3Byb2ZpbGUpOwotCWlmIChnZXRfbWVtb3J5X3JlYWRzX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9tZW1vcnlfcmVhZHMpOwotCWlm IChnZXRfbWVtb3J5X3dyaXRlc19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xl bnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAm Z3JvdXBfbWVtb3J5X3dyaXRlcyk7Ci0JaWYgKGdldF9jb21wdXRlX2V4dGVuZGVkX211eF9jb25m aWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChk ZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9jb21wdXRlX2V4dGVuZGVkKTsKLQlp ZiAoZ2V0X2NvbXB1dGVfbDNfY2FjaGVfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11 eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29i aiwgJmdyb3VwX2NvbXB1dGVfbDNfY2FjaGUpOwotCWlmIChnZXRfaGRjX2FuZF9zZl9tdXhfY29u ZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAo ZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2JqLCAmZ3JvdXBfaGRjX2FuZF9zZik7Ci0JaWYgKGdl dF9sM18xX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2Zz X3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9sM18xKTsK LQlpZiAoZ2V0X2wzXzJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkK LQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3Vw X2wzXzIpOwotCWlmIChnZXRfbDNfM19tdXhfY29uZmlnKGRldl9wcml2LCBtdXhfcmVncywgbXV4 X2xlbnMpKQotCQlzeXNmc19yZW1vdmVfZ3JvdXAoZGV2X3ByaXYtPnBlcmYubWV0cmljc19rb2Jq LCAmZ3JvdXBfbDNfMyk7Ci0JaWYgKGdldF9yYXN0ZXJpemVyX2FuZF9waXhlbF9iYWNrZW5kX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF9yYXN0ZXJpemVyX2FuZF9w aXhlbF9iYWNrZW5kKTsKLQlpZiAoZ2V0X3NhbXBsZXJfbXV4X2NvbmZpZyhkZXZfcHJpdiwgbXV4 X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9wcml2LT5wZXJmLm1l dHJpY3Nfa29iaiwgJmdyb3VwX3NhbXBsZXIpOwotCWlmIChnZXRfdGRsXzFfbXV4X2NvbmZpZyhk ZXZfcHJpdiwgbXV4X3JlZ3MsIG11eF9sZW5zKSkKLQkJc3lzZnNfcmVtb3ZlX2dyb3VwKGRldl9w cml2LT5wZXJmLm1ldHJpY3Nfa29iaiwgJmdyb3VwX3RkbF8xKTsKLQlpZiAoZ2V0X3RkbF8yX211 eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9n cm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZGxfMik7Ci0JaWYgKGdl dF9jb21wdXRlX2V4dHJhX211eF9jb25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykp Ci0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91 cF9jb21wdXRlX2V4dHJhKTsKLQlpZiAoZ2V0X3ZtZV9waXBlX211eF9jb25maWcoZGV2X3ByaXYs IG11eF9yZWdzLCBtdXhfbGVucykpCi0JCXN5c2ZzX3JlbW92ZV9ncm91cChkZXZfcHJpdi0+cGVy Zi5tZXRyaWNzX2tvYmosICZncm91cF92bWVfcGlwZSk7CiAJaWYgKGdldF90ZXN0X29hX211eF9j b25maWcoZGV2X3ByaXYsIG11eF9yZWdzLCBtdXhfbGVucykpCiAJCXN5c2ZzX3JlbW92ZV9ncm91 cChkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2tvYmosICZncm91cF90ZXN0X29hKTsKIH0KLS0gCjIu MTMuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==