Return-path: Received: from web23107.mail.ird.yahoo.com ([217.146.189.47]:22198 "HELO web23107.mail.ird.yahoo.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1755972AbYEMHo2 (ORCPT ); Tue, 13 May 2008 03:44:28 -0400 Date: Tue, 13 May 2008 07:37:45 +0000 (GMT) From: Hin-Tak Leung Subject: [PATCH?] Realtek 8187B wireless support with product id 0x8197/0x8189 To: herton@mandriva.com.br, axel.thimm@atrpms.net, linux-wireless@vger.kernel.org MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-2012329936-1210664265=:28300" Message-ID: <935899.28300.qm@web23107.mail.ird.yahoo.com> (sfid-20080513_094435_301722_B35CE75D) Sender: linux-wireless-owner@vger.kernel.org List-ID: --0-2012329936-1210664265=:28300 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable I have made a small change (r8187b_endpoint-12.patch) on top of a patch whi= ch Herton (rtl8187b_5.patch) sent to Axel for a new mac80211-based driver for = Realtek 8187B. Herton's patch was missing one thing that the vendor driver does - t= he vendor driver sends management control frames through usb endpoint 12 rather than = the normal priority-based queueing endpoints 6,7,5,4. Without the management frame cha= nge, it seems that the new driver can scan but not associate, and my patch fixes th= at. My patch is probably a bit ugly (hence I have not provided an integrated patch), but= since it is just a few lines and short enough, I am sure somebody can re-write it bette= r. So I *am* using the new driver *right now* connected to the internet... The rest of the story is at: https://bugzilla.redhat.com/show_bug.cgi?id=3D432280 These two patches are the same as (and Herton may have a newer/better one f= or his already): https://bugzilla.redhat.com/attachment.cgi?id=3D304231 https://bugzilla.redhat.com/attachment.cgi?id=3D305203 BTW, I am not subscribed to linux-wireless, but feel free to CC me on this.= ..=0A=0A=0A __________________________________________________________= =0ASent from Yahoo! Mail.=0AA Smarter Email http://uk.docs.yahoo.com/nowyou= can.html --0-2012329936-1210664265=:28300 Content-Type: text/x-patch; name="r8187b_endpoint-12.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="r8187b_endpoint-12.patch" ZGlmZiAtcnVCYiBvcmlnL2NvbXBhdC13aXJlbGVzcy0yMDA4LTA1LTA3L2Ry aXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfZGV2LmMgY29tcGF0LXdpcmVs ZXNzLTIwMDgtMDUtMDcvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4N19k ZXYuYwotLS0gb3JpZy9jb21wYXQtd2lyZWxlc3MtMjAwOC0wNS0wNy9kcml2 ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCTIwMDgtMDUtMTMgMDc6 MjQ6NTkuMDAwMDAwMDAwICswMTAwCisrKyBjb21wYXQtd2lyZWxlc3MtMjAw OC0wNS0wNy9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCTIw MDgtMDUtMTMgMDc6MTM6MDYuMDAwMDAwMDAwICswMTAwCkBAIC0yMDYsNiAr MjA2LDggQEAKIAlfX2xlMTYgcnRzX2R1ciA9IDA7CiAJdTMyIGZsYWdzOwog CXVuc2lnbmVkIGludCBlcFs0XSA9IHsgNiwgNywgNSwgNCB9OworCXUxNiBm cmFtZV9jb250cm9sID0gbGUxNl90b19jcHUoKChzdHJ1Y3QgaWVlZTgwMjEx X2hkciAqKShza2ItPmRhdGEpKS0+ZnJhbWVfY29udHJvbCk7CisJdTggaXNf bWdtdCA9ICgoZnJhbWVfY29udHJvbCAmIElFRUU4MDIxMV9GQ1RMX0ZUWVBF KSA9PSBJRUVFODAyMTFfRlRZUEVfTUdNVCk7CiAKIAl1cmIgPSB1c2JfYWxs b2NfdXJiKDAsIEdGUF9BVE9NSUMpOwogCWlmICghdXJiKSB7CkBAIC0yNTEs NyArMjUzLDggQEAKIAlpbmZvLT5kZXYgPSBkZXY7CiAJdXNiX2ZpbGxfYnVs a191cmIodXJiLCBwcml2LT51ZGV2LAogCQkJICB1c2Jfc25kYnVsa3BpcGUo cHJpdi0+dWRldiwKLQkJCSAgcHJpdi0+aXNfcnRsODE4N2IgPyBlcFtjb250 cm9sLT5xdWV1ZV0gOiAyKSwKKwkJCQkJICBwcml2LT5pc19ydGw4MTg3YiA/ IChpc19tZ210ID8gMTIgOiBlcFtjb250cm9sLT5xdWV1ZV0pIAorCQkJCQkg IDogMiksCiAJCQkgIGJ1Ziwgc2tiLT5sZW4sIHJ0bDgxODdfdHhfY2IsIHNr Yik7CiAJdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsKIAo= --0-2012329936-1210664265=:28300 Content-Type: text/x-patch; name="rtl8187b_5.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rtl8187b_5.patch" ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODcuaCBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODcuaAppbmRleCAwNzZkODhi Li45NmMyOTU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9y dGw4MTg3LmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4Ny5o CkBAIC00NCwyMyArNDQsNTAgQEAgc3RydWN0IHJ0bDgxODdfcnhfaGRyIHsK IAlfX2xlNjQgbWFjX3RpbWU7CiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp OwogCitzdHJ1Y3QgcnRsODE4N2JfcnhfaGRyIHsKKwlfX2xlMzIgZmxhZ3M7 CisJX19sZTY0IG1hY190aW1lOworCXU4IG5vaXNlOworCXU4IHNpZ25hbDsK Kwl1OCBhZ2M7CisJdTggcmVzZXJ2ZWQ7CisJX19sZTMyIHVudXNlZDsKK30g X19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisKIHN0cnVjdCBydGw4MTg3X3R4 X2luZm8gewogCXN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJv bDsKIAlzdHJ1Y3QgdXJiICp1cmI7CiAJc3RydWN0IGllZWU4MDIxMV9odyAq ZGV2OwogfTsKIAotc3RydWN0IHJ0bDgxODdfdHhfaGRyIHsKLQlfX2xlMzIg ZmxhZ3M7CisvKiBUeCBmbGFncyBhcmUgY29tbW9uIGJldHdlZW4gcnRsODE4 NyBhbmQgcnRsODE4N2IgKi8KICNkZWZpbmUgUlRMODE4N19UWF9GTEFHX05P X0VOQ1JZUFQJKDEgPDwgMTUpCiAjZGVmaW5lIFJUTDgxODdfVFhfRkxBR19N T1JFX0ZSQUcJKDEgPDwgMTcpCiAjZGVmaW5lIFJUTDgxODdfVFhfRkxBR19D VFMJCSgxIDw8IDE4KQogI2RlZmluZSBSVEw4MTg3X1RYX0ZMQUdfUlRTCQko MSA8PCAyMykKKworc3RydWN0IHJ0bDgxODdfdHhfaGRyIHsKKwlfX2xlMzIg ZmxhZ3M7CiAJX19sZTE2IHJ0c19kdXJhdGlvbjsKIAlfX2xlMTYgbGVuOwog CV9fbGUzMiByZXRyeTsKIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAK K3N0cnVjdCBydGw4MTg3Yl90eF9oZHIgeworCV9fbGUzMiBmbGFnczsKKwlf X2xlMTYgcnRzX2R1cmF0aW9uOworCV9fbGUxNiBsZW47CisJX19sZTMyIHVu dXNlZF8xOworCV9fbGUxNiB1bnVzZWRfMjsKKwlfX2xlMTYgdHhfZHVyYXRp b247CisJX19sZTMyIHVudXNlZF8zOworCV9fbGUzMiByZXRyeTsKKwlfX2xl MzIgdW51c2VkXzRbMl07Cit9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOwor CisjZGVmaW5lIERFVklDRV9SVEw4MTg3CTAKKyNkZWZpbmUgREVWSUNFX1JU TDgxODdCCTEKKwogc3RydWN0IHJ0bDgxODdfcHJpdiB7CiAJLyogY29tbW9u IGJldHdlZW4gcnRsODE4eCBkcml2ZXJzICovCiAJc3RydWN0IHJ0bDgxOHhf Y3NyICptYXA7CkBAIC03Niw3MCArMTAzLDEyMCBAQCBzdHJ1Y3QgcnRsODE4 N19wcml2IHsKIAl1MzIgcnhfY29uZjsKIAl1MTYgdHhwd3JfYmFzZTsKIAl1 OCBhc2ljX3JldjsKKwl1OCBpc19ydGw4MTg3YjsKKwllbnVtIHsKKwkJUlRM ODE4N0J2QiwKKwkJUlRMODE4N0J2RCwKKwkJUlRMODE4N0J2RQorCX0gaHdf cmV2OwogCXN0cnVjdCBza19idWZmX2hlYWQgcnhfcXVldWU7CisJdTggc2ln bmFsOworCXU4IHF1YWxpdHk7CisJdTggbm9pc2U7CiB9OwogCiB2b2lkIHJ0 bDgxODdfd3JpdGVfcGh5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgdTgg YWRkciwgdTMyIGRhdGEpOwogCi1zdGF0aWMgaW5saW5lIHU4IHJ0bDgxOHhf aW9yZWFkOChzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LCB1OCAqYWRkcikK K3N0YXRpYyBpbmxpbmUgdTggcnRsODE4eF9pb3JlYWQ4X2lkeChzdHJ1Y3Qg cnRsODE4N19wcml2ICpwcml2LAorCQkJCSAgICAgdTggKmFkZHIsIHU4IGlk eCkKIHsKIAl1OCB2YWw7CiAKIAl1c2JfY29udHJvbF9tc2cocHJpdi0+dWRl diwgdXNiX3JjdmN0cmxwaXBlKHByaXYtPnVkZXYsIDApLAogCQkJUlRMODE4 N19SRVFfR0VUX1JFRywgUlRMODE4N19SRVFUX1JFQUQsCi0JCQkodW5zaWdu ZWQgbG9uZylhZGRyLCAwLCAmdmFsLCBzaXplb2YodmFsKSwgSFogLyAyKTsK KwkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIGlkeCAmIDB4MDMsICZ2YWwsCisJ CQlzaXplb2YodmFsKSwgSFogLyAyKTsKIAogCXJldHVybiB2YWw7CiB9CiAK LXN0YXRpYyBpbmxpbmUgdTE2IHJ0bDgxOHhfaW9yZWFkMTYoc3RydWN0IHJ0 bDgxODdfcHJpdiAqcHJpdiwgX19sZTE2ICphZGRyKQorc3RhdGljIGlubGlu ZSB1OCBydGw4MTh4X2lvcmVhZDgoc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJp diwgdTggKmFkZHIpCit7CisJcmV0dXJuIHJ0bDgxOHhfaW9yZWFkOF9pZHgo cHJpdiwgYWRkciwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTE2IHJ0bDgx OHhfaW9yZWFkMTZfaWR4KHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYsCisJ CQkJICAgICAgIF9fbGUxNiAqYWRkciwgdTggaWR4KQogewogCV9fbGUxNiB2 YWw7CiAKIAl1c2JfY29udHJvbF9tc2cocHJpdi0+dWRldiwgdXNiX3JjdmN0 cmxwaXBlKHByaXYtPnVkZXYsIDApLAogCQkJUlRMODE4N19SRVFfR0VUX1JF RywgUlRMODE4N19SRVFUX1JFQUQsCi0JCQkodW5zaWduZWQgbG9uZylhZGRy LCAwLCAmdmFsLCBzaXplb2YodmFsKSwgSFogLyAyKTsKKwkJCSh1bnNpZ25l ZCBsb25nKWFkZHIsIGlkeCAmIDB4MDMsICZ2YWwsCisJCQlzaXplb2YodmFs KSwgSFogLyAyKTsKIAogCXJldHVybiBsZTE2X3RvX2NwdSh2YWwpOwogfQog Ci1zdGF0aWMgaW5saW5lIHUzMiBydGw4MTh4X2lvcmVhZDMyKHN0cnVjdCBy dGw4MTg3X3ByaXYgKnByaXYsIF9fbGUzMiAqYWRkcikKK3N0YXRpYyBpbmxp bmUgdTE2IHJ0bDgxOHhfaW9yZWFkMTYoc3RydWN0IHJ0bDgxODdfcHJpdiAq cHJpdiwgX19sZTE2ICphZGRyKQoreworCXJldHVybiBydGw4MTh4X2lvcmVh ZDE2X2lkeChwcml2LCBhZGRyLCAwKTsKK30KKworc3RhdGljIGlubGluZSB1 MzIgcnRsODE4eF9pb3JlYWQzMl9pZHgoc3RydWN0IHJ0bDgxODdfcHJpdiAq cHJpdiwKKwkJCQkgICAgICAgX19sZTMyICphZGRyLCB1OCBpZHgpCiB7CiAJ X19sZTMyIHZhbDsKIAogCXVzYl9jb250cm9sX21zZyhwcml2LT51ZGV2LCB1 c2JfcmN2Y3RybHBpcGUocHJpdi0+dWRldiwgMCksCiAJCQlSVEw4MTg3X1JF UV9HRVRfUkVHLCBSVEw4MTg3X1JFUVRfUkVBRCwKLQkJCSh1bnNpZ25lZCBs b25nKWFkZHIsIDAsICZ2YWwsIHNpemVvZih2YWwpLCBIWiAvIDIpOworCQkJ KHVuc2lnbmVkIGxvbmcpYWRkciwgaWR4ICYgMHgwMywgJnZhbCwKKwkJCXNp emVvZih2YWwpLCBIWiAvIDIpOwogCiAJcmV0dXJuIGxlMzJfdG9fY3B1KHZh bCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTh4X2lvd3JpdGU4 KHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYsCi0JCQkJICAgIHU4ICphZGRy LCB1OCB2YWwpCitzdGF0aWMgaW5saW5lIHUzMiBydGw4MTh4X2lvcmVhZDMy KHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYsIF9fbGUzMiAqYWRkcikKK3sK KwlyZXR1cm4gcnRsODE4eF9pb3JlYWQzMl9pZHgocHJpdiwgYWRkciwgMCk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTh4X2lvd3JpdGU4X2lk eChzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LAorCQkJCQl1OCAqYWRkciwg dTggdmFsLCB1OCBpZHgpCiB7CiAJdXNiX2NvbnRyb2xfbXNnKHByaXYtPnVk ZXYsIHVzYl9zbmRjdHJscGlwZShwcml2LT51ZGV2LCAwKSwKIAkJCVJUTDgx ODdfUkVRX1NFVF9SRUcsIFJUTDgxODdfUkVRVF9XUklURSwKLQkJCSh1bnNp Z25lZCBsb25nKWFkZHIsIDAsICZ2YWwsIHNpemVvZih2YWwpLCBIWiAvIDIp OworCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgaWR4ICYgMHgwMywgJnZhbCwK KwkJCXNpemVvZih2YWwpLCBIWiAvIDIpOworfQorCitzdGF0aWMgaW5saW5l IHZvaWQgcnRsODE4eF9pb3dyaXRlOChzdHJ1Y3QgcnRsODE4N19wcml2ICpw cml2LCB1OCAqYWRkciwgdTggdmFsKQoreworCXJ0bDgxOHhfaW93cml0ZThf aWR4KHByaXYsIGFkZHIsIHZhbCwgMCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg dm9pZCBydGw4MTh4X2lvd3JpdGUxNihzdHJ1Y3QgcnRsODE4N19wcml2ICpw cml2LAotCQkJCSAgICAgX19sZTE2ICphZGRyLCB1MTYgdmFsKQorc3RhdGlj IGlubGluZSB2b2lkIHJ0bDgxOHhfaW93cml0ZTE2X2lkeChzdHJ1Y3QgcnRs ODE4N19wcml2ICpwcml2LAorCQkJCQkgX19sZTE2ICphZGRyLCB1MTYgdmFs LCB1OCBpZHgpCiB7CiAJX19sZTE2IGJ1ZiA9IGNwdV90b19sZTE2KHZhbCk7 CiAKIAl1c2JfY29udHJvbF9tc2cocHJpdi0+dWRldiwgdXNiX3NuZGN0cmxw aXBlKHByaXYtPnVkZXYsIDApLAogCQkJUlRMODE4N19SRVFfU0VUX1JFRywg UlRMODE4N19SRVFUX1dSSVRFLAotCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwg MCwgJmJ1Ziwgc2l6ZW9mKGJ1ZiksIEhaIC8gMik7CisJCQkodW5zaWduZWQg bG9uZylhZGRyLCBpZHggJiAweDAzLCAmYnVmLCBzaXplb2YoYnVmKSwKKwkJ CUhaIC8gMik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBydGw4MTh4X2lv d3JpdGUzMihzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2LAotCQkJCSAgICAg X19sZTMyICphZGRyLCB1MzIgdmFsKQorc3RhdGljIGlubGluZSB2b2lkIHJ0 bDgxOHhfaW93cml0ZTE2KHN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYsIF9f bGUxNiAqYWRkciwKKwkJCQkgICAgIHUxNiB2YWwpCit7CisJcnRsODE4eF9p b3dyaXRlMTZfaWR4KHByaXYsIGFkZHIsIHZhbCwgMCk7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBydGw4MTh4X2lvd3JpdGUzMl9pZHgoc3RydWN0IHJ0 bDgxODdfcHJpdiAqcHJpdiwKKwkJCQkJIF9fbGUzMiAqYWRkciwgdTMyIHZh bCwgdTggaWR4KQogewogCV9fbGUzMiBidWYgPSBjcHVfdG9fbGUzMih2YWwp OwogCiAJdXNiX2NvbnRyb2xfbXNnKHByaXYtPnVkZXYsIHVzYl9zbmRjdHJs cGlwZShwcml2LT51ZGV2LCAwKSwKIAkJCVJUTDgxODdfUkVRX1NFVF9SRUcs IFJUTDgxODdfUkVRVF9XUklURSwKLQkJCSh1bnNpZ25lZCBsb25nKWFkZHIs IDAsICZidWYsIHNpemVvZihidWYpLCBIWiAvIDIpOworCQkJKHVuc2lnbmVk IGxvbmcpYWRkciwgaWR4ICYgMHgwMywgJmJ1Ziwgc2l6ZW9mKGJ1ZiksCisJ CQlIWiAvIDIpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcnRsODE4eF9p b3dyaXRlMzIoc3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiwgX19sZTMyICph ZGRyLAorCQkJCSAgICAgdTMyIHZhbCkKK3sKKwlydGw4MTh4X2lvd3JpdGUz Ml9pZHgocHJpdiwgYWRkciwgdmFsLCAwKTsKIH0KIAogI2VuZGlmIC8qIFJU TDgxODdfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mv cnRsODE4N19kZXYuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdf ZGV2LmMKaW5kZXggZDU3ODdiMy4uMWY1OWU1ZCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvcnRsODE4N19kZXYuYworKysgYi9kcml2ZXJz L25ldC93aXJlbGVzcy9ydGw4MTg3X2Rldi5jCkBAIC0yMCw2ICsyMCw3IEBA CiAjaW5jbHVkZSA8bGludXgvZGVsYXkuaD4KICNpbmNsdWRlIDxsaW51eC9l dGhlcmRldmljZS5oPgogI2luY2x1ZGUgPGxpbnV4L2VlcHJvbV85M2N4Ni5o PgorI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KICNpbmNsdWRlIDxuZXQv bWFjODAyMTEuaD4KIAogI2luY2x1ZGUgInJ0bDgxODcuaCIKQEAgLTI3LDE5 ICsyOCwyMSBAQAogCiBNT0RVTEVfQVVUSE9SKCJNaWNoYWVsIFd1IDxmbGFt aW5naWNlQHNvdXJtaWxrLm5ldD4iKTsKIE1PRFVMRV9BVVRIT1IoIkFuZHJl YSBNZXJlbGxvIDxhbmRyZWFtcmxAdGlzY2FsaS5pdD4iKTsKLU1PRFVMRV9E RVNDUklQVElPTigiUlRMODE4NyBVU0Igd2lyZWxlc3MgZHJpdmVyIik7CitN T0RVTEVfREVTQ1JJUFRJT04oIlJUTDgxODcvUlRMODE4N0IgVVNCIHdpcmVs ZXNzIGRyaXZlciIpOwogTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwogCiBzdGF0 aWMgc3RydWN0IHVzYl9kZXZpY2VfaWQgcnRsODE4N190YWJsZVtdIF9fZGV2 aW5pdGRhdGEgPSB7CiAJLyogUmVhbHRlayAqLwotCXtVU0JfREVWSUNFKDB4 MGJkYSwgMHg4MTg3KX0sCisJe1VTQl9ERVZJQ0UoMHgwYmRhLCAweDgxODcp LCAuZHJpdmVyX2luZm8gPSBERVZJQ0VfUlRMODE4N30sCisJe1VTQl9ERVZJ Q0UoMHgwYmRhLCAweDgxODkpLCAuZHJpdmVyX2luZm8gPSBERVZJQ0VfUlRM ODE4N0J9LAorCXtVU0JfREVWSUNFKDB4MGJkYSwgMHg4MTk3KSwgLmRyaXZl cl9pbmZvID0gREVWSUNFX1JUTDgxODdCfSwKIAkvKiBOZXRnZWFyICovCi0J e1VTQl9ERVZJQ0UoMHgwODQ2LCAweDYxMDApfSwKLQl7VVNCX0RFVklDRSgw eDA4NDYsIDB4NmEwMCl9LAorCXtVU0JfREVWSUNFKDB4MDg0NiwgMHg2MTAw KSwgLmRyaXZlcl9pbmZvID0gREVWSUNFX1JUTDgxODd9LAorCXtVU0JfREVW SUNFKDB4MDg0NiwgMHg2YTAwKSwgLmRyaXZlcl9pbmZvID0gREVWSUNFX1JU TDgxODd9LAogCS8qIEhQICovCi0Je1VTQl9ERVZJQ0UoMHgwM2YwLCAweGNh MDIpfSwKKwl7VVNCX0RFVklDRSgweDAzZjAsIDB4Y2EwMiksIC5kcml2ZXJf aW5mbyA9IERFVklDRV9SVEw4MTg3fSwKIAkvKiBTaXRlY29tICovCi0Je1VT Ql9ERVZJQ0UoMHgwZGY2LCAweDAwMGQpfSwKKwl7VVNCX0RFVklDRSgweDBk ZjYsIDB4MDAwZCksIC5kcml2ZXJfaW5mbyA9IERFVklDRV9SVEw4MTg3fSwK IAl7fQogfTsKIApAQCAtMTQ4LDYgKzE1MSw4IEBAIHN0YXRpYyB2b2lkIHJ0 bDgxODdfdHhfY2Ioc3RydWN0IHVyYiAqdXJiKQogCXN0cnVjdCBpZWVlODAy MTFfdHhfc3RhdHVzIHN0YXR1czsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0g KHN0cnVjdCBza19idWZmICopdXJiLT5jb250ZXh0OwogCXN0cnVjdCBydGw4 MTg3X3R4X2luZm8gKmluZm8gPSAoc3RydWN0IHJ0bDgxODdfdHhfaW5mbyAq KXNrYi0+Y2I7CisJc3RydWN0IGllZWU4MDIxMV9odyAqZGV2ID0gaW5mby0+ ZGV2OworCXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYgPSBkZXYtPnByaXY7 CiAKIAltZW1zZXQoJnN0YXR1cywgMCwgc2l6ZW9mKHN0YXR1cykpOwogCkBA IC0xNTUsMjAgKzE2MCw1MiBAQCBzdGF0aWMgdm9pZCBydGw4MTg3X3R4X2Ni KHN0cnVjdCB1cmIgKnVyYikKIAlpZiAoaW5mby0+Y29udHJvbCkKIAkJbWVt Y3B5KCZzdGF0dXMuY29udHJvbCwgaW5mby0+Y29udHJvbCwgc2l6ZW9mKHN0 YXR1cy5jb250cm9sKSk7CiAJa2ZyZWUoaW5mby0+Y29udHJvbCk7Ci0Jc2ti X3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IHJ0bDgxODdfdHhfaGRyKSk7CisJ c2tiX3B1bGwoc2tiLCBwcml2LT5pc19ydGw4MTg3YiA/IHNpemVvZihzdHJ1 Y3QgcnRsODE4N2JfdHhfaGRyKSA6CisJCQkJCSAgc2l6ZW9mKHN0cnVjdCBy dGw4MTg3X3R4X2hkcikpOwogCXN0YXR1cy5mbGFncyB8PSBJRUVFODAyMTFf VFhfU1RBVFVTX0FDSzsKIAlpZWVlODAyMTFfdHhfc3RhdHVzX2lycXNhZmUo aW5mby0+ZGV2LCBza2IsICZzdGF0dXMpOwogfQogCitzdGF0aWMgdm9pZCAq cnRsODE4N190eF9idWYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIGZs YWdzLCBfX2xlMTYgcnRzX2R1ciwKKwkJCSAgICBfX2xlMzIgcmV0cnkpCit7 CisJc3RydWN0IHJ0bDgxODdfdHhfaGRyICpoZHI7CisKKwloZHIgPSAoc3Ry dWN0IHJ0bDgxODdfdHhfaGRyICopc2tiX3B1c2goc2tiLCBzaXplb2YoKmhk cikpOworCWhkci0+ZmxhZ3MgPSBmbGFnczsKKwloZHItPmxlbiA9IDA7CisJ aGRyLT5ydHNfZHVyYXRpb24gPSBydHNfZHVyOworCWhkci0+cmV0cnkgPSBy ZXRyeTsKKworCXJldHVybiBoZHI7Cit9CisKK3N0YXRpYyB2b2lkICpydGw4 MTg3Yl90eF9idWYoc3RydWN0IHNrX2J1ZmYgKnNrYiwgX19sZTMyIGZsYWdz LAorCQkJICAgICBfX2xlMTYgcnRzX2R1ciwgX19sZTMyIHJldHJ5LAorCQkJ ICAgICBfX2xlMTYgdHhfZHVyKQoreworCXN0cnVjdCBydGw4MTg3Yl90eF9o ZHIgKmhkcjsKKworCWhkciA9IChzdHJ1Y3QgcnRsODE4N2JfdHhfaGRyICop c2tiX3B1c2goc2tiLCBzaXplb2YoKmhkcikpOworCW1lbXNldChoZHIsIDAs IHNpemVvZigqaGRyKSk7CisJaGRyLT5mbGFncyA9IGZsYWdzOworCWhkci0+ cnRzX2R1cmF0aW9uID0gcnRzX2R1cjsKKwloZHItPnJldHJ5ID0gcmV0cnk7 CisJaGRyLT50eF9kdXJhdGlvbiA9IHR4X2R1cjsKKworCXJldHVybiBoZHI7 Cit9CisKIHN0YXRpYyBpbnQgcnRsODE4N190eChzdHJ1Y3QgaWVlZTgwMjEx X2h3ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsCiAJCSAgICAgIHN0cnVj dCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCkKIHsKIAlzdHJ1Y3Qg cnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2OwotCXN0cnVjdCBydGw4 MTg3X3R4X2hkciAqaGRyOworCXZvaWQgKmJ1ZjsKIAlzdHJ1Y3QgcnRsODE4 N190eF9pbmZvICppbmZvOwogCXN0cnVjdCB1cmIgKnVyYjsKIAlfX2xlMTYg cnRzX2R1ciA9IDA7CiAJdTMyIGZsYWdzOworCXVuc2lnbmVkIGludCBlcFs0 XSA9IHsgNiwgNywgNSwgNCB9OwogCiAJdXJiID0gdXNiX2FsbG9jX3VyYigw LCBHRlBfQVRPTUlDKTsKIAlpZiAoIXVyYikgewpAQCAtMTk2LDE4ICsyMzMs MjYgQEAgc3RhdGljIGludCBydGw4MTg3X3R4KHN0cnVjdCBpZWVlODAyMTFf aHcgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJZmxhZ3MgfD0gY29u dHJvbC0+cnRzX2N0c19yYXRlLT5od192YWx1ZSA8PCAxOTsKIAl9CiAKLQlo ZHIgPSAoc3RydWN0IHJ0bDgxODdfdHhfaGRyICopc2tiX3B1c2goc2tiLCBz aXplb2YoKmhkcikpOwotCWhkci0+ZmxhZ3MgPSBjcHVfdG9fbGUzMihmbGFn cyk7Ci0JaGRyLT5sZW4gPSAwOwotCWhkci0+cnRzX2R1cmF0aW9uID0gcnRz X2R1cjsKLQloZHItPnJldHJ5ID0gY3B1X3RvX2xlMzIoY29udHJvbC0+cmV0 cnlfbGltaXQgPDwgOCk7CisJaWYgKCFwcml2LT5pc19ydGw4MTg3YikKKwkJ YnVmID0gcnRsODE4N190eF9idWYoc2tiLCBjcHVfdG9fbGUzMihmbGFncyks IHJ0c19kdXIsCisJCQkJICAgICAgIGNwdV90b19sZTMyKGNvbnRyb2wtPnJl dHJ5X2xpbWl0IDw8IDgpKTsKKwllbHNlCisJCWJ1ZiA9IHJ0bDgxODdiX3R4 X2J1Zihza2IsIGNwdV90b19sZTMyKGZsYWdzKSwgcnRzX2R1ciwKKwkJCQkJ Y3B1X3RvX2xlMzIoY29udHJvbC0+cmV0cnlfbGltaXQgPDwgOCksCisJCQkJ CWllZWU4MDIxMV9nZW5lcmljX2ZyYW1lX2R1cmF0aW9uKAorCQkJCQkJZGV2 LAorCQkJCQkJcHJpdi0+dmlmLAorCQkJCQkJc2tiLT5sZW4sCisJCQkJCQlj b250cm9sLT50eF9yYXRlKSk7CiAKIAlpbmZvID0gKHN0cnVjdCBydGw4MTg3 X3R4X2luZm8gKilza2ItPmNiOwogCWluZm8tPmNvbnRyb2wgPSBrbWVtZHVw KGNvbnRyb2wsIHNpemVvZigqY29udHJvbCksIEdGUF9BVE9NSUMpOwogCWlu Zm8tPnVyYiA9IHVyYjsKIAlpbmZvLT5kZXYgPSBkZXY7Ci0JdXNiX2ZpbGxf YnVsa191cmIodXJiLCBwcml2LT51ZGV2LCB1c2Jfc25kYnVsa3BpcGUocHJp di0+dWRldiwgMiksCi0JCQkgIGhkciwgc2tiLT5sZW4sIHJ0bDgxODdfdHhf Y2IsIHNrYik7CisJdXNiX2ZpbGxfYnVsa191cmIodXJiLCBwcml2LT51ZGV2 LAorCQkJICB1c2Jfc25kYnVsa3BpcGUocHJpdi0+dWRldiwKKwkJCSAgcHJp di0+aXNfcnRsODE4N2IgPyBlcFtjb250cm9sLT5xdWV1ZV0gOiAyKSwKKwkJ CSAgYnVmLCBza2ItPmxlbiwgcnRsODE4N190eF9jYiwgc2tiKTsKIAl1c2Jf c3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogCiAJcmV0dXJuIDA7CkBA IC0yMjAsNiArMjY1LDcgQEAgc3RhdGljIHZvaWQgcnRsODE4N19yeF9jYihz dHJ1Y3QgdXJiICp1cmIpCiAJc3RydWN0IGllZWU4MDIxMV9odyAqZGV2ID0g aW5mby0+ZGV2OwogCXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYgPSBkZXYt PnByaXY7CiAJc3RydWN0IHJ0bDgxODdfcnhfaGRyICpoZHI7CisJc3RydWN0 IHJ0bDgxODdiX3J4X2hkciAqaGRyX2I7CiAJc3RydWN0IGllZWU4MDIxMV9y eF9zdGF0dXMgcnhfc3RhdHVzID0geyAwIH07CiAJaW50IHJhdGUsIHNpZ25h bDsKIAl1MzIgZmxhZ3M7CkBAIC0yNDAsMTEgKzI4NiwzMiBAQCBzdGF0aWMg dm9pZCBydGw4MTg3X3J4X2NiKHN0cnVjdCB1cmIgKnVyYikKIAl9CiAKIAlz a2JfcHV0KHNrYiwgdXJiLT5hY3R1YWxfbGVuZ3RoKTsKLQloZHIgPSAoc3Ry dWN0IHJ0bDgxODdfcnhfaGRyICopKHNrYl90YWlsX3BvaW50ZXIoc2tiKSAt IHNpemVvZigqaGRyKSk7Ci0JZmxhZ3MgPSBsZTMyX3RvX2NwdShoZHItPmZs YWdzKTsKLQlza2JfdHJpbShza2IsIGZsYWdzICYgMHgwRkZGKTsKKwlpZiAo IXByaXYtPmlzX3J0bDgxODdiKSB7CisJCWhkciA9IChzdHJ1Y3QgcnRsODE4 N19yeF9oZHIgKikKKwkJCShza2JfdGFpbF9wb2ludGVyKHNrYikgLSBzaXpl b2YoKmhkcikpOworCQlmbGFncyA9IGxlMzJfdG9fY3B1KGhkci0+ZmxhZ3Mp OworCQlzaWduYWwgPSBoZHItPmFnYyA+PiAxOworCQlyeF9zdGF0dXMuYW50 ZW5uYSA9IChoZHItPnNpZ25hbCA+PiA3KSAmIDE7CisJCXJ4X3N0YXR1cy5z aWduYWwgPSA2NCAtIG1pbihoZHItPm5vaXNlLCAodTgpNjQpOworCQlyeF9z dGF0dXMubWFjdGltZSA9IGxlNjRfdG9fY3B1KGhkci0+bWFjX3RpbWUpOwor CQlwcml2LT5zaWduYWwgPSBoZHItPnNpZ25hbDsKKwkJcHJpdi0+cXVhbGl0 eSA9IGhkci0+YWdjID4+IDE7CisJCXByaXYtPm5vaXNlID0gaGRyLT5ub2lz ZTsKKwl9IGVsc2UgeworCQloZHJfYiA9IChzdHJ1Y3QgcnRsODE4N2Jfcnhf aGRyICopCisJCQkoc2tiX3RhaWxfcG9pbnRlcihza2IpIC0gc2l6ZW9mKCpo ZHJfYikpOworCQlmbGFncyA9IGxlMzJfdG9fY3B1KGhkcl9iLT5mbGFncyk7 CisJCXNpZ25hbCA9IGhkcl9iLT5hZ2MgPj4gMTsKKwkJcnhfc3RhdHVzLmFu dGVubmEgPSAoaGRyX2ItPnNpZ25hbCA+PiA3KSAmIDE7CisJCXJ4X3N0YXR1 cy5zaWduYWwgPSA2NCAtIG1pbihoZHJfYi0+bm9pc2UsICh1OCk2NCk7CisJ CXJ4X3N0YXR1cy5ub2lzZSA9IGhkcl9iLT5ub2lzZTsKKwkJcnhfc3RhdHVz Lm1hY3RpbWUgPSBsZTY0X3RvX2NwdShoZHJfYi0+bWFjX3RpbWUpOworCQlw cml2LT5zaWduYWwgPSBoZHJfYi0+c2lnbmFsOworCQlwcml2LT5xdWFsaXR5 ID0gaGRyX2ItPmFnYyA+PiAxOworCQlwcml2LT5ub2lzZSA9IGhkcl9iLT5u b2lzZTsKKwl9CiAKLQlzaWduYWwgPSBoZHItPmFnYyA+PiAxOworCXNrYl90 cmltKHNrYiwgZmxhZ3MgJiAweDBGRkYpOwogCXJhdGUgPSAoZmxhZ3MgPj4g MjApICYgMHhGOwogCWlmIChyYXRlID4gMykgewkvKiBPRkRNIHJhdGUgKi8K IAkJaWYgKHNpZ25hbCA+IDkwKQpAQCAtMjYwLDEzICszMjcsMTAgQEAgc3Rh dGljIHZvaWQgcnRsODE4N19yeF9jYihzdHJ1Y3QgdXJiICp1cmIpCiAJCXNp Z25hbCA9IDk1IC0gc2lnbmFsOwogCX0KIAotCXJ4X3N0YXR1cy5hbnRlbm5h ID0gKGhkci0+c2lnbmFsID4+IDcpICYgMTsKLQlyeF9zdGF0dXMuc2lnbmFs ID0gNjQgLSBtaW4oaGRyLT5ub2lzZSwgKHU4KTY0KTsKIAlyeF9zdGF0dXMu c3NpID0gc2lnbmFsOwogCXJ4X3N0YXR1cy5yYXRlX2lkeCA9IHJhdGU7CiAJ cnhfc3RhdHVzLmZyZXEgPSBkZXYtPmNvbmYuY2hhbm5lbC0+Y2VudGVyX2Zy ZXE7CiAJcnhfc3RhdHVzLmJhbmQgPSBkZXYtPmNvbmYuY2hhbm5lbC0+YmFu ZDsKLQlyeF9zdGF0dXMubWFjdGltZSA9IGxlNjRfdG9fY3B1KGhkci0+bWFj X3RpbWUpOwogCXJ4X3N0YXR1cy5mbGFnIHw9IFJYX0ZMQUdfVFNGVDsKIAlp ZiAoZmxhZ3MgJiAoMSA8PCAxMykpCiAJCXJ4X3N0YXR1cy5mbGFnIHw9IFJY X0ZMQUdfRkFJTEVEX0ZDU19DUkM7CkBAIC0zMDYsNyArMzcwLDggQEAgc3Rh dGljIGludCBydGw4MTg3X2luaXRfdXJicyhzdHJ1Y3QgaWVlZTgwMjExX2h3 ICpkZXYpCiAJCQlicmVhazsKIAkJfQogCQl1c2JfZmlsbF9idWxrX3VyYihl bnRyeSwgcHJpdi0+dWRldiwKLQkJCQkgIHVzYl9yY3ZidWxrcGlwZShwcml2 LT51ZGV2LCAxKSwKKwkJCQkgIHVzYl9yY3ZidWxrcGlwZShwcml2LT51ZGV2 LAorCQkJCSAgcHJpdi0+aXNfcnRsODE4N2IgPyAzIDogMSksCiAJCQkJICBz a2JfdGFpbF9wb2ludGVyKHNrYiksCiAJCQkJICBSVEw4MTg3X01BWF9SWCwg cnRsODE4N19yeF9jYiwgc2tiKTsKIAkJaW5mbyA9IChzdHJ1Y3QgcnRsODE4 N19yeF9pbmZvICopc2tiLT5jYjsKQEAgLTMxOSwyOSArMzg0LDEyIEBAIHN0 YXRpYyBpbnQgcnRsODE4N19pbml0X3VyYnMoc3RydWN0IGllZWU4MDIxMV9o dyAqZGV2KQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHJ0bDgxODdf aW5pdF9odyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYpCitzdGF0aWMgaW50 IHJ0bDgxODdfY21kX3Jlc2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldikK IHsKIAlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2Owog CXU4IHJlZzsKIAlpbnQgaTsKIAotCS8qIHJlc2V0ICovCi0JcnRsODE4eF9p b3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBSVEw4MThY X0VFUFJPTV9DTURfQ09ORklHKTsKLQlyZWcgPSBydGw4MTh4X2lvcmVhZDgo cHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7Ci0JcnRsODE4eF9pb3dyaXRl OChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCByZWcgfCBSVEw4MThYX0NP TkZJRzNfQU5BUEFSQU1fV1JJVEUpOwotCXJ0bDgxOHhfaW93cml0ZTMyKHBy aXYsICZwcml2LT5tYXAtPkFOQVBBUkFNLCBSVEw4MjI1X0FOQVBBUkFNX09O KTsKLQlydGw4MTh4X2lvd3JpdGUzMihwcml2LCAmcHJpdi0+bWFwLT5BTkFQ QVJBTTIsIFJUTDgyMjVfQU5BUEFSQU0yX09OKTsKLQlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsIHJlZyAmIH5SVEw4MThY X0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOwotCXJ0bDgxOHhfaW93cml0ZTgo cHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBST01f Q01EX05PUk1BTCk7Ci0KLQlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJp di0+bWFwLT5JTlRfTUFTSywgMCk7Ci0KLQltc2xlZXAoMjAwKTsKLQlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkUxOCwgMHgxMCk7Ci0JcnRs ODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZFMTgsIDB4MTEpOwotCXJ0 bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRTE4LCAweDAwKTsKLQlt c2xlZXAoMjAwKTsKLQogCXJlZyA9IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAm cHJpdi0+bWFwLT5DTUQpOwogCXJlZyAmPSAoMSA8PCAxKTsKIAlyZWcgfD0g UlRMODE4WF9DTURfUkVTRVQ7CkBAIC0zNzcsNiArNDI1LDM2IEBAIHN0YXRp YyBpbnQgcnRsODE4N19pbml0X2h3KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRl dikKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgcnRsODE4N19pbml0X2h3KHN0cnVjdCBpZWVlODAy MTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4N19wcml2ICpwcml2ID0g ZGV2LT5wcml2OworCXU4IHJlZzsKKwlpbnQgcmVzOworCisJLyogcmVzZXQg Ki8KKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJP TV9DTUQsIFJUTDgxOFhfRUVQUk9NX0NNRF9DT05GSUcpOworCXJlZyA9IHJ0 bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczKTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsIHJl ZyB8IFJUTDgxOFhfQ09ORklHM19BTkFQQVJBTV9XUklURSk7CisJcnRsODE4 eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+QU5BUEFSQU0sIFJUTDgy MjVfQU5BUEFSQU1fT04pOworCXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZw cml2LT5tYXAtPkFOQVBBUkFNMiwgUlRMODIyNV9BTkFQQVJBTTJfT04pOwor CXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMywg cmVnICYgflJUTDgxOFhfQ09ORklHM19BTkFQQVJBTV9XUklURSk7CisJcnRs ODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01ELCBS VEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKworCXJ0bDgxOHhfaW93cml0 ZTE2KHByaXYsICZwcml2LT5tYXAtPklOVF9NQVNLLCAwKTsKKworCW1zbGVl cCgyMDApOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRTE4 LCAweDEwKTsKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkUx OCwgMHgxMSk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZF MTgsIDB4MDApOworCW1zbGVlcCgyMDApOworCisJcmVzID0gcnRsODE4N19j bWRfcmVzZXQoZGV2KTsKKwlpZiAocmVzKQorCQlyZXR1cm4gcmVzOworCiAJ cnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01fQ01E LCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKIAlyZWcgPSBydGw4MTh4 X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7CiAJcnRsODE4 eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCByZWcgfCBS VEw4MThYX0NPTkZJRzNfQU5BUEFSQU1fV1JJVEUpOwpAQCAtNDQ2LDE2ICs1 MjQsMTkyIEBAIHN0YXRpYyBpbnQgcnRsODE4N19pbml0X2h3KHN0cnVjdCBp ZWVlODAyMTFfaHcgKmRldikKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGNv bnN0IHU4IHJ0bDgxODdiX3JlZ190YWJsZVtdWzNdID0geworCXsweEYwLCAw eDMyLCAwfSwgezB4RjEsIDB4MzIsIDB9LCB7MHhGMiwgMHgwMCwgMH0sIHsw eEYzLCAweDAwLCAwfSwKKwl7MHhGNCwgMHgzMiwgMH0sIHsweEY1LCAweDQz LCAwfSwgezB4RjYsIDB4MDAsIDB9LCB7MHhGNywgMHgwMCwgMH0sCisJezB4 RjgsIDB4NDYsIDB9LCB7MHhGOSwgMHhBNCwgMH0sIHsweEZBLCAweDAwLCAw fSwgezB4RkIsIDB4MDAsIDB9LAorCXsweEZDLCAweDk2LCAwfSwgezB4RkQs IDB4QTQsIDB9LCB7MHhGRSwgMHgwMCwgMH0sIHsweEZGLCAweDAwLCAwfSwK KworCXsweDU4LCAweDRCLCAxfSwgezB4NTksIDB4MDAsIDF9LCB7MHg1QSwg MHg0QiwgMX0sIHsweDVCLCAweDAwLCAxfSwKKwl7MHg2MCwgMHg0QiwgMX0s IHsweDYxLCAweDA5LCAxfSwgezB4NjIsIDB4NEIsIDF9LCB7MHg2MywgMHgw OSwgMX0sCisJezB4Q0UsIDB4MEYsIDF9LCB7MHhDRiwgMHgwMCwgMX0sIHsw eEUwLCAweEZGLCAxfSwgezB4RTEsIDB4MEYsIDF9LAorCXsweEUyLCAweDAw LCAxfSwgezB4RjAsIDB4NEUsIDF9LCB7MHhGMSwgMHgwMSwgMX0sIHsweEYy LCAweDAyLCAxfSwKKwl7MHhGMywgMHgwMywgMX0sIHsweEY0LCAweDA0LCAx fSwgezB4RjUsIDB4MDUsIDF9LCB7MHhGNiwgMHgwNiwgMX0sCisJezB4Rjcs IDB4MDcsIDF9LCB7MHhGOCwgMHgwOCwgMX0sCisKKwl7MHg0RSwgMHgwMCwg Mn0sIHsweDBDLCAweDA0LCAyfSwgezB4MjEsIDB4NjEsIDJ9LCB7MHgyMiwg MHg2OCwgMn0sCisJezB4MjMsIDB4NkYsIDJ9LCB7MHgyNCwgMHg3NiwgMn0s IHsweDI1LCAweDdELCAyfSwgezB4MjYsIDB4ODQsIDJ9LAorCXsweDI3LCAw eDhELCAyfSwgezB4NEQsIDB4MDgsIDJ9LCB7MHg1MCwgMHgwNSwgMn0sIHsw eDUxLCAweEY1LCAyfSwKKwl7MHg1MiwgMHgwNCwgMn0sIHsweDUzLCAweEEw LCAyfSwgezB4NTQsIDB4MUYsIDJ9LCB7MHg1NSwgMHgyMywgMn0sCisJezB4 NTYsIDB4NDUsIDJ9LCB7MHg1NywgMHg2NywgMn0sIHsweDU4LCAweDA4LCAy fSwgezB4NTksIDB4MDgsIDJ9LAorCXsweDVBLCAweDA4LCAyfSwgezB4NUIs IDB4MDgsIDJ9LCB7MHg2MCwgMHgwOCwgMn0sIHsweDYxLCAweDA4LCAyfSwK Kwl7MHg2MiwgMHgwOCwgMn0sIHsweDYzLCAweDA4LCAyfSwgezB4NjQsIDB4 Q0YsIDJ9LCB7MHg3MiwgMHg1NiwgMn0sCisJezB4NzMsIDB4OUEsIDJ9LAor CisJezB4MzQsIDB4RjAsIDB9LCB7MHgzNSwgMHgwRiwgMH0sIHsweDVCLCAw eDQwLCAwfSwgezB4ODQsIDB4ODgsIDB9LAorCXsweDg1LCAweDI0LCAwfSwg ezB4ODgsIDB4NTQsIDB9LCB7MHg4QiwgMHhCOCwgMH0sIHsweDhDLCAweDA3 LCAwfSwKKwl7MHg4RCwgMHgwMCwgMH0sIHsweDk0LCAweDFCLCAwfSwgezB4 OTUsIDB4MTIsIDB9LCB7MHg5NiwgMHgwMCwgMH0sCisJezB4OTcsIDB4MDYs IDB9LCB7MHg5RCwgMHgxQSwgMH0sIHsweDlGLCAweDEwLCAwfSwgezB4QjQs IDB4MjIsIDB9LAorCXsweEJFLCAweDgwLCAwfSwgezB4REIsIDB4MDAsIDB9 LCB7MHhFRSwgMHgwMCwgMH0sIHsweDkxLCAweDAzLCAwfSwKKworCXsweDRD LCAweDAwLCAyfSwgezB4OUYsIDB4MDAsIDN9LCB7MHg4QywgMHgwMSwgMH0s IHsweDhELCAweDEwLCAwfSwKKwl7MHg4RSwgMHgwOCwgMH0sIHsweDhGLCAw eDAwLCAwfQorfTsKKworc3RhdGljIGludCBydGw4MTg3Yl9pbml0X2h3KHN0 cnVjdCBpZWVlODAyMTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4N19w cml2ICpwcml2ID0gZGV2LT5wcml2OworCWludCByZXMsIGk7CisJdTggcmVn OworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBS T01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKKworCXJlZyA9 IHJ0bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DT05GSUczKTsK KwlyZWcgfD0gUlRMODE4WF9DT05GSUczX0FOQVBBUkFNX1dSSVRFIHwgUlRM ODE4WF9DT05GSUczX0dOVF9TRUxFQ1Q7CisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAmcHJpdi0+bWFwLT5DT05GSUczLCByZWcpOworCXJ0bDgxOHhfaW93 cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPkFOQVBBUkFNMiwgMHg3MjdmM2Y1 Mik7CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+QU5B UEFSQU0sIDB4NDUwOTA2NTgpOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwg JnByaXYtPm1hcC0+QU5BUEFSQU0zLCAwKTsKKworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgKHU4ICopMHhGRjYxLCAweDEwKTsKKwlyZWcgPSBydGw4MTh4 X2lvcmVhZDgocHJpdiwgKHU4ICopMHhGRjYyKTsKKwlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICh1OCAqKTB4RkY2MiwgcmVnICYgfigxIDw8IDUpKTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkY2MiwgcmVnIHwgKDEg PDwgNSkpOworCisJcmVnID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2 LT5tYXAtPkNPTkZJRzMpOworCXJlZyAmPSB+UlRMODE4WF9DT05GSUczX0FO QVBBUkFNX1dSSVRFOworCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYt Pm1hcC0+Q09ORklHMywgcmVnKTsKKworCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBST01fQ01E X05PUk1BTCk7CisKKwlyZXMgPSBydGw4MTg3X2NtZF9yZXNldChkZXYpOwor CWlmIChyZXMpCisJCXJldHVybiByZXM7CisKKwlydGw4MTh4X2lvd3JpdGUx Nihwcml2LCAoX19sZTE2ICopMHhGRjJELCAweDBGRkYpOworCXJlZyA9IHJ0 bDgxOHhfaW9yZWFkOChwcml2LCAmcHJpdi0+bWFwLT5DV19DT05GKTsKKwly ZWcgfD0gUlRMODE4WF9DV19DT05GX1BFUlBBQ0tFVF9SRVRSWV9TSElGVDsK KwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNXX0NPTkYs IHJlZyk7CisJcmVnID0gcnRsODE4eF9pb3JlYWQ4KHByaXYsICZwcml2LT5t YXAtPlRYX0FHQ19DVEwpOworCXJlZyB8PSBSVEw4MThYX1RYX0FHQ19DVExf UEVSUEFDS0VUX0dBSU5fU0hJRlQgfAorCSAgICAgICBSVEw4MThYX1RYX0FH Q19DVExfUEVSUEFDS0VUX0FOVFNFTF9TSElGVDsKKwlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICZwcml2LT5tYXAtPlRYX0FHQ19DVEwsIHJlZyk7CisKKwly dGw4MTh4X2lvd3JpdGUxNl9pZHgocHJpdiwgKF9fbGUxNiAqKTB4RkZFMCwg MHgwRkZGLCAxKTsKKwlyZWcgPSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnBy aXYtPm1hcC0+UkFURV9GQUxMQkFDSyk7CisJcmVnIHw9IFJUTDgxOFhfUkFU RV9GQUxMQkFDS19FTkFCTEU7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAm cHJpdi0+bWFwLT5SQVRFX0ZBTExCQUNLLCByZWcpOworCisJcnRsODE4eF9p b3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+QkVBQ09OX0lOVEVSVkFMLCAx MDApOworCXJ0bDgxOHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPkFU SU1fV05ELCAyKTsKKwlydGw4MTh4X2lvd3JpdGUxNl9pZHgocHJpdiwgKF9f bGUxNiAqKTB4RkZENCwgMHhGRkZGLCAxKTsKKworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+RUVQUk9NX0NNRCwgUlRMODE4WF9FRVBS T01fQ01EX0NPTkZJRyk7CisJcmVnID0gcnRsODE4eF9pb3JlYWQ4KHByaXYs ICZwcml2LT5tYXAtPkNPTkZJRzEpOworCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgJnByaXYtPm1hcC0+Q09ORklHMSwgKHJlZyAmIDB4M0YpIHwgMHg4MCk7 CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBST01f Q01ELCBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKworCXJ0bDgxOHhf aW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+V1BBX0NPTkYsIDApOworCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJ0bDgxODdiX3JlZ190YWJsZSk7 IGkrKykgeworCQlydGw4MTh4X2lvd3JpdGU4X2lkeChwcml2LAorCQkJCSAg ICAgKHU4ICopKHVpbnRwdHJfdCkKKwkJCQkgICAgIChydGw4MTg3Yl9yZWdf dGFibGVbaV1bMF0gfCAweEZGMDApLAorCQkJCSAgICAgcnRsODE4N2JfcmVn X3RhYmxlW2ldWzFdLAorCQkJCSAgICAgcnRsODE4N2JfcmVnX3RhYmxlW2ld WzJdKTsKKwl9CisKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+ bWFwLT5USURfQUNfTUFQLCAweEZBNTApOworCXJ0bDgxOHhfaW93cml0ZTE2 KHByaXYsICZwcml2LT5tYXAtPklOVF9NSUcsIDApOworCisJcnRsODE4eF9p b3dyaXRlMzJfaWR4KHByaXYsIChfX2xlMzIgKikweEZGRjAsIDAsIDEpOwor CXJ0bDgxOHhfaW93cml0ZTMyX2lkeChwcml2LCAoX19sZTMyICopMHhGRkY0 LCAwLCAxKTsKKwlydGw4MTh4X2lvd3JpdGU4X2lkeChwcml2LCAodTggKikw eEZGRjgsIDAsIDEpOworCisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnBy aXYtPm1hcC0+UkZfVElNSU5HLCAweDAwMDA0MDAxKTsKKworCXJ0bDgxOHhf aW93cml0ZTE2X2lkeChwcml2LCAoX19sZTE2ICopMHhGRjcyLCAweDU2OUEs IDIpOworCisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5F RVBST01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfQ09ORklHKTsKKwlyZWcg PSBydGw4MTh4X2lvcmVhZDgocHJpdiwgJnByaXYtPm1hcC0+Q09ORklHMyk7 CisJcmVnIHw9IFJUTDgxOFhfQ09ORklHM19BTkFQQVJBTV9XUklURTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkNPTkZJRzMsIHJl Zyk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5FRVBS T01fQ01ELCBSVEw4MThYX0VFUFJPTV9DTURfTk9STUFMKTsKKworCXJ0bDgx OHhfaW93cml0ZTE2KHByaXYsICZwcml2LT5tYXAtPlJGUGluc091dHB1dCwg MHgwNDgwKTsKKwlydGw4MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFw LT5SRlBpbnNTZWxlY3QsIDB4MjQ4OCk7CisJcnRsODE4eF9pb3dyaXRlMTYo cHJpdiwgJnByaXYtPm1hcC0+UkZQaW5zRW5hYmxlLCAweDFGRkYpOworCW1z bGVlcCgxMTAwKTsKKworCXByaXYtPnJmLT5pbml0KGRldik7CisKKwlyZWcg PSBSVEw4MThYX0NNRF9UWF9FTkFCTEUgfCBSVEw4MThYX0NNRF9SWF9FTkFC TEU7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5DTUQs IHJlZyk7CisJcnRsODE4eF9pb3dyaXRlMTYocHJpdiwgJnByaXYtPm1hcC0+ SU5UX01BU0ssIDB4RkZGRik7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYs ICh1OCAqKTB4RkU0MSwgMHhGNCk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2 LCAodTggKikweEZFNDAsIDB4MDApOworCXJ0bDgxOHhfaW93cml0ZTgocHJp diwgKHU4ICopMHhGRTQyLCAweDAwKTsKKwlydGw4MTh4X2lvd3JpdGU4KHBy aXYsICh1OCAqKTB4RkU0MiwgMHgwMSk7CisJcnRsODE4eF9pb3dyaXRlOChw cml2LCAodTggKikweEZFNDAsIDB4MEYpOworCXJ0bDgxOHhfaW93cml0ZTgo cHJpdiwgKHU4ICopMHhGRTQyLCAweDAwKTsKKwlydGw4MTh4X2lvd3JpdGU4 KHByaXYsICh1OCAqKTB4RkU0MiwgMHgwMSk7CisKKwlyZWcgPSBydGw4MTh4 X2lvcmVhZDgocHJpdiwgKHU4ICopMHhGRkRCKTsKKwlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICh1OCAqKTB4RkZEQiwgcmVnIHwgKDEgPDwgMikpOworCXJ0 bDgxOHhfaW93cml0ZTE2X2lkeChwcml2LCAoX19sZTE2ICopMHhGRjcyLCAw eDU5RkEsIDMpOworCXJ0bDgxOHhfaW93cml0ZTE2X2lkeChwcml2LCAoX19s ZTE2ICopMHhGRjc0LCAweDU5RDIsIDMpOworCXJ0bDgxOHhfaW93cml0ZTE2 X2lkeChwcml2LCAoX19sZTE2ICopMHhGRjc2LCAweDU5RDIsIDMpOworCXJ0 bDgxOHhfaW93cml0ZTE2X2lkeChwcml2LCAoX19sZTE2ICopMHhGRjc4LCAw eDE5RkEsIDMpOworCXJ0bDgxOHhfaW93cml0ZTE2X2lkeChwcml2LCAoX19s ZTE2ICopMHhGRjdBLCAweDE5RkEsIDMpOworCXJ0bDgxOHhfaW93cml0ZTE2 X2lkeChwcml2LCAoX19sZTE2ICopMHhGRjdDLCAweDAwRDAsIDMpOworCXJ0 bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRjYxLCAwKTsKKwlydGw4 MTh4X2lvd3JpdGU4X2lkeChwcml2LCAodTggKikweEZGODAsIDB4MEYsIDEp OworCXJ0bDgxOHhfaW93cml0ZThfaWR4KHByaXYsICh1OCAqKTB4RkY4Mywg MHgwMywgMSk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZG REEsIDB4MTApOworCXJ0bDgxOHhfaW93cml0ZThfaWR4KHByaXYsICh1OCAq KTB4RkY0RCwgMHgwOCwgMik7CisKKwlydGw4MTh4X2lvd3JpdGUzMihwcml2 LCAmcHJpdi0+bWFwLT5IU1NJX1BBUkEsIDB4MDYwMDMyMUIpOworCisJcnRs ODE4eF9pb3dyaXRlMTZfaWR4KHByaXYsIChfX2xlMTYgKikweEZGRUMsIDB4 MDgwMCwgMSk7CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBydGw4 MTg3X3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldikKIHsKIAlzdHJ1 Y3QgcnRsODE4N19wcml2ICpwcml2ID0gZGV2LT5wcml2OwogCXUzMiByZWc7 CiAJaW50IHJldDsKIAotCXJldCA9IHJ0bDgxODdfaW5pdF9odyhkZXYpOwor CXJldCA9ICghcHJpdi0+aXNfcnRsODE4N2IpID8gcnRsODE4N19pbml0X2h3 KGRldikgOgorCQkJCSAgICAgcnRsODE4N2JfaW5pdF9odyhkZXYpOwogCWlm IChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlpZiAocHJpdi0+aXNfcnRsODE4 N2IpIHsKKwkJcmVnID0gUlRMODE4WF9SWF9DT05GX01HTVQgfAorCQkgICAg ICBSVEw4MThYX1JYX0NPTkZfREFUQSB8CisJCSAgICAgIFJUTDgxOFhfUlhf Q09ORl9CUk9BRENBU1QgfAorCQkgICAgICBSVEw4MThYX1JYX0NPTkZfTklD TUFDIHwKKwkJICAgICAgUlRMODE4WF9SWF9DT05GX0JTU0lEIHwKKwkJICAg ICAgKDcgPDwgMTMgLyogUlggRklGTyB0aHJlc2hvbGQgTk9ORSAqLykgfAor CQkgICAgICAoNyA8PCAxMCAvKiBNQVggUlggRE1BICovKSB8CisJCSAgICAg IFJUTDgxOFhfUlhfQ09ORl9SWF9BVVRPUkVTRVRQSFkgfAorCQkgICAgICBS VEw4MThYX1JYX0NPTkZfT05MWUVSTFBLVCB8CisJCSAgICAgIFJUTDgxOFhf UlhfQ09ORl9NVUxUSUNBU1Q7CisJCXByaXYtPnJ4X2NvbmYgPSByZWc7CisJ CXJ0bDgxOHhfaW93cml0ZTMyKHByaXYsICZwcml2LT5tYXAtPlJYX0NPTkYs IHJlZyk7CisKKwkJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1h cC0+VFhfQ09ORiwKKwkJCQkgIFJUTDgxOFhfVFhfQ09ORl9IV19TRVFOVU0g fAorCQkJCSAgUlRMODE4WF9UWF9DT05GX0RJU1JFUVFTSVpFIHwKKwkJCQkg ICg3IDw8IDggIC8qIHNob3J0IHJldHJ5IGxpbWl0ICovKSB8CisJCQkJICAo NyA8PCAwICAvKiBsb25nIHJldHJ5IGxpbWl0ICovKSB8CisJCQkJICAoNyA8 PCAyMSAvKiBNQVggVFggRE1BICovKSk7CisJCXJ0bDgxODdfaW5pdF91cmJz KGRldik7CisJCXJldHVybiAwOworCX0KKwogCXJ0bDgxOHhfaW93cml0ZTE2 KHByaXYsICZwcml2LT5tYXAtPklOVF9NQVNLLCAweEZGRkYpOwogCiAJcnRs ODE4eF9pb3dyaXRlMzIocHJpdiwgJnByaXYtPm1hcC0+TUFSWzBdLCB+MCk7 CkBAIC01ODIsMTggKzgzNiwyMCBAQCBzdGF0aWMgaW50IHJ0bDgxODdfY29u ZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldiwgc3RydWN0IGllZWU4MDIx MV9jb25mICpjb25mKQogCW1zbGVlcCgxMCk7CiAJcnRsODE4eF9pb3dyaXRl MzIocHJpdiwgJnByaXYtPm1hcC0+VFhfQ09ORiwgcmVnKTsKIAotCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+U0lGUywgMHgyMik7Ci0K LQlpZiAoY29uZi0+ZmxhZ3MgJiBJRUVFODAyMTFfQ09ORl9TSE9SVF9TTE9U X1RJTUUpIHsKLQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFw LT5TTE9ULCAweDkpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2 LT5tYXAtPkRJRlMsIDB4MTQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYs ICZwcml2LT5tYXAtPkVJRlMsIDkxIC0gMHgxNCk7Ci0JCXJ0bDgxOHhfaW93 cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+Q1dfVkFMLCAweDczKTsKLQl9IGVs c2UgewotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlNM T1QsIDB4MTQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPkRJRlMsIDB4MjQpOwotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZw cml2LT5tYXAtPkVJRlMsIDkxIC0gMHgyNCk7Ci0JCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+Q1dfVkFMLCAweGE1KTsKKwlpZiAoIXBy aXYtPmlzX3J0bDgxODdiKSB7CisJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwg JnByaXYtPm1hcC0+U0lGUywgMHgyMik7CisKKwkJaWYgKGNvbmYtPmZsYWdz ICYgSUVFRTgwMjExX0NPTkZfU0hPUlRfU0xPVF9USU1FKSB7CisJCQlydGw4 MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPlNMT1QsIDB4OSk7CisJ CQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkRJRlMsIDB4 MTQpOworCQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5F SUZTLCA5MSAtIDB4MTQpOworCQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAm cHJpdi0+bWFwLT5DV19WQUwsIDB4NzMpOworCQl9IGVsc2UgeworCQkJcnRs ODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5TTE9ULCAweDE0KTsK KwkJCXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+RElGUywg MHgyNCk7CisJCQlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAt PkVJRlMsIDkxIC0gMHgyNCk7CisJCQlydGw4MTh4X2lvd3JpdGU4KHByaXYs ICZwcml2LT5tYXAtPkNXX1ZBTCwgMHhhNSk7CisJCX0KIAl9CiAKIAlydGw4 MTh4X2lvd3JpdGUxNihwcml2LCAmcHJpdi0+bWFwLT5BVElNX1dORCwgMik7 CkBAIC02MDksMTQgKzg2NSwyMCBAQCBzdGF0aWMgaW50IHJ0bDgxODdfY29u ZmlnX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYsCiB7CiAJ c3RydWN0IHJ0bDgxODdfcHJpdiAqcHJpdiA9IGRldi0+cHJpdjsKIAlpbnQg aTsKKwl1OCByZWc7CiAKIAlmb3IgKGkgPSAwOyBpIDwgRVRIX0FMRU47IGkr KykKIAkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5CU1NJ RFtpXSwgY29uZi0+YnNzaWRbaV0pOwogCi0JaWYgKGlzX3ZhbGlkX2V0aGVy X2FkZHIoY29uZi0+YnNzaWQpKQotCQlydGw4MTh4X2lvd3JpdGU4KHByaXYs ICZwcml2LT5tYXAtPk1TUiwgUlRMODE4WF9NU1JfSU5GUkEpOwotCWVsc2UK LQkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5NU1IsIFJU TDgxOFhfTVNSX05PX0xJTkspOworCWlmIChpc192YWxpZF9ldGhlcl9hZGRy KGNvbmYtPmJzc2lkKSkgeworCQlyZWcgPSBSVEw4MThYX01TUl9JTkZSQTsK KwkJaWYgKHByaXYtPmlzX3J0bDgxODdiKQorCQkJcmVnIHw9IFJUTDgxOFhf TVNSX0VORURDQTsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+ bWFwLT5NU1IsIHJlZyk7CisJfSBlbHNlIHsKKwkJcmVnID0gUlRMODE4WF9N U1JfTk9fTElOSzsKKwkJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+ bWFwLT5NU1IsIHJlZyk7CisJfQogCiAJcmV0dXJuIDA7CiB9CkBAIC02OTUs NiArOTU3LDQ5IEBAIHN0YXRpYyB2b2lkIHJ0bDgxODdfZWVwcm9tX3JlZ2lz dGVyX3dyaXRlKHN0cnVjdCBlZXByb21fOTNjeDYgKmVlcHJvbSkKIAl1ZGVs YXkoMTApOwogfQogCitzdGF0aWMgc3RydWN0IHByb2NfZGlyX2VudHJ5ICpy dGw4MTg3X3Byb2MgPSBOVUxMOworCitzdGF0aWMgaW50IHJ0bDgxODdfZ2V0 X3JhZGlvX3N0YXR1cyhjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9mZl90 IG9mZnNldCwKKwkJCQkgICAgaW50IGNvdW50LCBpbnQgKmVvZiwgdm9pZCAq ZGF0YSkKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYgPSBkYXRhOwor CXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYgPSBkZXYtPnByaXY7CisJaW50 IHJlczsKKworCXJlcyA9IHNucHJpbnRmKHBhZ2UsIGNvdW50LCAiU2lnbmFs OiAldVxuUXVhbGl0eTogJXVcbk5vaXNlOiAldVxuIiwKKwkJICAgICAgIHBy aXYtPnNpZ25hbCwgcHJpdi0+cXVhbGl0eSwgcHJpdi0+bm9pc2UpOworCSpl b2YgPSAxOworCXJldHVybiByZXM7Cit9CisKK3N0YXRpYyB2b2lkIHJ0bDgx ODdfY3JlYXRlX3Byb2NfZW50cmllcyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpk ZXYpCit7CisJcnRsODE4N19wcm9jID0gY3JlYXRlX3Byb2NfZW50cnkoS0JV SUxEX01PRE5BTUUsIFNfSUZESVIsCisJCQkJCSBpbml0X25ldC5wcm9jX25l dCk7CisJaWYgKCFydGw4MTg3X3Byb2MpIHsKKwkJcHJpbnRrKEtFUk5fV0FS TklORyAicnRsODE4NzogY2Fubm90IGNyZWF0ZSBydGw4MTg3ICIKKwkJCQkg ICAgIi9wcm9jIGVudHJ5XG4iKTsKKwkJcmV0dXJuOworCX0KKworCWNyZWF0 ZV9wcm9jX3JlYWRfZW50cnkoInJhZGlvX3N0YXR1cyIsIFNfSUZSRUcgfCBT X0lSVUdPLAorCQkJCXJ0bDgxODdfcHJvYywgcnRsODE4N19nZXRfcmFkaW9f c3RhdHVzLAorCQkJCWRldik7CisJY3JlYXRlX3Byb2NfcmVhZF9lbnRyeSgi cmFkaW9fcmVnaXN0ZXJzIiwgU19JRlJFRyB8IFNfSVJVR08sCisJCQkJcnRs ODE4N19wcm9jLCBydGw4MTg3X2dldF9yYWRpb19yZWdpc3RlcnMsCisJCQkJ ZGV2KTsKK30KKworc3RhdGljIHZvaWQgcnRsODE4N19yZW1vdmVfcHJvY19l bnRyaWVzKHZvaWQpCit7CisJaWYgKCFydGw4MTg3X3Byb2MpCisJCXJldHVy bjsKKwlyZW1vdmVfcHJvY19lbnRyeSgicmFkaW9fcmVnaXN0ZXJzIiwgcnRs ODE4N19wcm9jKTsKKwlyZW1vdmVfcHJvY19lbnRyeSgicmFkaW9fc3RhdHVz IiwgcnRsODE4N19wcm9jKTsKKwlyZW1vdmVfcHJvY19lbnRyeShLQlVJTERf TU9ETkFNRSwgaW5pdF9uZXQucHJvY19uZXQpOworCXJ0bDgxODdfcHJvYyA9 IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgX19kZXZpbml0IHJ0bDgxODdfcHJv YmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJCQkJICAgY29uc3Qg c3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQogewpAQCAtNzAzLDYgKzEwMDgs NyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBydGw4MTg3X3Byb2JlKHN0cnVj dCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXN0cnVjdCBydGw4MTg3X3ByaXYg KnByaXY7CiAJc3RydWN0IGVlcHJvbV85M2N4NiBlZXByb207CiAJc3RydWN0 IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsOworCWNvbnN0IGNoYXIgKmNo aXBfbmFtZTsKIAl1MTYgdHhwd3IsIHJlZzsKIAlpbnQgZXJyLCBpOwogCURF Q0xBUkVfTUFDX0JVRihtYWMpOwpAQCAtNzE0LDYgKzEwMjAsOCBAQCBzdGF0 aWMgaW50IF9fZGV2aW5pdCBydGw4MTg3X3Byb2JlKHN0cnVjdCB1c2JfaW50 ZXJmYWNlICppbnRmLAogCX0KIAogCXByaXYgPSBkZXYtPnByaXY7CisJcHJp di0+aXNfcnRsODE4N2IgPSAoaWQtPmRyaXZlcl9pbmZvID09IERFVklDRV9S VEw4MTg3QikgfHwKKwkJCSAgICAhbWVtY21wKHVkZXYtPnByb2R1Y3QsICJS VEw4MTg3QiIsIDgpOwogCiAJU0VUX0lFRUU4MDIxMV9ERVYoZGV2LCAmaW50 Zi0+ZGV2KTsKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIGRldik7CkBAIC03 NDEsOCArMTA0OSwxMyBAQCBzdGF0aWMgaW50IF9fZGV2aW5pdCBydGw4MTg3 X3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLAogCXByaXYtPm1v ZGUgPSBJRUVFODAyMTFfSUZfVFlQRV9NTlRSOwogCWRldi0+ZmxhZ3MgPSBJ RUVFODAyMTFfSFdfSE9TVF9CUk9BRENBU1RfUFNfQlVGRkVSSU5HIHwKIAkJ ICAgICBJRUVFODAyMTFfSFdfUlhfSU5DTFVERVNfRkNTOwotCWRldi0+ZXh0 cmFfdHhfaGVhZHJvb20gPSBzaXplb2Yoc3RydWN0IHJ0bDgxODdfdHhfaGRy KTsKLQlkZXYtPnF1ZXVlcyA9IDE7CisJZGV2LT5leHRyYV90eF9oZWFkcm9v bSA9ICghcHJpdi0+aXNfcnRsODE4N2IpID8KKwkJCQkgIHNpemVvZihzdHJ1 Y3QgcnRsODE4N190eF9oZHIpIDoKKwkJCQkgIHNpemVvZihzdHJ1Y3QgcnRs ODE4N2JfdHhfaGRyKTsKKwlpZiAoIXByaXYtPmlzX3J0bDgxODdiKQorCQlk ZXYtPnF1ZXVlcyA9IDE7CisJZWxzZQorCQlkZXYtPnF1ZXVlcyA9IDQ7CiAJ ZGV2LT5tYXhfcnNzaSA9IDY1OwogCWRldi0+bWF4X3NpZ25hbCA9IDY0Owog CkBAIC03NzgsMTAgKzEwOTEsMjQgQEAgc3RhdGljIGludCBfX2RldmluaXQg cnRsODE4N19wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwKIAkJ KCpjaGFubmVsKyspLmh3X3ZhbHVlID0gdHhwd3IgJiAweEZGOwogCQkoKmNo YW5uZWwrKykuaHdfdmFsdWUgPSB0eHB3ciA+PiA4OwogCX0KLQlmb3IgKGkg PSAwOyBpIDwgMjsgaSsrKSB7Ci0JCWVlcHJvbV85M2N4Nl9yZWFkKCZlZXBy b20sIFJUTDgxODdfRUVQUk9NX1RYUFdSX0NIQU5fNiArIGksCisJaWYgKCFw cml2LT5pc19ydGw4MTg3YikgeworCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsr KSB7CisJCQllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLAorCQkJCQkgIFJU TDgxODdfRUVQUk9NX1RYUFdSX0NIQU5fNiArIGksCisJCQkJCSAgJnR4cHdy KTsKKwkJCSgqY2hhbm5lbCsrKS5od192YWx1ZSA9IHR4cHdyICYgMHhGRjsK KwkJCSgqY2hhbm5lbCsrKS5od192YWx1ZSA9IHR4cHdyID4+IDg7CisJCX0K Kwl9IGVsc2UgeworCQllZXByb21fOTNjeDZfcmVhZCgmZWVwcm9tLCBSVEw4 MTg3X0VFUFJPTV9UWFBXUl9DSEFOXzYsCiAJCQkJICAmdHhwd3IpOwogCQko KmNoYW5uZWwrKykuaHdfdmFsdWUgPSB0eHB3ciAmIDB4RkY7CisKKwkJZWVw cm9tXzkzY3g2X3JlYWQoJmVlcHJvbSwgMHgwQSwgJnR4cHdyKTsKKwkJKCpj aGFubmVsKyspLmh3X3ZhbHVlID0gdHhwd3IgJiAweEZGOworCisJCWVlcHJv bV85M2N4Nl9yZWFkKCZlZXByb20sIDB4MUMsICZ0eHB3cik7CisJCSgqY2hh bm5lbCsrKS5od192YWx1ZSA9IHR4cHdyICYgMHhGRjsKIAkJKCpjaGFubmVs KyspLmh3X3ZhbHVlID0gdHhwd3IgPj4gODsKIAl9CiAKQEAgLTc5Nyw2ICsx MTI0LDUwIEBAIHN0YXRpYyBpbnQgX19kZXZpbml0IHJ0bDgxODdfcHJvYmUo c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsCiAJcnRsODE4eF9pb3dyaXRl OChwcml2LCAmcHJpdi0+bWFwLT5QR1NFTEVDVCwgcmVnKTsKIAlydGw4MTh4 X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgx OFhfRUVQUk9NX0NNRF9OT1JNQUwpOwogCisJaWYgKCFwcml2LT5pc19ydGw4 MTg3YikgeworCQl1MzIgcmVnMzI7CisJCXJlZzMyID0gcnRsODE4eF9pb3Jl YWQzMihwcml2LCAmcHJpdi0+bWFwLT5UWF9DT05GKTsKKwkJcmVnMzIgJj0g UlRMODE4WF9UWF9DT05GX0hXVkVSX01BU0s7CisJCXN3aXRjaCAocmVnMzIp IHsKKwkJY2FzZSBSVEw4MThYX1RYX0NPTkZfUjgxODd2RF8xOgorCQljYXNl IFJUTDgxOFhfVFhfQ09ORl9SODE4N3ZEXzI6CisJCQljaGlwX25hbWUgPSAi UlRMODE4N3ZEIjsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJY2hpcF9u YW1lID0gIlJUTDgxODd2QiAoZGVmYXVsdCkiOworCQl9CisgICAgICAgfSBl bHNlIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAicnRsODE4NzogODE4N0Ig Y2hpcCBkZXRlY3RlZC4gU3VwcG9ydCAiCisJCQkiaXMgRVhQRVJJTUVOVEFM LCBhbmQgY291bGQgZGFtYWdlIHlvdXJcbiIKKwkJCSIgICAgICAgICBoYXJk d2FyZSwgdXNlIGF0IHlvdXIgb3duIHJpc2tcbiIpOworCQkvKiAKKwkJICog Rm9yY2UgVVNCIHJlcXVlc3QgdG8gd3JpdGUgcmFkaW8gcmVnaXN0ZXJzIGZv ciA4MTg3QiwgUmVhbHRlaworCQkgKiBvbmx5IHVzZXMgaXQgaW4gdGhlaXIg c291cmNlcworCQkgKi8KKwkJLyppZiAocHJpdi0+YXNpY19yZXYgPT0gMCkg eworCQkJcHJpbnRrKEtFUk5fV0FSTklORyAicnRsODE4NzogRm9yY2luZyB1 c2Ugb2YgVVNCICIKKwkJCSAgICAgICAicmVxdWVzdHMgdG8gd3JpdGUgdG8g cmFkaW8gcmVnaXN0ZXJzXG4iKTsKKwkJCXByaXYtPmFzaWNfcmV2ID0gMTsK KwkJfSovCisJCXN3aXRjaCAocnRsODE4eF9pb3JlYWQ4KHByaXYsICh1OCAq KTB4RkZFMSkpIHsKKwkJY2FzZSBSVEw4MThYX1I4MTg3Ql9COgorCQkJY2hp cF9uYW1lID0gIlJUTDgxODdCdkIiOworCQkJcHJpdi0+aHdfcmV2ID0gUlRM ODE4N0J2QjsKKwkJCWJyZWFrOworCQljYXNlIFJUTDgxOFhfUjgxODdCX0Q6 CisJCQljaGlwX25hbWUgPSAiUlRMODE4N0J2RCI7CisJCQlwcml2LT5od19y ZXYgPSBSVEw4MTg3QnZEOworCQkJYnJlYWs7CisJCWNhc2UgUlRMODE4WF9S ODE4N0JfRToKKwkJCWNoaXBfbmFtZSA9ICJSVEw4MTg3QnZFIjsKKwkJCXBy aXYtPmh3X3JldiA9IFJUTDgxODdCdkU7CisJCQlicmVhazsKKwkJZGVmYXVs dDoKKwkJCWNoaXBfbmFtZSA9ICJSVEw4MTg3QnZCIChkZWZhdWx0KSI7CisJ CQlwcml2LT5od19yZXYgPSBSVEw4MTg3QnZCOworCQl9CisJfQorCiAJcHJp di0+cmYgPSBydGw4MTg3X2RldGVjdF9yZihkZXYpOwogCiAJZXJyID0gaWVl ZTgwMjExX3JlZ2lzdGVyX2h3KGRldik7CkBAIC04MDUsOSArMTE3NiwxMSBA QCBzdGF0aWMgaW50IF9fZGV2aW5pdCBydGw4MTg3X3Byb2JlKHN0cnVjdCB1 c2JfaW50ZXJmYWNlICppbnRmLAogCQlnb3RvIGVycl9mcmVlX2RldjsKIAl9 CiAKLQlwcmludGsoS0VSTl9JTkZPICIlczogaHdhZGRyICVzLCBydGw4MTg3 IFYlZCArICVzXG4iLAorCXJ0bDgxODdfY3JlYXRlX3Byb2NfZW50cmllcyhk ZXYpOworCisJcHJpbnRrKEtFUk5fSU5GTyAiJXM6IGh3YWRkciAlcywgJXMg ViVkICsgJXNcbiIsCiAJICAgICAgIHdpcGh5X25hbWUoZGV2LT53aXBoeSks IHByaW50X21hYyhtYWMsIGRldi0+d2lwaHktPnBlcm1fYWRkciksCi0JICAg ICAgIHByaXYtPmFzaWNfcmV2LCBwcml2LT5yZi0+bmFtZSk7CisJICAgICAg IGNoaXBfbmFtZSwgcHJpdi0+YXNpY19yZXYsIHByaXYtPnJmLT5uYW1lKTsK IAogCXJldHVybiAwOwogCkBAIC04MjgsNiArMTIwMSw4IEBAIHN0YXRpYyB2 b2lkIF9fZGV2ZXhpdCBydGw4MTg3X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9p bnRlcmZhY2UgKmludGYpCiAKIAlpZWVlODAyMTFfdW5yZWdpc3Rlcl9odyhk ZXYpOwogCisJcnRsODE4N19yZW1vdmVfcHJvY19lbnRyaWVzKCk7CisKIAlw cml2ID0gZGV2LT5wcml2OwogCXVzYl9wdXRfZGV2KGludGVyZmFjZV90b191 c2JkZXYoaW50ZikpOwogCWllZWU4MDIxMV9mcmVlX2h3KGRldik7CmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X3J0bDgyMjUu YyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxODdfcnRsODIyNS5jCmlu ZGV4IDkxNDYzODcuLjA1N2JkZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL3J0bDgxODdfcnRsODIyNS5jCisrKyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL3J0bDgxODdfcnRsODIyNS5jCkBAIC00NzEsMTIgKzQ3MSw0 MiBAQCBzdGF0aWMgdm9pZCBydGw4MjI1X3JmX2luaXQoc3RydWN0IGllZWU4 MDIxMV9odyAqZGV2KQogCXJ0bDgyMjVfd3JpdGVfcGh5X2NjayhkZXYsIDB4 NDEsIHJ0bDgyMjVfdGhyZXNob2xkWzJdKTsKIH0KIAorc3RhdGljIGNvbnN0 IHU4IHJ0bDgyMjV6Ml9hZ2NbXSA9IHsKKwkweDVlLCAweDVlLCAweDVlLCAw eDVlLCAweDVkLCAweDViLCAweDU5LCAweDU3LCAweDU1LCAweDUzLCAweDUx LCAweDRmLAorCTB4NGQsIDB4NGIsIDB4NDksIDB4NDcsIDB4NDUsIDB4NDMs IDB4NDEsIDB4M2YsIDB4M2QsIDB4M2IsIDB4MzksIDB4MzcsCisJMHgzNSwg MHgzMywgMHgzMSwgMHgyZiwgMHgyZCwgMHgyYiwgMHgyOSwgMHgyNywgMHgy NSwgMHgyMywgMHgyMSwgMHgxZiwKKwkweDFkLCAweDFiLCAweDE5LCAweDE3 LCAweDE1LCAweDEzLCAweDExLCAweDBmLCAweDBkLCAweDBiLCAweDA5LCAw eDA3LAorCTB4MDUsIDB4MDMsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4 MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEsCisJMHgwMSwgMHgw MSwgMHgwMSwgMHgwMSwgMHgxOSwgMHgxOSwgMHgxOSwgMHgxOSwgMHgxOSwg MHgxOSwgMHgxOSwgMHgxOSwKKwkweDE5LCAweDIwLCAweDIxLCAweDIyLCAw eDIzLCAweDI0LCAweDI1LCAweDI2LCAweDI2LCAweDI3LCAweDI3LCAweDI4 LAorCTB4MjgsIDB4MjksIDB4MmEsIDB4MmEsIDB4MmEsIDB4MmIsIDB4MmIs IDB4MmIsIDB4MmMsIDB4MmMsIDB4MmMsIDB4MmQsCisJMHgyZCwgMHgyZCwg MHgyZCwgMHgyZSwgMHgyZSwgMHgyZSwgMHgyZSwgMHgyZiwgMHgyZiwgMHgy ZiwgMHgzMCwgMHgzMCwKKwkweDMxLCAweDMxLCAweDMxLCAweDMxLCAweDMx LCAweDMxLCAweDMxLCAweDMxLCAweDMxLCAweDMxLCAweDMxLCAweDMxLAor CTB4MzEsIDB4MzEsIDB4MzEsIDB4MzEsIDB4MzEsIDB4MzEsIDB4MzEsIDB4 MzEKK307CitzdGF0aWMgY29uc3QgdTggcnRsODIyNXoyX29mZG1bXSA9IHsK KwkweDEwLCAweDBkLCAweDAxLCAweDAwLCAweDE0LCAweGZiLCAweGZiLCAw eDYwLAorCTB4MDAsIDB4NjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4 MDAsIDB4MDAsCisJMHg0MCwgMHgwMCwgMHg0MCwgMHgwMCwgMHgwMCwgMHgw MCwgMHhhOCwgMHgyNiwKKwkweDMyLCAweDMzLCAweDA3LCAweGE1LCAweDZm LCAweDU1LCAweGM4LCAweGIzLAorCTB4MGEsIDB4ZTEsIDB4MkMsIDB4OGEs IDB4ODYsIDB4ODMsIDB4MzQsIDB4MGYsCisJMHg0ZiwgMHgyNCwgMHg2Ziwg MHhjMiwgMHg2YiwgMHg0MCwgMHg4MCwgMHgwMCwKKwkweGMwLCAweGMxLCAw eDU4LCAweGYxLCAweDAwLCAweGU0LCAweDkwLCAweDNlLAorCTB4NmQsIDB4 M2MsIDB4ZmIsIDB4MDcKK307CisKIHN0YXRpYyBjb25zdCB1OCBydGw4MjI1 ejJfdHhfcG93ZXJfY2NrX2NoMTRbXSA9IHsKLQkweDM2LCAweDM1LCAweDJl LCAweDFiLCAweDAwLCAweDAwLCAweDAwLCAweDAwCisJMHgzNiwgMHgzNSwg MHgyZSwgMHgxYiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKwkweDMwLCAw eDJmLCAweDI5LCAweDE1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCTB4 MzAsIDB4MmYsIDB4MjksIDB4MTUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs CisJMHgzMCwgMHgyZiwgMHgyOSwgMHgxNSwgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMAogfTsKIAogc3RhdGljIGNvbnN0IHU4IHJ0bDgyMjV6Ml90eF9wb3dl cl9jY2tbXSA9IHsKLQkweDM2LCAweDM1LCAweDJlLCAweDI1LCAweDFjLCAw eDEyLCAweDA5LCAweDA0CisJMHgzNiwgMHgzNSwgMHgyZSwgMHgyNSwgMHgx YywgMHgxMiwgMHgwOSwgMHgwNCwKKwkweDMwLCAweDJmLCAweDI5LCAweDIx LCAweDE5LCAweDEwLCAweDA4LCAweDAzLAorCTB4MmIsIDB4MmEsIDB4MjUs IDB4MWUsIDB4MTYsIDB4MGUsIDB4MDcsIDB4MDMsCisJMHgyNiwgMHgyNSwg MHgyMSwgMHgxYiwgMHgxNCwgMHgwZCwgMHgwNiwgMHgwMwogfTsKIAogc3Rh dGljIGNvbnN0IHU4IHJ0bDgyMjV6Ml90eF9wb3dlcl9vZmRtW10gPSB7CkBA IC01NDIsNiArNTcyLDg1IEBAIHN0YXRpYyB2b2lkIHJ0bDgyMjV6Ml9yZl9z ZXRfdHhfcG93ZXIoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2LCBpbnQgY2hh bm5lbCkKIAltc2xlZXAoMSk7CiB9CiAKK3N0YXRpYyB2b2lkIHJ0bDgyMjV6 Ml9iX3JmX3NldF90eF9wb3dlcihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpkZXYs IGludCBjaGFubmVsKQoreworCXN0cnVjdCBydGw4MTg3X3ByaXYgKnByaXYg PSBkZXYtPnByaXY7CisJdTggY2NrX3Bvd2VyLCBvZmRtX3Bvd2VyOworCWNv bnN0IHU4ICp0bXA7CisJaW50IGk7CisKKwljY2tfcG93ZXIgPSBwcml2LT5j aGFubmVsc1tjaGFubmVsIC0gMV0uaHdfdmFsdWUgJiAweEY7CisJb2ZkbV9w b3dlciA9IHByaXYtPmNoYW5uZWxzW2NoYW5uZWwgLSAxXS5od192YWx1ZSA+ PiA0OworCisJaWYgKGNja19wb3dlciA+IDE1KQorCQljY2tfcG93ZXIgPSAo cHJpdi0+aHdfcmV2ID09IFJUTDgxODdCdkIpID8gMTUgOiAyMjsKKwllbHNl CisJCWNja19wb3dlciArPSAocHJpdi0+aHdfcmV2ID09IFJUTDgxODdCdkIp ID8gMCA6IDc7CisJY2NrX3Bvd2VyICs9IHByaXYtPnR4cHdyX2Jhc2UgJiAw eEY7CisJY2NrX3Bvd2VyID0gbWluKGNja19wb3dlciwgKHU4KTM1KTsKKwor CWlmIChvZmRtX3Bvd2VyID4gMTUpCisJCW9mZG1fcG93ZXIgPSAocHJpdi0+ aHdfcmV2ID09IFJUTDgxODdCdkIpID8gMTcgOiAyNTsKKwllbHNlCisJCW9m ZG1fcG93ZXIgKz0gKHByaXYtPmh3X3JldiA9PSBSVEw4MTg3QnZCKSA/IDIg OiAxMDsKKwlvZmRtX3Bvd2VyICs9IChwcml2LT50eHB3cl9iYXNlID4+IDQp ICYgMHhGOworCW9mZG1fcG93ZXIgPSBtaW4ob2ZkbV9wb3dlciwgKHU4KTM1 KTsKKworCWlmIChjaGFubmVsID09IDE0KQorCQl0bXAgPSBydGw4MjI1ejJf dHhfcG93ZXJfY2NrX2NoMTQ7CisJZWxzZQorCQl0bXAgPSBydGw4MjI1ejJf dHhfcG93ZXJfY2NrOworCisJaWYgKHByaXYtPmh3X3JldiA9PSBSVEw4MTg3 QnZCKSB7CisJCWlmIChjY2tfcG93ZXIgPD0gNikKKwkJCTsgLyogZG8gbm90 aGluZyAqLworCQllbHNlIGlmIChjY2tfcG93ZXIgPD0gMTEpCisJCQl0bXAg Kz0gODsKKwkJZWxzZQorCQkJdG1wICs9IDE2OworCX0gZWxzZSB7CisJCWlm IChjY2tfcG93ZXIgPD0gNSkKKwkJCTsgLyogZG8gbm90aGluZyAqLworCQll bHNlIGlmIChjY2tfcG93ZXIgPD0gMTEpCisJCQl0bXAgKz0gODsKKwkJZWxz ZSBpZiAoY2NrX3Bvd2VyIDw9IDE3KQorCQkJdG1wICs9IDE2OworCQllbHNl CisJCQl0bXAgKz0gMjQ7CisJfQorCisJZm9yIChpID0gMDsgaSA8IDg7IGkr KykKKwkJcnRsODIyNV93cml0ZV9waHlfY2NrKGRldiwgMHg0NCArIGksICp0 bXArKyk7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5tYXAt PlRYX0dBSU5fQ0NLLAorCQkJIHJ0bDgyMjV6Ml90eF9nYWluX2Nja19vZmRt W2Nja19wb3dlcl0pOworCW1zbGVlcCgxKTsKKworCXJ0bDgxOHhfaW93cml0 ZTgocHJpdiwgJnByaXYtPm1hcC0+VFhfR0FJTl9PRkRNLAorCQkJIHJ0bDgy MjV6Ml90eF9nYWluX2Nja19vZmRtW29mZG1fcG93ZXJdIDw8IDEpOworCWlm IChwcml2LT5od19yZXYgPT0gUlRMODE4N0J2QikgeworCQlpZiAob2ZkbV9w b3dlciA8PSAxMSkgeworCQkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYs IDB4ODcsIDB4NjApOworCQkJcnRsODIyNV93cml0ZV9waHlfb2ZkbShkZXYs IDB4ODksIDB4NjApOworCQl9IGVsc2UgeworCQkJcnRsODIyNV93cml0ZV9w aHlfb2ZkbShkZXYsIDB4ODcsIDB4NWMpOworCQkJcnRsODIyNV93cml0ZV9w aHlfb2ZkbShkZXYsIDB4ODksIDB4NWMpOworCQl9CisJfSBlbHNlIHsKKwkJ aWYgKG9mZG1fcG93ZXIgPD0gMTEpIHsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5 X29mZG0oZGV2LCAweDg3LCAweDVjKTsKKwkJCXJ0bDgyMjVfd3JpdGVfcGh5 X29mZG0oZGV2LCAweDg5LCAweDVjKTsKKwkJfSBlbHNlIGlmIChvZmRtX3Bv d2VyIDw9IDE3KSB7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwg MHg4NywgMHg1NCk7CisJCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwg MHg4OSwgMHg1NCk7CisJCX0gZWxzZSB7CisJCQlydGw4MjI1X3dyaXRlX3Bo eV9vZmRtKGRldiwgMHg4NywgMHg1MCk7CisJCQlydGw4MjI1X3dyaXRlX3Bo eV9vZmRtKGRldiwgMHg4OSwgMHg1MCk7CisJCX0KKwl9CisJbXNsZWVwKDEp OworfQorCiBzdGF0aWMgY29uc3QgdTE2IHJ0bDgyMjV6Ml9yeGdhaW5bXSA9 IHsKIAkweDA0MDAsIDB4MDQwMSwgMHgwNDAyLCAweDA0MDMsIDB4MDQwNCwg MHgwNDA1LCAweDA0MDgsIDB4MDQwOSwKIAkweDA0MGEsIDB4MDQwYiwgMHgw NTAyLCAweDA1MDMsIDB4MDUwNCwgMHgwNTA1LCAweDA1NDAsIDB4MDU0MSwK QEAgLTcxNSw2ICs4MjQsODEgQEAgc3RhdGljIHZvaWQgcnRsODIyNXoyX3Jm X2luaXQoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQogCXJ0bDgxOHhfaW93 cml0ZTMyKHByaXYsIChfX2xlMzIgKikweEZGOTQsIDB4M2RjMDAwMDIpOwog fQogCitzdGF0aWMgdm9pZCBydGw4MjI1ejJfYl9yZl9pbml0KHN0cnVjdCBp ZWVlODAyMTFfaHcgKmRldikKK3sKKwlzdHJ1Y3QgcnRsODE4N19wcml2ICpw cml2ID0gZGV2LT5wcml2OworCWludCBpOworCisJcnRsODIyNV93cml0ZShk ZXYsIDB4MCwgMHgwQjcpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4MSwgMHhFRTApOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4MiwgMHg0NEQpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4MywgMHg0NDEpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4NCwgMHg4QzMpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4NSwgMHhDNzIpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4NiwgMHgwRTYpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4NywgMHg4MkEpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4OCwgMHgwM0YpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4OSwgMHgzMzUpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4YSwgMHg5RDQpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4YiwgMHg3QkIpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4YywgMHg4NTApOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4ZCwgMHhDREYpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4ZSwgMHgwMkIpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShk ZXYsIDB4ZiwgMHgxMTQpOyBtc2xlZXAoMSk7CisKKwlydGw4MjI1X3dyaXRl KGRldiwgMHgwLCAweDFCNyk7IG1zbGVlcCgxKTsKKworCWZvciAoaSA9IDA7 IGkgPCBBUlJBWV9TSVpFKHJ0bDgyMjV6Ml9yeGdhaW4pOyBpKyspIHsKKwkJ cnRsODIyNV93cml0ZShkZXYsIDB4MSwgaSArIDEpOyBtc2xlZXAoMSk7CisJ CXJ0bDgyMjVfd3JpdGUoZGV2LCAweDIsIHJ0bDgyMjV6Ml9yeGdhaW5baV0p OyBtc2xlZXAoMSk7CisJfQorCisJcnRsODIyNV93cml0ZShkZXYsIDB4Mywg MHgwODApOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4NSwg MHgwMDQpOyBtc2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MCwg MHgwQjcpOyBtc2xlZXAoMSk7CisJbXNsZWVwKDMwMDApOworCisJcnRsODIy NV93cml0ZShkZXYsIDB4MiwgMHhDNEQpOyBtc2xlZXAoMSk7CisJbXNsZWVw KDIwMDApOworCisJcnRsODIyNV93cml0ZShkZXYsIDB4MiwgMHg0NEQpOyBt c2xlZXAoMSk7CisJcnRsODIyNV93cml0ZShkZXYsIDB4MCwgMHgyQkYpOyBt c2xlZXAoMSk7CisKKwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICZwcml2LT5t YXAtPlRYX0dBSU5fQ0NLLCAweDAzKTsKKwlydGw4MTh4X2lvd3JpdGU4KHBy aXYsICZwcml2LT5tYXAtPlRYX0dBSU5fT0ZETSwgMHgwNyk7CisJcnRsODE4 eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5UWF9BTlRFTk5BLCAweDAz KTsKKworCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweDgwLCAweDEy KTsKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShydGw4MjI1ejJfYWdj KTsgaSsrKSB7CisJCXJ0bDgyMjVfd3JpdGVfcGh5X29mZG0oZGV2LCAweEYs IHJ0bDgyMjV6Ml9hZ2NbaV0pOworCQlydGw4MjI1X3dyaXRlX3BoeV9vZmRt KGRldiwgMHhFLCAweDgwICsgaSk7CisJCXJ0bDgyMjVfd3JpdGVfcGh5X29m ZG0oZGV2LCAweEUsIDApOworCX0KKwlydGw4MjI1X3dyaXRlX3BoeV9vZmRt KGRldiwgMHg4MCwgMHgxMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlf U0laRShydGw4MjI1ejJfb2ZkbSk7IGkrKykKKwkJcnRsODIyNV93cml0ZV9w aHlfb2ZkbShkZXYsIGksIHJ0bDgyMjV6Ml9vZmRtW2ldKTsKKworCXJ0bDgx OHhfaW93cml0ZTgocHJpdiwgJnByaXYtPm1hcC0+U0lGUywgMHgyMik7CisJ cnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJpdi0+bWFwLT5TTE9ULCA5KTsK KwlydGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkZGMCwgMjgpOwor CXJ0bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRkY0LCAyOCk7CisJ cnRsODE4eF9pb3dyaXRlOChwcml2LCAodTggKikweEZGRjgsIDI4KTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkZGQywgMjgpOworCXJ0 bDgxOHhfaW93cml0ZTgocHJpdiwgKHU4ICopMHhGRjJELCAweDVCKTsKKwly dGw4MTh4X2lvd3JpdGU4KHByaXYsICh1OCAqKTB4RkY3OSwgMHg1Qik7CisJ cnRsODE4eF9pb3dyaXRlMzIocHJpdiwgKF9fbGUzMiAqKTB4RkZGMCwgKDcg PDwgMTIpIHwgKDMgPDwgOCkgfCAyOCk7CisJcnRsODE4eF9pb3dyaXRlMzIo cHJpdiwgKF9fbGUzMiAqKTB4RkZGNCwgKDcgPDwgMTIpIHwgKDMgPDwgOCkg fCAyOCk7CisJcnRsODE4eF9pb3dyaXRlMzIocHJpdiwgKF9fbGUzMiAqKTB4 RkZGOCwgKDcgPDwgMTIpIHwgKDMgPDwgOCkgfCAyOCk7CisJcnRsODE4eF9p b3dyaXRlMzIocHJpdiwgKF9fbGUzMiAqKTB4RkZGQywgKDcgPDwgMTIpIHwg KDMgPDwgOCkgfCAyOCk7CisJcnRsODE4eF9pb3dyaXRlOChwcml2LCAmcHJp di0+bWFwLT5BQ01fQ09OVFJPTCwgMCk7CisKKwlydGw4MjI1X3dyaXRlX3Bo eV9vZmRtKGRldiwgMHg5NywgMHg0Nik7IG1zbGVlcCgxKTsKKwlydGw4MjI1 X3dyaXRlX3BoeV9vZmRtKGRldiwgMHhhNCwgMHhiNik7IG1zbGVlcCgxKTsK KwlydGw4MjI1X3dyaXRlX3BoeV9vZmRtKGRldiwgMHg4NSwgMHhmYyk7IG1z bGVlcCgxKTsKKwlydGw4MjI1X3dyaXRlX3BoeV9jY2soZGV2LCAweGMxLCAw eDg4KTsgbXNsZWVwKDEpOworfQorCiBzdGF0aWMgdm9pZCBydGw4MjI1X3Jm X3N0b3Aoc3RydWN0IGllZWU4MDIxMV9odyAqZGV2KQogewogCXU4IHJlZzsK QEAgLTczMSw2ICs5MTUsMjggQEAgc3RhdGljIHZvaWQgcnRsODIyNV9yZl9z dG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmRldikKIAlydGw4MTh4X2lvd3Jp dGU4KHByaXYsICZwcml2LT5tYXAtPkVFUFJPTV9DTUQsIFJUTDgxOFhfRUVQ Uk9NX0NNRF9OT1JNQUwpOwogfQogCitpbnQgcnRsODE4N19nZXRfcmFkaW9f cmVnaXN0ZXJzKGNoYXIgKnBhZ2UsIGNoYXIgKipzdGFydCwgb2ZmX3Qgb2Zm c2V0LAorCQkJCWludCBjb3VudCwgaW50ICplb2YsIHZvaWQgKmRhdGEpCit7 CisJc3RydWN0IGllZWU4MDIxMV9odyAqZGV2ID0gZGF0YTsKKwlzdGF0aWMg dW5zaWduZWQgaW50IHJlZ19wb3M7CisJaW50IGxlbiA9IDA7CisKKwl3aGls ZSAocmVnX3BvcyA8PSAweEZGKSB7CisJCWlmIChsZW4gKyAxMSA+IGNvdW50 KQorCQkJYnJlYWs7CisJCWxlbiArPSBzbnByaW50ZihwYWdlICsgb2Zmc2V0 ICsgbGVuLCBjb3VudCAtIGxlbiwKKwkJCQkiMHglMDJ4OiAlMDR4XG4iLCBy ZWdfcG9zLAorCQkJCXJ0bDgyMjVfcmVhZChkZXYsICh1OClyZWdfcG9zKSk7 CisJCXJlZ19wb3MrKzsKKwl9CisJaWYgKHJlZ19wb3MgPiAweEZGKSB7CisJ CXJlZ19wb3MgPSAwOworCQkqZW9mID0gMTsKKwl9CisJcmV0dXJuIGxlbjsK K30KKwogc3RhdGljIHZvaWQgcnRsODIyNV9yZl9zZXRfY2hhbm5lbChzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpkZXYsCiAJCQkJICAgc3RydWN0IGllZWU4MDIx MV9jb25mICpjb25mKQogewpAQCAtNzM5LDggKzk0NSwxMCBAQCBzdGF0aWMg dm9pZCBydGw4MjI1X3JmX3NldF9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFf aHcgKmRldiwKIAogCWlmIChwcml2LT5yZi0+aW5pdCA9PSBydGw4MjI1X3Jm X2luaXQpCiAJCXJ0bDgyMjVfcmZfc2V0X3R4X3Bvd2VyKGRldiwgY2hhbik7 Ci0JZWxzZQorCWVsc2UgaWYgKHByaXYtPnJmLT5pbml0ID09IHJ0bDgyMjV6 Ml9yZl9pbml0KQogCQlydGw4MjI1ejJfcmZfc2V0X3R4X3Bvd2VyKGRldiwg Y2hhbik7CisJZWxzZQorCQlydGw4MjI1ejJfYl9yZl9zZXRfdHhfcG93ZXIo ZGV2LCBjaGFuKTsKIAogCXJ0bDgyMjVfd3JpdGUoZGV2LCAweDcsIHJ0bDgy MjVfY2hhbltjaGFuIC0gMV0pOwogCW1zbGVlcCgxMCk7CkBAIC03NjAsMTkg Kzk2OCwzMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZfb3Bz IHJ0bDgyMjV6Ml9vcHMgPSB7CiAJLnNldF9jaGFuCT0gcnRsODIyNV9yZl9z ZXRfY2hhbm5lbAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MTh4 X3JmX29wcyBydGw4MjI1ejJfYl9vcHMgPSB7CisJLm5hbWUJCT0gInJ0bDgy MjV6MiIsCisJLmluaXQJCT0gcnRsODIyNXoyX2JfcmZfaW5pdCwKKwkuc3Rv cAkJPSBydGw4MjI1X3JmX3N0b3AsCisJLnNldF9jaGFuCT0gcnRsODIyNV9y Zl9zZXRfY2hhbm5lbAorfTsKKwogY29uc3Qgc3RydWN0IHJ0bDgxOHhfcmZf b3BzICogcnRsODE4N19kZXRlY3RfcmYoc3RydWN0IGllZWU4MDIxMV9odyAq ZGV2KQogewogCXUxNiByZWc4LCByZWc5OworCXN0cnVjdCBydGw4MTg3X3By aXYgKnByaXYgPSBkZXYtPnByaXY7CiAKLQlydGw4MjI1X3dyaXRlKGRldiwg MCwgMHgxQjcpOworCWlmICghcHJpdi0+aXNfcnRsODE4N2IpIHsKKwkJcnRs ODIyNV93cml0ZShkZXYsIDAsIDB4MUI3KTsKIAotCXJlZzggPSBydGw4MjI1 X3JlYWQoZGV2LCA4KTsKLQlyZWc5ID0gcnRsODIyNV9yZWFkKGRldiwgOSk7 CisJCXJlZzggPSBydGw4MjI1X3JlYWQoZGV2LCA4KTsKKwkJcmVnOSA9IHJ0 bDgyMjVfcmVhZChkZXYsIDkpOwogCi0JcnRsODIyNV93cml0ZShkZXYsIDAs IDB4MEI3KTsKKwkJcnRsODIyNV93cml0ZShkZXYsIDAsIDB4MEI3KTsKIAot CWlmIChyZWc4ICE9IDB4NTg4IHx8IHJlZzkgIT0gMHg3MDApCi0JCXJldHVy biAmcnRsODIyNV9vcHM7CisJCWlmIChyZWc4ICE9IDB4NTg4IHx8IHJlZzkg IT0gMHg3MDApCisJCQlyZXR1cm4gJnJ0bDgyMjVfb3BzOwogCi0JcmV0dXJu ICZydGw4MjI1ejJfb3BzOworCQlyZXR1cm4gJnJ0bDgyMjV6Ml9vcHM7CisJ fSBlbHNlCisJCXJldHVybiAmcnRsODIyNXoyX2Jfb3BzOwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4N19ydGw4MjI1Lmgg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTg3X3J0bDgyMjUuaAppbmRl eCBkMzllZDAyLi5kODc0Mzc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9ydGw4MTg3X3J0bDgyMjUuaAorKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9ydGw4MTg3X3J0bDgyMjUuaApAQCAtMzQsNCArMzQsNyBAQCBz dGF0aWMgaW5saW5lIHZvaWQgcnRsODIyNV93cml0ZV9waHlfY2NrKHN0cnVj dCBpZWVlODAyMTFfaHcgKmRldiwKIAlydGw4MTg3X3dyaXRlX3BoeShkZXYs IGFkZHIsIGRhdGEgfCAweDEwMDAwKTsKIH0KIAoraW50IHJ0bDgxODdfZ2V0 X3JhZGlvX3JlZ2lzdGVycyhjaGFyICpwYWdlLCBjaGFyICoqc3RhcnQsIG9m Zl90IG9mZnNldCwKKwkJCQlpbnQgY291bnQsIGludCAqZW9mLCB2b2lkICpk YXRhKTsKKwogI2VuZGlmIC8qIFJUTDgxODdfUlRMODIyNV9IICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4LmggYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9ydGw4MTh4LmgKaW5kZXggNGY3ZDM4Zi4uZTQ5 N2ZlYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsODE4 eC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bDgxOHguaApAQCAt NjYsNyArNjYsMTAgQEAgc3RydWN0IHJ0bDgxOHhfY3NyIHsKICNkZWZpbmUg UlRMODE4WF9UWF9DT05GX1I4MTgwX0YJCSgzIDw8IDI1KQogI2RlZmluZSBS VEw4MThYX1RYX0NPTkZfUjgxODVfQUJDCSg0IDw8IDI1KQogI2RlZmluZSBS VEw4MThYX1RYX0NPTkZfUjgxODVfRAkJKDUgPDwgMjUpCisjZGVmaW5lIFJU TDgxOFhfVFhfQ09ORl9SODE4N3ZEXzEJKDUgPDwgMjUpCisjZGVmaW5lIFJU TDgxOFhfVFhfQ09ORl9SODE4N3ZEXzIJKDYgPDwgMjUpCiAjZGVmaW5lIFJU TDgxOFhfVFhfQ09ORl9IV1ZFUl9NQVNLCSg3IDw8IDI1KQorI2RlZmluZSBS VEw4MThYX1RYX0NPTkZfRElTUkVRUVNJWkUJKDEgPDwgMjgpCiAjZGVmaW5l IFJUTDgxOFhfVFhfQ09ORl9QUk9CRV9EVFMJKDEgPDwgMjkpCiAjZGVmaW5l IFJUTDgxOFhfVFhfQ09ORl9IV19TRVFOVU0JKDEgPDwgMzApCiAjZGVmaW5l IFJUTDgxOFhfVFhfQ09ORl9DV19NSU4JCSgxIDw8IDMxKQpAQCAtMTA2LDgg KzEwOSwxMSBAQCBzdHJ1Y3QgcnRsODE4eF9jc3IgewogI2RlZmluZSBSVEw4 MThYX01TUl9OT19MSU5LCQkoMCA8PCAyKQogI2RlZmluZSBSVEw4MThYX01T Ul9BREhPQwkJKDEgPDwgMikKICNkZWZpbmUgUlRMODE4WF9NU1JfSU5GUkEJ CSgyIDw8IDIpCisjZGVmaW5lIFJUTDgxOFhfTVNSX01BU1RFUgkJKDMgPDwg MikKKyNkZWZpbmUgUlRMODE4WF9NU1JfRU5FRENBCQkoNCA8PCAyKQogCXU4 CUNPTkZJRzM7CiAjZGVmaW5lIFJUTDgxOFhfQ09ORklHM19BTkFQQVJBTV9X UklURQkoMSA8PCA2KQorI2RlZmluZSBSVEw4MThYX0NPTkZJRzNfR05UX1NF TEVDVAkoMSA8PCA3KQogCXU4CUNPTkZJRzQ7CiAjZGVmaW5lIFJUTDgxOFhf Q09ORklHNF9QT1dFUk9GRgkoMSA8PCA2KQogI2RlZmluZSBSVEw4MThYX0NP TkZJRzRfVkNPT0ZGCQkoMSA8PCA3KQpAQCAtMTMzLDcgKzEzOSw5IEBAIHN0 cnVjdCBydGw4MTh4X2NzciB7CiAJX19sZTMyCVJGX1RJTUlORzsKIAl1OAlH UF9FTkFCTEU7CiAJdTgJR1BJTzsKLQl1OAlyZXNlcnZlZF8xMlsxMF07CisJ dTgJcmVzZXJ2ZWRfMTJbMl07CisJX19sZTMyCUhTU0lfUEFSQTsKKwl1OAly ZXNlcnZlZF8xM1s0XTsKIAl1OAlUWF9BR0NfQ1RMOwogI2RlZmluZSBSVEw4 MThYX1RYX0FHQ19DVExfUEVSUEFDS0VUX0dBSU5fU0hJRlQJCSgxIDw8IDAp CiAjZGVmaW5lIFJUTDgxOFhfVFhfQUdDX0NUTF9QRVJQQUNLRVRfQU5UU0VM X1NISUZUCSgxIDw8IDEpCkBAIC0xNDEsMjkgKzE0OSwzOCBAQCBzdHJ1Y3Qg cnRsODE4eF9jc3IgewogCXU4CVRYX0dBSU5fQ0NLOwogCXU4CVRYX0dBSU5f T0ZETTsKIAl1OAlUWF9BTlRFTk5BOwotCXU4CXJlc2VydmVkXzEzWzE2XTsK Kwl1OAlyZXNlcnZlZF8xNFsxNl07CiAJdTgJV1BBX0NPTkY7Ci0JdTgJcmVz ZXJ2ZWRfMTRbM107CisJdTgJcmVzZXJ2ZWRfMTVbM107CiAJdTgJU0lGUzsK IAl1OAlESUZTOwogCXU4CVNMT1Q7Ci0JdTgJcmVzZXJ2ZWRfMTVbNV07CisJ dTgJcmVzZXJ2ZWRfMTZbNV07CiAJdTgJQ1dfQ09ORjsKICNkZWZpbmUgUlRM ODE4WF9DV19DT05GX1BFUlBBQ0tFVF9DV19TSElGVAkoMSA8PCAwKQogI2Rl ZmluZSBSVEw4MThYX0NXX0NPTkZfUEVSUEFDS0VUX1JFVFJZX1NISUZUCSgx IDw8IDEpCiAJdTgJQ1dfVkFMOwogCXU4CVJBVEVfRkFMTEJBQ0s7Ci0JdTgJ cmVzZXJ2ZWRfMTZbMjVdOworI2RlZmluZSBSVEw4MThYX1JBVEVfRkFMTEJB Q0tfRU5BQkxFCSgxIDw8IDcpCisJdTgJQUNNX0NPTlRST0w7CisJdTgJcmVz ZXJ2ZWRfMTdbMjRdOwogCXU4CUNPTkZJRzU7CiAJdTgJVFhfRE1BX1BPTExJ Tkc7Ci0JdTgJcmVzZXJ2ZWRfMTdbMl07CisJdTgJcmVzZXJ2ZWRfMThbMl07 CiAJX19sZTE2CUNXUjsKIAl1OAlSRVRSWV9DVFI7Ci0JdTgJcmVzZXJ2ZWRf MThbNV07CisJdTgJcmVzZXJ2ZWRfMTlbM107CisJX19sZTE2CUlOVF9NSUc7 CisjZGVmaW5lIFJUTDgxOFhfUjgxODdCX0IJMAorI2RlZmluZSBSVEw4MThY X1I4MTg3Ql9ECTEKKyNkZWZpbmUgUlRMODE4WF9SODE4N0JfRQkyCiAJX19s ZTMyCVJEU0FSOwotCXU4CXJlc2VydmVkXzE5WzEyXTsKLQlfX2xlMTYJRkVN UjsKKwlfX2xlMTYJVElEX0FDX01BUDsKIAl1OAlyZXNlcnZlZF8yMFs0XTsK Kwl1OAlBTkFQQVJBTTM7CisJdTgJcmVzZXJ2ZWRfMjFbNV07CisJX19sZTE2 CUZFTVI7CisJdTgJcmVzZXJ2ZWRfMjJbNF07CiAJX19sZTE2CVRBTExZX0NO VDsKIAl1OAlUQUxMWV9TRUw7CiB9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkp Owo= --0-2012329936-1210664265=:28300--