Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3537391rdg; Tue, 17 Oct 2023 19:58:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEOu03tW6vU5TYsU2q62vkvrNk50sWy4ybW8ONL3ZUOdRXenJX7hHNZttOw69hWjPaiNQ1P X-Received: by 2002:a17:90b:4cce:b0:27c:eb7f:cd00 with SMTP id nd14-20020a17090b4cce00b0027ceb7fcd00mr3689776pjb.22.1697597914592; Tue, 17 Oct 2023 19:58:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697597914; cv=none; d=google.com; s=arc-20160816; b=UoXR51UeLXYswy/ALeJ/mNZ+Z/9q0Z7TviTZMqIUHeGVqAABsNxlIblpGWV1i2f+EZ Ufyr7mmjN/nmDpti93GvTYtpSpU34Sj1xfOtI01wpHyMitmluYnc3aXiXnJ8vnOn0+Jt GRSaL5EP6qYhhJgnDKf6BOQ3HxAkRkl7v/8OH4haKfmvwgr7CU5QGo2GXcPz62aMg+TG TsNPs/OzqB412xvv1bchGErloYKogh7A68tU/d0Rh13jxEKYjND+TtLjthShfNV3Uj5G RYcf10h2eyWvjZ9oN+8sVIvO1Gko2d+qYKbPlp05uli2PgMm53aGFBEJKy1PHPxESMQK PTuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:message-id:date:thread-index :thread-topic:subject:to:from; bh=lEkKUvM87935dc8c85gg10XYdxCyXeUx6bumzlB1+KY=; fh=QzGwkDxEGlT9SnEN84K7CeqZU/unHPYZhjU4hB32obI=; b=UNFocwfDR84BWCCTXhoR64X1/U943Yf6q7aYdTx9XNDSFwExZcqDRAhcNAFZd6himL ECgAsIrPkw6n4WbcKI1rKD6BEdUg2Om69LDJZyaWA4TkrtT40nxmcJjAWQ1aoHXr4H8r 8/stkLsXy2jOJA9zmr3+dor9x9tx1h7tnB3lJoNsIk9FFlYYfai66D4/5xxPbAYliHsY SpeeVRgir7BeSRlYaugpBI8XQndXklcR+mEs+9Hye9XypF7Q7nFXc1uzJHFlKRruXhyO m/jqXS8rlxNR0xfDV0kq957TJbc0PJ6mrQ681Sg1BnmftZl1mQbgbJkTwyoCGcHAysAo aPVQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [2620:137:e000::3:8]) by mx.google.com with ESMTPS id md20-20020a17090b23d400b002745c4e215fsi497646pjb.175.2023.10.17.19.58.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Oct 2023 19:58:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) client-ip=2620:137:e000::3:8; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:8 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by fry.vger.email (Postfix) with ESMTP id 3DEE580BA658; Tue, 17 Oct 2023 19:58:28 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229497AbjJRC5x (ORCPT + 99 others); Tue, 17 Oct 2023 22:57:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59778 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229492AbjJRC5u (ORCPT ); Tue, 17 Oct 2023 22:57:50 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60DA7C4; Tue, 17 Oct 2023 19:57:44 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39I2uYV51918142, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.93/5.92) with ESMTPS id 39I2uYV51918142 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Oct 2023 10:56:35 +0800 Received: from RTEXMBS02.realtek.com.tw (172.21.6.95) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Wed, 18 Oct 2023 10:56:34 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXMBS02.realtek.com.tw (172.21.6.95) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Wed, 18 Oct 2023 10:56:33 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b]) by RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b%5]) with mapi id 15.01.2375.007; Wed, 18 Oct 2023 10:56:33 +0800 From: Ricky WU To: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "ulf.hansson@linaro.org" , Ricky WU , "frank.li@vivo.com" , "yangyingliang@huawei.com" , "yangyingliang@huawei.com" , "linux-kernel@vger.kernel.org" , "linux-mmc@vger.kernel.org" Subject: [PATCH] misc: rtsx: add to support new card reader rts5264 Thread-Topic: [PATCH] misc: rtsx: add to support new card reader rts5264 Thread-Index: AQHaAW4of9sLLd7qX0uN/wLVtPiQSQ== Date: Wed, 18 Oct 2023 02:56:33 +0000 Message-ID: Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.102] x-kse-serverinfo: RTEXMBS02.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-0.8 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (fry.vger.email [0.0.0.0]); Tue, 17 Oct 2023 19:58:28 -0700 (PDT) SW4gb3JkZXIgdG8gc3VwcG9ydCBuZXcgY2hpcCBydHM1MjY0LCB0aGUgZGVmaW5pdGlvbnMgb2Yg c29tZSBpbnRlcm5hbA0KcmVnaXN0ZXJzIGFuZCB3b3JrZmxvdyBoYXZlIHRvIGJlIG1vZGlmaWVk Lg0KQWRkZWQgcnRzNTI2NC5jIHJ0czUyNjQuaCBmb3IgaW5kZXBlbmRlbnQgZnVuY3Rpb25zIG9m IHRoZSBuZXcgY2hpcCBydHM1MjY0DQoNClNpZ25lZC1vZmYtYnk6IFJpY2t5IFd1IDxyaWNreV93 dUByZWFsdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01ha2VmaWxlICAg fCAgIDIgKy0NCiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMgIHwgODg4ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrDQogZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2 NC5oICB8IDI3OCArKysrKysrKysNCiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5j IHwgIDMwICstDQogZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuaCB8ICAgMSArDQog ZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jICB8ICAxNyArLQ0KIGluY2x1ZGUvbGlu dXgvcnRzeF9wY2kuaCAgICAgICAgICAgfCAgIDggKw0KIDcgZmlsZXMgY2hhbmdlZCwgMTIxNyBp bnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9t aXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5oDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2Fy ZHJlYWRlci9NYWtlZmlsZSBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL01ha2VmaWxlDQppbmRl eCA4OTUxMjg0NzVkODMuLjFlMWJjYTZiMGIyMiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbWlzYy9j YXJkcmVhZGVyL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmls ZQ0KQEAgLTEsNSArMSw1IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1v bmx5DQogb2JqLSQoQ09ORklHX01JU0NfQUxDT1JfUENJKQkrPSBhbGNvcl9wY2kubw0KIG9iai0k KENPTkZJR19NSVNDX1JUU1hfUENJKQkrPSBydHN4X3BjaS5vDQotcnRzeF9wY2ktb2JqcyA6PSBy dHN4X3Bjci5vIHJ0czUyMDkubyBydHM1MjI5Lm8gcnRsODQxMS5vIHJ0czUyMjcubyBydHM1MjQ5 Lm8gcnRzNTI2MC5vIHJ0czUyNjEubyBydHM1MjI4Lm8NCitydHN4X3BjaS1vYmpzIDo9IHJ0c3hf cGNyLm8gcnRzNTIwOS5vIHJ0czUyMjkubyBydGw4NDExLm8gcnRzNTIyNy5vIHJ0czUyNDkubyBy dHM1MjYwLm8gcnRzNTI2MS5vIHJ0czUyMjgubyBydHM1MjY0Lm8NCiBvYmotJChDT05GSUdfTUlT Q19SVFNYX1VTQikJKz0gcnRzeF91c2Iubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJk cmVhZGVyL3J0czUyNjQuYyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjQuYw0KbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZGI2YjhjYTZiNmI1DQotLS0g L2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMNCkBAIC0w LDAgKzEsODg4IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0 ZXINCisvKiBEcml2ZXIgZm9yIFJlYWx0ZWsgUENJLUV4cHJlc3MgY2FyZCByZWFkZXINCisgKg0K KyAqIENvcHlyaWdodChjKSAyMDA5LTIwMTMgUmVhbHRlayBTZW1pY29uZHVjdG9yIENvcnAuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisgKiBBdXRob3I6DQorICogICBSaWNreSBXdSA8cmlj a3lfd3VAcmVhbHRlay5jb20+DQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9ydHN4X3BjaS5oPg0K Kw0KKyNpbmNsdWRlICJydHM1MjY0LmgiDQorI2luY2x1ZGUgInJ0c3hfcGNyLmgiDQorDQorc3Rh dGljIHU4IHJ0czUyNjRfZ2V0X2ljX3ZlcnNpb24oc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0K Kwl1OCB2YWw7DQorDQorCXJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBEVU1NWV9SRUdfUkVT RVRfMCwgJnZhbCk7DQorCXJldHVybiB2YWwgJiAweDBGOw0KK30NCisNCitzdGF0aWMgdm9pZCBy dHM1MjY0X2ZpbGxfZHJpdmluZyhzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCit7 DQorCXU4IGRyaXZpbmdfM3YzWzRdWzNdID0gew0KKwkJezB4ODgsIDB4ODgsIDB4ODh9LA0KKwkJ ezB4NzcsIDB4NzcsIDB4Nzd9LA0KKwkJezB4OTksIDB4OTksIDB4OTl9LA0KKwkJezB4NjYsIDB4 NjYsIDB4NjZ9LA0KKwl9Ow0KKwl1OCBkcml2aW5nXzF2OFs0XVszXSA9IHsNCisJCXsweDk5LCAw eDk5LCAweDk5fSwNCisJCXsweDc3LCAweDc3LCAweDc3fSwNCisJCXsweEJCLCAweEJCLCAweEJC fSwNCisJCXsweDY1LCAweDY1LCAweDY1fSwNCisJfTsNCisJdTggKCpkcml2aW5nKVszXSwgZHJp dmVfc2VsOw0KKw0KKwlpZiAodm9sdGFnZSA9PSBPVVRQVVRfM1YzKSB7DQorCQlkcml2aW5nID0g ZHJpdmluZ18zdjM7DQorCQlkcml2ZV9zZWwgPSBwY3ItPnNkMzBfZHJpdmVfc2VsXzN2MzsNCisJ fSBlbHNlIHsNCisJCWRyaXZpbmcgPSBkcml2aW5nXzF2ODsNCisJCWRyaXZlX3NlbCA9IHBjci0+ c2QzMF9kcml2ZV9zZWxfMXY4Ow0KKwl9DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgU0QzMF9DTEtfRFJJVkVfU0VMLA0KKwkJCTB4RkYsIGRyaXZpbmdbZHJpdmVfc2VsXVswXSk7 DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU0QzMF9DTURfRFJJVkVfU0VMLA0KKwkJ CTB4RkYsIGRyaXZpbmdbZHJpdmVfc2VsXVsxXSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgU0QzMF9EQVRfRFJJVkVfU0VMLA0KKwkJCTB4RkYsIGRyaXZpbmdbZHJpdmVfc2VsXVsy XSk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZm9yY2VfcG93ZXJfZG93bihzdHJ1Y3Qg cnRzeF9wY3IgKnBjciwgdTggcG1fc3RhdGUsIGJvb2wgcnVudGltZSkNCit7DQorCS8qIFNldCBy ZWxpbmtfdGltZSB0byAwICovDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVVUT0xP QURfQ0ZHX0JBU0UgKyAxLCBNQVNLXzhfQklUX0RFRiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgQVVUT0xPQURfQ0ZHX0JBU0UgKyAyLCBNQVNLXzhfQklUX0RFRiwgMCk7DQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQVVUT0xPQURfQ0ZHX0JBU0UgKyAzLA0KKwkJ CQlSRUxJTktfVElNRV9NQVNLLCAwKTsNCisNCisJaWYgKHBtX3N0YXRlID09IEhPU1RfRU5URVJf UzMpDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLA0K KwkJCQkJRDNfREVMSU5LX01PREVfRU4sIEQzX0RFTElOS19NT0RFX0VOKTsNCisNCisJaWYgKCFy dW50aW1lKSB7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVUT0xP QURfQ0ZHMSwNCisJCQkJQ0RfUkVTVU1FX0VOX01BU0ssIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgwMSwgMHgwMCk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQkJCUZP UkNFX1BNX0NPTlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgRk9SQ0VfUE1fQ09OVFJPTCk7DQorCX0g ZWxzZSB7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9G T1JDRV9DVEwsDQorCQkJCUZPUkNFX1BNX0NPTlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgMCk7DQor CQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCAweDAxLCAw eDAxKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMs DQorCQkJCQlEM19ERUxJTktfTU9ERV9FTiwgMCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfRldfQ1RMLA0KKwkJCQlSVFM1MjY0X0lORk9STV9SVEQzX0NPTEQsIFJU UzUyNjRfSU5GT1JNX1JURDNfQ09MRCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjRfQVVUT0xPQURfQ0ZHNCwNCisJCQkJUlRTNTI2NF9GT1JDRV9QUlNOVF9MT1csIFJU UzUyNjRfRk9SQ0VfUFJTTlRfTE9XKTsNCisJfQ0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfUkVHX0ZQRENUTCwNCisJCVNTQ19QT1dFUl9ET1dOLCBTU0NfUE9XRVJf RE9XTik7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9lbmFibGVfYXV0b19ibGluayhzdHJ1 Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXJldHVybiBydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIE9MVF9MRURfQ1RMLA0KKwkJTEVEX1NISU5FX01BU0ssIExFRF9TSElORV9FTik7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9kaXNhYmxlX2F1dG9fYmxpbmsoc3RydWN0IHJ0c3hfcGNy ICpwY3IpDQorew0KKwlyZXR1cm4gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBPTFRfTEVE X0NUTCwNCisJCUxFRF9TSElORV9NQVNLLCBMRURfU0hJTkVfRElTQUJMRSk7DQorfQ0KKw0KK3N0 YXRpYyBpbnQgcnRzNTI2NF90dXJuX29uX2xlZChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQor CXJldHVybiBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEdQSU9fQ1RMLA0KKwkJMHgwMiwg MHgwMik7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF90dXJuX29mZl9sZWQoc3RydWN0IHJ0 c3hfcGNyICpwY3IpDQorew0KKwlyZXR1cm4gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBH UElPX0NUTCwNCisJCTB4MDIsIDB4MDApOw0KK30NCisNCisvKiBTRCBQdWxsIENvbnRyb2wgRW5h YmxlOg0KKyAqICAgICBTRF9EQVRbMzowXSA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9DRCAgICAg ICA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9XUCAgICAgICA9PT4gcHVsbCB1cA0KKyAqICAgICBT RF9DTUQgICAgICA9PT4gcHVsbCB1cA0KKyAqICAgICBTRF9DTEsgICAgICA9PT4gcHVsbCBkb3du DQorICovDQorc3RhdGljIGNvbnN0IHUzMiBydHM1MjY0X3NkX3B1bGxfY3RsX2VuYWJsZV90Ymxb XSA9IHsNCisJUlRTWF9SRUdfUEFJUihDQVJEX1BVTExfQ1RMMiwgMHhBQSksDQorCVJUU1hfUkVH X1BBSVIoQ0FSRF9QVUxMX0NUTDMsIDB4RTkpLA0KKwkwLA0KK307DQorDQorLyogU0QgUHVsbCBD b250cm9sIERpc2FibGU6DQorICogICAgIFNEX0RBVFszOjBdID09PiBwdWxsIGRvd24NCisgKiAg ICAgU0RfQ0QgICAgICAgPT0+IHB1bGwgdXANCisgKiAgICAgU0RfV1AgICAgICAgPT0+IHB1bGwg ZG93bg0KKyAqICAgICBTRF9DTUQgICAgICA9PT4gcHVsbCBkb3duDQorICogICAgIFNEX0NMSyAg ICAgID09PiBwdWxsIGRvd24NCisgKi8NCitzdGF0aWMgY29uc3QgdTMyIHJ0czUyNjRfc2RfcHVs bF9jdGxfZGlzYWJsZV90YmxbXSA9IHsNCisJUlRTWF9SRUdfUEFJUihDQVJEX1BVTExfQ1RMMiwg MHg1NSksDQorCVJUU1hfUkVHX1BBSVIoQ0FSRF9QVUxMX0NUTDMsIDB4RDUpLA0KKwkwLA0KK307 DQorDQorc3RhdGljIGludCBydHM1MjY0X3NkX3NldF9zYW1wbGVfcHVzaF90aW1pbmdfc2QzMChz dHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg U0RfQ0ZHMSwgU0RfTU9ERV9TRUxFQ1RfTUFTSw0KKwkJfCBTRF9BU1lOQ19GSUZPX05PVF9SU1Qs IFNEXzMwX01PREUgfCBTRF9BU1lOQ19GSUZPX05PVF9SU1QpOw0KKwlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIENMS19DVEwsIENMS19MT1dfRlJFUSwgQ0xLX0xPV19GUkVRKTsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDQVJEX0NMS19TT1VSQ0UsIDB4RkYsDQorCQkJQ1JD X1ZBUl9DTEswIHwgU0QzMF9GSVhfQ0xLIHwgU0FNUExFX1ZBUl9DTEsxKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBDTEtfQ1RMLCBDTEtfTE9XX0ZSRVEsIDApOw0KKw0KKwlyZXR1 cm4gMDsNCit9DQorDQorc3RhdGljIGludCBydHM1MjY0X2NhcmRfcG93ZXJfb24oc3RydWN0IHJ0 c3hfcGNyICpwY3IsIGludCBjYXJkKQ0KK3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRp b24gPSAmcGNyLT5vcHRpb247DQorDQorCWlmIChvcHRpb24tPm9jcF9lbikNCisJCXJ0c3hfcGNp X2VuYWJsZV9vY3AocGNyKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdf Q1JDX0RVTU1ZXzAsDQorCQlDRkdfU0RfUE9XX0FVVE9fUEQsIENGR19TRF9QT1dfQVVUT19QRCk7 DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8xX0NGRzEsDQor CQkJUlRTNTI2NF9MRE8xX1RVTkVfTUFTSywgUlRTNTI2NF9MRE8xXzMzKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQlSVFM1 MjY0X0xETzFfUE9XRVJPTiwgUlRTNTI2NF9MRE8xX1BPV0VST04pOw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJCVJUUzUyNjRf TERPMzMxOF9QT1dFUk9OLCBSVFM1MjY0X0xETzMzMThfUE9XRVJPTik7DQorDQorCW1zbGVlcCgy MCk7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0FSRF9PRSwgU0RfT1VUUFVU X0VOLCBTRF9PVVRQVVRfRU4pOw0KKw0KKwkvKiBJbml0aWFsaXplIFNEX0NGRzEgcmVnaXN0ZXIg Ki8NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcxLCAweEZGLA0KKwkJCVNE X0NMS19ESVZJREVfMTI4IHwgU0RfMjBfTU9ERSB8IFNEX0JVU19XSURUSF8xQklUKTsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9TQU1QTEVfUE9JTlRfQ1RMLA0KKwkJCTB4RkYs IFNEMjBfUlhfUE9TX0VER0UpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX1BV U0hfUE9JTlRfQ1RMLCAweEZGLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBD QVJEX1NUT1AsIFNEX1NUT1AgfCBTRF9DTFJfRVJSLA0KKwkJCVNEX1NUT1AgfCBTRF9DTFJfRVJS KTsNCisNCisJLyogUmVzZXQgU0RfQ0ZHMyByZWdpc3RlciAqLw0KKwlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFNEX0NGRzMsIFNEMzBfQ0xLX0VORF9FTiwgMCk7DQorCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUkVHX1NEX1NUT1BfU0RDTEtfQ0ZHLA0KKwkJCVNEMzBfQ0xLX1NU T1BfQ0ZHX0VOIHwgU0QzMF9DTEtfU1RPUF9DRkcxIHwNCisJCQlTRDMwX0NMS19TVE9QX0NGRzAs IDApOw0KKw0KKwlpZiAocGNyLT5leHRyYV9jYXBzICYgRVhUUkFfQ0FQU19TRF9TRFI1MCB8fA0K KwkgICAgcGNyLT5leHRyYV9jYXBzICYgRVhUUkFfQ0FQU19TRF9TRFIxMDQpDQorCQlydHM1MjY0 X3NkX3NldF9zYW1wbGVfcHVzaF90aW1pbmdfc2QzMChwY3IpOw0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIGludCBydHM1MjY0X3N3aXRjaF9vdXRwdXRfdm9sdGFnZShzdHJ1Y3QgcnRz eF9wY3IgKnBjciwgdTggdm9sdGFnZSkNCit7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgUlRTNTI2NF9DQVJEX1BXUl9DVEwsDQorCQkJUlRTNTI2NF9QVVBEQywgUlRTNTI2NF9QVVBE Qyk7DQorDQorCXN3aXRjaCAodm9sdGFnZSkgew0KKwljYXNlIE9VVFBVVF8zVjM6DQorCQlydHN4 X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMTIzMzMxOF9QT1dfQ1RMLA0KKwkJ CQlSVFM1MjY0X1RVTkVfUkVGX0xETzMzMTgsIFJUUzUyNjRfVFVORV9SRUZfTERPMzMxOCk7DQor CQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRFYzMzE4X0NGRywNCisJCQkJ UlRTNTI2NF9EVjMzMThfVFVORV9NQVNLLCBSVFM1MjY0X0RWMzMxOF8zMyk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX1BBRF9DVEwsDQorCQkJCVNEX0lPX1VTSU5HXzFWOCwg MCk7DQorCQlicmVhazsNCisJY2FzZSBPVVRQVVRfMVY4Og0KKwkJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQkJUlRTNTI2NF9UVU5F X1JFRl9MRE8zMzE4LCBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMThfREZUKTsNCisJCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9EVjMzMThfQ0ZHLA0KKwkJCQlSVFM1MjY0X0RW MzMxOF9UVU5FX01BU0ssIFJUUzUyNjRfRFYzMzE4XzE4KTsNCisJCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgU0RfUEFEX0NUTCwNCisJCQkJU0RfSU9fVVNJTkdfMVY4LCBTRF9JT19VU0lO R18xVjgpOw0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlyZXR1cm4gLUVJTlZBTDsNCisJfQ0K Kw0KKwkvKiBzZXQgcGFkIGRyaXZlICovDQorCXJ0czUyNjRfZmlsbF9kcml2aW5nKHBjciwgdm9s dGFnZSk7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3N0b3Bf Y21kKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcnRzeF9wY2lfd3JpdGVsKHBjciwgUlRT WF9IQ0JDVExSLCBTVE9QX0NNRCk7DQorCXJ0c3hfcGNpX3dyaXRlbChwY3IsIFJUU1hfSERCQ1RM UiwgU1RPUF9ETUEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIERNQUNUTCwgRE1B X1JTVCwgRE1BX1JTVCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkJDVEwsIFJC X0ZMVVNILCBSQl9GTFVTSCk7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfY2FyZF9iZWZv cmVfcG93ZXJfb2ZmKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcnRzNTI2NF9zdG9wX2Nt ZChwY3IpOw0KKwlydHM1MjY0X3N3aXRjaF9vdXRwdXRfdm9sdGFnZShwY3IsIE9VVFBVVF8zVjMp Ow0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfY2FyZF9wb3dlcl9vZmYoc3RydWN0IHJ0c3hf cGNyICpwY3IsIGludCBjYXJkKQ0KK3sNCisJaW50IGVyciA9IDA7DQorDQorCXJ0czUyNjRfY2Fy ZF9iZWZvcmVfcG93ZXJfb2ZmKHBjcik7DQorCWVyciA9IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9MRE8xMjMzMzE4X1BPV19DVEwsDQorCQkJCVJUUzUyNjRfTERPX1BPV0VS T05fTUFTSywgMCk7DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX0NSQ19E VU1NWV8wLA0KKwkJQ0ZHX1NEX1BPV19BVVRPX1BELCAwKTsNCisJaWYgKHBjci0+b3B0aW9uLm9j cF9lbikNCisJCXJ0c3hfcGNpX2Rpc2FibGVfb2NwKHBjcik7DQorDQorCXJldHVybiBlcnI7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZW5hYmxlX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBj cikNCit7DQorCXU4IG1hc2sgPSAwOw0KKwl1OCB2YWwgPSAwOw0KKw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMV9PQ1Bf RU4gfCBSVFM1MjY0X0xETzFfT0NQX0xNVF9FTiwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0VOIHwg UlRTNTI2NF9MRE8xX09DUF9MTVRfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xE TzJfT0NQX0xNVF9FTiwNCisJCQlSVFM1MjY0X0xETzJfT0NQX0VOIHwgUlRTNTI2NF9MRE8yX09D UF9MTVRfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19D RkcwLA0KKwkJCVJUUzUyNjRfTERPM19PQ1BfRU4gfCBSVFM1MjY0X0xETzNfT0NQX0xNVF9FTiwN CisJCQlSVFM1MjY0X0xETzNfT0NQX0VOIHwgUlRTNTI2NF9MRE8zX09DUF9MTVRfRU4pOw0KKwly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwNCisJCQlSVFM1MjY0 X1BPV19WREVULCBSVFM1MjY0X1BPV19WREVUKTsNCisNCisJbWFzayA9IFNEX09DUF9JTlRfRU4g fCBTRF9ERVRFQ1RfRU47DQorCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9FTiB8IFNEVklPX0RFVEVD VF9FTjsNCisJdmFsID0gbWFzazsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdf T0NQQ1RMLCBtYXNrLCB2YWwpOw0KKw0KKwltYXNrID0gU0RfVkREM19PQ1BfSU5UX0VOIHwgU0Rf VkREM19ERVRFQ1RfRU47DQorCXZhbCA9IG1hc2s7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9PQ1BfVkREM19DVEwsIG1hc2ssIHZhbCk7DQorDQorCW1hc2sgPSBSVFM1 MjY0X09WUF9JTlRfRU4gfCBSVFM1MjY0X09WUF9ERVRFQ1RfRU47DQorCXZhbCA9IG1hc2s7DQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLCBtYXNrLCB2YWwp Ow0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X2Rpc2FibGVfb2NwKHN0cnVjdCBydHN4X3Bj ciAqcGNyKQ0KK3sNCisJdTggbWFzayA9IDA7DQorDQorCW1hc2sgPSBTRF9PQ1BfSU5UX0VOIHwg U0RfREVURUNUX0VOOw0KKwltYXNrIHw9IFNEVklPX09DUF9JTlRfRU4gfCBTRFZJT19ERVRFQ1Rf RU47DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgMCk7 DQorDQorCW1hc2sgPSBTRF9WREQzX09DUF9JTlRfRU4gfCBTRF9WREQzX0RFVEVDVF9FTjsNCisJ cnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09DUF9WREQzX0NUTCwgbWFzaywg MCk7DQorDQorCW1hc2sgPSBSVFM1MjY0X09WUF9JTlRfRU4gfCBSVFM1MjY0X09WUF9ERVRFQ1Rf RU47DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLCBtYXNr LCAwKTsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZH MCwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0VOIHwgUlRTNTI2NF9MRE8xX09DUF9MTVRfRU4sIDAp Ow0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJ CVJUUzUyNjRfTERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTiwgMCk7DQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8zX0NGRzAsDQorCQkJUlRTNTI2 NF9MRE8zX09DUF9FTiB8IFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOLCAwKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9ERVQsIFJUUzUyNjRfUE9XX1ZERVQsIDAp Ow0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X2luaXRfb2NwKHN0cnVjdCBydHN4X3BjciAq cGNyKQ0KK3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247 DQorDQorCWlmIChvcHRpb24tPm9jcF9lbikgew0KKwkJdTggbWFzaywgdmFsOw0KKw0KKwkJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0 X0xETzFfT0NQX1RIRF9NQVNLLCBvcHRpb24tPnNkXzgwMG1BX29jcF90aGQpOw0KKwkJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0X0xE TzFfT0NQX0xNVF9USERfTUFTSywNCisJCQlSVFM1MjY0X0xETzFfTE1UX1RIRF8yMDAwKTsNCisN CisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJ UlRTNTI2NF9MRE8yX09DUF9USERfTUFTSywgUlRTNTI2NF9MRE8yX09DUF9USERfOTUwKTsNCisJ CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8yX0NGRzAsDQorCQkJUlRT NTI2NF9MRE8yX09DUF9MTVRfVEhEX01BU0ssDQorCQkJUlRTNTI2NF9MRE8yX0xNVF9USERfMjAw MCk7DQorDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcw LA0KKwkJCVJUUzUyNjRfTERPM19PQ1BfVEhEX01BU0ssIFJUUzUyNjRfTERPM19PQ1BfVEhEXzcx MCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0K KwkJCVJUUzUyNjRfTERPM19PQ1BfTE1UX1RIRF9NQVNLLA0KKwkJCVJUUzUyNjRfTERPM19MTVRf VEhEXzE1MDApOw0KKw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09W UF9ERVQsDQorCQkJUlRTNTI2NF9UVU5FX1ZST1ZfTUFTSywgUlRTNTI2NF9UVU5FX1ZST1ZfMVY2 KTsNCisNCisJCW1hc2sgPSBTRF9PQ1BfR0xJVENIX01BU0sgfCBTRFZJT19PQ1BfR0xJVENIX01B U0s7DQorCQl2YWwgPSBwY3ItPmh3X3BhcmFtLm9jcF9nbGl0Y2g7DQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BHTElUQ0gsIG1hc2ssIHZhbCk7DQorDQorCX0gZWxzZSB7 DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcwLA0KKwkJ CVJUUzUyNjRfTERPMV9PQ1BfRU4gfCBSVFM1MjY0X0xETzFfT0NQX0xNVF9FTiwgMCk7DQorCQly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUy NjRfTERPMl9PQ1BfRU4gfCBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTiwgMCk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJCVJUUzUyNjRfTERP M19PQ1BfRU4gfCBSVFM1MjY0X0xETzNfT0NQX0xNVF9FTiwgMCk7DQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX0RFVCwNCisJCQlSVFM1MjY0X1BPV19WREVULCAw KTsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfZ2V0X29jcHN0YXQyKHN0cnVjdCBy dHN4X3BjciAqcGNyLCB1OCAqdmFsKQ0KK3sNCisJcmV0dXJuIHJ0c3hfcGNpX3JlYWRfcmVnaXN0 ZXIocGNyLCBSVFM1MjY0X09DUF9WREQzX1NUUywgdmFsKTsNCit9DQorDQorc3RhdGljIGludCBy dHM1MjY0X2dldF9vdnBzdGF0KHN0cnVjdCBydHN4X3BjciAqcGNyLCB1OCAqdmFsKQ0KK3sNCisJ cmV0dXJuIHJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9TVFMsIHZhbCk7 DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfY2xlYXJfb2Nwc3RhdChzdHJ1Y3QgcnRzeF9w Y3IgKnBjcikNCit7DQorCXU4IG1hc2sgPSAwOw0KKwl1OCB2YWwgPSAwOw0KKw0KKwltYXNrID0g U0RfT0NQX0lOVF9DTFIgfCBTRF9PQ19DTFI7DQorCW1hc2sgfD0gU0RWSU9fT0NQX0lOVF9DTFIg fCBTRFZJT19PQ19DTFI7DQorCXZhbCA9IG1hc2s7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUkVHX09DUENUTCwgbWFzaywgdmFsKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBSVFM1MjY0X09DUF9WREQzX0NUTCwNCisJCVNEX1ZERDNfT0NQX0lOVF9DTFIgfCBTRF9W REQzX09DX0NMUiwNCisJCVNEX1ZERDNfT0NQX0lOVF9DTFIgfCBTRF9WREQzX09DX0NMUik7DQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfQ1RMLA0KKwkJUlRTNTI2 NF9PVlBfSU5UX0NMUiB8IFJUUzUyNjRfT1ZQX0NMUiwNCisJCVJUUzUyNjRfT1ZQX0lOVF9DTFIg fCBSVFM1MjY0X09WUF9DTFIpOw0KKw0KKwl1ZGVsYXkoMTAwMCk7DQorDQorCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgMCk7DQorCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PQ1BfVkREM19DVEwsDQorCQlTRF9WREQzX09DUF9JTlRf Q0xSIHwgU0RfVkREM19PQ19DTFIsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjRfT1ZQX0NUTCwNCisJCVJUUzUyNjRfT1ZQX0lOVF9DTFIgfCBSVFM1MjY0X09WUF9D TFIsIDApOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3Byb2Nlc3Nfb2NwKHN0cnVjdCBy dHN4X3BjciAqcGNyKQ0KK3sNCisJaWYgKCFwY3ItPm9wdGlvbi5vY3BfZW4pDQorCQlyZXR1cm47 DQorDQorCXJ0c3hfcGNpX2dldF9vY3BzdGF0KHBjciwgJnBjci0+b2NwX3N0YXQpOw0KKwlydHM1 MjY0X2dldF9vY3BzdGF0MihwY3IsICZwY3ItPm9jcF9zdGF0Mik7DQorCXJ0czUyNjRfZ2V0X292 cHN0YXQocGNyLCAmcGNyLT5vdnBfc3RhdCk7DQorDQorCWlmICgocGNyLT5vY3Bfc3RhdCAmIChT RF9PQ19OT1cgfCBTRF9PQ19FVkVSIHwgU0RWSU9fT0NfTk9XIHwgU0RWSU9fT0NfRVZFUikpIHx8 DQorCQkJKHBjci0+b2NwX3N0YXQyICYgKFNEX1ZERDNfT0NfTk9XIHwgU0RfVkREM19PQ19FVkVS KSkgfHwNCisJCQkocGNyLT5vdnBfc3RhdCAmIChSVFM1MjY0X09WUF9OT1cgfCBSVFM1MjY0X09W UF9FVkVSKSkpIHsNCisJCXJ0czUyNjRfY2xlYXJfb2Nwc3RhdChwY3IpOw0KKwkJcnRzNTI2NF9j YXJkX3Bvd2VyX29mZihwY3IsIFJUU1hfU0RfQ0FSRCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIENBUkRfT0UsIFNEX09VVFBVVF9FTiwgMCk7DQorCQlwY3ItPm9jcF9zdGF0ID0g MDsNCisJCXBjci0+b2NwX3N0YXQyID0gMDsNCisJCXBjci0+b3ZwX3N0YXQgPSAwOw0KKwl9DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfaW5pdF9mcm9tX2h3KHN0cnVjdCBydHN4X3BjciAq cGNyKQ0KK3sNCisJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBwY3ItPnBjaTsNCisJdTMyIGx2YWwx LCBsdmFsMiwgaTsNCisJdTE2IHNldHRpbmdfcmVnMSwgc2V0dGluZ19yZWcyOw0KKwl1OCB2YWxp ZCwgZWZ1c2VfdmFsaWQsIHRtcDsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBS VFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJUkVHX0VGVVNFX1BPUiB8IFJFR19FRlVTRV9Q T1dFUl9NQVNLLA0KKwkJUkVHX0VGVVNFX1BPUiB8IFJFR19FRlVTRV9QT1dFUk9OKTsNCisJdWRl bGF5KDEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRUZVU0VfQURE UiwNCisJCVJUUzUyNjRfRUZVU0VfQUREUl9NQVNLLCAweDAwKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0VGVVNFX0NUTCwNCisJCVJUUzUyNjRfRUZVU0VfRU5BQkxF IHwgUlRTNTI2NF9FRlVTRV9NT0RFX01BU0ssDQorCQlSVFM1MjY0X0VGVVNFX0VOQUJMRSk7DQor DQorCS8qIFdhaXQgdHJhbnNmZXIgZW5kICovDQorCWZvciAoaSA9IDA7IGkgPCBNQVhfUldfUkVH X0NOVDsgaSsrKSB7DQorCQlydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9FRlVT RV9DVEwsICZ0bXApOw0KKwkJaWYgKCh0bXAgJiAweDgwKSA9PSAwKQ0KKwkJCWJyZWFrOw0KKwl9 DQorCXJ0c3hfcGNpX3JlYWRfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0VGVVNFX1JFQURfREFUQSwg JnRtcCk7DQorCWVmdXNlX3ZhbGlkID0gKCh0bXAgJiAweDBDKSA+PiAyKTsNCisJcGNyX2RiZyhw Y3IsICJMb2FkIGVmdXNlIHZhbGlkOiAweCV4XG4iLCBlZnVzZV92YWxpZCk7DQorDQorCXBjaV9y ZWFkX2NvbmZpZ19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUcyLCAmbHZhbDIpOw0KKwlwY3Jf ZGJnKHBjciwgIkNmZyAweCV4OiAweCV4XG4iLCBQQ1JfU0VUVElOR19SRUcyLCBsdmFsMik7DQor CS8qIDB4ODE2ICovDQorCXZhbGlkID0gKHU4KSgobHZhbDIgPj4gMTYpICYgMHgwMyk7DQorDQor CXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwN CisJCVJFR19FRlVTRV9QT1IsIDApOw0KKwlwY3JfZGJnKHBjciwgIkRpc2FibGUgZWZ1c2UgcG9y IVxuIik7DQorDQorCWlmIChlZnVzZV92YWxpZCA9PSAyIHx8IGVmdXNlX3ZhbGlkID09IDMpIHsN CisJCWlmICh2YWxpZCA9PSAzKSB7DQorCQkJLyogQnlwYXNzIGVmdXNlICovDQorCQkJc2V0dGlu Z19yZWcxID0gUENSX1NFVFRJTkdfUkVHMTsNCisJCQlzZXR0aW5nX3JlZzIgPSBQQ1JfU0VUVElO R19SRUcyOw0KKwkJfSBlbHNlIHsNCisJCQkvKiBVc2UgZWZ1c2UgZGF0YSAqLw0KKwkJCXNldHRp bmdfcmVnMSA9IFBDUl9TRVRUSU5HX1JFRzQ7DQorCQkJc2V0dGluZ19yZWcyID0gUENSX1NFVFRJ TkdfUkVHNTsNCisJCX0NCisJfSBlbHNlIGlmIChlZnVzZV92YWxpZCA9PSAwKSB7DQorCQkvLyBk ZWZhdWx0DQorCQlzZXR0aW5nX3JlZzEgPSBQQ1JfU0VUVElOR19SRUcxOw0KKwkJc2V0dGluZ19y ZWcyID0gUENSX1NFVFRJTkdfUkVHMjsNCisJfSBlbHNlIHsNCisJCXJldHVybjsNCisJfQ0KKw0K KwlwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwgc2V0dGluZ19yZWcyLCAmbHZhbDIpOw0KKwlw Y3JfZGJnKHBjciwgIkNmZyAweCV4OiAweCV4XG4iLCBzZXR0aW5nX3JlZzIsIGx2YWwyKTsNCisN CisJaWYgKCFydHM1MjY0X3ZlbmRvcl9zZXR0aW5nX3ZhbGlkKGx2YWwyKSkgew0KKwkJcGNyX2Ri ZyhwY3IsICJza2lwIGZldGNoIHZlbmRvciBzZXR0aW5nXG4iKTsNCisJCXJldHVybjsNCisJfQ0K Kw0KKwlwY3ItPnJ0ZDNfZW4gPSBydHM1MjY0X3JlZ190b19ydGQzKGx2YWwyKTsNCisNCisJaWYg KHJ0czUyNjRfcmVnX2NoZWNrX3JldmVyc2Vfc29ja2V0KGx2YWwyKSkNCisJCXBjci0+ZmxhZ3Mg fD0gUENSX1JFVkVSU0VfU09DS0VUOw0KKw0KKwlwY2lfcmVhZF9jb25maWdfZHdvcmQocGRldiwg c2V0dGluZ19yZWcxLCAmbHZhbDEpOw0KKwlwY3JfZGJnKHBjciwgIkNmZyAweCV4OiAweCV4XG4i LCBzZXR0aW5nX3JlZzEsIGx2YWwxKTsNCisNCisJcGNyLT5hc3BtX2VuID0gcnRzNTI2NF9yZWdf dG9fYXNwbShsdmFsMSk7DQorCXBjci0+c2QzMF9kcml2ZV9zZWxfMXY4ID0gcnRzNTI2NF9yZWdf dG9fc2QzMF9kcml2ZV9zZWxfMXY4KGx2YWwxKTsNCisJcGNyLT5zZDMwX2RyaXZlX3NlbF8zdjMg PSBydHM1MjY0X3JlZ190b19zZDMwX2RyaXZlX3NlbF8zdjMobHZhbDEpOw0KKw0KKwlpZiAoc2V0 dGluZ19yZWcxID09IFBDUl9TRVRUSU5HX1JFRzEpIHsNCisJCS8qIHN0b3JlIHNldHRpbmcgKi8N CisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjBDLCAweEZGLCAodTgpKGx2YWwx ICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMEQsIDB4RkYs ICh1OCkoKGx2YWwxID4+IDgpICYgMHhGRikpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCAweEZGMEUsIDB4RkYsICh1OCkoKGx2YWwxID4+IDE2KSAmIDB4RkYpKTsNCisJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjBGLCAweEZGLCAodTgpKChsdmFsMSA+PiAyNCkg JiAweEZGKSk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYxMCwgMHhGRiwg KHU4KShsdmFsMiAmIDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhG RjExLCAweEZGLCAodTgpKChsdmFsMiA+PiA4KSAmIDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgMHhGRjEyLCAweEZGLCAodTgpKChsdmFsMiA+PiAxNikgJiAweEZGKSk7 DQorDQorCQlwY2lfd3JpdGVfY29uZmlnX2R3b3JkKHBkZXYsIFBDUl9TRVRUSU5HX1JFRzQsIGx2 YWwxKTsNCisJCWx2YWwyID0gbHZhbDIgJiAweDAwRkZGRkZGOw0KKwkJcGNpX3dyaXRlX2NvbmZp Z19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUc1LCBsdmFsMik7DQorCX0NCit9DQorDQorc3Rh dGljIHZvaWQgcnRzNTI2NF9pbml0X2Zyb21fY2ZnKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sN CisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247DQorDQorCWlm IChydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9MMV8xX0VOIHwgQVNQTV9MMV8yX0VODQor CQkJCXwgUE1fTDFfMV9FTiB8IFBNX0wxXzJfRU4pKQ0KKwkJcnRzeF9wY2lfZGlzYWJsZV9vb2Jz X3BvbGxpbmcocGNyKTsNCisJZWxzZQ0KKwkJcnRzeF9wY2lfZW5hYmxlX29vYnNfcG9sbGluZyhw Y3IpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFTUE1fRk9SQ0VfQ1RMLCAw eEZGLCAwKTsNCisNCisJaWYgKG9wdGlvbi0+bHRyX2VuKSB7DQorCQlpZiAob3B0aW9uLT5sdHJf ZW5hYmxlZCkNCisJCQlydHN4X3NldF9sdHJfbGF0ZW5jeShwY3IsIG9wdGlvbi0+bHRyX2FjdGl2 ZV9sYXRlbmN5KTsNCisJfQ0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfZXh0cmFfaW5pdF9o dyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0 aW9uID0gJnBjci0+b3B0aW9uOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfQVVUT0xPQURfQ0ZHMSwNCisJCQlDRF9SRVNVTUVfRU5fTUFTSywgQ0RfUkVTVU1FX0VO X01BU0spOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19WUkVGLCBQV0RfU1VT UE5EX0VOLCBQV0RfU1VTUE5EX0VOKTsNCisNCisJcnRzNTI2NF9pbml0X2Zyb21fY2ZnKHBjcik7 DQorCXJ0czUyNjRfaW5pdF9mcm9tX2h3KHBjcik7DQorDQorCS8qIHBvd2VyIG9mZiBlZnVzZSAq Lw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9D VEwsDQorCQkJUkVHX0VGVVNFX1BPV0VSX01BU0ssIFJFR19FRlVTRV9QT1dFUk9GRik7DQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9BVVRPTE9BRF9DRkcyLA0KKwkJCVJU UzUyNjRfQ0hJUF9SU1RfTl9TRUwsIDApOw0KKwlpZiAoIWlzX3ZlcnNpb25faGlnaGVyX3RoYW4o cGNyLCBQSURfNTI2NCwgSUNfVkVSX0IpKSB7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFJUUzUyNjRfUkVHX0xETzEyX0NGRywNCisJCQlSVFM1MjY0X0xETzEyX1NSX01BU0ssIFJU UzUyNjRfTERPMTJfU1JfMF8wX01TKTsNCisJfQ0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIENER1csIDB4RkYsIDB4MDEpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfQ0tNVVhfTUJJQVNfUFdSLA0KKwkJCVJUUzUyNjRfUE9XX0NLTVVYLCBSVFM1MjY0X1BP V19DS01VWCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9DTURfT0Vf U1RBUlRfRUFSTFksDQorCQkJUlRTNTI2NF9DTURfT0VfRUFSTFlfRU4gfCBSVFM1MjY0X0NNRF9P RV9FQVJMWV9DWUNMRV9NQVNLLA0KKwkJCVJUUzUyNjRfQ01EX09FX0VBUkxZX0VOKTsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0RBVF9PRV9TVEFSVF9FQVJMWSwNCisJ CQlSVFM1MjY0X0RBVF9PRV9FQVJMWV9FTiB8IFJUUzUyNjRfREFUX09FX0VBUkxZX0NZQ0xFX01B U0ssDQorCQkJUlRTNTI2NF9EQVRfT0VfRUFSTFlfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFNTQ19ESVZfTl8wLCAweEZGLCAweDVEKTsNCisNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X1BXUl9DVVQsDQorCQkJUlRTNTI2NF9DRkdfTUVNX1BELCBS VFM1MjY0X0NGR19NRU1fUEQpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEwxU1VC X0NPTkZJRzEsDQorCQkJQVVYX0NMS19BQ1RJVkVfU0VMX01BU0ssIE1BQ19DS1NXX0RPTkUpOw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEwxU1VCX0NPTkZJRzMsIDB4RkYsIDApOw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVUT0xPQURfQ0ZHNCwNCisJ CQlSVFM1MjY0X0FVWF9DTEtfMTZNX0VOLCAwKTsNCisNCisJLyogUmVsZWFzZSBQUlNOVCMgKi8N CisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzQsDQor CQkJUlRTNTI2NF9GT1JDRV9QUlNOVF9MT1csIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFBDTEtfQ1RMLA0KKwkJCVBDTEtfTU9ERV9TRUwsIFBDTEtfTU9ERV9TRUwpOw0KKw0K KwkvKiBMRUQgc2hpbmUgZGlzYWJsZWQsIHNldCBpbml0aWFsIHNoaW5lIGN5Y2xlIHBlcmlvZCAq Lw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIE9MVF9MRURfQ1RMLCAweDBGLCAweDAy KTsNCisNCisJLyogQ29uZmlndXJlIGRyaXZpbmcgKi8NCisJcnRzNTI2NF9maWxsX2RyaXZpbmco cGNyLCBPVVRQVVRfM1YzKTsNCisNCisJaWYgKHBjci0+ZmxhZ3MgJiBQQ1JfUkVWRVJTRV9TT0NL RVQpDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBFVFhDRkcsIDB4MzAsIDB4MzAp Ow0KKwllbHNlDQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFBFVFhDRkcsIDB4MzAs IDB4MDApOw0KKw0KKwkvKg0KKwkgKiBJZiB1X2ZvcmNlX2Nsa3JlcV8wIGlzIGVuYWJsZWQsIENM S1JFUSMgUElOIHdpbGwgYmUgZm9yY2VkDQorCSAqIHRvIGRyaXZlIGxvdywgYW5kIHdlIGZvcmNp Ymx5IHJlcXVlc3QgY2xvY2suDQorCSAqLw0KKwlpZiAob3B0aW9uLT5mb3JjZV9jbGtyZXFfMCkN CisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUEVUWENGRywNCisJCQkJIEZPUkNFX0NM S1JFUV9ERUxJTktfTUFTSywgRk9SQ0VfQ0xLUkVRX0xPVyk7DQorCWVsc2UNCisJCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUEVUWENGRywNCisJCQkJIEZPUkNFX0NMS1JFUV9ERUxJTktf TUFTSywgRk9SQ0VfQ0xLUkVRX0hJR0gpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFBXRF9TVVNQRU5EX0VOLCAweEZGLCAweEZGKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSQkNUTCwgVV9BVVRPX0RNQV9FTl9NQVNLLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzQsDQorCQkJUlRTNTI2NF9GX0hJR0hf UkNfTUFTSywgUlRTNTI2NF9GX0hJR0hfUkNfNDAwSyk7DQorDQorCWlmIChwY3ItPnJ0ZDNfZW4p IHsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5yZWdfcG1fY3RybDMsIDB4 MDEsIDB4MDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19Q TUVfRk9SQ0VfQ1RMLA0KKwkJCQlGT1JDRV9QTV9DT05UUk9MIHwgRk9SQ0VfUE1fVkFMVUUsIDAp Ow0KKwl9IGVsc2Ugew0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19w bV9jdHJsMywgMHgwMSwgMHgwMCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQkJCUZPUkNFX1BNX0NPTlRST0wgfCBGT1JDRV9Q TV9WQUxVRSwgRk9SQ0VfUE1fQ09OVFJPTCk7DQorCX0NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgRDNfREVMSU5LX01PREVfRU4sIDB4MDApOw0KKw0K KwkvKiBDbGVhciBFbnRlciBSVEQzX2NvbGQgSW5mb3JtYXRpb24qLw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRldfQ1RMLA0KKwkJUlRTNTI2NF9JTkZPUk1fUlREM19D T0xELCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZW5h YmxlX2FzcG0oc3RydWN0IHJ0c3hfcGNyICpwY3IsIGJvb2wgZW5hYmxlKQ0KK3sNCisJdTggdmFs ID0gRk9SQ0VfQVNQTV9DVEwwIHwgRk9SQ0VfQVNQTV9DVEwxOw0KKwl1OCBtYXNrID0gRk9SQ0Vf QVNQTV9WQUxfTUFTSyB8IEZPUkNFX0FTUE1fQ1RMMCB8IEZPUkNFX0FTUE1fQ1RMMTsNCisNCisJ aWYgKHBjci0+YXNwbV9lbmFibGVkID09IGVuYWJsZSkNCisJCXJldHVybjsNCisNCisJdmFsIHw9 IChwY3ItPmFzcG1fZW4gJiAweDAyKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBB U1BNX0ZPUkNFX0NUTCwgbWFzaywgdmFsKTsNCisJcGNpZV9jYXBhYmlsaXR5X2NsZWFyX2FuZF9z ZXRfd29yZChwY3ItPnBjaSwgUENJX0VYUF9MTktDVEwsDQorCQkJCQkgICBQQ0lfRVhQX0xOS0NU TF9BU1BNQywgcGNyLT5hc3BtX2VuKTsNCisJcGNyLT5hc3BtX2VuYWJsZWQgPSBlbmFibGU7DQor fQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfZGlzYWJsZV9hc3BtKHN0cnVjdCBydHN4X3BjciAq cGNyLCBib29sIGVuYWJsZSkNCit7DQorCXU4IHZhbCA9IEZPUkNFX0FTUE1fQ1RMMCB8IEZPUkNF X0FTUE1fQ1RMMTsNCisJdTggbWFzayA9IEZPUkNFX0FTUE1fVkFMX01BU0sgfCBGT1JDRV9BU1BN X0NUTDAgfCBGT1JDRV9BU1BNX0NUTDE7DQorDQorCWlmIChwY3ItPmFzcG1fZW5hYmxlZCA9PSBl bmFibGUpDQorCQlyZXR1cm47DQorDQorCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRfc2V0X3dv cmQocGNyLT5wY2ksIFBDSV9FWFBfTE5LQ1RMLA0KKwkJCQkJICAgUENJX0VYUF9MTktDVExfQVNQ TUMsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFTUE1fRk9SQ0VfQ1RMLCBt YXNrLCB2YWwpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX0NGRzEsIFNEX0FT WU5DX0ZJRk9fTk9UX1JTVCwgMCk7DQorCXVkZWxheSgxMCk7DQorCXBjci0+YXNwbV9lbmFibGVk ID0gZW5hYmxlOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3NldF9hc3BtKHN0cnVjdCBy dHN4X3BjciAqcGNyLCBib29sIGVuYWJsZSkNCit7DQorCWlmIChlbmFibGUpDQorCQlydHM1MjY0 X2VuYWJsZV9hc3BtKHBjciwgdHJ1ZSk7DQorCWVsc2UNCisJCXJ0czUyNjRfZGlzYWJsZV9hc3Bt KHBjciwgZmFsc2UpOw0KK30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X3NldF9sMW9mZl9jZmdf c3ViX2QwKHN0cnVjdCBydHN4X3BjciAqcGNyLCBpbnQgYWN0aXZlKQ0KK3sNCisJc3RydWN0IHJ0 c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmKHBjci0+b3B0aW9uKTsNCisNCisJdTMyIGludGVycnVw dCA9IHJ0c3hfcGNpX3JlYWRsKHBjciwgUlRTWF9CSVBSKTsNCisJaW50IGNhcmRfZXhpc3QgPSAo aW50ZXJydXB0ICYgU0RfRVhJU1QpOw0KKwlpbnQgYXNwbV9MMV8xLCBhc3BtX0wxXzI7DQorCXU4 IHZhbCA9IDA7DQorDQorCWFzcG1fTDFfMSA9IHJ0c3hfY2hlY2tfZGV2X2ZsYWcocGNyLCBBU1BN X0wxXzFfRU4pOw0KKwlhc3BtX0wxXzIgPSBydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwgQVNQTV9M MV8yX0VOKTsNCisNCisJaWYgKGFjdGl2ZSkgew0KKwkJLyogUnVuLCBsYXRlbmN5OiA2MHVzICov DQorCQlpZiAoYXNwbV9MMV8xKQ0KKwkJCXZhbCA9IG9wdGlvbi0+bHRyX2wxb2ZmX3Nub296ZV9z c3B3cmdhdGU7DQorCX0gZWxzZSB7DQorCQkvKiBMMW9mZiwgbGF0ZW5jeTogMzAwdXMgKi8NCisJ CWlmIChhc3BtX0wxXzIpDQorCQkJdmFsID0gb3B0aW9uLT5sdHJfbDFvZmZfc3Nwd3JnYXRlOw0K Kwl9DQorDQorCWlmIChhc3BtX0wxXzEgfHwgYXNwbV9MMV8yKSB7DQorCQlpZiAocnRzeF9jaGVj a19kZXZfZmxhZyhwY3IsDQorCQkJCQlMVFJfTDFTU19QV1JfR0FURV9DSEVDS19DQVJEX0VOKSkg ew0KKwkJCWlmIChjYXJkX2V4aXN0KQ0KKwkJCQl2YWwgJj0gfkwxT0ZGX01CSUFTMl9FTl81MjUw Ow0KKwkJCWVsc2UNCisJCQkJdmFsIHw9IEwxT0ZGX01CSUFTMl9FTl81MjUwOw0KKwkJfQ0KKwl9 DQorCXJ0c3hfc2V0X2wxb2ZmX3N1YihwY3IsIHZhbCk7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgcGNyX29wcyBydHM1MjY0X3Bjcl9vcHMgPSB7DQorCS50dXJuX29uX2xlZCA9IHJ0czUy NjRfdHVybl9vbl9sZWQsDQorCS50dXJuX29mZl9sZWQgPSBydHM1MjY0X3R1cm5fb2ZmX2xlZCwN CisJLmV4dHJhX2luaXRfaHcgPSBydHM1MjY0X2V4dHJhX2luaXRfaHcsDQorCS5lbmFibGVfYXV0 b19ibGluayA9IHJ0czUyNjRfZW5hYmxlX2F1dG9fYmxpbmssDQorCS5kaXNhYmxlX2F1dG9fYmxp bmsgPSBydHM1MjY0X2Rpc2FibGVfYXV0b19ibGluaywNCisJLmNhcmRfcG93ZXJfb24gPSBydHM1 MjY0X2NhcmRfcG93ZXJfb24sDQorCS5jYXJkX3Bvd2VyX29mZiA9IHJ0czUyNjRfY2FyZF9wb3dl cl9vZmYsDQorCS5zd2l0Y2hfb3V0cHV0X3ZvbHRhZ2UgPSBydHM1MjY0X3N3aXRjaF9vdXRwdXRf dm9sdGFnZSwNCisJLmZvcmNlX3Bvd2VyX2Rvd24gPSBydHM1MjY0X2ZvcmNlX3Bvd2VyX2Rvd24s DQorCS5zdG9wX2NtZCA9IHJ0czUyNjRfc3RvcF9jbWQsDQorCS5zZXRfYXNwbSA9IHJ0czUyNjRf c2V0X2FzcG0sDQorCS5zZXRfbDFvZmZfY2ZnX3N1Yl9kMCA9IHJ0czUyNjRfc2V0X2wxb2ZmX2Nm Z19zdWJfZDAsDQorCS5lbmFibGVfb2NwID0gcnRzNTI2NF9lbmFibGVfb2NwLA0KKwkuZGlzYWJs ZV9vY3AgPSBydHM1MjY0X2Rpc2FibGVfb2NwLA0KKwkuaW5pdF9vY3AgPSBydHM1MjY0X2luaXRf b2NwLA0KKwkucHJvY2Vzc19vY3AgPSBydHM1MjY0X3Byb2Nlc3Nfb2NwLA0KKwkuY2xlYXJfb2Nw c3RhdCA9IHJ0czUyNjRfY2xlYXJfb2Nwc3RhdCwNCit9Ow0KKw0KK3N0YXRpYyBpbmxpbmUgdTgg ZG91YmxlX3NzY19kZXB0aCh1OCBkZXB0aCkNCit7DQorCXJldHVybiAoKGRlcHRoID4gMSkgPyAo ZGVwdGggLSAxKSA6IGRlcHRoKTsNCit9DQorDQoraW50IHJ0czUyNjRfcGNpX3N3aXRjaF9jbG9j ayhzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdW5zaWduZWQgaW50IGNhcmRfY2xvY2ssDQorCQl1OCBz c2NfZGVwdGgsIGJvb2wgaW5pdGlhbF9tb2RlLCBib29sIGRvdWJsZV9jbGssIGJvb2wgdnBjbGsp DQorew0KKwlpbnQgZXJyLCBjbGs7DQorCXUxNiBuOw0KKwl1OCBjbGtfZGl2aWRlciwgbWN1X2Nu dCwgZGl2Ow0KKwlzdGF0aWMgY29uc3QgdTggZGVwdGhbXSA9IHsNCisJCVtSVFNYX1NTQ19ERVBU SF80TV0gPSBSVFM1MjY0X1NTQ19ERVBUSF80TSwNCisJCVtSVFNYX1NTQ19ERVBUSF8yTV0gPSBS VFM1MjY0X1NTQ19ERVBUSF8yTSwNCisJCVtSVFNYX1NTQ19ERVBUSF8xTV0gPSBSVFM1MjY0X1NT Q19ERVBUSF8xTSwNCisJCVtSVFNYX1NTQ19ERVBUSF81MDBLXSA9IFJUUzUyNjRfU1NDX0RFUFRI XzUxMkssDQorCX07DQorDQorCWlmIChpbml0aWFsX21vZGUpIHsNCisJCS8qIFdlIHVzZSAyNTBr KGFyb3VuZCkgaGVyZSwgaW4gaW5pdGlhbCBzdGFnZSAqLw0KKwkJY2xrX2RpdmlkZXIgPSBTRF9D TEtfRElWSURFXzEyODsNCisJCWNhcmRfY2xvY2sgPSAzMDAwMDAwMDsNCisJfSBlbHNlIHsNCisJ CWNsa19kaXZpZGVyID0gU0RfQ0xLX0RJVklERV8wOw0KKwl9DQorCWVyciA9IHJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgU0RfQ0ZHMSwNCisJCQlTRF9DTEtfRElWSURFX01BU0ssIGNsa19k aXZpZGVyKTsNCisJaWYgKGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwljYXJkX2Nsb2Nr IC89IDEwMDAwMDA7DQorCXBjcl9kYmcocGNyLCAiU3dpdGNoIGNhcmQgY2xvY2sgdG8gJWRNSHpc biIsIGNhcmRfY2xvY2spOw0KKw0KKwljbGsgPSBjYXJkX2Nsb2NrOw0KKwlpZiAoIWluaXRpYWxf bW9kZSAmJiBkb3VibGVfY2xrKQ0KKwkJY2xrID0gY2FyZF9jbG9jayAqIDI7DQorCXBjcl9kYmco cGNyLCAiSW50ZXJuYWwgU1NDIGNsb2NrOiAlZE1IeiAoY3VyX2Nsb2NrID0gJWQpXG4iLA0KKwkJ Y2xrLCBwY3ItPmN1cl9jbG9jayk7DQorDQorCWlmIChjbGsgPT0gcGNyLT5jdXJfY2xvY2spDQor CQlyZXR1cm4gMDsNCisNCisJaWYgKHBjci0+b3BzLT5jb252X2Nsa19hbmRfZGl2X24pDQorCQlu ID0gcGNyLT5vcHMtPmNvbnZfY2xrX2FuZF9kaXZfbihjbGssIENMS19UT19ESVZfTik7DQorCWVs c2UNCisJCW4gPSBjbGsgLSA0Ow0KKwlpZiAoKGNsayA8PSA0KSB8fCAobiA+IDM5NikpDQorCQly ZXR1cm4gLUVJTlZBTDsNCisNCisJbWN1X2NudCA9IDEyNS9jbGsgKyAzOw0KKwlpZiAobWN1X2Nu dCA+IDE1KQ0KKwkJbWN1X2NudCA9IDE1Ow0KKw0KKwlkaXYgPSBDTEtfRElWXzE7DQorCXdoaWxl ICgobiA8IE1JTl9ESVZfTl9QQ1IgLSA0KSAmJiAoZGl2IDwgQ0xLX0RJVl84KSkgew0KKwkJaWYg KHBjci0+b3BzLT5jb252X2Nsa19hbmRfZGl2X24pIHsNCisJCQlpbnQgZGJsX2NsayA9IHBjci0+ b3BzLT5jb252X2Nsa19hbmRfZGl2X24obiwNCisJCQkJCURJVl9OX1RPX0NMSykgKiAyOw0KKwkJ CW4gPSBwY3ItPm9wcy0+Y29udl9jbGtfYW5kX2Rpdl9uKGRibF9jbGssDQorCQkJCQlDTEtfVE9f RElWX04pOw0KKwkJfSBlbHNlIHsNCisJCQluID0gKG4gKyA0KSAqIDIgLSA0Ow0KKwkJfQ0KKwkJ ZGl2Kys7DQorCX0NCisNCisJbiA9IChuIC8gMikgLSAxOw0KKwlwY3JfZGJnKHBjciwgIm4gPSAl ZCwgZGl2ID0gJWRcbiIsIG4sIGRpdik7DQorDQorCXNzY19kZXB0aCA9IGRlcHRoW3NzY19kZXB0 aF07DQorCWlmIChkb3VibGVfY2xrKQ0KKwkJc3NjX2RlcHRoID0gZG91YmxlX3NzY19kZXB0aChz c2NfZGVwdGgpOw0KKw0KKwlpZiAoc3NjX2RlcHRoKSB7DQorCQlpZiAoZGl2ID09IENMS19ESVZf Mikgew0KKwkJCWlmIChzc2NfZGVwdGggPiAxKQ0KKwkJCQlzc2NfZGVwdGggLT0gMTsNCisJCQll bHNlDQorCQkJCXNzY19kZXB0aCA9IFJUUzUyNjRfU1NDX0RFUFRIXzhNOw0KKwkJfSBlbHNlIGlm IChkaXYgPT0gQ0xLX0RJVl80KSB7DQorCQkJaWYgKHNzY19kZXB0aCA+IDIpDQorCQkJCXNzY19k ZXB0aCAtPSAyOw0KKwkJCWVsc2UNCisJCQkJc3NjX2RlcHRoID0gUlRTNTI2NF9TU0NfREVQVEhf OE07DQorCQl9IGVsc2UgaWYgKGRpdiA9PSBDTEtfRElWXzgpIHsNCisJCQlpZiAoc3NjX2RlcHRo ID4gMykNCisJCQkJc3NjX2RlcHRoIC09IDM7DQorCQkJZWxzZQ0KKwkJCQlzc2NfZGVwdGggPSBS VFM1MjY0X1NTQ19ERVBUSF84TTsNCisJCX0NCisJfSBlbHNlIHsNCisJCXNzY19kZXB0aCA9IDA7 DQorCX0NCisJcGNyX2RiZyhwY3IsICJzc2NfZGVwdGggPSAlZFxuIiwgc3NjX2RlcHRoKTsNCisN CisJcnRzeF9wY2lfaW5pdF9jbWQocGNyKTsNCisJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRF X1JFR19DTUQsIENMS19DVEwsDQorCQkJCUNIQU5HRV9DTEssIENIQU5HRV9DTEspOw0KKwlydHN4 X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgQ0xLX0RJViwNCisJCQkweEZGLCAoZGl2 IDw8IDQpIHwgbWN1X2NudCk7DQorCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01E LCBTU0NfQ1RMMSwgU1NDX1JTVEIsIDApOw0KKwlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVf UkVHX0NNRCwgU1NDX0NUTDIsDQorCQkJU1NDX0RFUFRIX01BU0ssIHNzY19kZXB0aCk7DQorCXJ0 c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfRElWX05fMCwgMHhGRiwgbik7 DQorDQorCWlmIChpc192ZXJzaW9uKHBjciwgMHg1MjY0LCBJQ19WRVJfQSkpIHsNCisJCXJ0c3hf cGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JTVEIsIDApOw0K KwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFJUUzUyNjRfQ0FSRF9DTEtf U1JDMiwNCisJCQlSVFM1MjY0X1JFR19CSUdfS1ZDT19BLCAwKTsNCisJfSBlbHNlIHsNCisJCXJ0 c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JTVEIsIFNT Q19SU1RCKTsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBSVFM1MjY0 X1NZU19EVU1NWV8xLA0KKwkJCVJUUzUyNjRfUkVHX0JJR19LVkNPLCAwKTsNCisJfQ0KKw0KKwlp ZiAodnBjbGspIHsNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTRF9W UENMSzBfQ1RMLA0KKwkJCQlQSEFTRV9OT1RfUkVTRVQsIDApOw0KKwkJcnRzeF9wY2lfYWRkX2Nt ZChwY3IsIFdSSVRFX1JFR19DTUQsIFNEX1ZQQ0xLMV9DVEwsDQorCQkJCVBIQVNFX05PVF9SRVNF VCwgMCk7DQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0RfVlBDTEsw X0NUTCwNCisJCQkJUEhBU0VfTk9UX1JFU0VULCBQSEFTRV9OT1RfUkVTRVQpOw0KKwkJcnRzeF9w Y2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNEX1ZQQ0xLMV9DVEwsDQorCQkJCVBIQVNF X05PVF9SRVNFVCwgUEhBU0VfTk9UX1JFU0VUKTsNCisJfQ0KKw0KKwllcnIgPSBydHN4X3BjaV9z ZW5kX2NtZChwY3IsIDIwMDApOw0KKwlpZiAoZXJyIDwgMCkNCisJCXJldHVybiBlcnI7DQorDQor CS8qIFdhaXQgU1NDIGNsb2NrIHN0YWJsZSAqLw0KKwl1ZGVsYXkoU1NDX0NMT0NLX1NUQUJMRV9X QUlUKTsNCisJZXJyID0gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDTEtfQ1RMLCBDSEFO R0VfQ0xLLCAwKTsNCisJaWYgKGVyciA8IDApDQorCQlyZXR1cm4gZXJyOw0KKw0KKwlwY3ItPmN1 cl9jbG9jayA9IGNsazsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgcnRzNTI2NF9pbml0X3Bh cmFtcyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAq b3B0aW9uID0gJnBjci0+b3B0aW9uOw0KKwlzdHJ1Y3QgcnRzeF9od19wYXJhbSAqaHdfcGFyYW0g PSAmcGNyLT5od19wYXJhbTsNCisJdTggdmFsOw0KKw0KKwlwY3ItPmV4dHJhX2NhcHMgPSBFWFRS QV9DQVBTX1NEX1NEUjUwIHwgRVhUUkFfQ0FQU19TRF9TRFIxMDQ7DQorCXBjci0+ZXh0cmFfY2Fw cyB8PSBFWFRSQV9DQVBTX05PX01NQzsNCisJcnRzeF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIFJU UzUyNjRfRldfU1RBVFVTLCAmdmFsKTsNCisJaWYgKCEodmFsICYgUlRTNTI2NF9FWFBSRVNTX0xJ TktfRkFJTF9NQVNLKSkNCisJCXBjci0+ZXh0cmFfY2FwcyB8PSBFWFRSQV9DQVBTX1NEX0VYUFJF U1M7DQorCXBjci0+bnVtX3Nsb3RzID0gMTsNCisJcGNyLT5vcHMgPSAmcnRzNTI2NF9wY3Jfb3Bz Ow0KKw0KKwlwY3ItPmZsYWdzID0gMDsNCisJcGNyLT5jYXJkX2RyaXZlX3NlbCA9IFJUU1hfQ0FS RF9EUklWRV9ERUZBVUxUOw0KKwlwY3ItPnNkMzBfZHJpdmVfc2VsXzF2OCA9IDB4MDA7DQorCXBj ci0+c2QzMF9kcml2ZV9zZWxfM3YzID0gMHgwMDsNCisJcGNyLT5hc3BtX2VuID0gQVNQTV9MMV9F TjsNCisJcGNyLT5hc3BtX21vZGUgPSBBU1BNX01PREVfUkVHOw0KKwlwY3ItPnR4X2luaXRpYWxf cGhhc2UgPSBTRVRfQ0xPQ0tfUEhBU0UoMjQsIDI0LCAxMSk7DQorCXBjci0+cnhfaW5pdGlhbF9w aGFzZSA9IFNFVF9DTE9DS19QSEFTRSgyNCwgNiwgNSk7DQorDQorCXBjci0+aWNfdmVyc2lvbiA9 IHJ0czUyNjRfZ2V0X2ljX3ZlcnNpb24ocGNyKTsNCisJcGNyLT5zZF9wdWxsX2N0bF9lbmFibGVf dGJsID0gcnRzNTI2NF9zZF9wdWxsX2N0bF9lbmFibGVfdGJsOw0KKwlwY3ItPnNkX3B1bGxfY3Rs X2Rpc2FibGVfdGJsID0gcnRzNTI2NF9zZF9wdWxsX2N0bF9kaXNhYmxlX3RibDsNCisNCisJcGNy LT5yZWdfcG1fY3RybDMgPSBSVFM1MjY0X0FVVE9MT0FEX0NGRzM7DQorDQorCW9wdGlvbi0+ZGV2 X2ZsYWdzID0gKExUUl9MMVNTX1BXUl9HQVRFX0NIRUNLX0NBUkRfRU4NCisJCQkJfCBMVFJfTDFT U19QV1JfR0FURV9FTik7DQorCW9wdGlvbi0+bHRyX2VuID0gdHJ1ZTsNCisNCisJLyogaW5pdCBs YXRlbmN5IG9mIGFjdGl2ZSwgaWRsZSwgTDFPRkYgdG8gNjB1cywgMzAwdXMsIDNtcyAqLw0KKwlv cHRpb24tPmx0cl9hY3RpdmVfbGF0ZW5jeSA9IExUUl9BQ1RJVkVfTEFURU5DWV9ERUY7DQorCW9w dGlvbi0+bHRyX2lkbGVfbGF0ZW5jeSA9IExUUl9JRExFX0xBVEVOQ1lfREVGOw0KKwlvcHRpb24t Pmx0cl9sMW9mZl9sYXRlbmN5ID0gTFRSX0wxT0ZGX0xBVEVOQ1lfREVGOw0KKwlvcHRpb24tPmwx X3Nub296ZV9kZWxheSA9IEwxX1NOT09aRV9ERUxBWV9ERUY7DQorCW9wdGlvbi0+bHRyX2wxb2Zm X3NzcHdyZ2F0ZSA9IDB4N0Y7DQorCW9wdGlvbi0+bHRyX2wxb2ZmX3Nub296ZV9zc3B3cmdhdGUg PSAweDc4Ow0KKw0KKwlvcHRpb24tPm9jcF9lbiA9IDE7DQorCWh3X3BhcmFtLT5pbnRlcnJ1cHRf ZW4gfD0gKFNEX09DX0lOVF9FTiB8IFNEX09WUF9JTlRfRU4pOw0KKwlod19wYXJhbS0+b2NwX2ds aXRjaCA9ICBTRF9PQ1BfR0xJVENIXzgwMFUgfCBTRFZJT19PQ1BfR0xJVENIXzgwMFU7DQorCW9w dGlvbi0+c2RfODAwbUFfb2NwX3RoZCA9ICBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMTUwOw0KK30N CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmggYi9kcml2ZXJz L21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwMDAwMDAuLmUzY2JiZjJmZTFhNA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9t aXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5oDQpAQCAtMCwwICsxLDI3OCBAQA0KKy8qIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKiBEcml2ZXIgZm9yIFJlYWx0ZWsg UENJLUV4cHJlc3MgY2FyZCByZWFkZXINCisgKg0KKyAqIENvcHlyaWdodChjKSAyMDE4LTIwMTkg UmVhbHRlayBTZW1pY29uZHVjdG9yIENvcnAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorICoNCisg KiBBdXRob3I6DQorICogICBSaWNreSBXdSA8cmlja3lfd3VAcmVhbHRlay5jb20+DQorICovDQor I2lmbmRlZiBSVFM1MjY0X0gNCisjZGVmaW5lIFJUUzUyNjRfSA0KKw0KKy8qTmV3IGFkZCovDQor I2RlZmluZSBydHM1MjY0X3ZlbmRvcl9zZXR0aW5nX3ZhbGlkKHJlZykJKChyZWcpICYgMHgwMTAw MDApDQorI2RlZmluZSBydHM1MjY0X3JlZ190b19hc3BtKHJlZykgXA0KKwkoKCh+KHJlZykgPj4g MjgpICYgMHgwMikgfCAoKChyZWcpID4+IDI4KSAmIDB4MDEpKQ0KKyNkZWZpbmUgcnRzNTI2NF9y ZWdfY2hlY2tfcmV2ZXJzZV9zb2NrZXQocmVnKQkoKHJlZykgJiAweDA0KQ0KKyNkZWZpbmUgcnRz NTI2NF9yZWdfdG9fc2QzMF9kcml2ZV9zZWxfMXY4KHJlZykJKCgocmVnKSA+PiAyMikgJiAweDAz KQ0KKyNkZWZpbmUgcnRzNTI2NF9yZWdfdG9fc2QzMF9kcml2ZV9zZWxfM3YzKHJlZykJKCgocmVn KSA+PiAxNikgJiAweDAzKQ0KKyNkZWZpbmUgcnRzNTI2NF9yZWdfdG9fcnRkMyhyZWcpCQkoKHJl ZykgJiAweDA4KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkcwCQkweEZGN0INCisj ZGVmaW5lIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMQkJMHhGRjdDDQorI2RlZmluZSBSVFM1MjY0X0FV VE9MT0FEX0NGRzMJCTB4RkY3RQ0KKyNkZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkc0CQkweEZG N0YNCisjZGVmaW5lIFJUUzUyNjRfRk9SQ0VfUFJTTlRfTE9XCQkoMSA8PCA2KQ0KKyNkZWZpbmUg UlRTNTI2NF9BVVhfQ0xLXzE2TV9FTgkJKDEgPDwgNSkNCisjZGVmaW5lIFJUUzUyNjRfRl9ISUdI X1JDX01BU0sJCSgxIDw8IDQpDQorI2RlZmluZSBSVFM1MjY0X0ZfSElHSF9SQ18xXzZNCQkoMSA8 PCA0KQ0KKyNkZWZpbmUgUlRTNTI2NF9GX0hJR0hfUkNfNDAwSwkJKDAgPDwgNCkNCisNCisvKiBT U0NfQ1RMMiAweEZDMTIgKi8NCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIX01BU0sJCTB4MDcN CisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIX0RJU0FMQkUJMHgwMA0KKyNkZWZpbmUgUlRTNTI2 NF9TU0NfREVQVEhfOE0JCTB4MDENCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzRNCQkweDAy DQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF8yTQkJMHgwMw0KKyNkZWZpbmUgUlRTNTI2NF9T U0NfREVQVEhfMU0JCTB4MDQNCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzUxMksJCTB4MDUN CisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRIXzI1NksJCTB4MDYNCisjZGVmaW5lIFJUUzUyNjRf U1NDX0RFUFRIXzEyOEsJCTB4MDcNCisNCisjZGVmaW5lIFJUUzUyNjRfQ0FSRF9DTEtfU1JDMgkJ MHhGQzJGDQorI2RlZmluZSBSVFM1MjY0X1JFR19CSUdfS1ZDT19BCQkweDIwDQorDQorLyogZWZ1 c2UgY29udHJvbCByZWdpc3RlciovDQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX0NUTAkJMHhGQzMw DQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX0VOQUJMRQkJMHg4MA0KKy8qIEVGVVNFX01PREU6IDA9 UkVBRCAxPVBST0dSQU0gKi8NCisjZGVmaW5lIFJUUzUyNjRfRUZVU0VfTU9ERV9NQVNLCQkweDQw DQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX1BST0dSQU0JCTB4NDANCisNCisjZGVmaW5lIFJUUzUy NjRfRUZVU0VfQUREUgkJMHhGQzMxDQorI2RlZmluZQlSVFM1MjY0X0VGVVNFX0FERFJfTUFTSwkJ MHgzRg0KKw0KKyNkZWZpbmUgUlRTNTI2NF9FRlVTRV9XUklURV9EQVRBCTB4RkMzMg0KKyNkZWZp bmUgUlRTNTI2NF9FRlVTRV9SRUFEX0RBVEEJCTB4RkMzNA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9T WVNfRFVNTVlfMQkJMHhGQzM1DQorI2RlZmluZSBSVFM1MjY0X1JFR19CSUdfS1ZDTwkJMHgwNA0K Kw0KKy8qIERNQUNUTCAweEZFMkMgKi8NCisjZGVmaW5lIFJUUzUyNjRfRE1BX1BBQ0tfU0laRV9N QVNLCTB4NzANCisNCisjZGVmaW5lIFJUUzUyNjRfRldfQ0ZHMQkJCTB4RkY1NQ0KKyNkZWZpbmUg UlRTNTI2NF9TWVNfQ0xLX1NFTF9NQ1VfQ0xLCSgweDAxPDw3KQ0KKyNkZWZpbmUgUlRTNTI2NF9D UkNfQ0xLX1NFTF9NQ1VfQ0xLCSgweDAxPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9GQUtFX01DVV9D TE9DS19HQVRJTkcJKDB4MDE8PDUpDQorI2RlZmluZSBSVFM1MjY0X01DVV9CVVNfU0VMX01BU0sJ KDB4MDE8PDQpDQorDQorLyogRlcgc3RhdHVzIHJlZ2lzdGVyICovDQorI2RlZmluZSBSVFM1MjY0 X0ZXX1NUQVRVUwkJMHhGRjU2DQorI2RlZmluZSBSVFM1MjY0X0VYUFJFU1NfTElOS19GQUlMX01B U0sJKDB4MDE8PDcpDQorDQorLyogRlcgY29udHJvbCByZWdpc3RlciAqLw0KKyNkZWZpbmUgUlRT NTI2NF9GV19DVEwJCQkweEZGNUYNCisjZGVmaW5lIFJUUzUyNjRfSU5GT1JNX1JURDNfQ09MRAko MHgwMTw8NSkNCisNCisjZGVmaW5lIFJUUzUyNjRfUkVHX0ZQRENUTAkJMHhGRjYwDQorDQorI2Rl ZmluZSBSVFM1MjY0X1JFR19MRE8xMl9DRkcJCTB4RkY2RQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8x Ml9TUl9NQVNLCQkoMHgwMzw8NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfMV8wX01TCQko MHgwMzw8NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfMF81X01TCQkoMHgwMjw8NikNCisj ZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfMF8yXzVfTVMJKDB4MDE8PDYpDQorI2RlZmluZSBSVFM1 MjY0X0xETzEyX1NSXzBfMF9NUwkJKDB4MDA8PDYpDQorI2RlZmluZSBSVFM1MjY0X0xETzEyX1ZP X1RVTkVfTUFTSwkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTE1CQkoMHgwMzw8 MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTIwCQkoMHgwNDw8MSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMTJfMTI1CQkoMHgwNTw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTMwCQkoMHgw Njw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfMTM1CQkoMHgwNzw8MSkNCisNCisvKiBMRE8g Y29udHJvbCByZWdpc3RlciAqLw0KKyNkZWZpbmUgUlRTNTI2NF9DQVJEX1BXUl9DVEwJCTB4RkQ1 MA0KKyNkZWZpbmUgUlRTNTI2NF9TRF9DTEtfSVNPCQkoMHgwMTw8NykNCisjZGVmaW5lIFJUUzUy NjRfUEFEX1NEX0RBVF9GV19DVFJMCSgweDAxPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9QVVBEQwkJ CSgweDAxPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9TRF9DTURfSVNPCQkoMHgwMTw8NCkNCisNCisj ZGVmaW5lIFJUUzUyNjRfT0NQX1ZERDNfQ1RMCQkweEZEODkNCisjZGVmaW5lIFNEX1ZERDNfREVU RUNUX0VOCQkweDA4DQorI2RlZmluZSBTRF9WREQzX09DUF9JTlRfRU4JCTB4MDQNCisjZGVmaW5l IFNEX1ZERDNfT0NQX0lOVF9DTFIJCTB4MDINCisjZGVmaW5lIFNEX1ZERDNfT0NfQ0xSCQkJMHgw MQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9PQ1BfVkREM19TVFMJCTB4RkQ4QQ0KKyNkZWZpbmUgU0Rf VkREM19PQ1BfREVURUNUCQkweDA4DQorI2RlZmluZSBTRF9WREQzX09DX05PVwkJCTB4MDQNCisj ZGVmaW5lIFNEX1ZERDNfT0NfRVZFUgkJCTB4MDINCisNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0NU TAkJCTB4RkQ4RA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfVElNRV9NQVNLCQkweEYwDQorI2RlZmlu ZSBSVFM1MjY0X09WUF9USU1FX0RGVAkJMHg1MA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfREVURUNU X0VOCQkweDA4DQorI2RlZmluZSBSVFM1MjY0X09WUF9JTlRfRU4JCTB4MDQNCisjZGVmaW5lIFJU UzUyNjRfT1ZQX0lOVF9DTFIJCTB4MDINCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0NMUgkJCTB4MDEN CisNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX1NUUwkJCTB4RkQ4RQ0KKyNkZWZpbmUgUlRTNTI2NF9P VlBfR0xUQ0hfVElNRV9NQVNLCTB4RjANCisjZGVmaW5lIFJUUzUyNjRfT1ZQX0dMVENIX1RJTUVf REZUCTB4NTANCisjZGVmaW5lIFJUUzUyNjRfVk9WRVJfREVUCQkweDA4DQorI2RlZmluZSBSVFM1 MjY0X09WUF9OT1cJCQkweDA0DQorI2RlZmluZSBSVFM1MjY0X09WUF9FVkVSCQkweDAyDQorDQor I2RlZmluZSBSVFM1MjY0X0NNRF9PRV9TVEFSVF9FQVJMWQkJMHhGRENCDQorI2RlZmluZSBSVFM1 MjY0X0NNRF9PRV9FQVJMWV9MRUFWRQkJMHgwOA0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFS TFlfQ1lDTEVfTUFTSwkJMHgwNg0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfNENZQ0xF CQkweDA2DQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV8zQ1lDTEUJCTB4MDQNCisjZGVm aW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZXzJDWUNMRQkJMHgwMg0KKyNkZWZpbmUgUlRTNTI2NF9D TURfT0VfRUFSTFlfMUNZQ0xFCQkweDAwDQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV9F TgkJCTB4MDENCisNCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX1NUQVJUX0VBUkxZCQkweEZEQ0MN CisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZX0xFQVZFCQkweDA4DQorI2RlZmluZSBSVFM1 MjY0X0RBVF9PRV9FQVJMWV9DWUNMRV9NQVNLCQkweDA2DQorI2RlZmluZSBSVFM1MjY0X0RBVF9P RV9FQVJMWV80Q1lDTEUJCTB4MDYNCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZXzNDWUNM RQkJMHgwNA0KKyNkZWZpbmUgUlRTNTI2NF9EQVRfT0VfRUFSTFlfMkNZQ0xFCQkweDAyDQorI2Rl ZmluZSBSVFM1MjY0X0RBVF9PRV9FQVJMWV8xQ1lDTEUJCTB4MDANCisjZGVmaW5lIFJUUzUyNjRf REFUX09FX0VBUkxZX0VOCQkJMHgwMQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMjMzMzE4X1BP V19DVEwJMHhGRjcwDQorI2RlZmluZSBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMTgJKDB4MDM8PDYp DQorI2RlZmluZSBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMThfREZUCSgweDAyPDw2KQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8zMzE4X1BPV0VST04JCSgweDAxPDwzKQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zX1BPV0VST04JCSgweDAxPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX1BPV0VST04JCSgw eDAxPDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX1BPV0VST04JCSgweDAxPDwwKQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE9fUE9XRVJPTl9NQVNLCSgweDBGPDwwKQ0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9EVjMzMThfQ0ZHCQkweEZGNzENCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4X1RVTkVfTUFTSwko MHgwNzw8NCkNCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4XzE4CQkoMHgwMjw8NCkNCisjZGVmaW5l IFJUUzUyNjRfRFYzMzE4XzE5CQkoMHgwNDw8NCkNCisjZGVmaW5lIFJUUzUyNjRfRFYzMzE4XzMz CQkoMHgwNzw8NCkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9DRkcwCQkweEZGNzINCisjZGVm aW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhEX01BU0sJKDB4MDcgPDwgNSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMV9PQ1BfRU4JCSgweDAxIDw8IDQpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX0xN VF9USERfTUFTSwkoMHgwMyA8PCAyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9MTVRfRU4J CSgweDAxIDw8IDEpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF84NTAJKDB4MDA8 PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF85NTAJKDB4MDE8PDUpDQorI2RlZmlu ZSBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMDUwCSgweDAyPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8xX09DUF9USERfMTEwMAkoMHgwMzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhE XzExNTAJKDB4MDQ8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMjAwCSgweDA1 PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfMTMwMAkoMHgwNjw8NSkNCisjZGVm aW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhEXzEzNTAJKDB4MDc8PDUpDQorDQorI2RlZmluZSBSVFM1 MjY0X0xETzFfTE1UX1RIRF8xNzAwCSgweDAwPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX0xN VF9USERfMTgwMAkoMHgwMTw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9MTVRfVEhEXzE5MDAJ KDB4MDI8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfTE1UX1RIRF8yMDAwCSgweDAzPDwyKQ0K Kw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX0NGRzEJCTB4RkY3Mw0KKyNkZWZpbmUgUlRTNTI2NF9M RE8xX1RVTkVfTUFTSwkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfMTgJCQkoMHgw NTw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV8zMwkJCSgweDA3PDwxKQ0KKyNkZWZpbmUgUlRT NTI2NF9MRE8xX1BXRF9NQVNLCQkoMHgwMTw8MCkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9D RkcwCQkweEZGNzQNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEX01BU0sJKDB4MDc8PDUp DQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX0VOCQkoMHgwMTw8NCkNCisjZGVmaW5lIFJUUzUy NjRfTERPMl9PQ1BfTE1UX1RIRF9NQVNLCSgweDAzPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8y X09DUF9MTVRfRU4JCSgweDAxPDwxKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERf NzUwCSgweDAwPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfODUwCSgweDAxPDw1 KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfOTAwCSgweDAyPDw1KQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8yX09DUF9USERfOTUwCSgweDAzPDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8y X09DUF9USERfMTA1MAkoMHgwNDw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzEx MDAJKDB4MDU8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF8xMTUwCSgweDA2PDw1 KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfMTIwMAkoMHgwNzw8NSkNCisNCisjZGVm aW5lIFJUUzUyNjRfTERPMl9MTVRfVEhEXzE3MDAJKDB4MDA8PDIpDQorI2RlZmluZSBSVFM1MjY0 X0xETzJfTE1UX1RIRF8xODAwCSgweDAxPDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX0xNVF9U SERfMTkwMAkoMHgwMjw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9MTVRfVEhEXzIwMDAJKDB4 MDM8PDIpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzJfQ0ZHMQkJMHhGRjc1DQorI2RlZmluZSBS VFM1MjY0X0xETzJfVFVORV9NQVNLCQkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl8x OAkJCSgweDAyPDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yXzE4NQkJKDB4MDM8PDEpDQorI2Rl ZmluZSBSVFM1MjY0X0xETzJfMTkJCQkoMHgwNDw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl8x OTUJCSgweDA1PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yXzMzCQkJKDB4MDc8PDEpDQorI2Rl ZmluZSBSVFM1MjY0X0xETzJfUFdEX01BU0sJCSgweDAxPDwwKQ0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8zX0NGRzAJCTB4RkY3Ng0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX09DUF9USERfTUFTSwko MHgwNzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfRU4JCSgweDAxPDw0KQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8zX09DUF9MTVRfVEhEX01BU0sJKDB4MDM8PDIpDQorI2RlZmluZSBSVFM1 MjY0X0xETzNfT0NQX0xNVF9FTgkJKDB4MDE8PDEpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzNf T0NQX1RIRF82MTAJKDB4MDA8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF82MzAJ KDB4MDE8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF82NzAJKDB4MDI8PDUpDQor I2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF83MTAJKDB4MDM8PDUpDQorI2RlZmluZSBSVFM1 MjY0X0xETzNfT0NQX1RIRF83NTAJKDB4MDQ8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQ X1RIRF83NzAJKDB4MDU8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF84MTAJKDB4 MDY8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX1RIRF84NTAJKDB4MDc8PDUpDQorDQor I2RlZmluZSBSVFM1MjY0X0xETzNfTE1UX1RIRF8xMjAwCSgweDAwPDwyKQ0KKyNkZWZpbmUgUlRT NTI2NF9MRE8zX0xNVF9USERfMTMwMAkoMHgwMTw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPM19M TVRfVEhEXzE0MDAJKDB4MDI8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfTE1UX1RIRF8xNTAw CSgweDAzPDwyKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX0NGRzEJCTB4RkY3Nw0KKyNkZWZp bmUgUlRTNTI2NF9MRE8zX1RVTkVfTUFTSwkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xE TzNfMTIJCQkoMHgwMjw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM18xMjUJCSgweDAzPDwxKQ0K KyNkZWZpbmUgUlRTNTI2NF9MRE8zXzEzCQkJKDB4MDQ8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xE TzNfMTM1CQkoMHgwNTw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM18zMwkJCSgweDA3PDwxKQ0K KyNkZWZpbmUgUlRTNTI2NF9MRE8zX1BXRF9NQVNLCQkoMHgwMTw8MCkNCisNCisjZGVmaW5lIFJU UzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwJMHhGRjc4DQorI2RlZmluZSBGT1JDRV9QTV9DT05UUk9M CQkweDIwDQorI2RlZmluZSBGT1JDRV9QTV9WQUxVRQkJCTB4MTANCisjZGVmaW5lIFJFR19FRlVT RV9CWVBBU1MJCTB4MDgNCisjZGVmaW5lIFJFR19FRlVTRV9QT1IJCQkweDA0DQorI2RlZmluZSBS RUdfRUZVU0VfUE9XRVJfTUFTSwkJMHgwMw0KKyNkZWZpbmUgUkVHX0VGVVNFX1BPV0VST04JCTB4 MDMNCisjZGVmaW5lIFJFR19FRlVTRV9QT1dFUk9GRgkJMHgwMA0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9QV1JfQ1VUCQkJMHhGRjgxDQorI2RlZmluZSBSVFM1MjY0X0NGR19NRU1fUEQJCTB4RjANCisN CisjZGVmaW5lIFJUUzUyNjRfT1ZQX0RFVAkJCTB4RkY4QQ0KKyNkZWZpbmUgUlRTNTI2NF9QT1df VkRFVAkJMHgwNA0KKyNkZWZpbmUgUlRTNTI2NF9UVU5FX1ZST1ZfTUFTSwkJMHgwMw0KKyNkZWZp bmUgUlRTNTI2NF9UVU5FX1ZST1ZfMlYJCTB4MDMNCisjZGVmaW5lIFJUUzUyNjRfVFVORV9WUk9W XzFWOAkJMHgwMg0KKyNkZWZpbmUgUlRTNTI2NF9UVU5FX1ZST1ZfMVY2CQkweDAxDQorI2RlZmlu ZSBSVFM1MjY0X1RVTkVfVlJPVl8xVjQJCTB4MDANCisNCisjZGVmaW5lIFJUUzUyNjRfQ0tNVVhf TUJJQVNfUFdSCQkweEZGOEINCisjZGVmaW5lIFJUUzUyNjRfTk9OX1hUQUxfU0VMCQkweDgwDQor I2RlZmluZSBSVFM1MjY0X1BPV19DS01VWAkJMHg0MA0KKyNkZWZpbmUgUlRTNTI2NF9MVkRfTUFT SwkJMHgwNA0KKyNkZWZpbmUgUlRTNTI2NF9QT1dfUFNXX01BU0sJCTB4MDMNCisjZGVmaW5lIFJU UzUyNjRfUE9XX1BTV19ERlQJCTB4MDMNCisNCisvKiBTaW5nbGUgTFVOLCBzdXBwb3J0IFNEL1NE IEVYUFJFU1MgKi8NCisjZGVmaW5lIERFRkFVTFRfU0lOR0xFCQkwDQorI2RlZmluZSBTRF9MVU4J CQkxDQorI2RlZmluZSBTRF9FWFBSRVNTX0xVTgkJMg0KKw0KK2ludCBydHM1MjY0X3BjaV9zd2l0 Y2hfY2xvY2soc3RydWN0IHJ0c3hfcGNyICpwY3IsIHVuc2lnbmVkIGludCBjYXJkX2Nsb2NrLA0K KwkJdTggc3NjX2RlcHRoLCBib29sIGluaXRpYWxfbW9kZSwgYm9vbCBkb3VibGVfY2xrLCBib29s IHZwY2xrKTsNCisNCisjZW5kaWYgLyogUlRTNTI2NF9IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuYyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0 c3hfcGNyLmMNCmluZGV4IGEzMDc1MWFkMzczMy4uMWE2NDM2NDcwMGViIDEwMDY0NA0KLS0tIGEv ZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuYw0KKysrIGIvZHJpdmVycy9taXNjL2Nh cmRyZWFkZXIvcnRzeF9wY3IuYw0KQEAgLTI2LDYgKzI2LDcgQEANCiAjaW5jbHVkZSAicnRzeF9w Y3IuaCINCiAjaW5jbHVkZSAicnRzNTI2MS5oIg0KICNpbmNsdWRlICJydHM1MjI4LmgiDQorI2lu Y2x1ZGUgInJ0czUyNjQuaCINCiANCiBzdGF0aWMgYm9vbCBtc2lfZW4gPSB0cnVlOw0KIG1vZHVs ZV9wYXJhbShtc2lfZW4sIGJvb2wsIFNfSVJVR08gfCBTX0lXVVNSKTsNCkBAIC01NCw2ICs1NSw3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydHN4X3BjaV9pZHNbXSA9IHsN CiAJeyBQQ0lfREVWSUNFKDB4MTBFQywgMHg1MjYwKSwgUENJX0NMQVNTX09USEVSUyA8PCAxNiwg MHhGRjAwMDAgfSwNCiAJeyBQQ0lfREVWSUNFKDB4MTBFQywgMHg1MjYxKSwgUENJX0NMQVNTX09U SEVSUyA8PCAxNiwgMHhGRjAwMDAgfSwNCiAJeyBQQ0lfREVWSUNFKDB4MTBFQywgMHg1MjI4KSwg UENJX0NMQVNTX09USEVSUyA8PCAxNiwgMHhGRjAwMDAgfSwNCisJeyBQQ0lfREVWSUNFKDB4MTBF QywgMHg1MjY0KSwgUENJX0NMQVNTX09USEVSUyA8PCAxNiwgMHhGRjAwMDAgfSwNCiAJeyAwLCB9 DQogfTsNCiANCkBAIC03MTQsNiArNzE2LDkgQEAgaW50IHJ0c3hfcGNpX3N3aXRjaF9jbG9jayhz dHJ1Y3QgcnRzeF9wY3IgKnBjciwgdW5zaWduZWQgaW50IGNhcmRfY2xvY2ssDQogCWlmIChQQ0lf UElEKHBjcikgPT0gUElEXzUyMjgpDQogCQlyZXR1cm4gcnRzNTIyOF9wY2lfc3dpdGNoX2Nsb2Nr KHBjciwgY2FyZF9jbG9jaywNCiAJCQkJc3NjX2RlcHRoLCBpbml0aWFsX21vZGUsIGRvdWJsZV9j bGssIHZwY2xrKTsNCisJaWYgKFBDSV9QSUQocGNyKSA9PSBQSURfNTI2NCkNCisJCXJldHVybiBy dHM1MjY0X3BjaV9zd2l0Y2hfY2xvY2socGNyLCBjYXJkX2Nsb2NrLA0KKwkJCQlzc2NfZGVwdGgs IGluaXRpYWxfbW9kZSwgZG91YmxlX2NsaywgdnBjbGspOw0KIA0KIAlpZiAoaW5pdGlhbF9tb2Rl KSB7DQogCQkvKiBXZSB1c2UgMjUwayhhcm91bmQpIGhlcmUsIGluIGluaXRpYWwgc3RhZ2UgKi8N CkBAIC05ODcsNyArOTkyLDggQEAgc3RhdGljIGlycXJldHVybl90IHJ0c3hfcGNpX2lzcihpbnQg aXJxLCB2b2lkICpkZXZfaWQpDQogDQogCWludF9yZWcgJj0gKHBjci0+YmllciB8IDB4N0ZGRkZG KTsNCiANCi0JaWYgKGludF9yZWcgJiBTRF9PQ19JTlQpDQorCWlmICgoaW50X3JlZyAmIFNEX09D X0lOVCkgfHwNCisJCQkoKGludF9yZWcgJiBTRF9PVlBfSU5UKSAmJiAoUENJX1BJRChwY3IpID09 IFBJRF81MjY0KSkpDQogCQlydHN4X3BjaV9wcm9jZXNzX29jcF9pbnRlcnJ1cHQocGNyKTsNCiAN CiAJaWYgKGludF9yZWcgJiBTRF9JTlQpIHsNCkBAIC0xMTU5LDcgKzExNjUsOSBAQCB2b2lkIHJ0 c3hfcGNpX2VuYWJsZV9vb2JzX3BvbGxpbmcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQogew0KIAl1 MTYgdmFsOw0KIA0KLQlpZiAoKFBDSV9QSUQocGNyKSAhPSBQSURfNTI1QSkgJiYgKFBDSV9QSUQo cGNyKSAhPSBQSURfNTI2MCkpIHsNCisJaWYgKChQQ0lfUElEKHBjcikgIT0gUElEXzUyNUEpICYm DQorCQkoUENJX1BJRChwY3IpICE9IFBJRF81MjYwKSAmJg0KKwkJKFBDSV9QSUQocGNyKSAhPSBQ SURfNTI2NCkpIHsNCiAJCXJ0c3hfcGNpX3JlYWRfcGh5X3JlZ2lzdGVyKHBjciwgMHgwMSwgJnZh bCk7DQogCQl2YWwgfD0gMTw8OTsNCiAJCXJ0c3hfcGNpX3dyaXRlX3BoeV9yZWdpc3RlcihwY3Is IDB4MDEsIHZhbCk7DQpAQCAtMTE3NSw3ICsxMTgzLDkgQEAgdm9pZCBydHN4X3BjaV9kaXNhYmxl X29vYnNfcG9sbGluZyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCiB7DQogCXUxNiB2YWw7DQogDQot CWlmICgoUENJX1BJRChwY3IpICE9IFBJRF81MjVBKSAmJiAoUENJX1BJRChwY3IpICE9IFBJRF81 MjYwKSkgew0KKwlpZiAoKFBDSV9QSUQocGNyKSAhPSBQSURfNTI1QSkgJiYNCisJCShQQ0lfUElE KHBjcikgIT0gUElEXzUyNjApICYmDQorCQkoUENJX1BJRChwY3IpICE9IFBJRF81MjY0KSkgew0K IAkJcnRzeF9wY2lfcmVhZF9waHlfcmVnaXN0ZXIocGNyLCAweDAxLCAmdmFsKTsNCiAJCXZhbCAm PSB+KDE8PDkpOw0KIAkJcnRzeF9wY2lfd3JpdGVfcGh5X3JlZ2lzdGVyKHBjciwgMHgwMSwgdmFs KTsNCkBAIC0xMjI2LDcgKzEyMzYsNyBAQCBzdGF0aWMgaW50IHJ0c3hfcGNpX2luaXRfaHcoc3Ry dWN0IHJ0c3hfcGNyICpwY3IpDQogCXJ0c3hfcGNpX2VuYWJsZV9idXNfaW50KHBjcik7DQogDQog CS8qIFBvd2VyIG9uIFNTQyAqLw0KLQlpZiAoUENJX1BJRChwY3IpID09IFBJRF81MjYxKSB7DQor CWlmICgoUENJX1BJRChwY3IpID09IFBJRF81MjYxKSB8fCAoUENJX1BJRChwY3IpID09IFBJRF81 MjY0KSkgew0KIAkJLyogR2F0aW5nIHJlYWwgbWN1IGNsb2NrICovDQogCQllcnIgPSBydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjFfRldfQ0ZHMSwNCiAJCQlSVFM1MjYxX01DVV9D TE9DS19HQVRJTkcsIDApOw0KQEAgLTEyNzAsNiArMTI4MCwxMSBAQCBzdGF0aWMgaW50IHJ0c3hf cGNpX2luaXRfaHcoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQogCWVsc2UgaWYgKFBDSV9QSUQocGNy KSA9PSBQSURfNTIyOCkNCiAJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBT U0NfQ1RMMiwgMHhGRiwNCiAJCQlSVFM1MjI4X1NTQ19ERVBUSF8yTSk7DQorCWVsc2UgaWYgKGlz X3ZlcnNpb24ocGNyLCAweDUyNjQsIElDX1ZFUl9BKSkNCisJCXJ0c3hfcGNpX2FkZF9jbWQocGNy LCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMSwgU1NDX1JTVEIsIDApOw0KKwllbHNlIGlmIChQQ0lf UElEKHBjcikgPT0gUElEXzUyNjQpDQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVH X0NNRCwgU1NDX0NUTDIsIDB4RkYsDQorCQkJUlRTNTI2NF9TU0NfREVQVEhfMk0pOw0KIAllbHNl DQogCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU1NDX0NUTDIsIDB4RkYs IDB4MTIpOw0KIA0KQEAgLTEzMDUsNiArMTMyMCw3IEBAIHN0YXRpYyBpbnQgcnRzeF9wY2lfaW5p dF9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCiAJY2FzZSBQSURfNTI2MDoNCiAJY2FzZSBQSURf NTI2MToNCiAJY2FzZSBQSURfNTIyODoNCisJY2FzZSBQSURfNTI2NDoNCiAJCXJ0c3hfcGNpX3dy aXRlX3JlZ2lzdGVyKHBjciwgUE1fQ0xLX0ZPUkNFX0NUTCwgMSwgMSk7DQogCQlicmVhazsNCiAJ ZGVmYXVsdDoNCkBAIC0xNDA0LDYgKzE0MjAsMTAgQEAgc3RhdGljIGludCBydHN4X3BjaV9pbml0 X2NoaXAoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQogCWNhc2UgMHg1MjI4Og0KIAkJcnRzNTIyOF9p bml0X3BhcmFtcyhwY3IpOw0KIAkJYnJlYWs7DQorDQorCWNhc2UgMHg1MjY0Og0KKwkJcnRzNTI2 NF9pbml0X3BhcmFtcyhwY3IpOw0KKwkJYnJlYWs7DQogCX0NCiANCiAJcGNyX2RiZyhwY3IsICJQ SUQ6IDB4JTA0eCwgSUMgdmVyc2lvbjogMHglMDJ4XG4iLA0KQEAgLTE1NDQsNyArMTU2NCw3IEBA IHN0YXRpYyBpbnQgcnRzeF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBjaWRldiwNCiAJcGNy LT5wY2kgPSBwY2lkZXY7DQogCWRldl9zZXRfZHJ2ZGF0YSgmcGNpZGV2LT5kZXYsIGhhbmRsZSk7 DQogDQotCWlmIChDSEtfUENJX1BJRChwY3IsIDB4NTI1QSkpDQorCWlmICgoQ0hLX1BDSV9QSUQo cGNyLCAweDUyNUEpKSB8fCAoQ0hLX1BDSV9QSUQocGNyLCAweDUyNjQpKSkNCiAJCWJhciA9IDE7 DQogCWxlbiA9IHBjaV9yZXNvdXJjZV9sZW4ocGNpZGV2LCBiYXIpOw0KIAliYXNlID0gcGNpX3Jl c291cmNlX3N0YXJ0KHBjaWRldiwgYmFyKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2Fy ZHJlYWRlci9ydHN4X3Bjci5oIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuaA0K aW5kZXggMzdkMWYzMTZhZTE3Li45MjE1ZDY2ZGUwMGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21p c2MvY2FyZHJlYWRlci9ydHN4X3Bjci5oDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9y dHN4X3Bjci5oDQpAQCAtNzQsNiArNzQsNyBAQCB2b2lkIHJ0bDg0MTFiX2luaXRfcGFyYW1zKHN0 cnVjdCBydHN4X3BjciAqcGNyKTsNCiB2b2lkIHJ0czUyNjBfaW5pdF9wYXJhbXMoc3RydWN0IHJ0 c3hfcGNyICpwY3IpOw0KIHZvaWQgcnRzNTI2MV9pbml0X3BhcmFtcyhzdHJ1Y3QgcnRzeF9wY3Ig KnBjcik7DQogdm9pZCBydHM1MjI4X2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNyKTsN Cit2b2lkIHJ0czUyNjRfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpOw0KIA0KIHN0 YXRpYyBpbmxpbmUgdTggbWFwX3NkX2RyaXZlKGludCBpZHgpDQogew0KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lfc2RtbWMuYyBiL2RyaXZlcnMvbW1jL2hvc3QvcnRzeF9w Y2lfc2RtbWMuYw0KaW5kZXggODdkNzg0MzJhMWUwLi43ZGZlN2M0ZTAwNzcgMTAwNjQ0DQotLS0g YS9kcml2ZXJzL21tYy9ob3N0L3J0c3hfcGNpX3NkbW1jLmMNCisrKyBiL2RyaXZlcnMvbW1jL2hv c3QvcnRzeF9wY2lfc2RtbWMuYw0KQEAgLTcsNiArNyw3IEBADQogICogICBXZWkgV0FORyA8d2Vp X3dhbmdAcmVhbHNpbC5jb20uY24+DQogICovDQogDQorI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0K ICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KICNp bmNsdWRlIDxsaW51eC9oaWdobWVtLmg+DQpAQCAtOTQ3LDcgKzk0OCw3IEBAIHN0YXRpYyBpbnQg c2RfcG93ZXJfb24oc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0LCB1bnNpZ25lZCBjaGFy IHBvd2VyX21vZGUpDQogCS8qIHNlbmQgYXQgbGVhc3QgNzQgY2xvY2tzICovDQogCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgU0RfQlVTX1NUQVQsIFNEX0NMS19UT0dHTEVfRU4sIFNEX0NM S19UT0dHTEVfRU4pOw0KIA0KLQlpZiAoUENJX1BJRChwY3IpID09IFBJRF81MjYxKSB7DQorCWlm ICgoUENJX1BJRChwY3IpID09IFBJRF81MjYxKSB8fCAoUENJX1BJRChwY3IpID09IFBJRF81MjY0 KSkgew0KIAkJLyoNCiAJCSAqIElmIHRlc3QgbW9kZSBpcyBzZXQgc3dpdGNoIHRvIFNEIEV4cHJl c3MgbWFuZGF0b3JpbHksDQogCQkgKiB0aGlzIGlzIG9ubHkgZm9yIGZhY3RvcnkgdGVzdGluZy4N CkBAIC0xMzY0LDYgKzEzNjUsMTQgQEAgc3RhdGljIGludCBzZG1tY19pbml0X3NkX2V4cHJlc3Mo c3RydWN0IG1tY19ob3N0ICptbWMsIHN0cnVjdCBtbWNfaW9zICppb3MpDQogCXN0cnVjdCByZWFs dGVrX3BjaV9zZG1tYyAqaG9zdCA9IG1tY19wcml2KG1tYyk7DQogCXN0cnVjdCBydHN4X3BjciAq cGNyID0gaG9zdC0+cGNyOw0KIA0KKwlpZiAoUENJX1BJRChwY3IpID09IFBJRF81MjY0KSB7DQor CQlwY2llX2NhcGFiaWxpdHlfY2xlYXJfYW5kX3NldF93b3JkKHBjci0+cGNpLCBQQ0lfRVhQX0xO S0NUTDIsDQorCQkJCVBDSV9FWFBfTE5LQ1RMMl9UTFMsIFBDSV9FWFBfTE5LQ1RMMl9UTFNfMl81 R1QpOw0KKwkJcGNpX3dyaXRlX2NvbmZpZ19ieXRlKHBjci0+cGNpLCAweDgwZSwgMHgwMik7DQor CQlwY2llX2NhcGFiaWxpdHlfY2xlYXJfYW5kX3NldF93b3JkKHBjci0+cGNpLCBQQ0lfRVhQX0xO S0NUTDIsDQorCQkJCVBDSV9FWFBfTE5LQ1RMMl9UTFMsIFBDSV9FWFBfTE5LQ1RMMl9UTFNfNV8w R1QpOw0KKwl9DQorDQogCS8qIFNldCByZWxpbmtfdGltZSBmb3IgY2hhbmdpbmcgdG8gUENJZSBj YXJkICovDQogCXJlbGlua190aW1lID0gMHg4RkZGOw0KIA0KQEAgLTEzNzksNiArMTM4OCwxMiBA QCBzdGF0aWMgaW50IHNkbW1jX2luaXRfc2RfZXhwcmVzcyhzdHJ1Y3QgbW1jX2hvc3QgKm1tYywg c3RydWN0IG1tY19pb3MgKmlvcykNCiAJaWYgKHBjci0+b3BzLT5kaXNhYmxlX2F1dG9fYmxpbmsp DQogCQlwY3ItPm9wcy0+ZGlzYWJsZV9hdXRvX2JsaW5rKHBjcik7DQogDQorCWlmIChQQ0lfUElE KHBjcikgPT0gUElEXzUyNjQpIHsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRT NTI2NF9BVVRPTE9BRF9DRkcyLA0KKwkJCVJUUzUyNjRfQ0hJUF9SU1RfTl9TRUwsIFJUUzUyNjRf Q0hJUF9SU1RfTl9TRUwpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBHUElPX0NU TCwgMHgwMiwgMHgwMCk7DQorCX0NCisNCiAJLyogRm9yIFBDSWUvTlZNZSBtb2RlIGNhbid0IGVu dGVyIGRlbGluayBpc3N1ZSAqLw0KIAlwY3ItPmh3X3BhcmFtLmludGVycnVwdF9lbiAmPSB+KFNE X0lOVF9FTik7DQogCXJ0c3hfcGNpX3dyaXRlbChwY3IsIFJUU1hfQklFUiwgcGNyLT5od19wYXJh bS5pbnRlcnJ1cHRfZW4pOw0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcnRzeF9wY2kuaCBi L2luY2x1ZGUvbGludXgvcnRzeF9wY2kuaA0KaW5kZXggNTM0MDM4ZDk2MmU0Li40NjEyZWYwOWEw YzcgMTAwNjQ0DQotLS0gYS9pbmNsdWRlL2xpbnV4L3J0c3hfcGNpLmgNCisrKyBiL2luY2x1ZGUv bGludXgvcnRzeF9wY2kuaA0KQEAgLTYwLDYgKzYwLDcgQEANCiAjZGVmaW5lICAgU0RfRVhJU1QJ CQkoMSA8PCAxNikNCiAjZGVmaW5lICAgREVMSU5LX0lOVAkJCUdQSU8wX0lOVA0KICNkZWZpbmUg ICBNU19PQ19JTlQJCQkoMSA8PCAyMykNCisjZGVmaW5lICAgU0RfT1ZQX0lOVAkJKDEgPDwgMjMp DQogI2RlZmluZSAgIFNEX09DX0lOVAkJCSgxIDw8IDIyKQ0KIA0KICNkZWZpbmUgQ0FSRF9JTlQJ CShYRF9JTlQgfCBNU19JTlQgfCBTRF9JTlQpDQpAQCAtODAsNiArODEsNyBAQA0KICNkZWZpbmUg ICBPQ19JTlRfRU4JCQkoMSA8PCAyMykNCiAjZGVmaW5lICAgREVMSU5LX0lOVF9FTgkJCUdQSU8w X0lOVF9FTg0KICNkZWZpbmUgICBNU19PQ19JTlRfRU4JCQkoMSA8PCAyMykNCisjZGVmaW5lICAg U0RfT1ZQX0lOVF9FTgkJCSgxIDw8IDIzKQ0KICNkZWZpbmUgICBTRF9PQ19JTlRfRU4JCQkoMSA8 PCAyMikNCiANCiAjZGVmaW5lIFJUU1hfRFVNX1JFRwkJCTB4MUMNCkBAIC01ODMsNiArNTg1LDcg QEANCiAjZGVmaW5lICAgT0JGRl9ESVNBQkxFCQkJMHgwMA0KIA0KICNkZWZpbmUgQ0RSRVNVTUVD VEwJCQkweEZFNTINCisjZGVmaW5lIENER1cJCQkJMHhGRTUzDQogI2RlZmluZSBXQUtFX1NFTF9D VEwJCQkweEZFNTQNCiAjZGVmaW5lIFBDTEtfQ1RMCQkJMHhGRTU1DQogI2RlZmluZSAgIFBDTEtf TU9ERV9TRUwJCQkweDIwDQpAQCAtNzY0LDYgKzc2Nyw5IEBADQogI2RlZmluZSAgIFNEX1ZJT19M RE9fMVY4CQkweDQwDQogI2RlZmluZSAgIFNEX1ZJT19MRE9fM1YzCQkweDcwDQogDQorI2RlZmlu ZSBSVFM1MjY0X0FVVE9MT0FEX0NGRzIJCTB4RkY3RA0KKyNkZWZpbmUgUlRTNTI2NF9DSElQX1JT VF9OX1NFTAkJKDEgPDwgNikNCisNCiAjZGVmaW5lIFJUUzUyNjBfQVVUT0xPQURfQ0ZHNAkJMHhG RjdGDQogI2RlZmluZSAgIFJUUzUyNjBfTUlNT19ESVNBQkxFCQkweDhBDQogLypSVFM1MjYxKi8N CkBAIC0xMjYxLDYgKzEyNjcsNyBAQCBzdHJ1Y3QgcnRzeF9wY3Igew0KIAl1OAkJCQlkbWFfZXJy b3JfY291bnQ7DQogCXU4CQkJb2NwX3N0YXQ7DQogCXU4CQkJb2NwX3N0YXQyOw0KKwl1OAkJCW92 cF9zdGF0Ow0KIAl1OAkJCXJ0ZDNfZW47DQogfTsNCiANCkBAIC0xMjcxLDYgKzEyNzgsNyBAQCBz dHJ1Y3QgcnRzeF9wY3Igew0KICNkZWZpbmUgUElEXzUyNjAJMHg1MjYwDQogI2RlZmluZSBQSURf NTI2MQkweDUyNjENCiAjZGVmaW5lIFBJRF81MjI4CTB4NTIyOA0KKyNkZWZpbmUgUElEXzUyNjQJ MHg1MjY0DQogDQogI2RlZmluZSBDSEtfUENJX1BJRChwY3IsIHBpZCkJCSgocGNyKS0+cGNpLT5k ZXZpY2UgPT0gKHBpZCkpDQogI2RlZmluZSBQQ0lfVklEKHBjcikJCQkoKHBjciktPnBjaS0+dmVu ZG9yKQ0KLS0gDQoyLjI1LjENCg==