Received: by 2002:a05:7412:d8a:b0:e2:908c:2ebd with SMTP id b10csp3675342rdg; Wed, 18 Oct 2023 02:43:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFXY8sR8a/ZxPozRcxftkZMVWNOEGv8gKNHe0yDJawrlGC4esnRGLqrAF1zth7Rv5T70mxa X-Received: by 2002:a17:90a:17e1:b0:27c:f715:144 with SMTP id q88-20020a17090a17e100b0027cf7150144mr4537487pja.19.1697622230797; Wed, 18 Oct 2023 02:43:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697622230; cv=none; d=google.com; s=arc-20160816; b=vL3S5z8WwsMGNaxdvUNo/efo2QxJjPO4KAiIC0nYB0VFkJ+pqs06DprV0Z95La2hbK 5NXTm/i5aUCU9U1xmiGorZ8EANo9pXziNGSkGFvQ3gQUNJb6rbsc5qeMNbOC5ndQWj01 QLkJ9ttJbJFwxMUS9N9INO1ofpzWcfjQDToS1NpKqgVtZazg77MqhvkAQapmeLxGFor0 LA3Ka7WwutRjpsL1ge4lCG9LtTENGAsaeLXC+imu1sWG/VhdEPTE5dCZ1ndr5+kaBoQh HSA24aA65eCRI1RKTJENZGQhKN6oFd/MugwpWbrlXsBd5S5IWkOhI9xhkJNEPhh37UQV tYWg== 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=DvA0INfD8TCqvEkpjFSNUFh8xdIehd7cE6D5WRoFYjc=; fh=xx2KLNZHIGx5RNT9lvCpmF0qvq5TPrydVC91arqcHCQ=; b=IMUtNYoh2nIPbMQ2hg4Yr0gEU0aSF6Ft3Bx4J3jUEe7Hb/duH6Nj+zfM+LCL2YWGsm h0j9xA/QkVeu4ynGxfhwBLDVMhK8Qc2AKazKLw/Ms90x6b/7Wte2FeGT+NZsLBFQQtj+ 5jU2j7Y5srIWJwIhPrb+m0GuSAZsrVZWePuQL7peX9j+oMNE8Xfeg9YhF56TrkAidnhU jyJENrnPJ7aXcclta4Vw45unSlNUhAIjqQ/G6wGIMKr0TMEgfk6wYYlNu9a2zrMNCtLF 6CI+C8HnygNFuF76OX/83vr2ECzdY4JE/3PDXbKfrqkZ/X0FVYcicv8cWeG/CFewXnD6 7Tdw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id x5-20020a654145000000b005aa192820d8si1681907pgp.590.2023.10.18.02.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Oct 2023 02:43:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 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 morse.vger.email (Postfix) with ESMTP id F087580FFD9F; Wed, 18 Oct 2023 02:43:45 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229774AbjJRJnA (ORCPT + 99 others); Wed, 18 Oct 2023 05:43:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229671AbjJRJm7 (ORCPT ); Wed, 18 Oct 2023 05:42:59 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B9DBDFD; Wed, 18 Oct 2023 02:42:52 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39I9faBfB1376617, 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 39I9faBfB1376617 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 18 Oct 2023 17:41:37 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) 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 17:41:36 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXMBS01.realtek.com.tw (172.21.6.94) 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 17:41:36 +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 17:41:36 +0800 From: Ricky WU To: "arnd@arndb.de" , "gregkh@linuxfoundation.org" , "ulf.hansson@linaro.org" , Ricky WU , "frank.li@vivo.com" , "yangyingliang@huawei.com" , "u.kleine-koenig@pengutronix.de" , "linux-kernel@vger.kernel.org" , "linux-mmc@vger.kernel.org" Subject: [PATCH v2] misc: rtsx: add to support new card reader rts5264 Thread-Topic: [PATCH v2] misc: rtsx: add to support new card reader rts5264 Thread-Index: AQHaAaauSWBIwu7gzUyiTuL51C/CAw== Date: Wed, 18 Oct 2023 09:41:35 +0000 Message-ID: <40fa5bc3a602463fab0d0982903925a6@realtek.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.102] x-kse-serverinfo: RTEXMBS01.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 morse.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 (morse.vger.email [0.0.0.0]); Wed, 18 Oct 2023 02:43:46 -0700 (PDT) DQpJbiBvcmRlciB0byBzdXBwb3J0IG5ldyBjaGlwIHJ0czUyNjQsIHRoZSBkZWZpbml0aW9ucyBv ZiBzb21lIGludGVybmFsDQpyZWdpc3RlcnMgYW5kIHdvcmtmbG93IGhhdmUgdG8gYmUgbW9kaWZp ZWQuDQpBZGRlZCBydHM1MjY0LmMgcnRzNTI2NC5oIGZvciBpbmRlcGVuZGVudCBmdW5jdGlvbnMg b2YgdGhlIG5ldyBjaGlwIHJ0czUyNjQNCg0KU2lnbmVkLW9mZi1ieTogUmlja3kgV3UgPHJpY2t5 X3d1QHJlYWx0ZWsuY29tPg0KLS0tDQp2MjogcmVtb3ZlZCBpYyB2ZXJzaW9uIGNoZWNrDQotLS0N CiBkcml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmlsZSAgIHwgICAyICstDQogZHJpdmVycy9t aXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5jICB8IDg4NiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KIGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjQuaCAgfCAyNzggKysrKysrKysr DQogZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuYyB8ICAzMCArLQ0KIGRyaXZlcnMv bWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmggfCAgIDEgKw0KIGRyaXZlcnMvbW1jL2hvc3QvcnRz eF9wY2lfc2RtbWMuYyAgfCAgMTcgKy0NCiBpbmNsdWRlL2xpbnV4L3J0c3hfcGNpLmggICAgICAg ICAgIHwgICA4ICsNCiA3IGZpbGVzIGNoYW5nZWQsIDEyMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxl dGlvbnMoLSkNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRz NTI2NC5jDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUy NjQuaA0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvTWFrZWZpbGUgYi9k cml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmlsZQ0KaW5kZXggODk1MTI4NDc1ZDgzLi4xZTFi Y2E2YjBiMjIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9NYWtlZmlsZQ0K KysrIGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvTWFrZWZpbGUNCkBAIC0xLDUgKzEsNSBAQA0K ICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQ0KIG9iai0kKENPTkZJR19N SVNDX0FMQ09SX1BDSSkJKz0gYWxjb3JfcGNpLm8NCiBvYmotJChDT05GSUdfTUlTQ19SVFNYX1BD SSkJKz0gcnRzeF9wY2kubw0KLXJ0c3hfcGNpLW9ianMgOj0gcnRzeF9wY3IubyBydHM1MjA5Lm8g cnRzNTIyOS5vIHJ0bDg0MTEubyBydHM1MjI3Lm8gcnRzNTI0OS5vIHJ0czUyNjAubyBydHM1MjYx Lm8gcnRzNTIyOC5vDQorcnRzeF9wY2ktb2JqcyA6PSBydHN4X3Bjci5vIHJ0czUyMDkubyBydHM1 MjI5Lm8gcnRsODQxMS5vIHJ0czUyMjcubyBydHM1MjQ5Lm8gcnRzNTI2MC5vIHJ0czUyNjEubyBy dHM1MjI4Lm8gcnRzNTI2NC5vDQogb2JqLSQoQ09ORklHX01JU0NfUlRTWF9VU0IpCSs9IHJ0c3hf dXNiLm8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMgYi9k cml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQpp bmRleCAwMDAwMDAwMDAwMDAuLjhiZTRlZDdkOWQ0Nw0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJp dmVycy9taXNjL2NhcmRyZWFkZXIvcnRzNTI2NC5jDQpAQCAtMCwwICsxLDg4NiBAQA0KKy8vIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9yLWxhdGVyDQorLyogRHJpdmVyIGZvciBS ZWFsdGVrIFBDSS1FeHByZXNzIGNhcmQgcmVhZGVyDQorICoNCisgKiBDb3B5cmlnaHQoYykgMjAw OS0yMDEzIFJlYWx0ZWsgU2VtaWNvbmR1Y3RvciBDb3JwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0K KyAqDQorICogQXV0aG9yOg0KKyAqICAgUmlja3kgV3UgPHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0K KyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvZGVs YXkuaD4NCisjaW5jbHVkZSA8bGludXgvcnRzeF9wY2kuaD4NCisNCisjaW5jbHVkZSAicnRzNTI2 NC5oIg0KKyNpbmNsdWRlICJydHN4X3Bjci5oIg0KKw0KK3N0YXRpYyB1OCBydHM1MjY0X2dldF9p Y192ZXJzaW9uKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJdTggdmFsOw0KKw0KKwlydHN4 X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgRFVNTVlfUkVHX1JFU0VUXzAsICZ2YWwpOw0KKwlyZXR1 cm4gdmFsICYgMHgwRjsNCit9DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9maWxsX2RyaXZpbmco c3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4IHZvbHRhZ2UpDQorew0KKwl1OCBkcml2aW5nXzN2M1s0 XVszXSA9IHsNCisJCXsweDg4LCAweDg4LCAweDg4fSwNCisJCXsweDc3LCAweDc3LCAweDc3fSwN CisJCXsweDk5LCAweDk5LCAweDk5fSwNCisJCXsweDY2LCAweDY2LCAweDY2fSwNCisJfTsNCisJ dTggZHJpdmluZ18xdjhbNF1bM10gPSB7DQorCQl7MHg5OSwgMHg5OSwgMHg5OX0sDQorCQl7MHg3 NywgMHg3NywgMHg3N30sDQorCQl7MHhCQiwgMHhCQiwgMHhCQn0sDQorCQl7MHg2NSwgMHg2NSwg MHg2NX0sDQorCX07DQorCXU4ICgqZHJpdmluZylbM10sIGRyaXZlX3NlbDsNCisNCisJaWYgKHZv bHRhZ2UgPT0gT1VUUFVUXzNWMykgew0KKwkJZHJpdmluZyA9IGRyaXZpbmdfM3YzOw0KKwkJZHJp dmVfc2VsID0gcGNyLT5zZDMwX2RyaXZlX3NlbF8zdjM7DQorCX0gZWxzZSB7DQorCQlkcml2aW5n ID0gZHJpdmluZ18xdjg7DQorCQlkcml2ZV9zZWwgPSBwY3ItPnNkMzBfZHJpdmVfc2VsXzF2ODsN CisJfQ0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEMzBfQ0xLX0RSSVZFX1NF TCwNCisJCQkweEZGLCBkcml2aW5nW2RyaXZlX3NlbF1bMF0pOw0KKwlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFNEMzBfQ01EX0RSSVZFX1NFTCwNCisJCQkweEZGLCBkcml2aW5nW2RyaXZl X3NlbF1bMV0pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEMzBfREFUX0RSSVZF X1NFTCwNCisJCQkweEZGLCBkcml2aW5nW2RyaXZlX3NlbF1bMl0pOw0KK30NCisNCitzdGF0aWMg dm9pZCBydHM1MjY0X2ZvcmNlX3Bvd2VyX2Rvd24oc3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4IHBt X3N0YXRlLCBib29sIHJ1bnRpbWUpDQorew0KKwkvKiBTZXQgcmVsaW5rX3RpbWUgdG8gMCAqLw0K KwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFVVE9MT0FEX0NGR19CQVNFICsgMSwgTUFT S184X0JJVF9ERUYsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFVVE9MT0FE X0NGR19CQVNFICsgMiwgTUFTS184X0JJVF9ERUYsIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIEFVVE9MT0FEX0NGR19CQVNFICsgMywNCisJCQkJUkVMSU5LX1RJTUVfTUFTSywg MCk7DQorDQorCWlmIChwbV9zdGF0ZSA9PSBIT1NUX0VOVEVSX1MzKQ0KKwkJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywNCisJCQkJCUQzX0RFTElOS19NT0RF X0VOLCBEM19ERUxJTktfTU9ERV9FTik7DQorDQorCWlmICghcnVudGltZSkgew0KKwkJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzEsDQorCQkJCUNEX1JF U1VNRV9FTl9NQVNLLCAwKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgcGNyLT5y ZWdfcG1fY3RybDMsIDB4MDEsIDB4MDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBSVFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJCQlGT1JDRV9QTV9DT05UUk9MIHwgRk9S Q0VfUE1fVkFMVUUsIEZPUkNFX1BNX0NPTlRST0wpOw0KKwl9IGVsc2Ugew0KKwkJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJCQlGT1JD RV9QTV9DT05UUk9MIHwgRk9SQ0VfUE1fVkFMVUUsIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgwMSwgMHgwMSk7DQorCQlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLA0KKwkJCQkJRDNfREVMSU5LX01P REVfRU4sIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0ZXX0NU TCwNCisJCQkJUlRTNTI2NF9JTkZPUk1fUlREM19DT0xELCBSVFM1MjY0X0lORk9STV9SVEQzX0NP TEQpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NG RzQsDQorCQkJCVJUUzUyNjRfRk9SQ0VfUFJTTlRfTE9XLCBSVFM1MjY0X0ZPUkNFX1BSU05UX0xP Vyk7DQorCX0NCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19G UERDVEwsDQorCQlTU0NfUE9XRVJfRE9XTiwgU1NDX1BPV0VSX0RPV04pOw0KK30NCisNCitzdGF0 aWMgaW50IHJ0czUyNjRfZW5hYmxlX2F1dG9fYmxpbmsoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQor ew0KKwlyZXR1cm4gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBPTFRfTEVEX0NUTCwNCisJ CUxFRF9TSElORV9NQVNLLCBMRURfU0hJTkVfRU4pOw0KK30NCisNCitzdGF0aWMgaW50IHJ0czUy NjRfZGlzYWJsZV9hdXRvX2JsaW5rKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJcmV0dXJu IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgT0xUX0xFRF9DVEwsDQorCQlMRURfU0hJTkVf TUFTSywgTEVEX1NISU5FX0RJU0FCTEUpOw0KK30NCisNCitzdGF0aWMgaW50IHJ0czUyNjRfdHVy bl9vbl9sZWQoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwlyZXR1cm4gcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBHUElPX0NUTCwNCisJCTB4MDIsIDB4MDIpOw0KK30NCisNCitzdGF0 aWMgaW50IHJ0czUyNjRfdHVybl9vZmZfbGVkKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0KK3sNCisJ cmV0dXJuIHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgR1BJT19DVEwsDQorCQkweDAyLCAw eDAwKTsNCit9DQorDQorLyogU0QgUHVsbCBDb250cm9sIEVuYWJsZToNCisgKiAgICAgU0RfREFU WzM6MF0gPT0+IHB1bGwgdXANCisgKiAgICAgU0RfQ0QgICAgICAgPT0+IHB1bGwgdXANCisgKiAg ICAgU0RfV1AgICAgICAgPT0+IHB1bGwgdXANCisgKiAgICAgU0RfQ01EICAgICAgPT0+IHB1bGwg dXANCisgKiAgICAgU0RfQ0xLICAgICAgPT0+IHB1bGwgZG93bg0KKyAqLw0KK3N0YXRpYyBjb25z dCB1MzIgcnRzNTI2NF9zZF9wdWxsX2N0bF9lbmFibGVfdGJsW10gPSB7DQorCVJUU1hfUkVHX1BB SVIoQ0FSRF9QVUxMX0NUTDIsIDB4QUEpLA0KKwlSVFNYX1JFR19QQUlSKENBUkRfUFVMTF9DVEwz LCAweEU5KSwNCisJMCwNCit9Ow0KKw0KKy8qIFNEIFB1bGwgQ29udHJvbCBEaXNhYmxlOg0KKyAq ICAgICBTRF9EQVRbMzowXSA9PT4gcHVsbCBkb3duDQorICogICAgIFNEX0NEICAgICAgID09PiBw dWxsIHVwDQorICogICAgIFNEX1dQICAgICAgID09PiBwdWxsIGRvd24NCisgKiAgICAgU0RfQ01E ICAgICAgPT0+IHB1bGwgZG93bg0KKyAqICAgICBTRF9DTEsgICAgICA9PT4gcHVsbCBkb3duDQor ICovDQorc3RhdGljIGNvbnN0IHUzMiBydHM1MjY0X3NkX3B1bGxfY3RsX2Rpc2FibGVfdGJsW10g PSB7DQorCVJUU1hfUkVHX1BBSVIoQ0FSRF9QVUxMX0NUTDIsIDB4NTUpLA0KKwlSVFNYX1JFR19Q QUlSKENBUkRfUFVMTF9DVEwzLCAweEQ1KSwNCisJMCwNCit9Ow0KKw0KK3N0YXRpYyBpbnQgcnRz NTI2NF9zZF9zZXRfc2FtcGxlX3B1c2hfdGltaW5nX3NkMzAoc3RydWN0IHJ0c3hfcGNyICpwY3Ip DQorew0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX0NGRzEsIFNEX01PREVfU0VM RUNUX01BU0sNCisJCXwgU0RfQVNZTkNfRklGT19OT1RfUlNULCBTRF8zMF9NT0RFIHwgU0RfQVNZ TkNfRklGT19OT1RfUlNUKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDTEtfQ1RM LCBDTEtfTE9XX0ZSRVEsIENMS19MT1dfRlJFUSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgQ0FSRF9DTEtfU09VUkNFLCAweEZGLA0KKwkJCUNSQ19WQVJfQ0xLMCB8IFNEMzBfRklY X0NMSyB8IFNBTVBMRV9WQVJfQ0xLMSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg Q0xLX0NUTCwgQ0xLX0xPV19GUkVRLCAwKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRp YyBpbnQgcnRzNTI2NF9jYXJkX3Bvd2VyX29uKHN0cnVjdCBydHN4X3BjciAqcGNyLCBpbnQgY2Fy ZCkNCit7DQorCXN0cnVjdCBydHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJnBjci0+b3B0aW9uOw0K Kw0KKwlpZiAob3B0aW9uLT5vY3BfZW4pDQorCQlydHN4X3BjaV9lbmFibGVfb2NwKHBjcik7DQor DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX0NSQ19EVU1NWV8wLA0KKwkJQ0ZH X1NEX1BPV19BVVRPX1BELCBDRkdfU0RfUE9XX0FVVE9fUEQpOw0KKw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMV9DRkcxLA0KKwkJCVJUUzUyNjRfTERPMV9UVU5F X01BU0ssIFJUUzUyNjRfTERPMV8zMyk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg UlRTNTI2NF9MRE8xMjMzMzE4X1BPV19DVEwsDQorCQkJUlRTNTI2NF9MRE8xX1BPV0VST04sIFJU UzUyNjRfTERPMV9QT1dFUk9OKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQlSVFM1MjY0X0xETzMzMThfUE9XRVJPTiwgUlRT NTI2NF9MRE8zMzE4X1BPV0VST04pOw0KKw0KKwltc2xlZXAoMjApOw0KKw0KKwlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIENBUkRfT0UsIFNEX09VVFBVVF9FTiwgU0RfT1VUUFVUX0VOKTsN CisNCisJLyogSW5pdGlhbGl6ZSBTRF9DRkcxIHJlZ2lzdGVyICovDQorCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgU0RfQ0ZHMSwgMHhGRiwNCisJCQlTRF9DTEtfRElWSURFXzEyOCB8IFNE XzIwX01PREUgfCBTRF9CVVNfV0lEVEhfMUJJVCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgU0RfU0FNUExFX1BPSU5UX0NUTCwNCisJCQkweEZGLCBTRDIwX1JYX1BPU19FREdFKTsN CisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9QVVNIX1BPSU5UX0NUTCwgMHhGRiwg MCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0FSRF9TVE9QLCBTRF9TVE9QIHwg U0RfQ0xSX0VSUiwNCisJCQlTRF9TVE9QIHwgU0RfQ0xSX0VSUik7DQorDQorCS8qIFJlc2V0IFNE X0NGRzMgcmVnaXN0ZXIgKi8NCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcz LCBTRDMwX0NMS19FTkRfRU4sIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJF R19TRF9TVE9QX1NEQ0xLX0NGRywNCisJCQlTRDMwX0NMS19TVE9QX0NGR19FTiB8IFNEMzBfQ0xL X1NUT1BfQ0ZHMSB8DQorCQkJU0QzMF9DTEtfU1RPUF9DRkcwLCAwKTsNCisNCisJaWYgKHBjci0+ ZXh0cmFfY2FwcyAmIEVYVFJBX0NBUFNfU0RfU0RSNTAgfHwNCisJICAgIHBjci0+ZXh0cmFfY2Fw cyAmIEVYVFJBX0NBUFNfU0RfU0RSMTA0KQ0KKwkJcnRzNTI2NF9zZF9zZXRfc2FtcGxlX3B1c2hf dGltaW5nX3NkMzAocGNyKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcnRz NTI2NF9zd2l0Y2hfb3V0cHV0X3ZvbHRhZ2Uoc3RydWN0IHJ0c3hfcGNyICpwY3IsIHU4IHZvbHRh Z2UpDQorew0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQ0FSRF9QV1Jf Q1RMLA0KKwkJCVJUUzUyNjRfUFVQREMsIFJUUzUyNjRfUFVQREMpOw0KKw0KKwlzd2l0Y2ggKHZv bHRhZ2UpIHsNCisJY2FzZSBPVVRQVVRfM1YzOg0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTCwNCisJCQkJUlRTNTI2NF9UVU5FX1JFRl9M RE8zMzE4LCBSVFM1MjY0X1RVTkVfUkVGX0xETzMzMTgpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVn aXN0ZXIocGNyLCBSVFM1MjY0X0RWMzMxOF9DRkcsDQorCQkJCVJUUzUyNjRfRFYzMzE4X1RVTkVf TUFTSywgUlRTNTI2NF9EVjMzMThfMzMpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBTRF9QQURfQ1RMLA0KKwkJCQlTRF9JT19VU0lOR18xVjgsIDApOw0KKwkJYnJlYWs7DQorCWNh c2UgT1VUUFVUXzFWODoNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9M RE8xMjMzMzE4X1BPV19DVEwsDQorCQkJCVJUUzUyNjRfVFVORV9SRUZfTERPMzMxOCwgUlRTNTI2 NF9UVU5FX1JFRl9MRE8zMzE4X0RGVCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3Is IFJUUzUyNjRfRFYzMzE4X0NGRywNCisJCQkJUlRTNTI2NF9EVjMzMThfVFVORV9NQVNLLCBSVFM1 MjY0X0RWMzMxOF8xOCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFNEX1BBRF9D VEwsDQorCQkJCVNEX0lPX1VTSU5HXzFWOCwgU0RfSU9fVVNJTkdfMVY4KTsNCisJCWJyZWFrOw0K KwlkZWZhdWx0Og0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJLyogc2V0IHBhZCBkcml2 ZSAqLw0KKwlydHM1MjY0X2ZpbGxfZHJpdmluZyhwY3IsIHZvbHRhZ2UpOw0KKw0KKwlyZXR1cm4g MDsNCit9DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9zdG9wX2NtZChzdHJ1Y3QgcnRzeF9wY3Ig KnBjcikNCit7DQorCXJ0c3hfcGNpX3dyaXRlbChwY3IsIFJUU1hfSENCQ1RMUiwgU1RPUF9DTUQp Ow0KKwlydHN4X3BjaV93cml0ZWwocGNyLCBSVFNYX0hEQkNUTFIsIFNUT1BfRE1BKTsNCisJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBETUFDVEwsIERNQV9SU1QsIERNQV9SU1QpOw0KKwly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJCQ1RMLCBSQl9GTFVTSCwgUkJfRkxVU0gpOw0K K30NCisNCitzdGF0aWMgdm9pZCBydHM1MjY0X2NhcmRfYmVmb3JlX3Bvd2VyX29mZihzdHJ1Y3Qg cnRzeF9wY3IgKnBjcikNCit7DQorCXJ0czUyNjRfc3RvcF9jbWQocGNyKTsNCisJcnRzNTI2NF9z d2l0Y2hfb3V0cHV0X3ZvbHRhZ2UocGNyLCBPVVRQVVRfM1YzKTsNCit9DQorDQorc3RhdGljIGlu dCBydHM1MjY0X2NhcmRfcG93ZXJfb2ZmKHN0cnVjdCBydHN4X3BjciAqcGNyLCBpbnQgY2FyZCkN Cit7DQorCWludCBlcnIgPSAwOw0KKw0KKwlydHM1MjY0X2NhcmRfYmVmb3JlX3Bvd2VyX29mZihw Y3IpOw0KKwllcnIgPSBydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMTIz MzMxOF9QT1dfQ1RMLA0KKwkJCQlSVFM1MjY0X0xET19QT1dFUk9OX01BU0ssIDApOw0KKw0KKwly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19DUkNfRFVNTVlfMCwNCisJCUNGR19TRF9Q T1dfQVVUT19QRCwgMCk7DQorCWlmIChwY3ItPm9wdGlvbi5vY3BfZW4pDQorCQlydHN4X3BjaV9k aXNhYmxlX29jcChwY3IpOw0KKw0KKwlyZXR1cm4gZXJyOw0KK30NCisNCitzdGF0aWMgdm9pZCBy dHM1MjY0X2VuYWJsZV9vY3Aoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwl1OCBtYXNrID0g MDsNCisJdTggdmFsID0gMDsNCisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0VOIHwgUlRTNTI2NF9MRE8xX09D UF9MTVRfRU4sDQorCQkJUlRTNTI2NF9MRE8xX09DUF9FTiB8IFJUUzUyNjRfTERPMV9PQ1BfTE1U X0VOKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzJfQ0ZHMCwN CisJCQlSVFM1MjY0X0xETzJfT0NQX0VOIHwgUlRTNTI2NF9MRE8yX09DUF9MTVRfRU4sDQorCQkJ UlRTNTI2NF9MRE8yX09DUF9FTiB8IFJUUzUyNjRfTERPMl9PQ1BfTE1UX0VOKTsNCisJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzNfQ0ZHMCwNCisJCQlSVFM1MjY0X0xE TzNfT0NQX0VOIHwgUlRTNTI2NF9MRE8zX09DUF9MTVRfRU4sDQorCQkJUlRTNTI2NF9MRE8zX09D UF9FTiB8IFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSVFM1MjY0X09WUF9ERVQsDQorCQkJUlRTNTI2NF9QT1dfVkRFVCwgUlRTNTI2NF9Q T1dfVkRFVCk7DQorDQorCW1hc2sgPSBTRF9PQ1BfSU5UX0VOIHwgU0RfREVURUNUX0VOOw0KKwlt YXNrIHw9IFNEVklPX09DUF9JTlRfRU4gfCBTRFZJT19ERVRFQ1RfRU47DQorCXZhbCA9IG1hc2s7 DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUkVHX09DUENUTCwgbWFzaywgdmFsKTsN CisNCisJbWFzayA9IFNEX1ZERDNfT0NQX0lOVF9FTiB8IFNEX1ZERDNfREVURUNUX0VOOw0KKwl2 YWwgPSBtYXNrOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT0NQX1ZE RDNfQ1RMLCBtYXNrLCB2YWwpOw0KKw0KKwltYXNrID0gUlRTNTI2NF9PVlBfSU5UX0VOIHwgUlRT NTI2NF9PVlBfREVURUNUX0VOOw0KKwl2YWwgPSBtYXNrOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfT1ZQX0NUTCwgbWFzaywgdmFsKTsNCit9DQorDQorc3RhdGljIHZv aWQgcnRzNTI2NF9kaXNhYmxlX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXU4IG1h c2sgPSAwOw0KKw0KKwltYXNrID0gU0RfT0NQX0lOVF9FTiB8IFNEX0RFVEVDVF9FTjsNCisJbWFz ayB8PSBTRFZJT19PQ1BfSU5UX0VOIHwgU0RWSU9fREVURUNUX0VOOw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BDVEwsIG1hc2ssIDApOw0KKw0KKwltYXNrID0gU0RfVkRE M19PQ1BfSU5UX0VOIHwgU0RfVkREM19ERVRFQ1RfRU47DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUlRTNTI2NF9PQ1BfVkREM19DVEwsIG1hc2ssIDApOw0KKw0KKwltYXNrID0gUlRT NTI2NF9PVlBfSU5UX0VOIHwgUlRTNTI2NF9PVlBfREVURUNUX0VOOw0KKwlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfT1ZQX0NUTCwgbWFzaywgMCk7DQorDQorCXJ0c3hfcGNp X3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9MRE8xX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8x X09DUF9FTiB8IFJUUzUyNjRfTERPMV9PQ1BfTE1UX0VOLCAwKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzJfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzJfT0NQX0VO IHwgUlRTNTI2NF9MRE8yX09DUF9MTVRfRU4sIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfTERPM19DRkcwLA0KKwkJCVJUUzUyNjRfTERPM19PQ1BfRU4gfCBSVFM1 MjY0X0xETzNfT0NQX0xNVF9FTiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwg UlRTNTI2NF9PVlBfREVULCBSVFM1MjY0X1BPV19WREVULCAwKTsNCit9DQorDQorc3RhdGljIHZv aWQgcnRzNTI2NF9pbml0X29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBy dHN4X2NyX29wdGlvbiAqb3B0aW9uID0gJnBjci0+b3B0aW9uOw0KKw0KKwlpZiAob3B0aW9uLT5v Y3BfZW4pIHsNCisJCXU4IG1hc2ssIHZhbDsNCisNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgUlRTNTI2NF9MRE8xX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8xX09DUF9USERfTUFTSywg b3B0aW9uLT5zZF84MDBtQV9vY3BfdGhkKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgUlRTNTI2NF9MRE8xX0NGRzAsDQorCQkJUlRTNTI2NF9MRE8xX09DUF9MTVRfVEhEX01BU0ss DQorCQkJUlRTNTI2NF9MRE8xX0xNVF9USERfMjAwMCk7DQorDQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMl9PQ1BfVEhE X01BU0ssIFJUUzUyNjRfTERPMl9PQ1BfVEhEXzk1MCk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfTERPMl9DRkcwLA0KKwkJCVJUUzUyNjRfTERPMl9PQ1BfTE1UX1RI RF9NQVNLLA0KKwkJCVJUUzUyNjRfTERPMl9MTVRfVEhEXzIwMDApOw0KKw0KKwkJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzNfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzNf T0NQX1RIRF9NQVNLLCBSVFM1MjY0X0xETzNfT0NQX1RIRF83MTApOw0KKwkJcnRzeF9wY2lfd3Jp dGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzNfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzNfT0NQ X0xNVF9USERfTUFTSywNCisJCQlSVFM1MjY0X0xETzNfTE1UX1RIRF8xNTAwKTsNCisNCisJCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfREVULA0KKwkJCVJUUzUyNjRf VFVORV9WUk9WX01BU0ssIFJUUzUyNjRfVFVORV9WUk9WXzFWNik7DQorDQorCQltYXNrID0gU0Rf T0NQX0dMSVRDSF9NQVNLIHwgU0RWSU9fT0NQX0dMSVRDSF9NQVNLOw0KKwkJdmFsID0gcGNyLT5o d19wYXJhbS5vY3BfZ2xpdGNoOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdf T0NQR0xJVENILCBtYXNrLCB2YWwpOw0KKw0KKwl9IGVsc2Ugew0KKwkJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0xETzFfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzFfT0NQX0VO IHwgUlRTNTI2NF9MRE8xX09DUF9MTVRfRU4sIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBSVFM1MjY0X0xETzJfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzJfT0NQX0VOIHwgUlRT NTI2NF9MRE8yX09DUF9MTVRfRU4sIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNy LCBSVFM1MjY0X0xETzNfQ0ZHMCwNCisJCQlSVFM1MjY0X0xETzNfT0NQX0VOIHwgUlRTNTI2NF9M RE8zX09DUF9MTVRfRU4sIDApOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1 MjY0X09WUF9ERVQsDQorCQkJUlRTNTI2NF9QT1dfVkRFVCwgMCk7DQorCX0NCit9DQorDQorc3Rh dGljIGludCBydHM1MjY0X2dldF9vY3BzdGF0MihzdHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggKnZh bCkNCit7DQorCXJldHVybiBydHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PQ1Bf VkREM19TVFMsIHZhbCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgcnRzNTI2NF9nZXRfb3Zwc3RhdChz dHJ1Y3QgcnRzeF9wY3IgKnBjciwgdTggKnZhbCkNCit7DQorCXJldHVybiBydHN4X3BjaV9yZWFk X3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PVlBfU1RTLCB2YWwpOw0KK30NCisNCitzdGF0aWMgdm9p ZCBydHM1MjY0X2NsZWFyX29jcHN0YXQoc3RydWN0IHJ0c3hfcGNyICpwY3IpDQorew0KKwl1OCBt YXNrID0gMDsNCisJdTggdmFsID0gMDsNCisNCisJbWFzayA9IFNEX09DUF9JTlRfQ0xSIHwgU0Rf T0NfQ0xSOw0KKwltYXNrIHw9IFNEVklPX09DUF9JTlRfQ0xSIHwgU0RWSU9fT0NfQ0xSOw0KKwl2 YWwgPSBtYXNrOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJFR19PQ1BDVEwsIG1h c2ssIHZhbCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9PQ1BfVkRE M19DVEwsDQorCQlTRF9WREQzX09DUF9JTlRfQ0xSIHwgU0RfVkREM19PQ19DTFIsDQorCQlTRF9W REQzX09DUF9JTlRfQ0xSIHwgU0RfVkREM19PQ19DTFIpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfT1ZQX0NUTCwNCisJCVJUUzUyNjRfT1ZQX0lOVF9DTFIgfCBSVFM1 MjY0X09WUF9DTFIsDQorCQlSVFM1MjY0X09WUF9JTlRfQ0xSIHwgUlRTNTI2NF9PVlBfQ0xSKTsN CisNCisJdWRlbGF5KDEwMDApOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJF R19PQ1BDVEwsIG1hc2ssIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUy NjRfT0NQX1ZERDNfQ1RMLA0KKwkJU0RfVkREM19PQ1BfSU5UX0NMUiB8IFNEX1ZERDNfT0NfQ0xS LCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X09WUF9DVEwsDQor CQlSVFM1MjY0X09WUF9JTlRfQ0xSIHwgUlRTNTI2NF9PVlBfQ0xSLCAwKTsNCit9DQorDQorc3Rh dGljIHZvaWQgcnRzNTI2NF9wcm9jZXNzX29jcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQor CWlmICghcGNyLT5vcHRpb24ub2NwX2VuKQ0KKwkJcmV0dXJuOw0KKw0KKwlydHN4X3BjaV9nZXRf b2Nwc3RhdChwY3IsICZwY3ItPm9jcF9zdGF0KTsNCisJcnRzNTI2NF9nZXRfb2Nwc3RhdDIocGNy LCAmcGNyLT5vY3Bfc3RhdDIpOw0KKwlydHM1MjY0X2dldF9vdnBzdGF0KHBjciwgJnBjci0+b3Zw X3N0YXQpOw0KKw0KKwlpZiAoKHBjci0+b2NwX3N0YXQgJiAoU0RfT0NfTk9XIHwgU0RfT0NfRVZF UiB8IFNEVklPX09DX05PVyB8IFNEVklPX09DX0VWRVIpKSB8fA0KKwkJCShwY3ItPm9jcF9zdGF0 MiAmIChTRF9WREQzX09DX05PVyB8IFNEX1ZERDNfT0NfRVZFUikpIHx8DQorCQkJKHBjci0+b3Zw X3N0YXQgJiAoUlRTNTI2NF9PVlBfTk9XIHwgUlRTNTI2NF9PVlBfRVZFUikpKSB7DQorCQlydHM1 MjY0X2NsZWFyX29jcHN0YXQocGNyKTsNCisJCXJ0czUyNjRfY2FyZF9wb3dlcl9vZmYocGNyLCBS VFNYX1NEX0NBUkQpOw0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBDQVJEX09FLCBT RF9PVVRQVVRfRU4sIDApOw0KKwkJcGNyLT5vY3Bfc3RhdCA9IDA7DQorCQlwY3ItPm9jcF9zdGF0 MiA9IDA7DQorCQlwY3ItPm92cF9zdGF0ID0gMDsNCisJfQ0KK30NCisNCitzdGF0aWMgdm9pZCBy dHM1MjY0X2luaXRfZnJvbV9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBw Y2lfZGV2ICpwZGV2ID0gcGNyLT5wY2k7DQorCXUzMiBsdmFsMSwgbHZhbDIsIGk7DQorCXUxNiBz ZXR0aW5nX3JlZzEsIHNldHRpbmdfcmVnMjsNCisJdTggdmFsaWQsIGVmdXNlX3ZhbGlkLCB0bXA7 DQorDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNF X0NUTCwNCisJCVJFR19FRlVTRV9QT1IgfCBSRUdfRUZVU0VfUE9XRVJfTUFTSywNCisJCVJFR19F RlVTRV9QT1IgfCBSRUdfRUZVU0VfUE9XRVJPTik7DQorCXVkZWxheSgxKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0VGVVNFX0FERFIsDQorCQlSVFM1MjY0X0VGVVNF X0FERFJfTUFTSywgMHgwMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2 NF9FRlVTRV9DVEwsDQorCQlSVFM1MjY0X0VGVVNFX0VOQUJMRSB8IFJUUzUyNjRfRUZVU0VfTU9E RV9NQVNLLA0KKwkJUlRTNTI2NF9FRlVTRV9FTkFCTEUpOw0KKw0KKwkvKiBXYWl0IHRyYW5zZmVy IGVuZCAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTUFYX1JXX1JFR19DTlQ7IGkrKykgew0KKwkJcnRz eF9wY2lfcmVhZF9yZWdpc3RlcihwY3IsIFJUUzUyNjRfRUZVU0VfQ1RMLCAmdG1wKTsNCisJCWlm ICgodG1wICYgMHg4MCkgPT0gMCkNCisJCQlicmVhazsNCisJfQ0KKwlydHN4X3BjaV9yZWFkX3Jl Z2lzdGVyKHBjciwgUlRTNTI2NF9FRlVTRV9SRUFEX0RBVEEsICZ0bXApOw0KKwllZnVzZV92YWxp ZCA9ICgodG1wICYgMHgwQykgPj4gMik7DQorCXBjcl9kYmcocGNyLCAiTG9hZCBlZnVzZSB2YWxp ZDogMHgleFxuIiwgZWZ1c2VfdmFsaWQpOw0KKw0KKwlwY2lfcmVhZF9jb25maWdfZHdvcmQocGRl diwgUENSX1NFVFRJTkdfUkVHMiwgJmx2YWwyKTsNCisJcGNyX2RiZyhwY3IsICJDZmcgMHgleDog MHgleFxuIiwgUENSX1NFVFRJTkdfUkVHMiwgbHZhbDIpOw0KKwkvKiAweDgxNiAqLw0KKwl2YWxp ZCA9ICh1OCkoKGx2YWwyID4+IDE2KSAmIDB4MDMpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdp c3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQlSRUdfRUZVU0VfUE9SLCAw KTsNCisJcGNyX2RiZyhwY3IsICJEaXNhYmxlIGVmdXNlIHBvciFcbiIpOw0KKw0KKwlpZiAoZWZ1 c2VfdmFsaWQgPT0gMiB8fCBlZnVzZV92YWxpZCA9PSAzKSB7DQorCQlpZiAodmFsaWQgPT0gMykg ew0KKwkJCS8qIEJ5cGFzcyBlZnVzZSAqLw0KKwkJCXNldHRpbmdfcmVnMSA9IFBDUl9TRVRUSU5H X1JFRzE7DQorCQkJc2V0dGluZ19yZWcyID0gUENSX1NFVFRJTkdfUkVHMjsNCisJCX0gZWxzZSB7 DQorCQkJLyogVXNlIGVmdXNlIGRhdGEgKi8NCisJCQlzZXR0aW5nX3JlZzEgPSBQQ1JfU0VUVElO R19SRUc0Ow0KKwkJCXNldHRpbmdfcmVnMiA9IFBDUl9TRVRUSU5HX1JFRzU7DQorCQl9DQorCX0g ZWxzZSBpZiAoZWZ1c2VfdmFsaWQgPT0gMCkgew0KKwkJLy8gZGVmYXVsdA0KKwkJc2V0dGluZ19y ZWcxID0gUENSX1NFVFRJTkdfUkVHMTsNCisJCXNldHRpbmdfcmVnMiA9IFBDUl9TRVRUSU5HX1JF RzI7DQorCX0gZWxzZSB7DQorCQlyZXR1cm47DQorCX0NCisNCisJcGNpX3JlYWRfY29uZmlnX2R3 b3JkKHBkZXYsIHNldHRpbmdfcmVnMiwgJmx2YWwyKTsNCisJcGNyX2RiZyhwY3IsICJDZmcgMHgl eDogMHgleFxuIiwgc2V0dGluZ19yZWcyLCBsdmFsMik7DQorDQorCWlmICghcnRzNTI2NF92ZW5k b3Jfc2V0dGluZ192YWxpZChsdmFsMikpIHsNCisJCXBjcl9kYmcocGNyLCAic2tpcCBmZXRjaCB2 ZW5kb3Igc2V0dGluZ1xuIik7DQorCQlyZXR1cm47DQorCX0NCisNCisJcGNyLT5ydGQzX2VuID0g cnRzNTI2NF9yZWdfdG9fcnRkMyhsdmFsMik7DQorDQorCWlmIChydHM1MjY0X3JlZ19jaGVja19y ZXZlcnNlX3NvY2tldChsdmFsMikpDQorCQlwY3ItPmZsYWdzIHw9IFBDUl9SRVZFUlNFX1NPQ0tF VDsNCisNCisJcGNpX3JlYWRfY29uZmlnX2R3b3JkKHBkZXYsIHNldHRpbmdfcmVnMSwgJmx2YWwx KTsNCisJcGNyX2RiZyhwY3IsICJDZmcgMHgleDogMHgleFxuIiwgc2V0dGluZ19yZWcxLCBsdmFs MSk7DQorDQorCXBjci0+YXNwbV9lbiA9IHJ0czUyNjRfcmVnX3RvX2FzcG0obHZhbDEpOw0KKwlw Y3ItPnNkMzBfZHJpdmVfc2VsXzF2OCA9IHJ0czUyNjRfcmVnX3RvX3NkMzBfZHJpdmVfc2VsXzF2 OChsdmFsMSk7DQorCXBjci0+c2QzMF9kcml2ZV9zZWxfM3YzID0gcnRzNTI2NF9yZWdfdG9fc2Qz MF9kcml2ZV9zZWxfM3YzKGx2YWwxKTsNCisNCisJaWYgKHNldHRpbmdfcmVnMSA9PSBQQ1JfU0VU VElOR19SRUcxKSB7DQorCQkvKiBzdG9yZSBzZXR0aW5nICovDQorCQlydHN4X3BjaV93cml0ZV9y ZWdpc3RlcihwY3IsIDB4RkYwQywgMHhGRiwgKHU4KShsdmFsMSAmIDB4RkYpKTsNCisJCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjBELCAweEZGLCAodTgpKChsdmFsMSA+PiA4KSAm IDB4RkYpKTsNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgMHhGRjBFLCAweEZGLCAo dTgpKChsdmFsMSA+PiAxNikgJiAweEZGKSk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIDB4RkYwRiwgMHhGRiwgKHU4KSgobHZhbDEgPj4gMjQpICYgMHhGRikpOw0KKwkJcnRzeF9w Y2lfd3JpdGVfcmVnaXN0ZXIocGNyLCAweEZGMTAsIDB4RkYsICh1OCkobHZhbDIgJiAweEZGKSk7 DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYxMSwgMHhGRiwgKHU4KSgobHZh bDIgPj4gOCkgJiAweEZGKSk7DQorCQlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIDB4RkYx MiwgMHhGRiwgKHU4KSgobHZhbDIgPj4gMTYpICYgMHhGRikpOw0KKw0KKwkJcGNpX3dyaXRlX2Nv bmZpZ19kd29yZChwZGV2LCBQQ1JfU0VUVElOR19SRUc0LCBsdmFsMSk7DQorCQlsdmFsMiA9IGx2 YWwyICYgMHgwMEZGRkZGRjsNCisJCXBjaV93cml0ZV9jb25maWdfZHdvcmQocGRldiwgUENSX1NF VFRJTkdfUkVHNSwgbHZhbDIpOw0KKwl9DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHJ0czUyNjRfaW5p dF9mcm9tX2NmZyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCit7DQorCXN0cnVjdCBydHN4X2NyX29w dGlvbiAqb3B0aW9uID0gJnBjci0+b3B0aW9uOw0KKw0KKwlpZiAocnRzeF9jaGVja19kZXZfZmxh ZyhwY3IsIEFTUE1fTDFfMV9FTiB8IEFTUE1fTDFfMl9FTg0KKwkJCQl8IFBNX0wxXzFfRU4gfCBQ TV9MMV8yX0VOKSkNCisJCXJ0c3hfcGNpX2Rpc2FibGVfb29ic19wb2xsaW5nKHBjcik7DQorCWVs c2UNCisJCXJ0c3hfcGNpX2VuYWJsZV9vb2JzX3BvbGxpbmcocGNyKTsNCisNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBBU1BNX0ZPUkNFX0NUTCwgMHhGRiwgMCk7DQorDQorCWlmIChv cHRpb24tPmx0cl9lbikgew0KKwkJaWYgKG9wdGlvbi0+bHRyX2VuYWJsZWQpDQorCQkJcnRzeF9z ZXRfbHRyX2xhdGVuY3kocGNyLCBvcHRpb24tPmx0cl9hY3RpdmVfbGF0ZW5jeSk7DQorCX0NCit9 DQorDQorc3RhdGljIGludCBydHM1MjY0X2V4dHJhX2luaXRfaHcoc3RydWN0IHJ0c3hfcGNyICpw Y3IpDQorew0KKwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICZwY3ItPm9wdGlvbjsN CisNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzEs DQorCQkJQ0RfUkVTVU1FX0VOX01BU0ssIENEX1JFU1VNRV9FTl9NQVNLKTsNCisJcnRzeF9wY2lf d3JpdGVfcmVnaXN0ZXIocGNyLCBSRUdfVlJFRiwgUFdEX1NVU1BORF9FTiwgUFdEX1NVU1BORF9F Tik7DQorDQorCXJ0czUyNjRfaW5pdF9mcm9tX2NmZyhwY3IpOw0KKwlydHM1MjY0X2luaXRfZnJv bV9odyhwY3IpOw0KKw0KKwkvKiBwb3dlciBvZmYgZWZ1c2UgKi8NCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19QTUVfRk9SQ0VfQ1RMLA0KKwkJCVJFR19FRlVTRV9Q T1dFUl9NQVNLLCBSRUdfRUZVU0VfUE9XRVJPRkYpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rl cihwY3IsIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMiwNCisJCQlSVFM1MjY0X0NISVBfUlNUX05fU0VM LCAwKTsNCisJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X1JFR19MRE8xMl9D RkcsDQorCQkJUlRTNTI2NF9MRE8xMl9TUl9NQVNLLCBSVFM1MjY0X0xETzEyX1NSXzBfMF9NUyk7 DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgQ0RHVywgMHhGRiwgMHgwMSk7DQorCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9DS01VWF9NQklBU19QV1IsDQorCQkJ UlRTNTI2NF9QT1dfQ0tNVVgsIFJUUzUyNjRfUE9XX0NLTVVYKTsNCisJcnRzeF9wY2lfd3JpdGVf cmVnaXN0ZXIocGNyLCBSVFM1MjY0X0NNRF9PRV9TVEFSVF9FQVJMWSwNCisJCQlSVFM1MjY0X0NN RF9PRV9FQVJMWV9FTiB8IFJUUzUyNjRfQ01EX09FX0VBUkxZX0NZQ0xFX01BU0ssDQorCQkJUlRT NTI2NF9DTURfT0VfRUFSTFlfRU4pOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJU UzUyNjRfREFUX09FX1NUQVJUX0VBUkxZLA0KKwkJCVJUUzUyNjRfREFUX09FX0VBUkxZX0VOIHwg UlRTNTI2NF9EQVRfT0VfRUFSTFlfQ1lDTEVfTUFTSywNCisJCQlSVFM1MjY0X0RBVF9PRV9FQVJM WV9FTik7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgU1NDX0RJVl9OXzAsIDB4RkYs IDB4NUQpOw0KKw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUFdSX0NV VCwNCisJCQlSVFM1MjY0X0NGR19NRU1fUEQsIFJUUzUyNjRfQ0ZHX01FTV9QRCk7DQorCXJ0c3hf cGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgTDFTVUJfQ09ORklHMSwNCisJCQlBVVhfQ0xLX0FDVElW RV9TRUxfTUFTSywgTUFDX0NLU1dfRE9ORSk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgTDFTVUJfQ09ORklHMywgMHhGRiwgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBj ciwgUlRTNTI2NF9BVVRPTE9BRF9DRkc0LA0KKwkJCVJUUzUyNjRfQVVYX0NMS18xNk1fRU4sIDAp Ow0KKw0KKwkvKiBSZWxlYXNlIFBSU05UIyAqLw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3Rlcihw Y3IsIFJUUzUyNjRfQVVUT0xPQURfQ0ZHNCwNCisJCQlSVFM1MjY0X0ZPUkNFX1BSU05UX0xPVywg MCk7DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUENMS19DVEwsDQorCQkJUENMS19N T0RFX1NFTCwgUENMS19NT0RFX1NFTCk7DQorDQorCS8qIExFRCBzaGluZSBkaXNhYmxlZCwgc2V0 IGluaXRpYWwgc2hpbmUgY3ljbGUgcGVyaW9kICovDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVy KHBjciwgT0xUX0xFRF9DVEwsIDB4MEYsIDB4MDIpOw0KKw0KKwkvKiBDb25maWd1cmUgZHJpdmlu ZyAqLw0KKwlydHM1MjY0X2ZpbGxfZHJpdmluZyhwY3IsIE9VVFBVVF8zVjMpOw0KKw0KKwlpZiAo cGNyLT5mbGFncyAmIFBDUl9SRVZFUlNFX1NPQ0tFVCkNCisJCXJ0c3hfcGNpX3dyaXRlX3JlZ2lz dGVyKHBjciwgUEVUWENGRywgMHgzMCwgMHgzMCk7DQorCWVsc2UNCisJCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgUEVUWENGRywgMHgzMCwgMHgwMCk7DQorDQorCS8qDQorCSAqIElmIHVf Zm9yY2VfY2xrcmVxXzAgaXMgZW5hYmxlZCwgQ0xLUkVRIyBQSU4gd2lsbCBiZSBmb3JjZWQNCisJ ICogdG8gZHJpdmUgbG93LCBhbmQgd2UgZm9yY2libHkgcmVxdWVzdCBjbG9jay4NCisJICovDQor CWlmIChvcHRpb24tPmZvcmNlX2Nsa3JlcV8wKQ0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIo cGNyLCBQRVRYQ0ZHLA0KKwkJCQkgRk9SQ0VfQ0xLUkVRX0RFTElOS19NQVNLLCBGT1JDRV9DTEtS RVFfTE9XKTsNCisJZWxzZQ0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQRVRYQ0ZH LA0KKwkJCQkgRk9SQ0VfQ0xLUkVRX0RFTElOS19NQVNLLCBGT1JDRV9DTEtSRVFfSElHSCk7DQor DQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUFdEX1NVU1BFTkRfRU4sIDB4RkYsIDB4 RkYpOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJCQ1RMLCBVX0FVVE9fRE1BX0VO X01BU0ssIDApOw0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfQVVUT0xP QURfQ0ZHNCwNCisJCQlSVFM1MjY0X0ZfSElHSF9SQ19NQVNLLCBSVFM1MjY0X0ZfSElHSF9SQ180 MDBLKTsNCisNCisJaWYgKHBjci0+cnRkM19lbikgew0KKwkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0 ZXIocGNyLCBwY3ItPnJlZ19wbV9jdHJsMywgMHgwMSwgMHgwMCk7DQorCQlydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIFJUUzUyNjRfUkVHX1BNRV9GT1JDRV9DVEwsDQorCQkJCUZPUkNFX1BN X0NPTlRST0wgfCBGT1JDRV9QTV9WQUxVRSwgMCk7DQorCX0gZWxzZSB7DQorCQlydHN4X3BjaV93 cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCAweDAxLCAweDAwKTsNCisJCXJ0 c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTCwNCisJ CQkJRk9SQ0VfUE1fQ09OVFJPTCB8IEZPUkNFX1BNX1ZBTFVFLCBGT1JDRV9QTV9DT05UUk9MKTsN CisJfQ0KKwlydHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIHBjci0+cmVnX3BtX2N0cmwzLCBE M19ERUxJTktfTU9ERV9FTiwgMHgwMCk7DQorDQorCS8qIENsZWFyIEVudGVyIFJURDNfY29sZCBJ bmZvcm1hdGlvbiovDQorCXJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9GV19D VEwsDQorCQlSVFM1MjY0X0lORk9STV9SVEQzX0NPTEQsIDApOw0KKw0KKwlyZXR1cm4gMDsNCit9 DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9lbmFibGVfYXNwbShzdHJ1Y3QgcnRzeF9wY3IgKnBj ciwgYm9vbCBlbmFibGUpDQorew0KKwl1OCB2YWwgPSBGT1JDRV9BU1BNX0NUTDAgfCBGT1JDRV9B U1BNX0NUTDE7DQorCXU4IG1hc2sgPSBGT1JDRV9BU1BNX1ZBTF9NQVNLIHwgRk9SQ0VfQVNQTV9D VEwwIHwgRk9SQ0VfQVNQTV9DVEwxOw0KKw0KKwlpZiAocGNyLT5hc3BtX2VuYWJsZWQgPT0gZW5h YmxlKQ0KKwkJcmV0dXJuOw0KKw0KKwl2YWwgfD0gKHBjci0+YXNwbV9lbiAmIDB4MDIpOw0KKwly dHN4X3BjaV93cml0ZV9yZWdpc3RlcihwY3IsIEFTUE1fRk9SQ0VfQ1RMLCBtYXNrLCB2YWwpOw0K KwlwY2llX2NhcGFiaWxpdHlfY2xlYXJfYW5kX3NldF93b3JkKHBjci0+cGNpLCBQQ0lfRVhQX0xO S0NUTCwNCisJCQkJCSAgIFBDSV9FWFBfTE5LQ1RMX0FTUE1DLCBwY3ItPmFzcG1fZW4pOw0KKwlw Y3ItPmFzcG1fZW5hYmxlZCA9IGVuYWJsZTsNCit9DQorDQorc3RhdGljIHZvaWQgcnRzNTI2NF9k aXNhYmxlX2FzcG0oc3RydWN0IHJ0c3hfcGNyICpwY3IsIGJvb2wgZW5hYmxlKQ0KK3sNCisJdTgg dmFsID0gRk9SQ0VfQVNQTV9DVEwwIHwgRk9SQ0VfQVNQTV9DVEwxOw0KKwl1OCBtYXNrID0gRk9S Q0VfQVNQTV9WQUxfTUFTSyB8IEZPUkNFX0FTUE1fQ1RMMCB8IEZPUkNFX0FTUE1fQ1RMMTsNCisN CisJaWYgKHBjci0+YXNwbV9lbmFibGVkID09IGVuYWJsZSkNCisJCXJldHVybjsNCisNCisJcGNp ZV9jYXBhYmlsaXR5X2NsZWFyX2FuZF9zZXRfd29yZChwY3ItPnBjaSwgUENJX0VYUF9MTktDVEws DQorCQkJCQkgICBQQ0lfRVhQX0xOS0NUTF9BU1BNQywgMCk7DQorCXJ0c3hfcGNpX3dyaXRlX3Jl Z2lzdGVyKHBjciwgQVNQTV9GT1JDRV9DVEwsIG1hc2ssIHZhbCk7DQorCXJ0c3hfcGNpX3dyaXRl X3JlZ2lzdGVyKHBjciwgU0RfQ0ZHMSwgU0RfQVNZTkNfRklGT19OT1RfUlNULCAwKTsNCisJdWRl bGF5KDEwKTsNCisJcGNyLT5hc3BtX2VuYWJsZWQgPSBlbmFibGU7DQorfQ0KKw0KK3N0YXRpYyB2 b2lkIHJ0czUyNjRfc2V0X2FzcG0oc3RydWN0IHJ0c3hfcGNyICpwY3IsIGJvb2wgZW5hYmxlKQ0K K3sNCisJaWYgKGVuYWJsZSkNCisJCXJ0czUyNjRfZW5hYmxlX2FzcG0ocGNyLCB0cnVlKTsNCisJ ZWxzZQ0KKwkJcnRzNTI2NF9kaXNhYmxlX2FzcG0ocGNyLCBmYWxzZSk7DQorfQ0KKw0KK3N0YXRp YyB2b2lkIHJ0czUyNjRfc2V0X2wxb2ZmX2NmZ19zdWJfZDAoc3RydWN0IHJ0c3hfcGNyICpwY3Is IGludCBhY3RpdmUpDQorew0KKwlzdHJ1Y3QgcnRzeF9jcl9vcHRpb24gKm9wdGlvbiA9ICYocGNy LT5vcHRpb24pOw0KKw0KKwl1MzIgaW50ZXJydXB0ID0gcnRzeF9wY2lfcmVhZGwocGNyLCBSVFNY X0JJUFIpOw0KKwlpbnQgY2FyZF9leGlzdCA9IChpbnRlcnJ1cHQgJiBTRF9FWElTVCk7DQorCWlu dCBhc3BtX0wxXzEsIGFzcG1fTDFfMjsNCisJdTggdmFsID0gMDsNCisNCisJYXNwbV9MMV8xID0g cnRzeF9jaGVja19kZXZfZmxhZyhwY3IsIEFTUE1fTDFfMV9FTik7DQorCWFzcG1fTDFfMiA9IHJ0 c3hfY2hlY2tfZGV2X2ZsYWcocGNyLCBBU1BNX0wxXzJfRU4pOw0KKw0KKwlpZiAoYWN0aXZlKSB7 DQorCQkvKiBSdW4sIGxhdGVuY3k6IDYwdXMgKi8NCisJCWlmIChhc3BtX0wxXzEpDQorCQkJdmFs ID0gb3B0aW9uLT5sdHJfbDFvZmZfc25vb3plX3NzcHdyZ2F0ZTsNCisJfSBlbHNlIHsNCisJCS8q IEwxb2ZmLCBsYXRlbmN5OiAzMDB1cyAqLw0KKwkJaWYgKGFzcG1fTDFfMikNCisJCQl2YWwgPSBv cHRpb24tPmx0cl9sMW9mZl9zc3B3cmdhdGU7DQorCX0NCisNCisJaWYgKGFzcG1fTDFfMSB8fCBh c3BtX0wxXzIpIHsNCisJCWlmIChydHN4X2NoZWNrX2Rldl9mbGFnKHBjciwNCisJCQkJCUxUUl9M MVNTX1BXUl9HQVRFX0NIRUNLX0NBUkRfRU4pKSB7DQorCQkJaWYgKGNhcmRfZXhpc3QpDQorCQkJ CXZhbCAmPSB+TDFPRkZfTUJJQVMyX0VOXzUyNTA7DQorCQkJZWxzZQ0KKwkJCQl2YWwgfD0gTDFP RkZfTUJJQVMyX0VOXzUyNTA7DQorCQl9DQorCX0NCisJcnRzeF9zZXRfbDFvZmZfc3ViKHBjciwg dmFsKTsNCit9DQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBwY3Jfb3BzIHJ0czUyNjRfcGNyX29w cyA9IHsNCisJLnR1cm5fb25fbGVkID0gcnRzNTI2NF90dXJuX29uX2xlZCwNCisJLnR1cm5fb2Zm X2xlZCA9IHJ0czUyNjRfdHVybl9vZmZfbGVkLA0KKwkuZXh0cmFfaW5pdF9odyA9IHJ0czUyNjRf ZXh0cmFfaW5pdF9odywNCisJLmVuYWJsZV9hdXRvX2JsaW5rID0gcnRzNTI2NF9lbmFibGVfYXV0 b19ibGluaywNCisJLmRpc2FibGVfYXV0b19ibGluayA9IHJ0czUyNjRfZGlzYWJsZV9hdXRvX2Js aW5rLA0KKwkuY2FyZF9wb3dlcl9vbiA9IHJ0czUyNjRfY2FyZF9wb3dlcl9vbiwNCisJLmNhcmRf cG93ZXJfb2ZmID0gcnRzNTI2NF9jYXJkX3Bvd2VyX29mZiwNCisJLnN3aXRjaF9vdXRwdXRfdm9s dGFnZSA9IHJ0czUyNjRfc3dpdGNoX291dHB1dF92b2x0YWdlLA0KKwkuZm9yY2VfcG93ZXJfZG93 biA9IHJ0czUyNjRfZm9yY2VfcG93ZXJfZG93biwNCisJLnN0b3BfY21kID0gcnRzNTI2NF9zdG9w X2NtZCwNCisJLnNldF9hc3BtID0gcnRzNTI2NF9zZXRfYXNwbSwNCisJLnNldF9sMW9mZl9jZmdf c3ViX2QwID0gcnRzNTI2NF9zZXRfbDFvZmZfY2ZnX3N1Yl9kMCwNCisJLmVuYWJsZV9vY3AgPSBy dHM1MjY0X2VuYWJsZV9vY3AsDQorCS5kaXNhYmxlX29jcCA9IHJ0czUyNjRfZGlzYWJsZV9vY3As DQorCS5pbml0X29jcCA9IHJ0czUyNjRfaW5pdF9vY3AsDQorCS5wcm9jZXNzX29jcCA9IHJ0czUy NjRfcHJvY2Vzc19vY3AsDQorCS5jbGVhcl9vY3BzdGF0ID0gcnRzNTI2NF9jbGVhcl9vY3BzdGF0 LA0KK307DQorDQorc3RhdGljIGlubGluZSB1OCBkb3VibGVfc3NjX2RlcHRoKHU4IGRlcHRoKQ0K K3sNCisJcmV0dXJuICgoZGVwdGggPiAxKSA/IChkZXB0aCAtIDEpIDogZGVwdGgpOw0KK30NCisN CitpbnQgcnRzNTI2NF9wY2lfc3dpdGNoX2Nsb2NrKHN0cnVjdCBydHN4X3BjciAqcGNyLCB1bnNp Z25lZCBpbnQgY2FyZF9jbG9jaywNCisJCXU4IHNzY19kZXB0aCwgYm9vbCBpbml0aWFsX21vZGUs IGJvb2wgZG91YmxlX2NsaywgYm9vbCB2cGNsaykNCit7DQorCWludCBlcnIsIGNsazsNCisJdTE2 IG47DQorCXU4IGNsa19kaXZpZGVyLCBtY3VfY250LCBkaXY7DQorCXN0YXRpYyBjb25zdCB1OCBk ZXB0aFtdID0gew0KKwkJW1JUU1hfU1NDX0RFUFRIXzRNXSA9IFJUUzUyNjRfU1NDX0RFUFRIXzRN LA0KKwkJW1JUU1hfU1NDX0RFUFRIXzJNXSA9IFJUUzUyNjRfU1NDX0RFUFRIXzJNLA0KKwkJW1JU U1hfU1NDX0RFUFRIXzFNXSA9IFJUUzUyNjRfU1NDX0RFUFRIXzFNLA0KKwkJW1JUU1hfU1NDX0RF UFRIXzUwMEtdID0gUlRTNTI2NF9TU0NfREVQVEhfNTEySywNCisJfTsNCisNCisJaWYgKGluaXRp YWxfbW9kZSkgew0KKwkJLyogV2UgdXNlIDI1MGsoYXJvdW5kKSBoZXJlLCBpbiBpbml0aWFsIHN0 YWdlICovDQorCQljbGtfZGl2aWRlciA9IFNEX0NMS19ESVZJREVfMTI4Ow0KKwkJY2FyZF9jbG9j ayA9IDMwMDAwMDAwOw0KKwl9IGVsc2Ugew0KKwkJY2xrX2RpdmlkZXIgPSBTRF9DTEtfRElWSURF XzA7DQorCX0NCisJZXJyID0gcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9DRkcxLA0K KwkJCVNEX0NMS19ESVZJREVfTUFTSywgY2xrX2RpdmlkZXIpOw0KKwlpZiAoZXJyIDwgMCkNCisJ CXJldHVybiBlcnI7DQorDQorCWNhcmRfY2xvY2sgLz0gMTAwMDAwMDsNCisJcGNyX2RiZyhwY3Is ICJTd2l0Y2ggY2FyZCBjbG9jayB0byAlZE1IelxuIiwgY2FyZF9jbG9jayk7DQorDQorCWNsayA9 IGNhcmRfY2xvY2s7DQorCWlmICghaW5pdGlhbF9tb2RlICYmIGRvdWJsZV9jbGspDQorCQljbGsg PSBjYXJkX2Nsb2NrICogMjsNCisJcGNyX2RiZyhwY3IsICJJbnRlcm5hbCBTU0MgY2xvY2s6ICVk TUh6IChjdXJfY2xvY2sgPSAlZClcbiIsDQorCQljbGssIHBjci0+Y3VyX2Nsb2NrKTsNCisNCisJ aWYgKGNsayA9PSBwY3ItPmN1cl9jbG9jaykNCisJCXJldHVybiAwOw0KKw0KKwlpZiAocGNyLT5v cHMtPmNvbnZfY2xrX2FuZF9kaXZfbikNCisJCW4gPSBwY3ItPm9wcy0+Y29udl9jbGtfYW5kX2Rp dl9uKGNsaywgQ0xLX1RPX0RJVl9OKTsNCisJZWxzZQ0KKwkJbiA9IGNsayAtIDQ7DQorCWlmICgo Y2xrIDw9IDQpIHx8IChuID4gMzk2KSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwltY3VfY250 ID0gMTI1L2NsayArIDM7DQorCWlmIChtY3VfY250ID4gMTUpDQorCQltY3VfY250ID0gMTU7DQor DQorCWRpdiA9IENMS19ESVZfMTsNCisJd2hpbGUgKChuIDwgTUlOX0RJVl9OX1BDUiAtIDQpICYm IChkaXYgPCBDTEtfRElWXzgpKSB7DQorCQlpZiAocGNyLT5vcHMtPmNvbnZfY2xrX2FuZF9kaXZf bikgew0KKwkJCWludCBkYmxfY2xrID0gcGNyLT5vcHMtPmNvbnZfY2xrX2FuZF9kaXZfbihuLA0K KwkJCQkJRElWX05fVE9fQ0xLKSAqIDI7DQorCQkJbiA9IHBjci0+b3BzLT5jb252X2Nsa19hbmRf ZGl2X24oZGJsX2NsaywNCisJCQkJCUNMS19UT19ESVZfTik7DQorCQl9IGVsc2Ugew0KKwkJCW4g PSAobiArIDQpICogMiAtIDQ7DQorCQl9DQorCQlkaXYrKzsNCisJfQ0KKw0KKwluID0gKG4gLyAy KSAtIDE7DQorCXBjcl9kYmcocGNyLCAibiA9ICVkLCBkaXYgPSAlZFxuIiwgbiwgZGl2KTsNCisN CisJc3NjX2RlcHRoID0gZGVwdGhbc3NjX2RlcHRoXTsNCisJaWYgKGRvdWJsZV9jbGspDQorCQlz c2NfZGVwdGggPSBkb3VibGVfc3NjX2RlcHRoKHNzY19kZXB0aCk7DQorDQorCWlmIChzc2NfZGVw dGgpIHsNCisJCWlmIChkaXYgPT0gQ0xLX0RJVl8yKSB7DQorCQkJaWYgKHNzY19kZXB0aCA+IDEp DQorCQkJCXNzY19kZXB0aCAtPSAxOw0KKwkJCWVsc2UNCisJCQkJc3NjX2RlcHRoID0gUlRTNTI2 NF9TU0NfREVQVEhfOE07DQorCQl9IGVsc2UgaWYgKGRpdiA9PSBDTEtfRElWXzQpIHsNCisJCQlp ZiAoc3NjX2RlcHRoID4gMikNCisJCQkJc3NjX2RlcHRoIC09IDI7DQorCQkJZWxzZQ0KKwkJCQlz c2NfZGVwdGggPSBSVFM1MjY0X1NTQ19ERVBUSF84TTsNCisJCX0gZWxzZSBpZiAoZGl2ID09IENM S19ESVZfOCkgew0KKwkJCWlmIChzc2NfZGVwdGggPiAzKQ0KKwkJCQlzc2NfZGVwdGggLT0gMzsN CisJCQllbHNlDQorCQkJCXNzY19kZXB0aCA9IFJUUzUyNjRfU1NDX0RFUFRIXzhNOw0KKwkJfQ0K Kwl9IGVsc2Ugew0KKwkJc3NjX2RlcHRoID0gMDsNCisJfQ0KKwlwY3JfZGJnKHBjciwgInNzY19k ZXB0aCA9ICVkXG4iLCBzc2NfZGVwdGgpOw0KKw0KKwlydHN4X3BjaV9pbml0X2NtZChwY3IpOw0K KwlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgQ0xLX0NUTCwNCisJCQkJQ0hB TkdFX0NMSywgQ0hBTkdFX0NMSyk7DQorCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdf Q01ELCBDTEtfRElWLA0KKwkJCTB4RkYsIChkaXYgPDwgNCkgfCBtY3VfY250KTsNCisJcnRzeF9w Y2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNTQ19DVEwxLCBTU0NfUlNUQiwgMCk7DQor CXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMiwNCisJCQlTU0Nf REVQVEhfTUFTSywgc3NjX2RlcHRoKTsNCisJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JF R19DTUQsIFNTQ19ESVZfTl8wLCAweEZGLCBuKTsNCisNCisJaWYgKGlzX3ZlcnNpb24ocGNyLCAw eDUyNjQsIElDX1ZFUl9BKSkgew0KKwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19D TUQsIFNTQ19DVEwxLCBTU0NfUlNUQiwgMCk7DQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJ VEVfUkVHX0NNRCwgUlRTNTI2NF9DQVJEX0NMS19TUkMyLA0KKwkJCVJUUzUyNjRfUkVHX0JJR19L VkNPX0EsIDApOw0KKwl9IGVsc2Ugew0KKwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JF R19DTUQsIFNTQ19DVEwxLCBTU0NfUlNUQiwgU1NDX1JTVEIpOw0KKwkJcnRzeF9wY2lfYWRkX2Nt ZChwY3IsIFdSSVRFX1JFR19DTUQsIFJUUzUyNjRfU1lTX0RVTU1ZXzEsDQorCQkJUlRTNTI2NF9S RUdfQklHX0tWQ08sIDApOw0KKwl9DQorDQorCWlmICh2cGNsaykgew0KKwkJcnRzeF9wY2lfYWRk X2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNEX1ZQQ0xLMF9DVEwsDQorCQkJCVBIQVNFX05PVF9S RVNFVCwgMCk7DQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NNRCwgU0RfVlBD TEsxX0NUTCwNCisJCQkJUEhBU0VfTk9UX1JFU0VULCAwKTsNCisJCXJ0c3hfcGNpX2FkZF9jbWQo cGNyLCBXUklURV9SRUdfQ01ELCBTRF9WUENMSzBfQ1RMLA0KKwkJCQlQSEFTRV9OT1RfUkVTRVQs IFBIQVNFX05PVF9SRVNFVCk7DQorCQlydHN4X3BjaV9hZGRfY21kKHBjciwgV1JJVEVfUkVHX0NN RCwgU0RfVlBDTEsxX0NUTCwNCisJCQkJUEhBU0VfTk9UX1JFU0VULCBQSEFTRV9OT1RfUkVTRVQp Ow0KKwl9DQorDQorCWVyciA9IHJ0c3hfcGNpX3NlbmRfY21kKHBjciwgMjAwMCk7DQorCWlmIChl cnIgPCAwKQ0KKwkJcmV0dXJuIGVycjsNCisNCisJLyogV2FpdCBTU0MgY2xvY2sgc3RhYmxlICov DQorCXVkZWxheShTU0NfQ0xPQ0tfU1RBQkxFX1dBSVQpOw0KKwllcnIgPSBydHN4X3BjaV93cml0 ZV9yZWdpc3RlcihwY3IsIENMS19DVEwsIENIQU5HRV9DTEssIDApOw0KKwlpZiAoZXJyIDwgMCkN CisJCXJldHVybiBlcnI7DQorDQorCXBjci0+Y3VyX2Nsb2NrID0gY2xrOw0KKwlyZXR1cm4gMDsN Cit9DQorDQordm9pZCBydHM1MjY0X2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNyKQ0K K3sNCisJc3RydWN0IHJ0c3hfY3Jfb3B0aW9uICpvcHRpb24gPSAmcGNyLT5vcHRpb247DQorCXN0 cnVjdCBydHN4X2h3X3BhcmFtICpod19wYXJhbSA9ICZwY3ItPmh3X3BhcmFtOw0KKwl1OCB2YWw7 DQorDQorCXBjci0+ZXh0cmFfY2FwcyA9IEVYVFJBX0NBUFNfU0RfU0RSNTAgfCBFWFRSQV9DQVBT X1NEX1NEUjEwNDsNCisJcGNyLT5leHRyYV9jYXBzIHw9IEVYVFJBX0NBUFNfTk9fTU1DOw0KKwly dHN4X3BjaV9yZWFkX3JlZ2lzdGVyKHBjciwgUlRTNTI2NF9GV19TVEFUVVMsICZ2YWwpOw0KKwlp ZiAoISh2YWwgJiBSVFM1MjY0X0VYUFJFU1NfTElOS19GQUlMX01BU0spKQ0KKwkJcGNyLT5leHRy YV9jYXBzIHw9IEVYVFJBX0NBUFNfU0RfRVhQUkVTUzsNCisJcGNyLT5udW1fc2xvdHMgPSAxOw0K KwlwY3ItPm9wcyA9ICZydHM1MjY0X3Bjcl9vcHM7DQorDQorCXBjci0+ZmxhZ3MgPSAwOw0KKwlw Y3ItPmNhcmRfZHJpdmVfc2VsID0gUlRTWF9DQVJEX0RSSVZFX0RFRkFVTFQ7DQorCXBjci0+c2Qz MF9kcml2ZV9zZWxfMXY4ID0gMHgwMDsNCisJcGNyLT5zZDMwX2RyaXZlX3NlbF8zdjMgPSAweDAw Ow0KKwlwY3ItPmFzcG1fZW4gPSBBU1BNX0wxX0VOOw0KKwlwY3ItPmFzcG1fbW9kZSA9IEFTUE1f TU9ERV9SRUc7DQorCXBjci0+dHhfaW5pdGlhbF9waGFzZSA9IFNFVF9DTE9DS19QSEFTRSgyNCwg MjQsIDExKTsNCisJcGNyLT5yeF9pbml0aWFsX3BoYXNlID0gU0VUX0NMT0NLX1BIQVNFKDI0LCA2 LCA1KTsNCisNCisJcGNyLT5pY192ZXJzaW9uID0gcnRzNTI2NF9nZXRfaWNfdmVyc2lvbihwY3Ip Ow0KKwlwY3ItPnNkX3B1bGxfY3RsX2VuYWJsZV90YmwgPSBydHM1MjY0X3NkX3B1bGxfY3RsX2Vu YWJsZV90Ymw7DQorCXBjci0+c2RfcHVsbF9jdGxfZGlzYWJsZV90YmwgPSBydHM1MjY0X3NkX3B1 bGxfY3RsX2Rpc2FibGVfdGJsOw0KKw0KKwlwY3ItPnJlZ19wbV9jdHJsMyA9IFJUUzUyNjRfQVVU T0xPQURfQ0ZHMzsNCisNCisJb3B0aW9uLT5kZXZfZmxhZ3MgPSAoTFRSX0wxU1NfUFdSX0dBVEVf Q0hFQ0tfQ0FSRF9FTg0KKwkJCQl8IExUUl9MMVNTX1BXUl9HQVRFX0VOKTsNCisJb3B0aW9uLT5s dHJfZW4gPSB0cnVlOw0KKw0KKwkvKiBpbml0IGxhdGVuY3kgb2YgYWN0aXZlLCBpZGxlLCBMMU9G RiB0byA2MHVzLCAzMDB1cywgM21zICovDQorCW9wdGlvbi0+bHRyX2FjdGl2ZV9sYXRlbmN5ID0g TFRSX0FDVElWRV9MQVRFTkNZX0RFRjsNCisJb3B0aW9uLT5sdHJfaWRsZV9sYXRlbmN5ID0gTFRS X0lETEVfTEFURU5DWV9ERUY7DQorCW9wdGlvbi0+bHRyX2wxb2ZmX2xhdGVuY3kgPSBMVFJfTDFP RkZfTEFURU5DWV9ERUY7DQorCW9wdGlvbi0+bDFfc25vb3plX2RlbGF5ID0gTDFfU05PT1pFX0RF TEFZX0RFRjsNCisJb3B0aW9uLT5sdHJfbDFvZmZfc3Nwd3JnYXRlID0gMHg3RjsNCisJb3B0aW9u LT5sdHJfbDFvZmZfc25vb3plX3NzcHdyZ2F0ZSA9IDB4Nzg7DQorDQorCW9wdGlvbi0+b2NwX2Vu ID0gMTsNCisJaHdfcGFyYW0tPmludGVycnVwdF9lbiB8PSAoU0RfT0NfSU5UX0VOIHwgU0RfT1ZQ X0lOVF9FTik7DQorCWh3X3BhcmFtLT5vY3BfZ2xpdGNoID0gIFNEX09DUF9HTElUQ0hfODAwVSB8 IFNEVklPX09DUF9HTElUQ0hfODAwVTsNCisJb3B0aW9uLT5zZF84MDBtQV9vY3BfdGhkID0gIFJU UzUyNjRfTERPMV9PQ1BfVEhEXzExNTA7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9j YXJkcmVhZGVyL3J0czUyNjQuaCBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0czUyNjQuaA0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwMC4uZTNjYmJmMmZlMWE0DQot LS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHM1MjY0LmgNCkBA IC0wLDAgKzEsMjc4IEBADQorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eSAqLw0KKy8qIERyaXZlciBmb3IgUmVhbHRlayBQQ0ktRXhwcmVzcyBjYXJkIHJlYWRlcg0KKyAq DQorICogQ29weXJpZ2h0KGMpIDIwMTgtMjAxOSBSZWFsdGVrIFNlbWljb25kdWN0b3IgQ29ycC4g QWxsIHJpZ2h0cyByZXNlcnZlZC4NCisgKg0KKyAqIEF1dGhvcjoNCisgKiAgIFJpY2t5IFd1IDxy aWNreV93dUByZWFsdGVrLmNvbT4NCisgKi8NCisjaWZuZGVmIFJUUzUyNjRfSA0KKyNkZWZpbmUg UlRTNTI2NF9IDQorDQorLypOZXcgYWRkKi8NCisjZGVmaW5lIHJ0czUyNjRfdmVuZG9yX3NldHRp bmdfdmFsaWQocmVnKQkoKHJlZykgJiAweDAxMDAwMCkNCisjZGVmaW5lIHJ0czUyNjRfcmVnX3Rv X2FzcG0ocmVnKSBcDQorCSgoKH4ocmVnKSA+PiAyOCkgJiAweDAyKSB8ICgoKHJlZykgPj4gMjgp ICYgMHgwMSkpDQorI2RlZmluZSBydHM1MjY0X3JlZ19jaGVja19yZXZlcnNlX3NvY2tldChyZWcp CSgocmVnKSAmIDB4MDQpDQorI2RlZmluZSBydHM1MjY0X3JlZ190b19zZDMwX2RyaXZlX3NlbF8x djgocmVnKQkoKChyZWcpID4+IDIyKSAmIDB4MDMpDQorI2RlZmluZSBydHM1MjY0X3JlZ190b19z ZDMwX2RyaXZlX3NlbF8zdjMocmVnKQkoKChyZWcpID4+IDE2KSAmIDB4MDMpDQorI2RlZmluZSBy dHM1MjY0X3JlZ190b19ydGQzKHJlZykJCSgocmVnKSAmIDB4MDgpDQorDQorI2RlZmluZSBSVFM1 MjY0X0FVVE9MT0FEX0NGRzAJCTB4RkY3Qg0KKyNkZWZpbmUgUlRTNTI2NF9BVVRPTE9BRF9DRkcx CQkweEZGN0MNCisjZGVmaW5lIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMwkJMHhGRjdFDQorI2RlZmlu ZSBSVFM1MjY0X0FVVE9MT0FEX0NGRzQJCTB4RkY3Rg0KKyNkZWZpbmUgUlRTNTI2NF9GT1JDRV9Q UlNOVF9MT1cJCSgxIDw8IDYpDQorI2RlZmluZSBSVFM1MjY0X0FVWF9DTEtfMTZNX0VOCQkoMSA8 PCA1KQ0KKyNkZWZpbmUgUlRTNTI2NF9GX0hJR0hfUkNfTUFTSwkJKDEgPDwgNCkNCisjZGVmaW5l IFJUUzUyNjRfRl9ISUdIX1JDXzFfNk0JCSgxIDw8IDQpDQorI2RlZmluZSBSVFM1MjY0X0ZfSElH SF9SQ180MDBLCQkoMCA8PCA0KQ0KKw0KKy8qIFNTQ19DVEwyIDB4RkMxMiAqLw0KKyNkZWZpbmUg UlRTNTI2NF9TU0NfREVQVEhfTUFTSwkJMHgwNw0KKyNkZWZpbmUgUlRTNTI2NF9TU0NfREVQVEhf RElTQUxCRQkweDAwDQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF84TQkJMHgwMQ0KKyNkZWZp bmUgUlRTNTI2NF9TU0NfREVQVEhfNE0JCTB4MDINCisjZGVmaW5lIFJUUzUyNjRfU1NDX0RFUFRI XzJNCQkweDAzDQorI2RlZmluZSBSVFM1MjY0X1NTQ19ERVBUSF8xTQkJMHgwNA0KKyNkZWZpbmUg UlRTNTI2NF9TU0NfREVQVEhfNTEySwkJMHgwNQ0KKyNkZWZpbmUgUlRTNTI2NF9TU0NfREVQVEhf MjU2SwkJMHgwNg0KKyNkZWZpbmUgUlRTNTI2NF9TU0NfREVQVEhfMTI4SwkJMHgwNw0KKw0KKyNk ZWZpbmUgUlRTNTI2NF9DQVJEX0NMS19TUkMyCQkweEZDMkYNCisjZGVmaW5lIFJUUzUyNjRfUkVH X0JJR19LVkNPX0EJCTB4MjANCisNCisvKiBlZnVzZSBjb250cm9sIHJlZ2lzdGVyKi8NCisjZGVm aW5lIFJUUzUyNjRfRUZVU0VfQ1RMCQkweEZDMzANCisjZGVmaW5lIFJUUzUyNjRfRUZVU0VfRU5B QkxFCQkweDgwDQorLyogRUZVU0VfTU9ERTogMD1SRUFEIDE9UFJPR1JBTSAqLw0KKyNkZWZpbmUg UlRTNTI2NF9FRlVTRV9NT0RFX01BU0sJCTB4NDANCisjZGVmaW5lIFJUUzUyNjRfRUZVU0VfUFJP R1JBTQkJMHg0MA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9FRlVTRV9BRERSCQkweEZDMzENCisjZGVm aW5lCVJUUzUyNjRfRUZVU0VfQUREUl9NQVNLCQkweDNGDQorDQorI2RlZmluZSBSVFM1MjY0X0VG VVNFX1dSSVRFX0RBVEEJMHhGQzMyDQorI2RlZmluZSBSVFM1MjY0X0VGVVNFX1JFQURfREFUQQkJ MHhGQzM0DQorDQorI2RlZmluZSBSVFM1MjY0X1NZU19EVU1NWV8xCQkweEZDMzUNCisjZGVmaW5l IFJUUzUyNjRfUkVHX0JJR19LVkNPCQkweDA0DQorDQorLyogRE1BQ1RMIDB4RkUyQyAqLw0KKyNk ZWZpbmUgUlRTNTI2NF9ETUFfUEFDS19TSVpFX01BU0sJMHg3MA0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9GV19DRkcxCQkJMHhGRjU1DQorI2RlZmluZSBSVFM1MjY0X1NZU19DTEtfU0VMX01DVV9DTEsJ KDB4MDE8PDcpDQorI2RlZmluZSBSVFM1MjY0X0NSQ19DTEtfU0VMX01DVV9DTEsJKDB4MDE8PDYp DQorI2RlZmluZSBSVFM1MjY0X0ZBS0VfTUNVX0NMT0NLX0dBVElORwkoMHgwMTw8NSkNCisjZGVm aW5lIFJUUzUyNjRfTUNVX0JVU19TRUxfTUFTSwkoMHgwMTw8NCkNCisNCisvKiBGVyBzdGF0dXMg cmVnaXN0ZXIgKi8NCisjZGVmaW5lIFJUUzUyNjRfRldfU1RBVFVTCQkweEZGNTYNCisjZGVmaW5l IFJUUzUyNjRfRVhQUkVTU19MSU5LX0ZBSUxfTUFTSwkoMHgwMTw8NykNCisNCisvKiBGVyBjb250 cm9sIHJlZ2lzdGVyICovDQorI2RlZmluZSBSVFM1MjY0X0ZXX0NUTAkJCTB4RkY1Rg0KKyNkZWZp bmUgUlRTNTI2NF9JTkZPUk1fUlREM19DT0xECSgweDAxPDw1KQ0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9SRUdfRlBEQ1RMCQkweEZGNjANCisNCisjZGVmaW5lIFJUUzUyNjRfUkVHX0xETzEyX0NGRwkJ MHhGRjZFDQorI2RlZmluZSBSVFM1MjY0X0xETzEyX1NSX01BU0sJCSgweDAzPDw2KQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8xMl9TUl8xXzBfTVMJCSgweDAzPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8xMl9TUl8wXzVfTVMJCSgweDAyPDw2KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl9TUl8wXzJf NV9NUwkoMHgwMTw8NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfU1JfMF8wX01TCQkoMHgwMDw8 NikNCisjZGVmaW5lIFJUUzUyNjRfTERPMTJfVk9fVFVORV9NQVNLCSgweDA3PDwxKQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8xMl8xMTUJCSgweDAzPDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl8x MjAJCSgweDA0PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xMl8xMjUJCSgweDA1PDwxKQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8xMl8xMzAJCSgweDA2PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8x Ml8xMzUJCSgweDA3PDwxKQ0KKw0KKy8qIExETyBjb250cm9sIHJlZ2lzdGVyICovDQorI2RlZmlu ZSBSVFM1MjY0X0NBUkRfUFdSX0NUTAkJMHhGRDUwDQorI2RlZmluZSBSVFM1MjY0X1NEX0NMS19J U08JCSgweDAxPDw3KQ0KKyNkZWZpbmUgUlRTNTI2NF9QQURfU0RfREFUX0ZXX0NUUkwJKDB4MDE8 PDYpDQorI2RlZmluZSBSVFM1MjY0X1BVUERDCQkJKDB4MDE8PDUpDQorI2RlZmluZSBSVFM1MjY0 X1NEX0NNRF9JU08JCSgweDAxPDw0KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9PQ1BfVkREM19DVEwJ CTB4RkQ4OQ0KKyNkZWZpbmUgU0RfVkREM19ERVRFQ1RfRU4JCTB4MDgNCisjZGVmaW5lIFNEX1ZE RDNfT0NQX0lOVF9FTgkJMHgwNA0KKyNkZWZpbmUgU0RfVkREM19PQ1BfSU5UX0NMUgkJMHgwMg0K KyNkZWZpbmUgU0RfVkREM19PQ19DTFIJCQkweDAxDQorDQorI2RlZmluZSBSVFM1MjY0X09DUF9W REQzX1NUUwkJMHhGRDhBDQorI2RlZmluZSBTRF9WREQzX09DUF9ERVRFQ1QJCTB4MDgNCisjZGVm aW5lIFNEX1ZERDNfT0NfTk9XCQkJMHgwNA0KKyNkZWZpbmUgU0RfVkREM19PQ19FVkVSCQkJMHgw Mg0KKw0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfQ1RMCQkJMHhGRDhEDQorI2RlZmluZSBSVFM1MjY0 X09WUF9USU1FX01BU0sJCTB4RjANCisjZGVmaW5lIFJUUzUyNjRfT1ZQX1RJTUVfREZUCQkweDUw DQorI2RlZmluZSBSVFM1MjY0X09WUF9ERVRFQ1RfRU4JCTB4MDgNCisjZGVmaW5lIFJUUzUyNjRf T1ZQX0lOVF9FTgkJMHgwNA0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfSU5UX0NMUgkJMHgwMg0KKyNk ZWZpbmUgUlRTNTI2NF9PVlBfQ0xSCQkJMHgwMQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfU1RT CQkJMHhGRDhFDQorI2RlZmluZSBSVFM1MjY0X09WUF9HTFRDSF9USU1FX01BU0sJMHhGMA0KKyNk ZWZpbmUgUlRTNTI2NF9PVlBfR0xUQ0hfVElNRV9ERlQJMHg1MA0KKyNkZWZpbmUgUlRTNTI2NF9W T1ZFUl9ERVQJCTB4MDgNCisjZGVmaW5lIFJUUzUyNjRfT1ZQX05PVwkJCTB4MDQNCisjZGVmaW5l IFJUUzUyNjRfT1ZQX0VWRVIJCTB4MDINCisNCisjZGVmaW5lIFJUUzUyNjRfQ01EX09FX1NUQVJU X0VBUkxZCQkweEZEQ0INCisjZGVmaW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZX0xFQVZFCQkweDA4 DQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV9DWUNMRV9NQVNLCQkweDA2DQorI2RlZmlu ZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV80Q1lDTEUJCTB4MDYNCisjZGVmaW5lIFJUUzUyNjRfQ01E X09FX0VBUkxZXzNDWUNMRQkJMHgwNA0KKyNkZWZpbmUgUlRTNTI2NF9DTURfT0VfRUFSTFlfMkNZ Q0xFCQkweDAyDQorI2RlZmluZSBSVFM1MjY0X0NNRF9PRV9FQVJMWV8xQ1lDTEUJCTB4MDANCisj ZGVmaW5lIFJUUzUyNjRfQ01EX09FX0VBUkxZX0VOCQkJMHgwMQ0KKw0KKyNkZWZpbmUgUlRTNTI2 NF9EQVRfT0VfU1RBUlRfRUFSTFkJCTB4RkRDQw0KKyNkZWZpbmUgUlRTNTI2NF9EQVRfT0VfRUFS TFlfTEVBVkUJCTB4MDgNCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZX0NZQ0xFX01BU0sJ CTB4MDYNCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZXzRDWUNMRQkJMHgwNg0KKyNkZWZp bmUgUlRTNTI2NF9EQVRfT0VfRUFSTFlfM0NZQ0xFCQkweDA0DQorI2RlZmluZSBSVFM1MjY0X0RB VF9PRV9FQVJMWV8yQ1lDTEUJCTB4MDINCisjZGVmaW5lIFJUUzUyNjRfREFUX09FX0VBUkxZXzFD WUNMRQkJMHgwMA0KKyNkZWZpbmUgUlRTNTI2NF9EQVRfT0VfRUFSTFlfRU4JCQkweDAxDQorDQor I2RlZmluZSBSVFM1MjY0X0xETzEyMzMzMThfUE9XX0NUTAkweEZGNzANCisjZGVmaW5lIFJUUzUy NjRfVFVORV9SRUZfTERPMzMxOAkoMHgwMzw8NikNCisjZGVmaW5lIFJUUzUyNjRfVFVORV9SRUZf TERPMzMxOF9ERlQJKDB4MDI8PDYpDQorI2RlZmluZSBSVFM1MjY0X0xETzMzMThfUE9XRVJPTgkJ KDB4MDE8PDMpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfUE9XRVJPTgkJKDB4MDE8PDIpDQorI2Rl ZmluZSBSVFM1MjY0X0xETzJfUE9XRVJPTgkJKDB4MDE8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xE TzFfUE9XRVJPTgkJKDB4MDE8PDApDQorI2RlZmluZSBSVFM1MjY0X0xET19QT1dFUk9OX01BU0sJ KDB4MEY8PDApDQorDQorI2RlZmluZSBSVFM1MjY0X0RWMzMxOF9DRkcJCTB4RkY3MQ0KKyNkZWZp bmUgUlRTNTI2NF9EVjMzMThfVFVORV9NQVNLCSgweDA3PDw0KQ0KKyNkZWZpbmUgUlRTNTI2NF9E VjMzMThfMTgJCSgweDAyPDw0KQ0KKyNkZWZpbmUgUlRTNTI2NF9EVjMzMThfMTkJCSgweDA0PDw0 KQ0KKyNkZWZpbmUgUlRTNTI2NF9EVjMzMThfMzMJCSgweDA3PDw0KQ0KKw0KKyNkZWZpbmUgUlRT NTI2NF9MRE8xX0NGRzAJCTB4RkY3Mg0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfTUFT SwkoMHgwNyA8PCA1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9FTgkJKDB4MDEgPDwgNCkN CisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfTE1UX1RIRF9NQVNLCSgweDAzIDw8IDIpDQorI2Rl ZmluZSBSVFM1MjY0X0xETzFfT0NQX0xNVF9FTgkJKDB4MDEgPDwgMSkNCisNCisjZGVmaW5lIFJU UzUyNjRfTERPMV9PQ1BfVEhEXzg1MAkoMHgwMDw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9P Q1BfVEhEXzk1MAkoMHgwMTw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9PQ1BfVEhEXzEwNTAJ KDB4MDI8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfT0NQX1RIRF8xMTAwCSgweDAzPDw1KQ0K KyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfMTE1MAkoMHgwNDw8NSkNCisjZGVmaW5lIFJU UzUyNjRfTERPMV9PQ1BfVEhEXzEyMDAJKDB4MDU8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzFf T0NQX1RIRF8xMzAwCSgweDA2PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8xX09DUF9USERfMTM1 MAkoMHgwNzw8NSkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPMV9MTVRfVEhEXzE3MDAJKDB4MDA8 PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfTE1UX1RIRF8xODAwCSgweDAxPDwyKQ0KKyNkZWZp bmUgUlRTNTI2NF9MRE8xX0xNVF9USERfMTkwMAkoMHgwMjw8MikNCisjZGVmaW5lIFJUUzUyNjRf TERPMV9MTVRfVEhEXzIwMDAJKDB4MDM8PDIpDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzFfQ0ZH MQkJMHhGRjczDQorI2RlZmluZSBSVFM1MjY0X0xETzFfVFVORV9NQVNLCQkoMHgwNzw8MSkNCisj ZGVmaW5lIFJUUzUyNjRfTERPMV8xOAkJCSgweDA1PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8x XzMzCQkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzFfUFdEX01BU0sJCSgweDAxPDww KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX0NGRzAJCTB4RkY3NA0KKyNkZWZpbmUgUlRTNTI2 NF9MRE8yX09DUF9USERfTUFTSwkoMHgwNzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9PQ1Bf RU4JCSgweDAxPDw0KQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9MTVRfVEhEX01BU0sJKDB4 MDM8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX0xNVF9FTgkJKDB4MDE8PDEpDQorDQor I2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF83NTAJKDB4MDA8PDUpDQorI2RlZmluZSBSVFM1 MjY0X0xETzJfT0NQX1RIRF84NTAJKDB4MDE8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQ X1RIRF85MDAJKDB4MDI8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF85NTAJKDB4 MDM8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQX1RIRF8xMDUwCSgweDA0PDw1KQ0KKyNk ZWZpbmUgUlRTNTI2NF9MRE8yX09DUF9USERfMTEwMAkoMHgwNTw8NSkNCisjZGVmaW5lIFJUUzUy NjRfTERPMl9PQ1BfVEhEXzExNTAJKDB4MDY8PDUpDQorI2RlZmluZSBSVFM1MjY0X0xETzJfT0NQ X1RIRF8xMjAwCSgweDA3PDw1KQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yX0xNVF9USERfMTcw MAkoMHgwMDw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9MTVRfVEhEXzE4MDAJKDB4MDE8PDIp DQorI2RlZmluZSBSVFM1MjY0X0xETzJfTE1UX1RIRF8xOTAwCSgweDAyPDwyKQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8yX0xNVF9USERfMjAwMAkoMHgwMzw8MikNCisNCisjZGVmaW5lIFJUUzUyNjRf TERPMl9DRkcxCQkweEZGNzUNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9UVU5FX01BU0sJCSgweDA3 PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yXzE4CQkJKDB4MDI8PDEpDQorI2RlZmluZSBSVFM1 MjY0X0xETzJfMTg1CQkoMHgwMzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl8xOQkJCSgweDA0 PDwxKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8yXzE5NQkJKDB4MDU8PDEpDQorI2RlZmluZSBSVFM1 MjY0X0xETzJfMzMJCQkoMHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPMl9QV0RfTUFTSwkJ KDB4MDE8PDApDQorDQorI2RlZmluZSBSVFM1MjY0X0xETzNfQ0ZHMAkJMHhGRjc2DQorI2RlZmlu ZSBSVFM1MjY0X0xETzNfT0NQX1RIRF9NQVNLCSgweDA3PDw1KQ0KKyNkZWZpbmUgUlRTNTI2NF9M RE8zX09DUF9FTgkJKDB4MDE8PDQpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfT0NQX0xNVF9USERf TUFTSwkoMHgwMzw8MikNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfTE1UX0VOCQkoMHgwMTw8 MSkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfVEhEXzYxMAkoMHgwMDw8NSkNCisjZGVm aW5lIFJUUzUyNjRfTERPM19PQ1BfVEhEXzYzMAkoMHgwMTw8NSkNCisjZGVmaW5lIFJUUzUyNjRf TERPM19PQ1BfVEhEXzY3MAkoMHgwMjw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfVEhE XzcxMAkoMHgwMzw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfVEhEXzc1MAkoMHgwNDw8 NSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM19PQ1BfVEhEXzc3MAkoMHgwNTw8NSkNCisjZGVmaW5l IFJUUzUyNjRfTERPM19PQ1BfVEhEXzgxMAkoMHgwNjw8NSkNCisjZGVmaW5lIFJUUzUyNjRfTERP M19PQ1BfVEhEXzg1MAkoMHgwNzw8NSkNCisNCisjZGVmaW5lIFJUUzUyNjRfTERPM19MTVRfVEhE XzEyMDAJKDB4MDA8PDIpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfTE1UX1RIRF8xMzAwCSgweDAx PDwyKQ0KKyNkZWZpbmUgUlRTNTI2NF9MRE8zX0xNVF9USERfMTQwMAkoMHgwMjw8MikNCisjZGVm aW5lIFJUUzUyNjRfTERPM19MTVRfVEhEXzE1MDAJKDB4MDM8PDIpDQorDQorI2RlZmluZSBSVFM1 MjY0X0xETzNfQ0ZHMQkJMHhGRjc3DQorI2RlZmluZSBSVFM1MjY0X0xETzNfVFVORV9NQVNLCQko MHgwNzw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM18xMgkJCSgweDAyPDwxKQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8zXzEyNQkJKDB4MDM8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfMTMJCQko MHgwNDw8MSkNCisjZGVmaW5lIFJUUzUyNjRfTERPM18xMzUJCSgweDA1PDwxKQ0KKyNkZWZpbmUg UlRTNTI2NF9MRE8zXzMzCQkJKDB4MDc8PDEpDQorI2RlZmluZSBSVFM1MjY0X0xETzNfUFdEX01B U0sJCSgweDAxPDwwKQ0KKw0KKyNkZWZpbmUgUlRTNTI2NF9SRUdfUE1FX0ZPUkNFX0NUTAkweEZG NzgNCisjZGVmaW5lIEZPUkNFX1BNX0NPTlRST0wJCTB4MjANCisjZGVmaW5lIEZPUkNFX1BNX1ZB TFVFCQkJMHgxMA0KKyNkZWZpbmUgUkVHX0VGVVNFX0JZUEFTUwkJMHgwOA0KKyNkZWZpbmUgUkVH X0VGVVNFX1BPUgkJCTB4MDQNCisjZGVmaW5lIFJFR19FRlVTRV9QT1dFUl9NQVNLCQkweDAzDQor I2RlZmluZSBSRUdfRUZVU0VfUE9XRVJPTgkJMHgwMw0KKyNkZWZpbmUgUkVHX0VGVVNFX1BPV0VS T0ZGCQkweDAwDQorDQorI2RlZmluZSBSVFM1MjY0X1BXUl9DVVQJCQkweEZGODENCisjZGVmaW5l IFJUUzUyNjRfQ0ZHX01FTV9QRAkJMHhGMA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9PVlBfREVUCQkJ MHhGRjhBDQorI2RlZmluZSBSVFM1MjY0X1BPV19WREVUCQkweDA0DQorI2RlZmluZSBSVFM1MjY0 X1RVTkVfVlJPVl9NQVNLCQkweDAzDQorI2RlZmluZSBSVFM1MjY0X1RVTkVfVlJPVl8yVgkJMHgw Mw0KKyNkZWZpbmUgUlRTNTI2NF9UVU5FX1ZST1ZfMVY4CQkweDAyDQorI2RlZmluZSBSVFM1MjY0 X1RVTkVfVlJPVl8xVjYJCTB4MDENCisjZGVmaW5lIFJUUzUyNjRfVFVORV9WUk9WXzFWNAkJMHgw MA0KKw0KKyNkZWZpbmUgUlRTNTI2NF9DS01VWF9NQklBU19QV1IJCTB4RkY4Qg0KKyNkZWZpbmUg UlRTNTI2NF9OT05fWFRBTF9TRUwJCTB4ODANCisjZGVmaW5lIFJUUzUyNjRfUE9XX0NLTVVYCQkw eDQwDQorI2RlZmluZSBSVFM1MjY0X0xWRF9NQVNLCQkweDA0DQorI2RlZmluZSBSVFM1MjY0X1BP V19QU1dfTUFTSwkJMHgwMw0KKyNkZWZpbmUgUlRTNTI2NF9QT1dfUFNXX0RGVAkJMHgwMw0KKw0K Ky8qIFNpbmdsZSBMVU4sIHN1cHBvcnQgU0QvU0QgRVhQUkVTUyAqLw0KKyNkZWZpbmUgREVGQVVM VF9TSU5HTEUJCTANCisjZGVmaW5lIFNEX0xVTgkJCTENCisjZGVmaW5lIFNEX0VYUFJFU1NfTFVO CQkyDQorDQoraW50IHJ0czUyNjRfcGNpX3N3aXRjaF9jbG9jayhzdHJ1Y3QgcnRzeF9wY3IgKnBj ciwgdW5zaWduZWQgaW50IGNhcmRfY2xvY2ssDQorCQl1OCBzc2NfZGVwdGgsIGJvb2wgaW5pdGlh bF9tb2RlLCBib29sIGRvdWJsZV9jbGssIGJvb2wgdnBjbGspOw0KKw0KKyNlbmRpZiAvKiBSVFM1 MjY0X0ggKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5j IGIvZHJpdmVycy9taXNjL2NhcmRyZWFkZXIvcnRzeF9wY3IuYw0KaW5kZXggYTMwNzUxYWQzNzMz Li4xYTY0MzY0NzAwZWIgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4 X3Bjci5jDQorKysgYi9kcml2ZXJzL21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5jDQpAQCAtMjYs NiArMjYsNyBAQA0KICNpbmNsdWRlICJydHN4X3Bjci5oIg0KICNpbmNsdWRlICJydHM1MjYxLmgi DQogI2luY2x1ZGUgInJ0czUyMjguaCINCisjaW5jbHVkZSAicnRzNTI2NC5oIg0KIA0KIHN0YXRp YyBib29sIG1zaV9lbiA9IHRydWU7DQogbW9kdWxlX3BhcmFtKG1zaV9lbiwgYm9vbCwgU19JUlVH TyB8IFNfSVdVU1IpOw0KQEAgLTU0LDYgKzU1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lf ZGV2aWNlX2lkIHJ0c3hfcGNpX2lkc1tdID0gew0KIAl7IFBDSV9ERVZJQ0UoMHgxMEVDLCAweDUy NjApLCBQQ0lfQ0xBU1NfT1RIRVJTIDw8IDE2LCAweEZGMDAwMCB9LA0KIAl7IFBDSV9ERVZJQ0Uo MHgxMEVDLCAweDUyNjEpLCBQQ0lfQ0xBU1NfT1RIRVJTIDw8IDE2LCAweEZGMDAwMCB9LA0KIAl7 IFBDSV9ERVZJQ0UoMHgxMEVDLCAweDUyMjgpLCBQQ0lfQ0xBU1NfT1RIRVJTIDw8IDE2LCAweEZG MDAwMCB9LA0KKwl7IFBDSV9ERVZJQ0UoMHgxMEVDLCAweDUyNjQpLCBQQ0lfQ0xBU1NfT1RIRVJT IDw8IDE2LCAweEZGMDAwMCB9LA0KIAl7IDAsIH0NCiB9Ow0KIA0KQEAgLTcxNCw2ICs3MTYsOSBA QCBpbnQgcnRzeF9wY2lfc3dpdGNoX2Nsb2NrKHN0cnVjdCBydHN4X3BjciAqcGNyLCB1bnNpZ25l ZCBpbnQgY2FyZF9jbG9jaywNCiAJaWYgKFBDSV9QSUQocGNyKSA9PSBQSURfNTIyOCkNCiAJCXJl dHVybiBydHM1MjI4X3BjaV9zd2l0Y2hfY2xvY2socGNyLCBjYXJkX2Nsb2NrLA0KIAkJCQlzc2Nf ZGVwdGgsIGluaXRpYWxfbW9kZSwgZG91YmxlX2NsaywgdnBjbGspOw0KKwlpZiAoUENJX1BJRChw Y3IpID09IFBJRF81MjY0KQ0KKwkJcmV0dXJuIHJ0czUyNjRfcGNpX3N3aXRjaF9jbG9jayhwY3Is IGNhcmRfY2xvY2ssDQorCQkJCXNzY19kZXB0aCwgaW5pdGlhbF9tb2RlLCBkb3VibGVfY2xrLCB2 cGNsayk7DQogDQogCWlmIChpbml0aWFsX21vZGUpIHsNCiAJCS8qIFdlIHVzZSAyNTBrKGFyb3Vu ZCkgaGVyZSwgaW4gaW5pdGlhbCBzdGFnZSAqLw0KQEAgLTk4Nyw3ICs5OTIsOCBAQCBzdGF0aWMg aXJxcmV0dXJuX3QgcnRzeF9wY2lfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZCkNCiANCiAJaW50 X3JlZyAmPSAocGNyLT5iaWVyIHwgMHg3RkZGRkYpOw0KIA0KLQlpZiAoaW50X3JlZyAmIFNEX09D X0lOVCkNCisJaWYgKChpbnRfcmVnICYgU0RfT0NfSU5UKSB8fA0KKwkJCSgoaW50X3JlZyAmIFNE X09WUF9JTlQpICYmIChQQ0lfUElEKHBjcikgPT0gUElEXzUyNjQpKSkNCiAJCXJ0c3hfcGNpX3By b2Nlc3Nfb2NwX2ludGVycnVwdChwY3IpOw0KIA0KIAlpZiAoaW50X3JlZyAmIFNEX0lOVCkgew0K QEAgLTExNTksNyArMTE2NSw5IEBAIHZvaWQgcnRzeF9wY2lfZW5hYmxlX29vYnNfcG9sbGluZyhz dHJ1Y3QgcnRzeF9wY3IgKnBjcikNCiB7DQogCXUxNiB2YWw7DQogDQotCWlmICgoUENJX1BJRChw Y3IpICE9IFBJRF81MjVBKSAmJiAoUENJX1BJRChwY3IpICE9IFBJRF81MjYwKSkgew0KKwlpZiAo KFBDSV9QSUQocGNyKSAhPSBQSURfNTI1QSkgJiYNCisJCShQQ0lfUElEKHBjcikgIT0gUElEXzUy NjApICYmDQorCQkoUENJX1BJRChwY3IpICE9IFBJRF81MjY0KSkgew0KIAkJcnRzeF9wY2lfcmVh ZF9waHlfcmVnaXN0ZXIocGNyLCAweDAxLCAmdmFsKTsNCiAJCXZhbCB8PSAxPDw5Ow0KIAkJcnRz eF9wY2lfd3JpdGVfcGh5X3JlZ2lzdGVyKHBjciwgMHgwMSwgdmFsKTsNCkBAIC0xMTc1LDcgKzEx ODMsOSBAQCB2b2lkIHJ0c3hfcGNpX2Rpc2FibGVfb29ic19wb2xsaW5nKHN0cnVjdCBydHN4X3Bj ciAqcGNyKQ0KIHsNCiAJdTE2IHZhbDsNCiANCi0JaWYgKChQQ0lfUElEKHBjcikgIT0gUElEXzUy NUEpICYmIChQQ0lfUElEKHBjcikgIT0gUElEXzUyNjApKSB7DQorCWlmICgoUENJX1BJRChwY3Ip ICE9IFBJRF81MjVBKSAmJg0KKwkJKFBDSV9QSUQocGNyKSAhPSBQSURfNTI2MCkgJiYNCisJCShQ Q0lfUElEKHBjcikgIT0gUElEXzUyNjQpKSB7DQogCQlydHN4X3BjaV9yZWFkX3BoeV9yZWdpc3Rl cihwY3IsIDB4MDEsICZ2YWwpOw0KIAkJdmFsICY9IH4oMTw8OSk7DQogCQlydHN4X3BjaV93cml0 ZV9waHlfcmVnaXN0ZXIocGNyLCAweDAxLCB2YWwpOw0KQEAgLTEyMjYsNyArMTIzNiw3IEBAIHN0 YXRpYyBpbnQgcnRzeF9wY2lfaW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcikNCiAJcnRzeF9w Y2lfZW5hYmxlX2J1c19pbnQocGNyKTsNCiANCiAJLyogUG93ZXIgb24gU1NDICovDQotCWlmIChQ Q0lfUElEKHBjcikgPT0gUElEXzUyNjEpIHsNCisJaWYgKChQQ0lfUElEKHBjcikgPT0gUElEXzUy NjEpIHx8IChQQ0lfUElEKHBjcikgPT0gUElEXzUyNjQpKSB7DQogCQkvKiBHYXRpbmcgcmVhbCBt Y3UgY2xvY2sgKi8NCiAJCWVyciA9IHJ0c3hfcGNpX3dyaXRlX3JlZ2lzdGVyKHBjciwgUlRTNTI2 MV9GV19DRkcxLA0KIAkJCVJUUzUyNjFfTUNVX0NMT0NLX0dBVElORywgMCk7DQpAQCAtMTI3MCw2 ICsxMjgwLDExIEBAIHN0YXRpYyBpbnQgcnRzeF9wY2lfaW5pdF9odyhzdHJ1Y3QgcnRzeF9wY3Ig KnBjcikNCiAJZWxzZSBpZiAoUENJX1BJRChwY3IpID09IFBJRF81MjI4KQ0KIAkJcnRzeF9wY2lf YWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNTQ19DVEwyLCAweEZGLA0KIAkJCVJUUzUyMjhf U1NDX0RFUFRIXzJNKTsNCisJZWxzZSBpZiAoaXNfdmVyc2lvbihwY3IsIDB4NTI2NCwgSUNfVkVS X0EpKQ0KKwkJcnRzeF9wY2lfYWRkX2NtZChwY3IsIFdSSVRFX1JFR19DTUQsIFNTQ19DVEwxLCBT U0NfUlNUQiwgMCk7DQorCWVsc2UgaWYgKFBDSV9QSUQocGNyKSA9PSBQSURfNTI2NCkNCisJCXJ0 c3hfcGNpX2FkZF9jbWQocGNyLCBXUklURV9SRUdfQ01ELCBTU0NfQ1RMMiwgMHhGRiwNCisJCQlS VFM1MjY0X1NTQ19ERVBUSF8yTSk7DQogCWVsc2UNCiAJCXJ0c3hfcGNpX2FkZF9jbWQocGNyLCBX UklURV9SRUdfQ01ELCBTU0NfQ1RMMiwgMHhGRiwgMHgxMik7DQogDQpAQCAtMTMwNSw2ICsxMzIw LDcgQEAgc3RhdGljIGludCBydHN4X3BjaV9pbml0X2h3KHN0cnVjdCBydHN4X3BjciAqcGNyKQ0K IAljYXNlIFBJRF81MjYwOg0KIAljYXNlIFBJRF81MjYxOg0KIAljYXNlIFBJRF81MjI4Og0KKwlj YXNlIFBJRF81MjY0Og0KIAkJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBQTV9DTEtfRk9S Q0VfQ1RMLCAxLCAxKTsNCiAJCWJyZWFrOw0KIAlkZWZhdWx0Og0KQEAgLTE0MDQsNiArMTQyMCwx MCBAQCBzdGF0aWMgaW50IHJ0c3hfcGNpX2luaXRfY2hpcChzdHJ1Y3QgcnRzeF9wY3IgKnBjcikN CiAJY2FzZSAweDUyMjg6DQogCQlydHM1MjI4X2luaXRfcGFyYW1zKHBjcik7DQogCQlicmVhazsN CisNCisJY2FzZSAweDUyNjQ6DQorCQlydHM1MjY0X2luaXRfcGFyYW1zKHBjcik7DQorCQlicmVh azsNCiAJfQ0KIA0KIAlwY3JfZGJnKHBjciwgIlBJRDogMHglMDR4LCBJQyB2ZXJzaW9uOiAweCUw MnhcbiIsDQpAQCAtMTU0NCw3ICsxNTY0LDcgQEAgc3RhdGljIGludCBydHN4X3BjaV9wcm9iZShz dHJ1Y3QgcGNpX2RldiAqcGNpZGV2LA0KIAlwY3ItPnBjaSA9IHBjaWRldjsNCiAJZGV2X3NldF9k cnZkYXRhKCZwY2lkZXYtPmRldiwgaGFuZGxlKTsNCiANCi0JaWYgKENIS19QQ0lfUElEKHBjciwg MHg1MjVBKSkNCisJaWYgKChDSEtfUENJX1BJRChwY3IsIDB4NTI1QSkpIHx8IChDSEtfUENJX1BJ RChwY3IsIDB4NTI2NCkpKQ0KIAkJYmFyID0gMTsNCiAJbGVuID0gcGNpX3Jlc291cmNlX2xlbihw Y2lkZXYsIGJhcik7DQogCWJhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpZGV2LCBiYXIpOw0K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmggYi9kcml2ZXJz L21pc2MvY2FyZHJlYWRlci9ydHN4X3Bjci5oDQppbmRleCAzN2QxZjMxNmFlMTcuLjkyMTVkNjZk ZTAwYyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmgNCisr KyBiL2RyaXZlcnMvbWlzYy9jYXJkcmVhZGVyL3J0c3hfcGNyLmgNCkBAIC03NCw2ICs3NCw3IEBA IHZvaWQgcnRsODQxMWJfaW5pdF9wYXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpOw0KIHZvaWQg cnRzNTI2MF9pbml0X3BhcmFtcyhzdHJ1Y3QgcnRzeF9wY3IgKnBjcik7DQogdm9pZCBydHM1MjYx X2luaXRfcGFyYW1zKHN0cnVjdCBydHN4X3BjciAqcGNyKTsNCiB2b2lkIHJ0czUyMjhfaW5pdF9w YXJhbXMoc3RydWN0IHJ0c3hfcGNyICpwY3IpOw0KK3ZvaWQgcnRzNTI2NF9pbml0X3BhcmFtcyhz dHJ1Y3QgcnRzeF9wY3IgKnBjcik7DQogDQogc3RhdGljIGlubGluZSB1OCBtYXBfc2RfZHJpdmUo aW50IGlkeCkNCiB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1t Yy5jIGIvZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jDQppbmRleCA4N2Q3ODQzMmEx ZTAuLjdkZmU3YzRlMDA3NyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvcnRzeF9wY2lf c2RtbWMuYw0KKysrIGIvZHJpdmVycy9tbWMvaG9zdC9ydHN4X3BjaV9zZG1tYy5jDQpAQCAtNyw2 ICs3LDcgQEANCiAgKiAgIFdlaSBXQU5HIDx3ZWlfd2FuZ0ByZWFsc2lsLmNvbS5jbj4NCiAgKi8N CiANCisjaW5jbHVkZSA8bGludXgvcGNpLmg+DQogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0K ICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQogI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4NCkBA IC05NDcsNyArOTQ4LDcgQEAgc3RhdGljIGludCBzZF9wb3dlcl9vbihzdHJ1Y3QgcmVhbHRla19w Y2lfc2RtbWMgKmhvc3QsIHVuc2lnbmVkIGNoYXIgcG93ZXJfbW9kZSkNCiAJLyogc2VuZCBhdCBs ZWFzdCA3NCBjbG9ja3MgKi8NCiAJcnRzeF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBTRF9CVVNf U1RBVCwgU0RfQ0xLX1RPR0dMRV9FTiwgU0RfQ0xLX1RPR0dMRV9FTik7DQogDQotCWlmIChQQ0lf UElEKHBjcikgPT0gUElEXzUyNjEpIHsNCisJaWYgKChQQ0lfUElEKHBjcikgPT0gUElEXzUyNjEp IHx8IChQQ0lfUElEKHBjcikgPT0gUElEXzUyNjQpKSB7DQogCQkvKg0KIAkJICogSWYgdGVzdCBt b2RlIGlzIHNldCBzd2l0Y2ggdG8gU0QgRXhwcmVzcyBtYW5kYXRvcmlseSwNCiAJCSAqIHRoaXMg aXMgb25seSBmb3IgZmFjdG9yeSB0ZXN0aW5nLg0KQEAgLTEzNjQsNiArMTM2NSwxNCBAQCBzdGF0 aWMgaW50IHNkbW1jX2luaXRfc2RfZXhwcmVzcyhzdHJ1Y3QgbW1jX2hvc3QgKm1tYywgc3RydWN0 IG1tY19pb3MgKmlvcykNCiAJc3RydWN0IHJlYWx0ZWtfcGNpX3NkbW1jICpob3N0ID0gbW1jX3By aXYobW1jKTsNCiAJc3RydWN0IHJ0c3hfcGNyICpwY3IgPSBob3N0LT5wY3I7DQogDQorCWlmIChQ Q0lfUElEKHBjcikgPT0gUElEXzUyNjQpIHsNCisJCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRf c2V0X3dvcmQocGNyLT5wY2ksIFBDSV9FWFBfTE5LQ1RMMiwNCisJCQkJUENJX0VYUF9MTktDVEwy X1RMUywgUENJX0VYUF9MTktDVEwyX1RMU18yXzVHVCk7DQorCQlwY2lfd3JpdGVfY29uZmlnX2J5 dGUocGNyLT5wY2ksIDB4ODBlLCAweDAyKTsNCisJCXBjaWVfY2FwYWJpbGl0eV9jbGVhcl9hbmRf c2V0X3dvcmQocGNyLT5wY2ksIFBDSV9FWFBfTE5LQ1RMMiwNCisJCQkJUENJX0VYUF9MTktDVEwy X1RMUywgUENJX0VYUF9MTktDVEwyX1RMU181XzBHVCk7DQorCX0NCisNCiAJLyogU2V0IHJlbGlu a190aW1lIGZvciBjaGFuZ2luZyB0byBQQ0llIGNhcmQgKi8NCiAJcmVsaW5rX3RpbWUgPSAweDhG RkY7DQogDQpAQCAtMTM3OSw2ICsxMzg4LDEyIEBAIHN0YXRpYyBpbnQgc2RtbWNfaW5pdF9zZF9l eHByZXNzKHN0cnVjdCBtbWNfaG9zdCAqbW1jLCBzdHJ1Y3QgbW1jX2lvcyAqaW9zKQ0KIAlpZiAo cGNyLT5vcHMtPmRpc2FibGVfYXV0b19ibGluaykNCiAJCXBjci0+b3BzLT5kaXNhYmxlX2F1dG9f YmxpbmsocGNyKTsNCiANCisJaWYgKFBDSV9QSUQocGNyKSA9PSBQSURfNTI2NCkgew0KKwkJcnRz eF9wY2lfd3JpdGVfcmVnaXN0ZXIocGNyLCBSVFM1MjY0X0FVVE9MT0FEX0NGRzIsDQorCQkJUlRT NTI2NF9DSElQX1JTVF9OX1NFTCwgUlRTNTI2NF9DSElQX1JTVF9OX1NFTCk7DQorCQlydHN4X3Bj aV93cml0ZV9yZWdpc3RlcihwY3IsIEdQSU9fQ1RMLCAweDAyLCAweDAwKTsNCisJfQ0KKw0KIAkv KiBGb3IgUENJZS9OVk1lIG1vZGUgY2FuJ3QgZW50ZXIgZGVsaW5rIGlzc3VlICovDQogCXBjci0+ aHdfcGFyYW0uaW50ZXJydXB0X2VuICY9IH4oU0RfSU5UX0VOKTsNCiAJcnRzeF9wY2lfd3JpdGVs KHBjciwgUlRTWF9CSUVSLCBwY3ItPmh3X3BhcmFtLmludGVycnVwdF9lbik7DQpkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9saW51eC9ydHN4X3BjaS5oIGIvaW5jbHVkZS9saW51eC9ydHN4X3BjaS5oDQpp bmRleCA1MzQwMzhkOTYyZTQuLjQ2MTJlZjA5YTBjNyAxMDA2NDQNCi0tLSBhL2luY2x1ZGUvbGlu dXgvcnRzeF9wY2kuaA0KKysrIGIvaW5jbHVkZS9saW51eC9ydHN4X3BjaS5oDQpAQCAtNjAsNiAr NjAsNyBAQA0KICNkZWZpbmUgICBTRF9FWElTVAkJCSgxIDw8IDE2KQ0KICNkZWZpbmUgICBERUxJ TktfSU5UCQkJR1BJTzBfSU5UDQogI2RlZmluZSAgIE1TX09DX0lOVAkJCSgxIDw8IDIzKQ0KKyNk ZWZpbmUgICBTRF9PVlBfSU5UCQkoMSA8PCAyMykNCiAjZGVmaW5lICAgU0RfT0NfSU5UCQkJKDEg PDwgMjIpDQogDQogI2RlZmluZSBDQVJEX0lOVAkJKFhEX0lOVCB8IE1TX0lOVCB8IFNEX0lOVCkN CkBAIC04MCw2ICs4MSw3IEBADQogI2RlZmluZSAgIE9DX0lOVF9FTgkJCSgxIDw8IDIzKQ0KICNk ZWZpbmUgICBERUxJTktfSU5UX0VOCQkJR1BJTzBfSU5UX0VODQogI2RlZmluZSAgIE1TX09DX0lO VF9FTgkJCSgxIDw8IDIzKQ0KKyNkZWZpbmUgICBTRF9PVlBfSU5UX0VOCQkJKDEgPDwgMjMpDQog I2RlZmluZSAgIFNEX09DX0lOVF9FTgkJCSgxIDw8IDIyKQ0KIA0KICNkZWZpbmUgUlRTWF9EVU1f UkVHCQkJMHgxQw0KQEAgLTU4Myw2ICs1ODUsNyBAQA0KICNkZWZpbmUgICBPQkZGX0RJU0FCTEUJ CQkweDAwDQogDQogI2RlZmluZSBDRFJFU1VNRUNUTAkJCTB4RkU1Mg0KKyNkZWZpbmUgQ0RHVwkJ CQkweEZFNTMNCiAjZGVmaW5lIFdBS0VfU0VMX0NUTAkJCTB4RkU1NA0KICNkZWZpbmUgUENMS19D VEwJCQkweEZFNTUNCiAjZGVmaW5lICAgUENMS19NT0RFX1NFTAkJCTB4MjANCkBAIC03NjQsNiAr NzY3LDkgQEANCiAjZGVmaW5lICAgU0RfVklPX0xET18xVjgJCTB4NDANCiAjZGVmaW5lICAgU0Rf VklPX0xET18zVjMJCTB4NzANCiANCisjZGVmaW5lIFJUUzUyNjRfQVVUT0xPQURfQ0ZHMgkJMHhG RjdEDQorI2RlZmluZSBSVFM1MjY0X0NISVBfUlNUX05fU0VMCQkoMSA8PCA2KQ0KKw0KICNkZWZp bmUgUlRTNTI2MF9BVVRPTE9BRF9DRkc0CQkweEZGN0YNCiAjZGVmaW5lICAgUlRTNTI2MF9NSU1P X0RJU0FCTEUJCTB4OEENCiAvKlJUUzUyNjEqLw0KQEAgLTEyNjEsNiArMTI2Nyw3IEBAIHN0cnVj dCBydHN4X3BjciB7DQogCXU4CQkJCWRtYV9lcnJvcl9jb3VudDsNCiAJdTgJCQlvY3Bfc3RhdDsN CiAJdTgJCQlvY3Bfc3RhdDI7DQorCXU4CQkJb3ZwX3N0YXQ7DQogCXU4CQkJcnRkM19lbjsNCiB9 Ow0KIA0KQEAgLTEyNzEsNiArMTI3OCw3IEBAIHN0cnVjdCBydHN4X3BjciB7DQogI2RlZmluZSBQ SURfNTI2MAkweDUyNjANCiAjZGVmaW5lIFBJRF81MjYxCTB4NTI2MQ0KICNkZWZpbmUgUElEXzUy MjgJMHg1MjI4DQorI2RlZmluZSBQSURfNTI2NAkweDUyNjQNCiANCiAjZGVmaW5lIENIS19QQ0lf UElEKHBjciwgcGlkKQkJKChwY3IpLT5wY2ktPmRldmljZSA9PSAocGlkKSkNCiAjZGVmaW5lIFBD SV9WSUQocGNyKQkJCSgocGNyKS0+cGNpLT52ZW5kb3IpDQotLSANCjIuMjUuMQ==