From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A52FAC433DF for ; Fri, 19 Jun 2020 09:42:30 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6EDA120890 for ; Fri, 19 Jun 2020 09:42:30 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="lxIKatnx" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731783AbgFSJm3 (ORCPT ); Fri, 19 Jun 2020 05:42:29 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:56638 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1732173AbgFSJm0 (ORCPT ); Fri, 19 Jun 2020 05:42:26 -0400 X-UUID: 391b4275a91c42c084f542a0c227f688-20200619 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=xmg1w3ypX4AvT1+i24MnshAnpwzBsGKjigr9tp4Uf7E=; b=lxIKatnx5Z+RsisdwUs86yNdT7R3ChAuisRRAcOSmvnPyuuGdgnr4UO3QWqb8HbOjDkAlGmqqzypQ7vQHixlMEMa7PE1R74yvwld494sLB5Acbs2noDI8lXgEm0jAx5llt+CrQ8PGJaXs6oMuPKO9y849qgBwTkdJ+Cn604xiK0=; X-UUID: 391b4275a91c42c084f542a0c227f688-20200619 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 677885380; Fri, 19 Jun 2020 17:42:07 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 19 Jun 2020 17:42:03 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 19 Jun 2020 17:42:02 +0800 From: Neal Liu To: Rob Herring , Matthias Brugger CC: Neal Liu , , , , , Subject: [PATCH v2 2/2] soc: mediatek: devapc: add devapc-mt6873 driver Date: Fri, 19 Jun 2020 17:42:00 +0800 Message-ID: <1592559720-8482-3-git-send-email-neal.liu@mediatek.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1592559720-8482-1-git-send-email-neal.liu@mediatek.com> References: <1592559720-8482-1-git-send-email-neal.liu@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: E0B163962F1135967F8C685B03557F40BC5F0C13593F6F8072F8DD8B2E6A36CD2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org TVQ2ODczIGJ1cyBmcmFicmljIHByb3ZpZGVzIFRydXN0Wm9uZSBzZWN1cml0eSBzdXBwb3J0IGFu ZCBkYXRhDQpwcm90ZWN0aW9uIHRvIHByZXZlbnQgc2xhdmVzIGZyb20gYmVpbmcgYWNjZXNzZWQg YnkgdW5leHBlY3RlZA0KbWFzdGVycy4NClRoZSBzZWN1cml0eSB2aW9sYXRpb25zIGFyZSBsb2dn ZWQgYW5kIHNlbnQgdG8gdGhlIHByb2Nlc3NvciBmb3INCmZ1cnRoZXIgYW5hbHlzaXMgb3IgY291 bnRlcm1lYXN1cmVzLg0KDQpBbnkgb2NjdXJyZW5jZSBvZiBzZWN1cml0eSB2aW9sYXRpb24gd291 bGQgcmFpc2UgYW4gaW50ZXJydXB0LCBhbmQNCml0IHdpbGwgYmUgaGFuZGxlZCBieSBkZXZhcGMt bXQ2ODczIGRyaXZlci4gVGhlIHZpb2xhdGlvbg0KaW5mb3JtYXRpb24gaXMgcHJpbnRlZCBpbiBv cmRlciB0byBmaW5kIHRoZSBtdXJkZXJlci4NCg0KU2lnbmVkLW9mZi1ieTogTmVhbCBMaXUgPG5l YWwubGl1QG1lZGlhdGVrLmNvbT4NCi0tLQ0KIGRyaXZlcnMvc29jL21lZGlhdGVrL0tjb25maWcg ICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsNCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtl ZmlsZSAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArDQogZHJpdmVycy9zb2MvbWVkaWF0ZWsv ZGV2YXBjL0tjb25maWcgICAgICAgICAgICAgICB8ICAgMjUgKw0KIGRyaXZlcnMvc29jL21lZGlh dGVrL2RldmFwYy9NYWtlZmlsZSAgICAgICAgICAgICAgfCAgIDEzICsNCiBkcml2ZXJzL3NvYy9t ZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10Njg3My5jICAgICAgIHwgMTY1MiArKysrKysrKysrKysr KysrKysrKysNCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10Njg3My5oICAg ICAgIHwgIDExMSArKw0KIGRyaXZlcnMvc29jL21lZGlhdGVrL2RldmFwYy9kZXZhcGMtbXRrLW11 bHRpLWFvLmMgfCAgNzU2ICsrKysrKysrKysNCiBkcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMv ZGV2YXBjLW10ay1tdWx0aS1hby5oIHwgIDE4MiArKysNCiA4IGZpbGVzIGNoYW5nZWQsIDI3NDYg aW5zZXJ0aW9ucygrKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRlay9k ZXZhcGMvS2NvbmZpZw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9tZWRpYXRlay9k ZXZhcGMvTWFrZWZpbGUNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVkaWF0ZWsv ZGV2YXBjL2RldmFwYy1tdDY4NzMuYw0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL3NvYy9t ZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10Njg3My5oDQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvc29jL21lZGlhdGVrL2RldmFwYy9kZXZhcGMtbXRrLW11bHRpLWFvLmMNCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdGstbXVsdGktYW8u aA0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2MvbWVkaWF0ZWsvS2NvbmZpZyBiL2RyaXZlcnMv c29jL21lZGlhdGVrL0tjb25maWcNCmluZGV4IDU5YTU2Y2QuLjJjOWFkMWYgMTAwNjQ0DQotLS0g YS9kcml2ZXJzL3NvYy9tZWRpYXRlay9LY29uZmlnDQorKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRl ay9LY29uZmlnDQpAQCAtNTEsNCArNTEsMTAgQEAgY29uZmlnIE1US19NTVNZUw0KIAkgIFNheSB5 ZXMgaGVyZSB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIE1lZGlhVGVrIE11bHRpbWVkaWENCiAJICBT dWJzeXN0ZW0gKE1NU1lTKS4NCiANCittZW51ICJTZWN1cml0eSINCisNCitzb3VyY2UgImRyaXZl cnMvc29jL21lZGlhdGVrL2RldmFwYy9LY29uZmlnIg0KKw0KK2VuZG1lbnUgIyBTZWN1cml0eQ0K Kw0KIGVuZG1lbnUNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9NYWtlZmlsZSBi L2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlDQppbmRleCAwMWY5Zjg3Li5kNjcxN2E4MSAx MDA2NDQNCi0tLSBhL2RyaXZlcnMvc29jL21lZGlhdGVrL01ha2VmaWxlDQorKysgYi9kcml2ZXJz L3NvYy9tZWRpYXRlay9NYWtlZmlsZQ0KQEAgLTEsNSArMSw2IEBADQogIyBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQogb2JqLSQoQ09ORklHX01US19DTURRKSArPSBtdGst Y21kcS1oZWxwZXIubw0KK29iai0kKENPTkZJR19NVEtfREVWQVBDKSArPSBkZXZhcGMvDQogb2Jq LSQoQ09ORklHX01US19JTkZSQUNGRykgKz0gbXRrLWluZnJhY2ZnLm8NCiBvYmotJChDT05GSUdf TVRLX1BNSUNfV1JBUCkgKz0gbXRrLXBtaWMtd3JhcC5vDQogb2JqLSQoQ09ORklHX01US19TQ1BT WVMpICs9IG10ay1zY3BzeXMubw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVrL2Rl dmFwYy9LY29uZmlnIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL0tjb25maWcNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwLi45NDI4MzYwDQotLS0gL2Rldi9udWxsDQor KysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvS2NvbmZpZw0KQEAgLTAsMCArMSwyNSBA QA0KK2NvbmZpZyBNVEtfREVWQVBDDQorCXRyaXN0YXRlICJNZWRpYXRlayBEZXZpY2UgQVBDIFN1 cHBvcnQiDQorCWhlbHANCisJICBEZXZpY2UgQVBDIGlzIGEga2VybmVsIGRyaXZlciBjb250cm9s bGluZyBpbnRlcm5hbCBkZXZpY2Ugc2VjdXJpdHkuDQorCSAgSWYgc29tZW9uZSB0cmllcyB0byBh Y2Nlc3MgYSBkZXZpY2UsIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJ5IHRoZQ0KKwkgIGRldmljZSwg aXQgY2Fubm90IGFjY2VzcyB0aGUgZGV2aWNlIGFuZCB3aWxsIGdldCBhIHZpb2xhdGlvbg0KKwkg IGludGVycnVwdC4gRGV2aWNlIEFQQyBwcmV2ZW50cyBtYWxpY2lvdXMgYWNjZXNzIHRvIGludGVy bmFsIGRldmljZXMuDQorDQorY29uZmlnIERFVkFQQ19BUkNIX01VTFRJDQorCXRyaXN0YXRlICJN ZWRpYXRlayBEZXZpY2UgQVBDIGRyaXZlciBhcmNoaXRlY3R1cmUgbXVsdGkiDQorCWhlbHANCisJ ICBTYXkgeWVzIGhlcmUgdG8gZW5hYmxlIHN1cHBvcnQgTWVkaWF0ZWsNCisJICBEZXZpY2UgQVBD IGRyaXZlciB3aGljaCBpcyBiYXNlZCBvbiBJbmZyYQ0KKwkgIGFyY2hpdGVjdHVyZS4NCisJICBU aGlzIGFyY2hpdGVjdHVyZSBzdXBwb3J0cyBtdWx0aXBsZSBJbmZyYSBBTy4NCisNCitjb25maWcg REVWQVBDX01UNjg3Mw0KKwl0cmlzdGF0ZSAiTWVkaWF0ZWsgTVQ2ODczIERldmljZSBBUEMgZHJp dmVyIg0KKwlzZWxlY3QgTVRLX0RFVkFQQw0KKwlzZWxlY3QgREVWQVBDX0FSQ0hfTVVMVEkNCisJ aGVscA0KKwkgIFNheSB5ZXMgaGVyZSB0byBlbmFibGUgc3VwcG9ydCBNZWRpYXRlayBNVDY4NzMN CisJICBEZXZpY2UgQVBDIGRyaXZlci4NCisJICBUaGlzIGRyaXZlciBpcyBjb21iaW5lZCB3aXRo IERFVkFQQ19BUkNIX01VTFRJIGZvcg0KKwkgIGNvbW1vbiBoYW5kbGUgZmxvdy4NCmRpZmYgLS1n aXQgYS9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvTWFrZWZpbGUgYi9kcml2ZXJzL3NvYy9t ZWRpYXRlay9kZXZhcGMvTWFrZWZpbGUNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwLi5iZDQ3MWYyDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9k ZXZhcGMvTWFrZWZpbGUNCkBAIC0wLDAgKzEsMTMgQEANCisjIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wDQorDQoraWZlcSAoJChDT05GSUdfTVRLX0dDT1ZfS0VSTkVMKSx5KQ0KK0dD T1ZfUFJPRklMRSA6PSB5DQorZW5kaWYNCisNCitvYmotJChDT05GSUdfTVRLX0RFVkFQQykgOj0g ZGV2YXBjLm8NCisNCisjIENvcmUNCitkZXZhcGMtJChDT05GSUdfREVWQVBDX0FSQ0hfTVVMVEkp ICs9IGRldmFwYy1tdGstbXVsdGktYW8ubw0KKw0KKyMgUGxhdGZvcm0NCitkZXZhcGMtJChDT05G SUdfREVWQVBDX01UNjg3MykgKz0gZGV2YXBjLW10Njg3My5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdDY4NzMuYyBiL2RyaXZlcnMvc29jL21lZGlh dGVrL2RldmFwYy9kZXZhcGMtbXQ2ODczLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAw MDAwMDAwLi43NWEyMTQwDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRl ay9kZXZhcGMvZGV2YXBjLW10Njg3My5jDQpAQCAtMCwwICsxLDE2NTIgQEANCisvLyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8qDQorICogQ29weXJpZ2h0IChDKSAyMDIwIE1l ZGlhVGVrIEluYy4NCisgKi8NCisNCisjaW5jbHVkZSA8bGludXgvYnVnLmg+DQorI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KKyNpbmNsdWRlIDxsaW51 eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCisjaW5jbHVkZSA8YXNtLWdlbmVyaWMvaW8uaD4NCisNCisj aW5jbHVkZSAiZGV2YXBjLW10Njg3My5oIg0KKyNpbmNsdWRlICJkZXZhcGMtbXRrLW11bHRpLWFv LmgiDQorDQorc3RhdGljIHN0cnVjdCBtdGtfZGV2aWNlX2luZm8gbXQ2ODczX2RldmljZXNfaW5m cmFbXSA9IHsNCisJLyogc3lzX2lkeCwgY3RybF9pZHgsIHZpb19pZHggKi8NCisJLyogMCAqLw0K Kwl7MCwgMCwgMH0sDQorCXswLCAxLCAxfSwNCisJezAsIDIsIDJ9LA0KKwl7MCwgMywgM30sDQor CXswLCA0LCA0fSwNCisJezAsIDUsIDV9LA0KKwl7MCwgNiwgNn0sDQorCXswLCA3LCA3fSwNCisJ ezAsIDgsIDh9LA0KKwl7MCwgOSwgOX0sDQorDQorCS8qIDEwICovDQorCXswLCAxMCwgMTB9LA0K Kwl7MCwgMTEsIDExfSwNCisJezAsIDEyLCAxMn0sDQorCXswLCAxMywgMTN9LA0KKwl7MCwgMTQs IDE0fSwNCisJezAsIDE1LCAxNX0sDQorCXswLCAxNiwgMTZ9LA0KKwl7MCwgMTcsIDE3fSwNCisJ ezAsIDE4LCAxOH0sDQorCXswLCAxOSwgMTl9LA0KKw0KKwkvKiAyMCAqLw0KKwl7MCwgMjAsIDIw fSwNCisJezAsIDIxLCAyMX0sDQorCXswLCAyMiwgMzUyfSwNCisJezEsIDAsIDIyfSwNCisJezEs IDEsIDIzfSwNCisJezEsIDIsIDI0fSwNCisJezEsIDMsIDI1fSwNCisJezEsIDQsIDI2fSwNCisJ ezEsIDUsIDI3fSwNCisJezEsIDYsIDI4fSwNCisNCisJLyogMzAgKi8NCisJezEsIDcsIDI5fSwN CisJezEsIDgsIDMwfSwNCisJezEsIDksIDMxfSwNCisJezEsIDEwLCAzMn0sDQorCXsxLCAxMSwg MzN9LA0KKwl7MSwgMTIsIDM0fSwNCisJezEsIDEzLCAzNX0sDQorCXsxLCAxNCwgMzZ9LA0KKwl7 MSwgMTUsIDM3fSwNCisJezEsIDE2LCAzOH0sDQorDQorCS8qIDQwICovDQorCXsxLCAxNywgMzl9 LA0KKwl7MSwgMTgsIDQwfSwNCisJezEsIDE5LCA0MX0sDQorCXsxLCAyMCwgNDJ9LA0KKwl7MSwg MjEsIDQzfSwNCisJezEsIDIyLCA0NH0sDQorCXsxLCAyMywgNDV9LA0KKwl7MSwgMjQsIDQ2fSwN CisJezEsIDI1LCA0N30sDQorCXsxLCAyNiwgNDh9LA0KKw0KKwkvKiA1MCAqLw0KKwl7MSwgMjcs IDQ5fSwNCisJezEsIDI4LCA1MH0sDQorCXsxLCAyOSwgNTF9LA0KKwl7MSwgMzAsIDUyfSwNCisJ ezEsIDMxLCA1M30sDQorCXsxLCAzMiwgNTR9LA0KKwl7MSwgMzMsIDU1fSwNCisJezEsIDM0LCA1 Nn0sDQorCXsxLCAzNSwgNTd9LA0KKwl7MSwgMzYsIDU4fSwNCisNCisJLyogNjAgKi8NCisJezEs IDM3LCA1OX0sDQorCXsxLCAzOCwgNjB9LA0KKwl7MSwgMzksIDYxfSwNCisJezEsIDQwLCA2Mn0s DQorCXsxLCA0MSwgNjN9LA0KKwl7MSwgNDIsIDY0fSwNCisJezEsIDQzLCA2NX0sDQorCXsxLCA0 NCwgNjZ9LA0KKwl7MSwgNDUsIDY3fSwNCisJezEsIDQ2LCA2OH0sDQorDQorCS8qIDcwICovDQor CXsxLCA0NywgNjl9LA0KKwl7MSwgNDgsIDcwfSwNCisJezEsIDQ5LCA3MX0sDQorCXsxLCA1MCwg NzJ9LA0KKwl7MSwgNTEsIDczfSwNCisJezEsIDUyLCA3NH0sDQorCXsxLCA1MywgNzV9LA0KKwl7 MSwgNTQsIDc2fSwNCisJezEsIDU1LCA3N30sDQorCXsxLCA1NiwgNzh9LA0KKw0KKwkvKiA4MCAq Lw0KKwl7MSwgNTcsIDc5fSwNCisJezEsIDU4LCA4MH0sDQorCXsxLCA1OSwgODF9LA0KKwl7MSwg NjAsIDgyfSwNCisJezEsIDYxLCA4M30sDQorCXsxLCA2MiwgODR9LA0KKwl7MSwgNjMsIDg1fSwN CisJezEsIDY0LCA4Nn0sDQorCXsxLCA2NSwgODd9LA0KKwl7MSwgNjYsIDg4fSwNCisNCisJLyog OTAgKi8NCisJezEsIDY3LCA4OX0sDQorCXsxLCA2OCwgOTB9LA0KKwl7MSwgNjksIDkxfSwNCisJ ezEsIDcwLCA5Mn0sDQorCXsxLCA3MSwgOTN9LA0KKwl7MSwgNzIsIDk0fSwNCisJezEsIDczLCA5 NX0sDQorCXsxLCA3NCwgOTZ9LA0KKwl7MSwgNzUsIDk3fSwNCisJezEsIDc2LCA5OH0sDQorDQor CS8qIDEwMCAqLw0KKwl7MSwgNzcsIDk5fSwNCisJezEsIDc4LCAxMDB9LA0KKwl7MSwgNzksIDEw MX0sDQorCXsxLCA4MCwgMTAyfSwNCisJezEsIDgxLCAxMDN9LA0KKwl7MSwgODIsIDEwNH0sDQor CXsxLCA4MywgMTA1fSwNCisJezEsIDg0LCAxMDZ9LA0KKwl7MSwgODUsIDEwN30sDQorCXsxLCA4 NiwgMTA4fSwNCisNCisJLyogMTEwICovDQorCXsxLCA4NywgMTA5fSwNCisJezEsIDg4LCAxMTB9 LA0KKwl7MSwgODksIDExMX0sDQorCXsxLCA5MCwgMTEyfSwNCisJezEsIDkxLCAxMTN9LA0KKwl7 MSwgOTIsIDExNH0sDQorCXsxLCA5MywgMTE1fSwNCisJezEsIDk0LCAxMTZ9LA0KKwl7MSwgOTUs IDExN30sDQorCXsxLCA5NiwgMTE4fSwNCisNCisJLyogMTIwICovDQorCXsxLCA5NywgMTE5fSwN CisJezEsIDk4LCAxMjB9LA0KKwl7MSwgOTksIDEyMX0sDQorCXsxLCAxMDAsIDEyMn0sDQorCXsx LCAxMDEsIDEyM30sDQorCXsxLCAxMDIsIDEyNH0sDQorCXsxLCAxMDMsIDEyNX0sDQorCXsxLCAx MDQsIDEyNn0sDQorCXsxLCAxMDUsIDEyN30sDQorCXsxLCAxMDYsIDEyOH0sDQorDQorCS8qIDEz MCAqLw0KKwl7MSwgMTA3LCAxMjl9LA0KKwl7MSwgMTA4LCAxMzB9LA0KKwl7MSwgMTA5LCAxMzF9 LA0KKwl7MSwgMTEwLCAxMzJ9LA0KKwl7MSwgMTExLCAxMzN9LA0KKwl7MSwgMTEyLCAxMzR9LA0K Kwl7MSwgMTEzLCAxMzV9LA0KKwl7MSwgMTE0LCAxMzZ9LA0KKwl7MSwgMTE1LCAxMzd9LA0KKwl7 MSwgMTE2LCAxMzh9LA0KKw0KKwkvKiAxNDAgKi8NCisJezEsIDExNywgMTM5fSwNCisJezEsIDEx OCwgMTQwfSwNCisJezEsIDExOSwgMTQxfSwNCisJezEsIDEyMCwgMTQyfSwNCisJezEsIDEyMSwg MTQzfSwNCisJezEsIDEyMiwgMTQ0fSwNCisJezEsIDEyMywgMTQ1fSwNCisJezEsIDEyNCwgMTQ2 fSwNCisJezEsIDEyNSwgMTQ3fSwNCisJezEsIDEyNiwgMTQ4fSwNCisNCisJLyogMTUwICovDQor CXsxLCAxMjcsIDE0OX0sDQorCXsxLCAxMjgsIDE1MH0sDQorCXsxLCAxMjksIDE1MX0sDQorCXsx LCAxMzAsIDE1Mn0sDQorCXsxLCAxMzEsIDE1M30sDQorCXsxLCAxMzIsIDE1NH0sDQorCXsxLCAx MzMsIDE1NX0sDQorCXsxLCAxMzQsIDE1Nn0sDQorCXsxLCAxMzUsIDE1N30sDQorCXsxLCAxMzYs IDE1OH0sDQorDQorCS8qIDE2MCAqLw0KKwl7MSwgMTM3LCAxNTl9LA0KKwl7MSwgMTM4LCAxNjB9 LA0KKwl7MSwgMTM5LCAxNjF9LA0KKwl7MSwgMTQwLCAxNjJ9LA0KKwl7MSwgMTQxLCAxNjN9LA0K Kwl7MSwgMTQyLCAxNjR9LA0KKwl7MSwgMTQzLCAxNjV9LA0KKwl7MSwgMTQ0LCAxNjZ9LA0KKwl7 MSwgMTQ1LCAxNjd9LA0KKwl7MSwgMTQ2LCAxNjh9LA0KKw0KKwkvKiAxNzAgKi8NCisJezEsIDE0 NywgMTY5fSwNCisJezEsIDE0OCwgMTcwfSwNCisJezEsIDE0OSwgMTcxfSwNCisJezEsIDE1MCwg MTcyfSwNCisJezEsIDE1MSwgMTczfSwNCisJezEsIDE1MiwgMTc0fSwNCisJezEsIDE1MywgMTc1 fSwNCisJezEsIDE1NCwgMTc2fSwNCisJezEsIDE1NSwgMTc3fSwNCisJezEsIDE1NiwgMTc4fSwN CisNCisJLyogMTgwICovDQorCXsxLCAxNTcsIDE3OX0sDQorCXsxLCAxNTgsIDE4MH0sDQorCXsx LCAxNTksIDE4MX0sDQorCXsxLCAxNjAsIDE4Mn0sDQorCXsxLCAxNjEsIDE4M30sDQorCXsxLCAx NjIsIDE4NH0sDQorCXsxLCAxNjMsIDE4NX0sDQorCXsxLCAxNjQsIDE4Nn0sDQorCXsxLCAxNjUs IDE4N30sDQorCXsxLCAxNjYsIDE4OH0sDQorDQorCS8qIDE5MCAqLw0KKwl7MSwgMTY3LCAxODl9 LA0KKwl7MSwgMTY4LCAxOTB9LA0KKwl7MSwgMTY5LCAxOTF9LA0KKwl7MSwgMTcwLCAxOTJ9LA0K Kwl7MSwgMTcxLCAxOTN9LA0KKwl7MSwgMTcyLCAxOTR9LA0KKwl7MSwgMTczLCAxOTV9LA0KKwl7 MSwgMTc0LCAxOTZ9LA0KKwl7MSwgMTc1LCAxOTd9LA0KKwl7MSwgMTc2LCAxOTh9LA0KKw0KKwkv KiAyMDAgKi8NCisJezEsIDE3NywgMTk5fSwNCisJezEsIDE3OCwgMjAwfSwNCisJezEsIDE3OSwg MjAxfSwNCisJezEsIDE4MCwgMjAyfSwNCisJezEsIDE4MSwgMjAzfSwNCisJezEsIDE4MiwgMjA0 fSwNCisJezEsIDE4MywgMjA1fSwNCisJezEsIDE4NCwgMjA2fSwNCisJezEsIDE4NSwgMjA3fSwN CisJezEsIDE4NiwgMjA4fSwNCisNCisJLyogMjEwICovDQorCXsxLCAxODcsIDIwOX0sDQorCXsx LCAxODgsIDIxMH0sDQorCXsxLCAxODksIDIxMX0sDQorCXsxLCAxOTAsIDIxMn0sDQorCXsxLCAx OTEsIDIxM30sDQorCXsxLCAxOTIsIDIxNH0sDQorCXsxLCAxOTMsIDIxNX0sDQorCXsxLCAxOTQs IDIxNn0sDQorCXsxLCAxOTUsIDIxN30sDQorCXsxLCAxOTYsIDIxOH0sDQorDQorCS8qIDIyMCAq Lw0KKwl7MSwgMTk3LCAyMTl9LA0KKwl7MSwgMTk4LCAyMjB9LA0KKwl7MSwgMTk5LCAyMjF9LA0K Kwl7MSwgMjAwLCAyMjJ9LA0KKwl7MSwgMjAxLCAyMjN9LA0KKwl7MSwgMjAyLCAyMjR9LA0KKwl7 MSwgMjAzLCAyMjV9LA0KKwl7MSwgMjA0LCAyMjZ9LA0KKwl7MSwgMjA1LCAyMjd9LA0KKwl7MSwg MjA2LCAyMjh9LA0KKw0KKwkvKiAyMzAgKi8NCisJezEsIDIwNywgMjI5fSwNCisJezEsIDIwOCwg MjMwfSwNCisJezEsIDIwOSwgMjMxfSwNCisJezEsIDIxMCwgMjMyfSwNCisJezEsIDIxMSwgMjMz fSwNCisJezEsIDIxMiwgMjM0fSwNCisJezEsIDIxMywgMjM1fSwNCisJezEsIDIxNCwgMjM2fSwN CisJezEsIDIxNSwgMjM3fSwNCisJezEsIDIxNiwgMjM4fSwNCisNCisJLyogMjQwICovDQorCXsx LCAyMTcsIDIzOX0sDQorCXsxLCAyMTgsIDI0MH0sDQorCXsxLCAyMTksIDI0MX0sDQorCXsxLCAy MjAsIDI0Mn0sDQorCXsxLCAyMjEsIDI0M30sDQorCXsxLCAyMjIsIDI0NH0sDQorCXsxLCAyMjMs IDI0NX0sDQorCXsxLCAyMjQsIDI0Nn0sDQorCXsxLCAyMjUsIDI0N30sDQorCXsxLCAyMjYsIDI0 OH0sDQorDQorCS8qIDI1MCAqLw0KKwl7MSwgMjI3LCAyNDl9LA0KKwl7MSwgMjI4LCAyNTB9LA0K Kwl7MSwgMjI5LCAyNTF9LA0KKwl7MSwgMjMwLCAyNTJ9LA0KKwl7MSwgMjMxLCAyNTN9LA0KKwl7 MSwgMjMyLCAyNTR9LA0KKwl7MSwgMjMzLCAyNTV9LA0KKwl7MSwgMjM0LCAyNTZ9LA0KKwl7MSwg MjM1LCAyNTd9LA0KKwl7MSwgMjM2LCAyNTh9LA0KKw0KKwkvKiAyNjAgKi8NCisJezEsIDIzNywg MjU5fSwNCisJezEsIDIzOCwgMjYwfSwNCisJezEsIDIzOSwgMjYxfSwNCisJezEsIDI0MCwgMjYy fSwNCisJezEsIDI0MSwgMjYzfSwNCisJezEsIDI0MiwgMjY0fSwNCisJezEsIDI0MywgMjY1fSwN CisJezEsIDI0NCwgMjY2fSwNCisJezEsIDI0NSwgMjY3fSwNCisJezEsIDI0NiwgMjY4fSwNCisN CisJLyogMjcwICovDQorCXsxLCAyNDcsIDI2OX0sDQorCXsxLCAyNDgsIDI3MH0sDQorCXsxLCAy NDksIDI3MX0sDQorCXsxLCAyNTAsIDI3Mn0sDQorCXsxLCAyNTEsIDI3M30sDQorCXsxLCAyNTIs IDI3NH0sDQorCXsxLCAyNTMsIDI3NX0sDQorCXsxLCAyNTQsIDI3Nn0sDQorCXsxLCAyNTUsIDI3 N30sDQorCXsyLCAwLCAyNzh9LA0KKw0KKwkvKiAyODAgKi8NCisJezIsIDEsIDI3OX0sDQorCXsy LCAyLCAyODB9LA0KKwl7MiwgMywgMjgxfSwNCisJezIsIDQsIDI4Mn0sDQorCXsyLCA1LCAyODN9 LA0KKwl7MiwgNiwgMjg0fSwNCisJezIsIDcsIDI4NX0sDQorCXsyLCA4LCAyODZ9LA0KKwl7Miwg OSwgMjg3fSwNCisJezIsIDEwLCAyODh9LA0KKw0KKwkvKiAyOTAgKi8NCisJezIsIDExLCAyODl9 LA0KKwl7MiwgMTIsIDI5MH0sDQorCXsyLCAxMywgMjkxfSwNCisJezIsIDE0LCAyOTJ9LA0KKwl7 MiwgMTUsIDI5M30sDQorCXsyLCAxNiwgMjk0fSwNCisJezIsIDE3LCAyOTV9LA0KKwl7MiwgMTgs IDI5Nn0sDQorCXsyLCAxOSwgMjk3fSwNCisJezIsIDIwLCAyOTh9LA0KKw0KKwkvKiAzMDAgKi8N CisJezIsIDIxLCAyOTl9LA0KKwl7MiwgMjIsIDMwMH0sDQorCXsyLCAyMywgMzAxfSwNCisJezIs IDI0LCAzMDJ9LA0KKwl7MiwgMjUsIDMwM30sDQorCXsyLCAyNiwgMzA0fSwNCisJezIsIDI3LCAz MDV9LA0KKwl7MiwgMjgsIDMwNn0sDQorCXsyLCAyOSwgMzA3fSwNCisJezIsIDMwLCAzMDh9LA0K Kw0KKwkvKiAzMTAgKi8NCisJezIsIDMxLCAzMDl9LA0KKwl7MiwgMzIsIDMxMH0sDQorCXsyLCAz MywgMzExfSwNCisJezIsIDM0LCAzMTJ9LA0KKwl7MiwgMzUsIDMxM30sDQorCXsyLCAzNiwgMzE0 fSwNCisJezIsIDM3LCAzMTV9LA0KKwl7MiwgMzgsIDMxNn0sDQorCXsyLCAzOSwgMzE3fSwNCisJ ezIsIDQwLCAzMTh9LA0KKw0KKwkvKiAzMjAgKi8NCisJezIsIDQxLCAzMTl9LA0KKwl7MiwgNDIs IDMyMH0sDQorCXsyLCA0MywgMzIxfSwNCisJezIsIDQ0LCAzMjJ9LA0KKwl7MiwgNDUsIDMyM30s DQorCXsyLCA0NiwgMzI0fSwNCisJezIsIDQ3LCAzMjV9LA0KKwl7MiwgNDgsIDMyNn0sDQorCXsy LCA0OSwgMzI3fSwNCisJezIsIDUwLCAzMjh9LA0KKw0KKwkvKiAzMzAgKi8NCisJezIsIDUxLCAz Mjl9LA0KKwl7MiwgNTIsIDMzMH0sDQorCXsyLCA1MywgMzMxfSwNCisJezIsIDU0LCAzMzJ9LA0K Kwl7MiwgNTUsIDMzM30sDQorCXsyLCA1NiwgMzM0fSwNCisJezIsIDU3LCAzMzV9LA0KKwl7Miwg NTgsIDMzNn0sDQorCXsyLCA1OSwgMzM3fSwNCisJezIsIDYwLCAzMzh9LA0KKw0KKwkvKiAzNDAg Ki8NCisJezIsIDYxLCAzMzl9LA0KKwl7MiwgNjIsIDM0MH0sDQorCXsyLCA2MywgMzQxfSwNCisJ ezIsIDY0LCAzNDJ9LA0KKwl7MiwgNjUsIDM0M30sDQorCXsyLCA2NiwgMzQ0fSwNCisJezIsIDY3 LCAzNDV9LA0KKwl7MiwgNjgsIDM0Nn0sDQorCXsyLCA2OSwgMzQ3fSwNCisJey0xLCAtMSwgMzU1 fSwNCisNCisJLyogMzUwICovDQorCXstMSwgLTEsIDM1Nn0sDQorCXstMSwgLTEsIDM1N30sDQor CXstMSwgLTEsIDM1OH0sDQorCXstMSwgLTEsIDM1OX0sDQorCXstMSwgLTEsIDM2MH0sDQorCXst MSwgLTEsIDM2MX0sDQorCXstMSwgLTEsIDM2Mn0sDQorCXstMSwgLTEsIDM2M30sDQorCXstMSwg LTEsIDM2NH0sDQorCXstMSwgLTEsIDM2NX0sDQorDQorCS8qIDM2MCAqLw0KKwl7LTEsIC0xLCAz NjZ9LA0KKwl7LTEsIC0xLCAzNjd9LA0KKwl7LTEsIC0xLCAzNjh9LA0KKwl7LTEsIC0xLCAzNjl9 LA0KKwl7LTEsIC0xLCAzNzB9LA0KKwl7LTEsIC0xLCAzNzF9LA0KKw0KK307DQorDQorc3RhdGlj IHN0cnVjdCBtdGtfZGV2aWNlX2luZm8gbXQ2ODczX2RldmljZXNfcGVyaVtdID0gew0KKwkvKiBz eXNfaWR4LCBjdHJsX2lkeCwgdmlvX2lkeCAqLw0KKwkvKiAwICovDQorCXswLCAwLCAwfSwNCisJ ezAsIDEsIDF9LA0KKwl7MCwgMiwgMn0sDQorCXswLCAzLCAzfSwNCisJezAsIDQsIDR9LA0KKwl7 MCwgNSwgNX0sDQorCXswLCA2LCA2fSwNCisJezAsIDcsIDd9LA0KKwl7MCwgOCwgOH0sDQorCXsw LCA5LCA5fSwNCisNCisJLyogMTAgKi8NCisJezAsIDEwLCAxMH0sDQorCXswLCAxMSwgMTF9LA0K Kwl7MCwgMTIsIDEzfSwNCisJezAsIDEzLCAxNH0sDQorCXswLCAxNCwgMTV9LA0KKwl7MCwgMTUs IDE2fSwNCisJezAsIDE2LCAxN30sDQorCXswLCAxNywgMTh9LA0KKwl7MCwgMTgsIDE5fSwNCisJ ezAsIDE5LCAyMH0sDQorDQorCS8qIDIwICovDQorCXswLCAyMCwgMjF9LA0KKwl7MCwgMjEsIDIz fSwNCisJezAsIDIyLCAyNH0sDQorCXswLCAyMywgMjV9LA0KKwl7MCwgMjQsIDI2fSwNCisJezAs IDI1LCAyN30sDQorCXswLCAyNiwgMjh9LA0KKwl7MCwgMjcsIDI5fSwNCisJezAsIDI4LCAzMH0s DQorCXswLCAyOSwgMzF9LA0KKw0KKwkvKiAzMCAqLw0KKwl7MCwgMzAsIDMyfSwNCisJezAsIDMx LCAzM30sDQorCXswLCAzMiwgMzR9LA0KKwl7MCwgMzMsIDM1fSwNCisJezAsIDM0LCAzNn0sDQor CXswLCAzNSwgMzd9LA0KKwl7MCwgMzYsIDM4fSwNCisJezAsIDM3LCA2Mn0sDQorCXswLCAzOCwg NjN9LA0KKwl7MCwgMzksIDY0fSwNCisNCisJLyogNDAgKi8NCisJezAsIDQwLCA2NX0sDQorCXsw LCA0MSwgNjZ9LA0KKwl7MCwgNDIsIDY3fSwNCisJezAsIDQzLCA2OH0sDQorCXswLCA0NCwgNjl9 LA0KKwl7MCwgNDUsIDcwfSwNCisJezAsIDQ2LCA3MX0sDQorCXswLCA0NywgNzJ9LA0KKwl7MCwg NDgsIDczfSwNCisJezAsIDQ5LCA3NH0sDQorDQorCS8qIDUwICovDQorCXswLCA1MCwgMTE5fSwN CisJezAsIDUxLCAxMjB9LA0KKwl7MCwgNTIsIDEyMX0sDQorCXswLCA1MywgMTIyfSwNCisJezAs IDU0LCAxMjN9LA0KKwl7MCwgNTUsIDEyNH0sDQorCXswLCA1NiwgMTI1fSwNCisJezAsIDU3LCAx MjZ9LA0KKwl7MCwgNTgsIDEyN30sDQorCXswLCA1OSwgMTI4fSwNCisNCisJLyogNjAgKi8NCisJ ezAsIDYwLCAxMjl9LA0KKwl7MCwgNjEsIDEzMH0sDQorCXswLCA2MiwgMTM3fSwNCisJezAsIDYz LCAxNDN9LA0KKwl7MCwgNjQsIDE0NH0sDQorCXswLCA2NSwgMTQ1fSwNCisJezAsIDY2LCAxNDZ9 LA0KKwl7MCwgNjcsIDE0N30sDQorCXswLCA2OCwgMTQ4fSwNCisJezAsIDY5LCAxNDl9LA0KKw0K KwkvKiA3MCAqLw0KKwl7MCwgNzAsIDE1MH0sDQorCXswLCA3MSwgMTUxfSwNCisJezAsIDcyLCAx NTJ9LA0KKwl7MCwgNzMsIDE1M30sDQorCXswLCA3NCwgMTU0fSwNCisJezAsIDc1LCAxNTV9LA0K Kwl7MCwgNzYsIDE1Nn0sDQorCXswLCA3NywgMTU3fSwNCisJezAsIDc4LCAxNTh9LA0KKwl7MCwg NzksIDE1OX0sDQorDQorCS8qIDgwICovDQorCXswLCA4MCwgMTYwfSwNCisJezAsIDgxLCAxNjF9 LA0KKwl7MCwgODIsIDE2Mn0sDQorCXswLCA4MywgMTYzfSwNCisJezAsIDg0LCAxNjR9LA0KKwl7 MCwgODUsIDE2NX0sDQorCXswLCA4NiwgMTY2fSwNCisJezAsIDg3LCAxNjd9LA0KKwl7MCwgODgs IDE2OH0sDQorCXswLCA4OSwgMTY5fSwNCisNCisJLyogOTAgKi8NCisJezAsIDkwLCAxNzB9LA0K Kwl7MCwgOTEsIDE3MX0sDQorCXswLCA5MiwgMTc0fSwNCisJezAsIDkzLCAxNzV9LA0KKwl7MCwg OTQsIDE3Nn0sDQorCXswLCA5NSwgMTc3fSwNCisJezAsIDk2LCAxNzh9LA0KKwl7MCwgOTcsIDE3 OX0sDQorCXswLCA5OCwgMTgwfSwNCisJezAsIDk5LCAxODF9LA0KKw0KKwkvKiAxMDAgKi8NCisJ ezAsIDEwMCwgMTgyfSwNCisJezAsIDEwMSwgMTgzfSwNCisJezAsIDEwMiwgMTg0fSwNCisJezAs IDEwMywgMTg1fSwNCisJezAsIDEwNCwgMTg2fSwNCisJezEsIDAsIDM5fSwNCisJezEsIDEsIDQw fSwNCisJezEsIDIsIDQxfSwNCisJezEsIDMsIDQyfSwNCisJezEsIDQsIDQzfSwNCisNCisJLyog MTEwICovDQorCXsxLCA1LCA0NH0sDQorCXsxLCA2LCA0NX0sDQorCXsxLCA3LCA0Nn0sDQorCXsx LCA4LCA0N30sDQorCXsxLCA5LCA0OH0sDQorCXsxLCAxMCwgNDl9LA0KKwl7MSwgMTEsIDUwfSwN CisJezEsIDEyLCA1MX0sDQorCXsxLCAxMywgNTJ9LA0KKwl7MSwgMTQsIDUzfSwNCisNCisJLyog MTIwICovDQorCXsxLCAxNSwgNTR9LA0KKwl7MSwgMTYsIDU1fSwNCisJezEsIDE3LCA1Nn0sDQor CXsxLCAxOCwgNTd9LA0KKwl7MSwgMTksIDU4fSwNCisJezEsIDIwLCA1OX0sDQorCXsxLCAyMSwg NjB9LA0KKwl7MSwgMjIsIDYxfSwNCisJezEsIDIzLCA3Nn0sDQorCXsxLCAyNCwgNzd9LA0KKw0K KwkvKiAxMzAgKi8NCisJezEsIDI1LCA3OH0sDQorCXsxLCAyNiwgNzl9LA0KKwl7MSwgMjcsIDgw fSwNCisJezEsIDI4LCA4MX0sDQorCXsxLCAyOSwgODJ9LA0KKwl7MSwgMzAsIDgzfSwNCisJezEs IDMxLCA4NH0sDQorCXsxLCAzMiwgODV9LA0KKwl7MSwgMzMsIDg2fSwNCisJezEsIDM0LCA4N30s DQorDQorCS8qIDE0MCAqLw0KKwl7MSwgMzUsIDg4fSwNCisJezEsIDM2LCA4OX0sDQorCXsxLCAz NywgOTB9LA0KKwl7MSwgMzgsIDkxfSwNCisJezEsIDM5LCA5Mn0sDQorCXsxLCA0MCwgOTN9LA0K Kwl7MSwgNDEsIDk0fSwNCisJezEsIDQyLCA5NX0sDQorCXsxLCA0MywgOTZ9LA0KKwl7MSwgNDQs IDk3fSwNCisNCisJLyogMTUwICovDQorCXsxLCA0NSwgOTh9LA0KKwl7MSwgNDYsIDk5fSwNCisJ ezEsIDQ3LCAxMDB9LA0KKwl7MSwgNDgsIDEwMX0sDQorCXsxLCA0OSwgMTAyfSwNCisJezEsIDUw LCAxMDN9LA0KKwl7MSwgNTEsIDEwNH0sDQorCXsxLCA1MiwgMTA1fSwNCisJezEsIDUzLCAxMDZ9 LA0KKwl7MSwgNTQsIDEwN30sDQorDQorCS8qIDE2MCAqLw0KKwl7MSwgNTUsIDEwOH0sDQorCXsx LCA1NiwgMTA5fSwNCisJezEsIDU3LCAxMTB9LA0KKwl7MSwgNTgsIDExMX0sDQorCXsxLCA1OSwg MTEyfSwNCisJezEsIDYwLCAxMTN9LA0KKwl7MSwgNjEsIDExNH0sDQorCXsxLCA2MiwgMTE1fSwN CisJezEsIDYzLCAxMTZ9LA0KKwl7MSwgNjQsIDExN30sDQorDQorCS8qIDE3MCAqLw0KKwl7MSwg NjUsIDExOH0sDQorCXsyLCAwLCA3NX0sDQorCXstMSwgLTEsIDE4N30sDQorCXstMSwgLTEsIDE4 OH0sDQorCXstMSwgLTEsIDE4OX0sDQorCXstMSwgLTEsIDE5MH0sDQorCXstMSwgLTEsIDE5MX0s DQorCXstMSwgLTEsIDE5Mn0sDQorCXstMSwgLTEsIDE5M30sDQorCXstMSwgLTEsIDE5NH0sDQor DQorCS8qIDE4MCAqLw0KKwl7LTEsIC0xLCAxOTV9LA0KKwl7LTEsIC0xLCAxOTZ9LA0KKwl7LTEs IC0xLCAxOTd9LA0KKwl7LTEsIC0xLCAxOTh9LA0KKwl7LTEsIC0xLCAxOTl9LA0KKwl7LTEsIC0x LCAyMDB9LA0KKwl7LTEsIC0xLCAyMDF9LA0KKwl7LTEsIC0xLCAyMDJ9LA0KKwl7LTEsIC0xLCAy MDN9LA0KKwl7LTEsIC0xLCAyMDR9LA0KKw0KKwkvKiAxOTAgKi8NCisJey0xLCAtMSwgMjA1fSwN CisJey0xLCAtMSwgMjA2fSwNCisJey0xLCAtMSwgMjA3fSwNCisJey0xLCAtMSwgMjA4fSwNCisJ ey0xLCAtMSwgMjA5fSwNCisJey0xLCAtMSwgMjEwfSwNCisJey0xLCAtMSwgMjExfSwNCisJey0x LCAtMSwgMjEyfSwNCisJey0xLCAtMSwgMjEzfSwNCisJey0xLCAtMSwgMjE0fSwNCisNCisJLyog MjAwICovDQorCXstMSwgLTEsIDIxNX0sDQorCXstMSwgLTEsIDIxNn0sDQorCXstMSwgLTEsIDIx N30sDQorCXstMSwgLTEsIDIxOH0sDQorCXstMSwgLTEsIDIxOX0sDQorCXstMSwgLTEsIDIyMH0s DQorCXstMSwgLTEsIDIyMX0sDQorCXstMSwgLTEsIDIyMn0sDQorCXstMSwgLTEsIDIyM30sDQor CXstMSwgLTEsIDIyNH0sDQorDQorCS8qIDIxMCAqLw0KKwl7LTEsIC0xLCAyMjV9LA0KKwl7LTEs IC0xLCAyMjZ9LA0KKwl7LTEsIC0xLCAyMjd9LA0KKwl7LTEsIC0xLCAyMjh9LA0KKwl7LTEsIC0x LCAyMjl9LA0KKwl7LTEsIC0xLCAyMzB9LA0KKwl7LTEsIC0xLCAyMzF9LA0KKwl7LTEsIC0xLCAy MzJ9LA0KKwl7LTEsIC0xLCAyMzN9LA0KKwl7LTEsIC0xLCAyMzR9LA0KKw0KKwkvKiAyMjAgKi8N CisJey0xLCAtMSwgMjM1fSwNCisJey0xLCAtMSwgMjM2fSwNCisJey0xLCAtMSwgMjM3fSwNCisJ ey0xLCAtMSwgMjM4fSwNCisJey0xLCAtMSwgMjM5fSwNCisJey0xLCAtMSwgMjQwfSwNCisJey0x LCAtMSwgMjQxfSwNCisJey0xLCAtMSwgMjQyfSwNCisJey0xLCAtMSwgMjQzfSwNCisJey0xLCAt MSwgMjQ0fSwNCisNCisJLyogMjMwICovDQorCXstMSwgLTEsIDI0NX0sDQorCXstMSwgLTEsIDI0 Nn0sDQorCXstMSwgLTEsIDI0N30sDQorCXstMSwgLTEsIDI0OH0sDQorCXstMSwgLTEsIDI0OX0s DQorCXstMSwgLTEsIDI1MH0sDQorCXstMSwgLTEsIDI1MX0sDQorCXstMSwgLTEsIDI1Mn0sDQor CXstMSwgLTEsIDI1M30sDQorCXstMSwgLTEsIDI1NH0sDQorDQorCS8qIDI0MCAqLw0KKwl7LTEs IC0xLCAyNTV9LA0KKwl7LTEsIC0xLCAyNTZ9LA0KKwl7LTEsIC0xLCAyNTd9LA0KKwl7LTEsIC0x LCAyNTh9LA0KKwl7LTEsIC0xLCAyNTl9LA0KKwl7LTEsIC0xLCAyNjB9LA0KKwl7LTEsIC0xLCAy NjF9LA0KKwl7LTEsIC0xLCAyNjJ9LA0KKwl7LTEsIC0xLCAyNjN9LA0KKwl7LTEsIC0xLCAyNjR9 LA0KKw0KKwkvKiAyNTAgKi8NCisJey0xLCAtMSwgMjY1fSwNCisJey0xLCAtMSwgMjY2fSwNCisJ ey0xLCAtMSwgMjY3fSwNCisJey0xLCAtMSwgMjY4fSwNCisJey0xLCAtMSwgMjY5fSwNCisJey0x LCAtMSwgMjcwfSwNCisJey0xLCAtMSwgMjcxfSwNCisJey0xLCAtMSwgMjcyfSwNCisJey0xLCAt MSwgMjczfSwNCisJey0xLCAtMSwgMjc0fSwNCisNCisJLyogMjYwICovDQorCXstMSwgLTEsIDI3 NX0sDQorCXstMSwgLTEsIDI3Nn0sDQorCXstMSwgLTEsIDI3N30sDQorCXstMSwgLTEsIDI3OH0s DQorCXstMSwgLTEsIDI3OX0sDQorCXstMSwgLTEsIDI4MH0sDQorCXstMSwgLTEsIDI4MX0sDQor CXstMSwgLTEsIDI4Mn0sDQorCXstMSwgLTEsIDI4M30sDQorCXstMSwgLTEsIDI4NH0sDQorDQor CS8qIDI3MCAqLw0KKwl7LTEsIC0xLCAyODV9LA0KKwl7LTEsIC0xLCAyODZ9LA0KKwl7LTEsIC0x LCAyODd9LA0KKwl7LTEsIC0xLCAyODh9LA0KKwl7LTEsIC0xLCAyODl9LA0KKwl7LTEsIC0xLCAy OTB9LA0KKwl7LTEsIC0xLCAyOTF9LA0KKwl7LTEsIC0xLCAyOTJ9LA0KKwl7LTEsIC0xLCAyOTN9 LA0KKwl7LTEsIC0xLCAyOTR9LA0KKw0KKwkvKiAyODAgKi8NCisJey0xLCAtMSwgMjk1fSwNCisJ ey0xLCAtMSwgMjk2fSwNCisJey0xLCAtMSwgMjk3fSwNCisJey0xLCAtMSwgMjk4fSwNCisNCit9 Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2RldmljZV9pbmZvIG10Njg3M19kZXZpY2VzX3Blcmky W10gPSB7DQorCS8qIHN5c19pZHgsIGN0cmxfaWR4LCB2aW9faWR4ICovDQorCS8qIDAgKi8NCisJ ezAsIDAsIDB9LA0KKwl7MCwgMSwgMX0sDQorCXswLCAyLCAyfSwNCisJezAsIDMsIDN9LA0KKwl7 MCwgNCwgNH0sDQorCXswLCA1LCA1fSwNCisJezAsIDYsIDZ9LA0KKwl7MCwgNywgN30sDQorCXsw LCA4LCA4fSwNCisJezAsIDksIDl9LA0KKw0KKwkvKiAxMCAqLw0KKwl7MCwgMTAsIDEwfSwNCisJ ezAsIDExLCAxMX0sDQorCXswLCAxMiwgMTJ9LA0KKwl7MCwgMTMsIDEzfSwNCisJezAsIDE0LCAx NH0sDQorCXswLCAxNSwgMTV9LA0KKwl7MCwgMTYsIDE2fSwNCisJezAsIDE3LCAxN30sDQorCXsw LCAxOCwgMTh9LA0KKwl7MCwgMTksIDE5fSwNCisNCisJLyogMjAgKi8NCisJezAsIDIwLCAyMH0s DQorCXswLCAyMSwgMjF9LA0KKwl7MCwgMjIsIDIyfSwNCisJezAsIDIzLCAyM30sDQorCXswLCAy NCwgMjR9LA0KKwl7MCwgMjUsIDI1fSwNCisJezAsIDI2LCAyNn0sDQorCXswLCAyNywgMjd9LA0K Kwl7MCwgMjgsIDI4fSwNCisJezAsIDI5LCAyOX0sDQorDQorCS8qIDMwICovDQorCXswLCAzMCwg MzB9LA0KKwl7MCwgMzEsIDMxfSwNCisJezAsIDMyLCAzMn0sDQorCXswLCAzMywgMzN9LA0KKwl7 MCwgMzQsIDM0fSwNCisJezAsIDM1LCAzNX0sDQorCXswLCAzNiwgMzZ9LA0KKwl7MCwgMzcsIDM3 fSwNCisJezAsIDM4LCAzOH0sDQorCXswLCAzOSwgMzl9LA0KKw0KKwkvKiA0MCAqLw0KKwl7MCwg NDAsIDQwfSwNCisJezAsIDQxLCA0MX0sDQorCXswLCA0MiwgNDJ9LA0KKwl7MCwgNDMsIDQzfSwN CisJezAsIDQ0LCA0NH0sDQorCXswLCA0NSwgNDV9LA0KKwl7MCwgNDYsIDQ2fSwNCisJezAsIDQ3 LCA0N30sDQorCXswLCA0OCwgNDh9LA0KKwl7MCwgNDksIDQ5fSwNCisNCisJLyogNTAgKi8NCisJ ezAsIDUwLCA1MH0sDQorCXswLCA1MSwgNTF9LA0KKwl7MCwgNTIsIDUyfSwNCisJezAsIDUzLCA1 M30sDQorCXswLCA1NCwgNTR9LA0KKwl7MCwgNTUsIDU1fSwNCisJezAsIDU2LCA1Nn0sDQorCXsw LCA1NywgNTd9LA0KKwl7MCwgNTgsIDU4fSwNCisJezAsIDU5LCA1OX0sDQorDQorCS8qIDYwICov DQorCXswLCA2MCwgNjB9LA0KKwl7MCwgNjEsIDYxfSwNCisJezAsIDYyLCA2Mn0sDQorCXswLCA2 MywgNjN9LA0KKwl7MCwgNjQsIDY0fSwNCisJezAsIDY1LCA2NX0sDQorCXswLCA2NiwgNjZ9LA0K Kwl7MCwgNjcsIDY3fSwNCisJezAsIDY4LCA2OH0sDQorCXswLCA2OSwgNjl9LA0KKw0KKwkvKiA3 MCAqLw0KKwl7MCwgNzAsIDcwfSwNCisJezAsIDcxLCA3MX0sDQorCXswLCA3MiwgNzJ9LA0KKwl7 MCwgNzMsIDczfSwNCisJezAsIDc0LCA3NH0sDQorCXswLCA3NSwgNzV9LA0KKwl7MCwgNzYsIDc2 fSwNCisJezAsIDc3LCA3N30sDQorCXswLCA3OCwgNzh9LA0KKwl7MCwgNzksIDc5fSwNCisNCisJ LyogODAgKi8NCisJezAsIDgwLCA4MH0sDQorCXswLCA4MSwgODF9LA0KKwl7MCwgODIsIDgyfSwN CisJezAsIDgzLCA4M30sDQorCXswLCA4NCwgODR9LA0KKwl7MCwgODUsIDg1fSwNCisJezAsIDg2 LCA4Nn0sDQorCXswLCA4NywgODd9LA0KKwl7MCwgODgsIDg4fSwNCisJezAsIDg5LCA4OX0sDQor DQorCS8qIDkwICovDQorCXswLCA5MCwgOTB9LA0KKwl7MCwgOTEsIDkxfSwNCisJezAsIDkyLCA5 Mn0sDQorCXswLCA5MywgOTN9LA0KKwl7MCwgOTQsIDk0fSwNCisJezAsIDk1LCA5NX0sDQorCXsw LCA5NiwgOTZ9LA0KKwl7MCwgOTcsIDk3fSwNCisJezAsIDk4LCA5OH0sDQorCXswLCA5OSwgOTl9 LA0KKw0KKwkvKiAxMDAgKi8NCisJezAsIDEwMCwgMTAwfSwNCisJezAsIDEwMSwgMTAzfSwNCisJ ezAsIDEwMiwgMTA0fSwNCisJezAsIDEwMywgMTA1fSwNCisJezAsIDEwNCwgMTA2fSwNCisJezAs IDEwNSwgMTA3fSwNCisJezAsIDEwNiwgMTA4fSwNCisJezAsIDEwNywgMTA5fSwNCisJezAsIDEw OCwgMTEwfSwNCisJezAsIDEwOSwgMTExfSwNCisNCisJLyogMTEwICovDQorCXswLCAxMTAsIDEx Mn0sDQorCXswLCAxMTEsIDExM30sDQorCXswLCAxMTIsIDExNH0sDQorCXswLCAxMTMsIDExNX0s DQorCXswLCAxMTQsIDExNn0sDQorCXstMSwgLTEsIDExN30sDQorCXstMSwgLTEsIDExOH0sDQor CXstMSwgLTEsIDExOX0sDQorCXstMSwgLTEsIDEyMH0sDQorCXstMSwgLTEsIDEyMX0sDQorDQor CS8qIDEyMCAqLw0KKwl7LTEsIC0xLCAxMjJ9LA0KKwl7LTEsIC0xLCAxMjN9LA0KKwl7LTEsIC0x LCAxMjR9LA0KKwl7LTEsIC0xLCAxMjV9LA0KKwl7LTEsIC0xLCAxMjZ9LA0KKwl7LTEsIC0xLCAx Mjd9LA0KKwl7LTEsIC0xLCAxMjh9LA0KKwl7LTEsIC0xLCAxMjl9LA0KKwl7LTEsIC0xLCAxMzB9 LA0KKwl7LTEsIC0xLCAxMzF9LA0KKw0KKwkvKiAxMzAgKi8NCisJey0xLCAtMSwgMTMyfSwNCisJ ey0xLCAtMSwgMTMzfSwNCisJey0xLCAtMSwgMTM0fSwNCisJey0xLCAtMSwgMTM1fSwNCisJey0x LCAtMSwgMTM2fSwNCisJey0xLCAtMSwgMTM3fSwNCisJey0xLCAtMSwgMTM4fSwNCisJey0xLCAt MSwgMTM5fSwNCisJey0xLCAtMSwgMTQwfSwNCisJey0xLCAtMSwgMTQxfSwNCisNCisJLyogMTQw ICovDQorCXstMSwgLTEsIDE0Mn0sDQorCXstMSwgLTEsIDE0M30sDQorCXstMSwgLTEsIDE0NH0s DQorCXstMSwgLTEsIDE0NX0sDQorCXstMSwgLTEsIDE0Nn0sDQorCXstMSwgLTEsIDE0N30sDQor CXstMSwgLTEsIDE0OH0sDQorCXstMSwgLTEsIDE0OX0sDQorCXstMSwgLTEsIDE1MH0sDQorCXst MSwgLTEsIDE1MX0sDQorDQorCS8qIDE1MCAqLw0KKwl7LTEsIC0xLCAxNTJ9LA0KKwl7LTEsIC0x LCAxNTN9LA0KKwl7LTEsIC0xLCAxNTR9LA0KKwl7LTEsIC0xLCAxNTV9LA0KKwl7LTEsIC0xLCAx NTZ9LA0KKwl7LTEsIC0xLCAxNTd9LA0KKwl7LTEsIC0xLCAxNTh9LA0KKwl7LTEsIC0xLCAxNTl9 LA0KKwl7LTEsIC0xLCAxNjB9LA0KKwl7LTEsIC0xLCAxNjF9LA0KKw0KKwkvKiAxNjAgKi8NCisJ ey0xLCAtMSwgMTYyfSwNCisJey0xLCAtMSwgMTYzfSwNCisJey0xLCAtMSwgMTY0fSwNCisJey0x LCAtMSwgMTY1fSwNCisJey0xLCAtMSwgMTY2fSwNCisJey0xLCAtMSwgMTY3fSwNCisJey0xLCAt MSwgMTY4fSwNCisJey0xLCAtMSwgMTY5fSwNCisJey0xLCAtMSwgMTcwfSwNCisJey0xLCAtMSwg MTcxfSwNCisNCisJLyogMTcwICovDQorCXstMSwgLTEsIDE3Mn0sDQorCXstMSwgLTEsIDE3M30s DQorCXstMSwgLTEsIDE3NH0sDQorCXstMSwgLTEsIDE3NX0sDQorCXstMSwgLTEsIDE3Nn0sDQor CXstMSwgLTEsIDE3N30sDQorCXstMSwgLTEsIDE3OH0sDQorCXstMSwgLTEsIDE3OX0sDQorCXst MSwgLTEsIDE4MH0sDQorCXstMSwgLTEsIDE4MX0sDQorDQorCS8qIDE4MCAqLw0KKwl7LTEsIC0x LCAxODJ9LA0KKwl7LTEsIC0xLCAxODN9LA0KKwl7LTEsIC0xLCAxODR9LA0KKwl7LTEsIC0xLCAx ODV9LA0KKwl7LTEsIC0xLCAxODZ9LA0KKwl7LTEsIC0xLCAxODd9LA0KKwl7LTEsIC0xLCAxODh9 LA0KKwl7LTEsIC0xLCAxODl9LA0KKwl7LTEsIC0xLCAxOTB9LA0KKwl7LTEsIC0xLCAxOTF9LA0K Kw0KKwkvKiAxOTAgKi8NCisJey0xLCAtMSwgMTkyfSwNCisJey0xLCAtMSwgMTkzfSwNCisJey0x LCAtMSwgMTk0fSwNCisJey0xLCAtMSwgMTk1fSwNCisJey0xLCAtMSwgMTk2fSwNCisJey0xLCAt MSwgMTk3fSwNCisJey0xLCAtMSwgMTk4fSwNCisJey0xLCAtMSwgMTk5fSwNCisJey0xLCAtMSwg MjAwfSwNCisJey0xLCAtMSwgMjAxfSwNCisNCisJLyogMjAwICovDQorCXstMSwgLTEsIDIwMn0s DQorCXstMSwgLTEsIDIwM30sDQorCXstMSwgLTEsIDIwNH0sDQorCXstMSwgLTEsIDIwNX0sDQor CXstMSwgLTEsIDIwNn0sDQorCXstMSwgLTEsIDIwN30sDQorCXstMSwgLTEsIDIwOH0sDQorCXst MSwgLTEsIDIwOX0sDQorCXstMSwgLTEsIDIxMH0sDQorCXstMSwgLTEsIDIxMX0sDQorDQorCS8q IDIxMCAqLw0KKwl7LTEsIC0xLCAyMTJ9LA0KKwl7LTEsIC0xLCAyMTN9LA0KKwl7LTEsIC0xLCAy MTR9LA0KKwl7LTEsIC0xLCAyMTV9LA0KKwl7LTEsIC0xLCAyMTZ9LA0KKwl7LTEsIC0xLCAyMTd9 LA0KKwl7LTEsIC0xLCAyMTh9LA0KKwl7LTEsIC0xLCAyMTl9LA0KKwl7LTEsIC0xLCAyMjB9LA0K Kwl7LTEsIC0xLCAyMjF9LA0KKw0KKwkvKiAyMjAgKi8NCisJey0xLCAtMSwgMjIyfSwNCisJey0x LCAtMSwgMjIzfSwNCisJey0xLCAtMSwgMjI0fSwNCisJey0xLCAtMSwgMjI1fSwNCisJey0xLCAt MSwgMjI2fSwNCisJey0xLCAtMSwgMjI3fSwNCisJey0xLCAtMSwgMjI4fSwNCisJey0xLCAtMSwg MjI5fSwNCisJey0xLCAtMSwgMjMwfSwNCisJey0xLCAtMSwgMjMxfSwNCisNCisJLyogMjMwICov DQorCXstMSwgLTEsIDIzMn0sDQorCXstMSwgLTEsIDIzM30sDQorCXstMSwgLTEsIDIzNH0sDQor CXstMSwgLTEsIDIzNX0sDQorCXstMSwgLTEsIDIzNn0sDQorCXstMSwgLTEsIDIzN30sDQorCXst MSwgLTEsIDIzOH0sDQorCXstMSwgLTEsIDIzOX0sDQorCXstMSwgLTEsIDI0MH0sDQorCXstMSwg LTEsIDI0MX0sDQorDQorCS8qIDI0MCAqLw0KKwl7LTEsIC0xLCAyNDJ9LA0KKwl7LTEsIC0xLCAy NDN9LA0KKwl7LTEsIC0xLCAyNDR9LA0KKwl7LTEsIC0xLCAyNDV9LA0KKwl7LTEsIC0xLCAyNDZ9 LA0KKwl7LTEsIC0xLCAyNDd9LA0KKwl7LTEsIC0xLCAyNDh9LA0KKw0KK307DQorDQorc3RhdGlj IHN0cnVjdCBtdGtfZGV2aWNlX2luZm8gbXQ2ODczX2RldmljZXNfcGVyaV9wYXJbXSA9IHsNCisJ Lyogc3lzX2lkeCwgY3RybF9pZHgsIHZpb19pZHggKi8NCisJLyogMCAqLw0KKwl7MCwgMCwgMH0s DQorCXswLCAxLCAxfSwNCisJezAsIDIsIDJ9LA0KKwl7MCwgMywgM30sDQorCXswLCA0LCA0fSwN CisJezAsIDUsIDV9LA0KKwl7MCwgNiwgNn0sDQorCXswLCA3LCA3fSwNCisJezAsIDgsIDh9LA0K Kwl7MCwgOSwgOX0sDQorDQorCS8qIDEwICovDQorCXswLCAxMCwgMTB9LA0KKwl7MCwgMTEsIDEx fSwNCisJezAsIDEyLCAxMn0sDQorCXswLCAxMywgMTN9LA0KKwl7MCwgMTQsIDE0fSwNCisJezAs IDE1LCAxNX0sDQorCXswLCAxNiwgMTZ9LA0KKwl7MCwgMTcsIDE3fSwNCisJezAsIDE4LCAxOH0s DQorCXswLCAxOSwgMTl9LA0KKw0KKwkvKiAyMCAqLw0KKwl7MCwgMjAsIDIwfSwNCisJezAsIDIx LCAyMX0sDQorCXswLCAyMiwgMjJ9LA0KKwl7MCwgMjMsIDIzfSwNCisJezAsIDI0LCAyNH0sDQor CXswLCAyNSwgMjV9LA0KKwl7MCwgMjYsIDI2fSwNCisJey0xLCAtMSwgMjd9LA0KKwl7LTEsIC0x LCAyOH0sDQorCXstMSwgLTEsIDI5fSwNCisNCisJLyogMzAgKi8NCisJey0xLCAtMSwgMzB9LA0K Kwl7LTEsIC0xLCAzMX0sDQorCXstMSwgLTEsIDMyfSwNCisJey0xLCAtMSwgMzN9LA0KKwl7LTEs IC0xLCAzNH0sDQorCXstMSwgLTEsIDM1fSwNCisJey0xLCAtMSwgMzZ9LA0KKwl7LTEsIC0xLCAz N30sDQorCXstMSwgLTEsIDM4fSwNCisJey0xLCAtMSwgMzl9LA0KKw0KKwkvKiA0MCAqLw0KKwl7 LTEsIC0xLCA0MH0sDQorCXstMSwgLTEsIDQxfSwNCisJey0xLCAtMSwgNDJ9LA0KKwl7LTEsIC0x LCA0M30sDQorCXstMSwgLTEsIDQ0fSwNCisJey0xLCAtMSwgNDV9LA0KKwl7LTEsIC0xLCA0Nn0s DQorCXstMSwgLTEsIDQ3fSwNCisJey0xLCAtMSwgNDh9LA0KKwl7LTEsIC0xLCA0OX0sDQorDQor CS8qIDUwICovDQorCXstMSwgLTEsIDUwfSwNCisJey0xLCAtMSwgNTF9LA0KKwl7LTEsIC0xLCA1 Mn0sDQorCXstMSwgLTEsIDUzfSwNCisJey0xLCAtMSwgNTR9LA0KKwl7LTEsIC0xLCA1NX0sDQor CXstMSwgLTEsIDU2fSwNCisJey0xLCAtMSwgNTd9LA0KKw0KK307DQorDQorc3RhdGljIHN0cnVj dCBtdGtfZGV2aWNlX251bSBtdGs2ODczX2RldmljZXNfbnVtW10gPSB7DQorCXtTTEFWRV9UWVBF X0lORlJBLCBWSU9fU0xBVkVfTlVNX0lORlJBfSwNCisJe1NMQVZFX1RZUEVfUEVSSSwgVklPX1NM QVZFX05VTV9QRVJJfSwNCisJe1NMQVZFX1RZUEVfUEVSSTIsIFZJT19TTEFWRV9OVU1fUEVSSTJ9 LA0KKwl7U0xBVkVfVFlQRV9QRVJJX1BBUiwgVklPX1NMQVZFX05VTV9QRVJJX1BBUn0sDQorfTsN CisNCitzdGF0aWMgc3RydWN0IElORlJBQVhJX0lEX0lORk8gcGVyaV9taV9pZF90b19tYXN0ZXJb XSA9IHsNCisJeyJUSEVSTTIiLCAgICAweDAsIDB4N30sDQorCXsiU1BNIiwgICAgICAgMHgyLCAw eDd9LA0KKwl7IkNDVSIsICAgICAgIDB4NCwgMHg3fSwNCisJeyJUSEVSTSIsICAgICAweDYsIDB4 N30sDQorCXsiU1BNX0RSQU1DIiwgMHgzLCAweDd9LA0KK307DQorDQorc3RhdGljIHN0cnVjdCBJ TkZSQUFYSV9JRF9JTkZPIGluZnJhX21pX2lkX3RvX21hc3RlcltdID0gew0KKwl7IkNPTk5TWVNf V0ZETUEiLCAgIDB4MCwgICAgMHgzZmZmfSwNCisJeyJDT05OU1lTX0lDQVAiLCAgICAweDEwLCAg IDB4M2ZmZn0sDQorCXsiQ09OTlNZU19NQ1VfU1lTIiwgMHgyMCwgICAweDNmZmZ9LA0KKwl7IkNP Tk5TWVNfR1BTIiwgICAgIDB4MzAsICAgMHgzZmZmfSwNCisJeyJUaW55c3lzIiwgICAgICAgICAw eDIsICAgIDB4M2MwZn0sDQorCXsiQ1FfRE1BIiwgICAgICAgICAgMHg0LCAgICAweDNjN2Z9LA0K Kwl7IkRlYnVnVG9wIiwgICAgICAgIDB4MTQsICAgMHgzZjdmfSwNCisJeyJTU1VTQiIsICAgICAg ICAgICAweDI0LCAgIDB4ZmZmfSwNCisJeyJTU1VTQjIiLCAgICAgICAgICAweDQyNCwgIDB4ZmZm fSwNCisJeyJOT1IiLCAgICAgICAgICAgICAweDgyNCwgIDB4ZmZmfSwNCisJeyJQV00iLCAgICAg ICAgICAgICAweGMyNCwgIDB4M2ZmZn0sDQorCXsiU1BJNiIsICAgICAgICAgICAgMHgyYzI0LCAw eDNmZmZ9LA0KKwl7IlNQSTAiLCAgICAgICAgICAgIDB4M2MyNCwgMHgzZmZmfSwNCisJeyJBUFUi LCAgICAgICAgICAgICAweGE0LCAgIDB4MzNmZn0sDQorCXsiU1BJMiIsICAgICAgICAgICAgMHgx MjQsICAweDNmZmZ9LA0KKwl7IlNQSTMiLCAgICAgICAgICAgIDB4NTI0LCAgMHgzZmZmfSwNCisJ eyJTUEk0IiwgICAgICAgICAgICAweDkyNCwgIDB4M2ZmZn0sDQorCXsiU1BJNSIsICAgICAgICAg ICAgMHhkMjQsICAweDNmZmZ9LA0KKwl7IlNQSTciLCAgICAgICAgICAgIDB4MWE0LCAgMHgzZmZm fSwNCisJeyJBdWRpbyIsICAgICAgICAgICAweDlhNCwgIDB4M2ZmZn0sDQorCXsiU1BJMSIsICAg ICAgICAgICAgMHhkYTQsICAweDNmZmZ9LA0KKwl7IkFQX0RNQV9FWFQiLCAgICAgIDB4MjI0LCAg MHgyM2ZmfSwNCisJeyJUSEVSTTIiLCAgICAgICAgICAweDJhNCwgIDB4M2ZmZn0sDQorCXsiU1BN IiwgICAgICAgICAgICAgMHg2YTQsICAweDNmZmZ9LA0KKwl7IkNDVSIsICAgICAgICAgICAgIDB4 YWE0LCAgMHgzZmZmfSwNCisJeyJUSEVSTSIsICAgICAgICAgICAweGVhNCwgIDB4M2ZmZn0sDQor CXsiRFhfQ0MiLCAgICAgICAgICAgMHgzNCwgICAweDM4N2Z9LA0KKwl7IkdDRSIsICAgICAgICAg ICAgIDB4NDQsICAgMHgzZTdmfSwNCisJeyJQQ0lFIiwgICAgICAgICAgICAweDY0LCAgIDB4MzA3 Zn0sDQorCXsiRFBNQUlGIiwgICAgICAgICAgMHg2LCAgICAweDNmMGZ9LA0KKwl7IlNTUE0iLCAg ICAgICAgICAgIDB4OCwgICAgMHgzZjhmfSwNCisJeyJVRlMiLCAgICAgICAgICAgICAweGEsICAg IDB4M2Y5Zn0sDQorCXsiTVNEQzAiLCAgICAgICAgICAgMHgxYSwgICAweDNmZmZ9LA0KKwl7Ik1T REMxIiwgICAgICAgICAgIDB4M2EsICAgMHgzZmZmfSwNCisJeyJNU0RDMiIsICAgICAgICAgICAw eDdhLCAgIDB4M2ZmZn0sDQorCXsiQ1BVRUIiLCAgICAgICAgICAgMHhjLCAgICAweDNjMGZ9LA0K Kwl7IkFQTUNVX3dyaXRlIiwgICAgIDB4MSwgICAgMHgzZmUxfSwNCisJeyJBUE1DVV93cml0ZSIs ICAgICAweDgxLCAgIDB4M2ZlMX0sDQorCXsiQVBNQ1Vfd3JpdGUiLCAgICAgMHgyMDEsICAweDNl MDF9LA0KKwl7IkFQTUNVX3JlYWQiLCAgICAgIDB4MSwgICAgMHgzZmUxfSwNCisJeyJBUE1DVV9y ZWFkIiwgICAgICAweDgxLCAgIDB4M2ZlMX0sDQorCXsiQVBNQ1VfcmVhZCIsICAgICAgMHgxMDEs ICAweDNmZmR9LA0KKwl7IkFQTUNVX3JlYWQiLCAgICAgIDB4MTA1LCAgMHgzZmZkfSwNCisJeyJB UE1DVV9yZWFkIiwgICAgICAweDIwMSwgIDB4M2UwMX0sDQorCXsiQVBNQ1VfcmVhZCIsICAgICAg MHg0MDEsICAweDNjMDF9LA0KK307DQorDQorc3RhdGljIGNvbnN0IGNoYXIgKmluZnJhX21pX3Ry YW5zKHUzMiBidXNfaWQpDQorew0KKwlpbnQgbWFzdGVyX2NvdW50ID0gQVJSQVlfU0laRShpbmZy YV9taV9pZF90b19tYXN0ZXIpOw0KKwljb25zdCBjaGFyICptYXN0ZXIgPSAiVU5LTk9XTl9NQVNU RVJfRlJPTV9JTkZSQSI7DQorCWludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgbWFzdGVyX2Nv dW50OyBpKyspIHsNCisJCWlmICgoYnVzX2lkICYgaW5mcmFfbWlfaWRfdG9fbWFzdGVyW2ldLm1h c2spID09DQorCQkgICAgaW5mcmFfbWlfaWRfdG9fbWFzdGVyW2ldLmJ1c19pZCkNCisJCQltYXN0 ZXIgPSBpbmZyYV9taV9pZF90b19tYXN0ZXJbaV0ubWFzdGVyOw0KKwl9DQorDQorCXJldHVybiBt YXN0ZXI7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICpwZXJpX21pX3RyYW5zKHUzMiBidXNf aWQpDQorew0KKwlpbnQgbWFzdGVyX2NvdW50ID0gQVJSQVlfU0laRShwZXJpX21pX2lkX3RvX21h c3Rlcik7DQorCWNvbnN0IGNoYXIgKm1hc3RlciA9ICJVTktOT1dOX01BU1RFUl9GUk9NX1BFUkki Ow0KKwlpbnQgaTsNCisNCisJaWYgKChidXNfaWQgJiAweDMpID09IDB4MCkNCisJCXJldHVybiBp bmZyYV9taV90cmFucyhidXNfaWQgPj4gMik7DQorCWVsc2UgaWYgKChidXNfaWQgJiAweDMpID09 IDB4MikNCisJCXJldHVybiAiTURfQVBfTSI7DQorCWVsc2UgaWYgKChidXNfaWQgJiAweDMpID09 IDB4MykNCisJCXJldHVybiAiQVBfRE1BX00iOw0KKw0KKwlidXNfaWQgPSBidXNfaWQgPj4gMjsN CisNCisJZm9yIChpID0gMCA7IGkgPCBtYXN0ZXJfY291bnQ7IGkrKykgew0KKwkJaWYgKChidXNf aWQgJiBwZXJpX21pX2lkX3RvX21hc3RlcltpXS5tYXNrKSA9PQ0KKwkJICAgIHBlcmlfbWlfaWRf dG9fbWFzdGVyW2ldLmJ1c19pZCkNCisJCQltYXN0ZXIgPSBpbmZyYV9taV9pZF90b19tYXN0ZXJb aV0ubWFzdGVyOw0KKwl9DQorDQorCXJldHVybiBtYXN0ZXI7DQorfQ0KKw0KK3N0YXRpYyBjb25z dCBjaGFyICptdDY4NzNfYnVzX2lkX3RvX21hc3Rlcih1MzIgYnVzX2lkLCB1MzIgdmlvX2FkZHIs DQorCQkJCQkgICBpbnQgc2xhdmVfdHlwZSwgaW50IHNoaWZ0X3N0YV9iaXQsDQorCQkJCQkgICBp bnQgZG9tYWluKQ0KK3sNCisJdTggaF8xYnl0ZTsNCisNCisJaWYgKGJ1c19pZCA9PSAweDAgJiYg dmlvX2FkZHIgPT0gMHgwKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWhfMWJ5dGUgPSAodmlvX2Fk ZHIgPj4gMjQpICYgMHhGRjsNCisNCisJaWYgKHNsYXZlX3R5cGUgPT0gU0xBVkVfVFlQRV9JTkZS QSkgew0KKwkJaWYgKHZpb19hZGRyIDw9IDB4MUZGRkZGKSB7DQorCQkJaWYgKChidXNfaWQgJiAw eDEpID09IDApDQorCQkJCXJldHVybiAiRU1JX0wyQ19NIjsNCisNCisJCQlyZXR1cm4gaW5mcmFf bWlfdHJhbnMoYnVzX2lkID4+IDEpOw0KKw0KKwkJfSBlbHNlIGlmIChzaGlmdF9zdGFfYml0ID09 IDMpIHsNCisJCQlpZiAoKGJ1c19pZCAmIDB4MSkgPT0gMCkNCisJCQkJcmV0dXJuICJFTUlfTDJD X00iOw0KKw0KKwkJCXJldHVybiBpbmZyYV9taV90cmFucyhidXNfaWQgPj4gMSk7DQorDQorCQl9 IGVsc2UgaWYgKHNoaWZ0X3N0YV9iaXQgPT0gNCkgew0KKwkJCWlmICgoYnVzX2lkICYgMHgxKSA9 PSAxKQ0KKwkJCQlyZXR1cm4gIkdDRV9NIjsNCisNCisJCQlyZXR1cm4gaW5mcmFfbWlfdHJhbnMo YnVzX2lkID4+IDEpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGluZnJhX21pX3RyYW5zKGJ1c19pZCk7 DQorDQorCX0gZWxzZSBpZiAoc2xhdmVfdHlwZSA9PSBTTEFWRV9UWVBFX1BFUkkpIHsNCisJCWlm ICgoaF8xYnl0ZSA+PSAweDE0ICYmIGhfMWJ5dGUgPCAweDE4KSB8fA0KKwkJICAgIChoXzFieXRl ID49IDB4MUEgJiYgaF8xYnl0ZSA8IDB4MUMpIHx8DQorCQkgICAgKGhfMWJ5dGUgPj0gMHgxRiAm JiBoXzFieXRlIDwgMHgyMCkpIHsNCisJCQlpZiAoKGJ1c19pZCAmIDB4MSkgPT0gMSkNCisJCQkJ cmV0dXJuICJHQ0VfTSI7DQorDQorCQkJcmV0dXJuIGluZnJhX21pX3RyYW5zKGJ1c19pZCA+PiAx KTsNCisJCX0NCisNCisJCWlmIChzaGlmdF9zdGFfYml0ID09IDMgfHwgc2hpZnRfc3RhX2JpdCA9 PSA0IHx8DQorCQkgICAgc2hpZnRfc3RhX2JpdCA9PSA4KSB7DQorCQkJaWYgKChidXNfaWQgJiAw eDEpID09IDApDQorCQkJCXJldHVybiAiTURfQVBfTSI7DQorDQorCQkJcmV0dXJuIHBlcmlfbWlf dHJhbnMoYnVzX2lkID4+IDEpOw0KKwkJfQ0KKwkJcmV0dXJuIHBlcmlfbWlfdHJhbnMoYnVzX2lk KTsNCisNCisJfSBlbHNlIGlmIChzbGF2ZV90eXBlID09IFNMQVZFX1RZUEVfUEVSSTIpIHsNCisJ CXJldHVybiBwZXJpX21pX3RyYW5zKGJ1c19pZCk7DQorDQorCX0gZWxzZSBpZiAoc2xhdmVfdHlw ZSA9PSBTTEFWRV9UWVBFX1BFUklfUEFSKSB7DQorCQlyZXR1cm4gcGVyaV9taV90cmFucyhidXNf aWQpOw0KKwl9DQorDQorCXJldHVybiAiVU5LTk9XTl9NQVNURVIiOw0KK30NCisNCitzdGF0aWMg dm9pZCBtbTJuZF92aW9faGFuZGxlcih2b2lkIF9faW9tZW0gKmluZnJhY2ZnLA0KKwkJCSAgICAg IHN0cnVjdCBtdGtfZGV2YXBjX3Zpb19pbmZvICp2aW9faW5mbywNCisJCQkgICAgICBib29sIG1k cF92aW8sIGJvb2wgZGlzcDJfdmlvLCBib29sIG1tc3lzX3ZpbykNCit7DQorCXUzMiB2aW9fc3Rh LCB2aW9fZGJnLCBydzsNCisJdTMyIHZpb19zdGFfbnVtOw0KKwl1MzIgdmlvMF9vZmZzZXQ7DQor CWNoYXIgbW1fc3RyWzY0XSA9IHswfTsNCisJdm9pZCBfX2lvbWVtICpyZWc7DQorCWludCBpOw0K Kw0KKwlpZiAoIWluZnJhY2ZnKQ0KKwkJcmV0dXJuOw0KKw0KKwlpZiAobWRwX3Zpbykgew0KKwkJ dmlvX3N0YV9udW0gPSBJTkZSQUNGR19NRFBfVklPX1NUQV9OVU07DQorCQl2aW8wX29mZnNldCA9 IElORlJBQ0ZHX01EUF9TRUNfVklPMF9PRkZTRVQ7DQorDQorCQlzdHJuY3B5KG1tX3N0ciwgIklO RlJBQ0ZHX01EUF9TRUNfVklPIiwNCisJCQlzaXplb2YoIklORlJBQ0ZHX01EUF9TRUNfVklPIikp Ow0KKw0KKwl9IGVsc2UgaWYgKG1tc3lzX3Zpbykgew0KKwkJdmlvX3N0YV9udW0gPSBJTkZSQUNG R19NTV9WSU9fU1RBX05VTTsNCisJCXZpbzBfb2Zmc2V0ID0gSU5GUkFDRkdfTU1fU0VDX1ZJTzBf T0ZGU0VUOw0KKw0KKwkJc3RybmNweShtbV9zdHIsICJJTkZSQUNGR19NTV9TRUNfVklPIiwNCisJ CQlzaXplb2YoIklORlJBQ0ZHX01NX1NFQ19WSU8iKSk7DQorDQorCX0gZWxzZSB7DQorCQlwcl9l cnIoUEZYICIlczogcGFyYW0gY2hlY2sgZmFpbGVkLCBtZHBfdmlvOiVzLCBkaXNwMl92aW86JXMs IG1tc3lzX3Zpbzolc1xuIiwNCisJCSAgICAgICBfX2Z1bmNfXywgbWRwX3ZpbyA/ICJ0cnVlIiA6 ICJmYWxzZSIsDQorCQkgICAgICAgZGlzcDJfdmlvID8gInRydWUiIDogImZhbHNlIiwNCisJCSAg ICAgICBtbXN5c192aW8gPyAidHJ1ZSIgOiAiZmFsc2UiKTsNCisJCXJldHVybjsNCisJfQ0KKw0K KwkvKiBHZXQgbW0ybmQgdmlvbGF0aW9uIHN0YXR1cyAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgdmlv X3N0YV9udW07IGkrKykgew0KKwkJcmVnID0gaW5mcmFjZmcgKyB2aW8wX29mZnNldCArIGkgKiA0 Ow0KKwkJdmlvX3N0YSA9IHJlYWRsKHJlZyk7DQorCQlpZiAodmlvX3N0YSkNCisJCQlwcl9pbmZv KFBGWCAiTU0gMm5kIHZpb2xhdGlvbjogJXMlZDoweCV4XG4iLA0KKwkJCQltbV9zdHIsIGksIHZp b19zdGEpOw0KKwl9DQorDQorCS8qIEdldCBtbTJuZCB2aW9sYXRpb24gYWRkcmVzcyAqLw0KKwly ZWcgPSBpbmZyYWNmZyArIHZpbzBfb2Zmc2V0ICsgaSAqIDQ7DQorCXZpb19pbmZvLT52aW9fYWRk ciA9IHJlYWRsKHJlZyk7DQorDQorCS8qIEdldCBtbTJuZCB2aW9sYXRpb24gaW5mb3JtYXRpb24g Ki8NCisJcmVnID0gaW5mcmFjZmcgKyB2aW8wX29mZnNldCArIChpICsgMSkgKiA0Ow0KKwl2aW9f ZGJnID0gcmVhZGwocmVnKTsNCisNCisJdmlvX2luZm8tPmRvbWFpbl9pZCA9ICh2aW9fZGJnICYg SU5GUkFDRkdfTU0yTkRfVklPX0RPTUFJTl9NQVNLKSA+Pg0KKwkJSU5GUkFDRkdfTU0yTkRfVklP X0RPTUFJTl9TSElGVDsNCisNCisJdmlvX2luZm8tPm1hc3Rlcl9pZCA9ICh2aW9fZGJnICYgSU5G UkFDRkdfTU0yTkRfVklPX0lEX01BU0spID4+DQorCQlJTkZSQUNGR19NTTJORF9WSU9fSURfU0hJ RlQ7DQorDQorCXJ3ID0gKHZpb19kYmcgJiBJTkZSQUNGR19NTTJORF9WSU9fUldfTUFTSykgPj4N CisJCUlORlJBQ0ZHX01NMk5EX1ZJT19SV19TSElGVDsNCisJdmlvX2luZm8tPnJlYWQgPSAocncg PT0gMCk7DQorCXZpb19pbmZvLT53cml0ZSA9IChydyA9PSAxKTsNCit9DQorDQorc3RhdGljIHUz MiBtdDY4NzNfc2hpZnRfZ3JvdXBfZ2V0KGludCBzbGF2ZV90eXBlLCB1MzIgdmlvX2lkeCkNCit7 DQorCWlmIChzbGF2ZV90eXBlID09IFNMQVZFX1RZUEVfSU5GUkEpIHsNCisJCWlmICgodmlvX2lk eCA+PSAwICYmIHZpb19pZHggPD0gOCkgfHwgdmlvX2lkeCA9PSAzNTUpDQorCQkJcmV0dXJuIDA7 DQorCQllbHNlIGlmICgodmlvX2lkeCA+PSA5ICYmIHZpb19pZHggPD0gMTQpIHx8IHZpb19pZHgg PT0gMzU2KQ0KKwkJCXJldHVybiAxOw0KKwkJZWxzZSBpZiAoKHZpb19pZHggPj0gMTUgJiYgdmlv X2lkeCA8PSAxOSkgfHwgdmlvX2lkeCA9PSAzNTcpDQorCQkJcmV0dXJuIDI7DQorCQllbHNlIGlm ICgodmlvX2lkeCA+PSAyMCAmJiB2aW9faWR4IDw9IDIxKSB8fCB2aW9faWR4ID09IDM1OCkNCisJ CQlyZXR1cm4gMzsNCisJCWVsc2UgaWYgKHZpb19pZHggPj0gMjIgJiYgdmlvX2lkeCA8PSAzNDcp DQorCQkJcmV0dXJuIDQ7DQorCQllbHNlIGlmICgodmlvX2lkeCA+PSAzNDggJiYgdmlvX2lkeCA8 PSAzNTQpIHx8DQorCQkJICh2aW9faWR4ID49IDM1OSAmJiB2aW9faWR4IDw9IDM2NSkgfHwNCisJ CQkgdmlvX2lkeCA9PSAzNjYpDQorCQkJcmV0dXJuIDU7DQorDQorCQlwcl9lcnIoUEZYICIlczol ZCBXcm9uZyB2aW9faWR4OjB4JXhcbiIsDQorCQkgICAgICAgX19mdW5jX18sIF9fTElORV9fLCB2 aW9faWR4KTsNCisNCisJfSBlbHNlIGlmIChzbGF2ZV90eXBlID09IFNMQVZFX1RZUEVfUEVSSSkg ew0KKwkJaWYgKHZpb19pZHggPj0gMCAmJiB2aW9faWR4IDw9IDQpDQorCQkJcmV0dXJuIDA7DQor CQllbHNlIGlmICh2aW9faWR4ID49IDUgJiYgdmlvX2lkeCA8PSA2KQ0KKwkJCXJldHVybiAxOw0K KwkJZWxzZSBpZiAoKHZpb19pZHggPj0gNyAmJiB2aW9faWR4IDw9IDM4KSB8fCB2aW9faWR4ID09 IDE4NyB8fA0KKwkJCSAodmlvX2lkeCA+PSAxODggJiYgdmlvX2lkeCA8PSAyMTkpIHx8DQorCQkJ IHZpb19pZHggPT0gMjg2KQ0KKwkJCXJldHVybiAyOw0KKwkJZWxzZSBpZiAoKHZpb19pZHggPj0g MzkgJiYgdmlvX2lkeCA8PSA2MSkgfHwgdmlvX2lkeCA9PSAyMjApDQorCQkJcmV0dXJuIDM7DQor CQllbHNlIGlmICgodmlvX2lkeCA+PSA2MiAmJiB2aW9faWR4IDw9IDcyKSB8fCB2aW9faWR4ID09 IDIyMSkNCisJCQlyZXR1cm4gNDsNCisJCWVsc2UgaWYgKCh2aW9faWR4ID49IDczICYmIHZpb19p ZHggPD0gNzQpIHx8IHZpb19pZHggPT0gMjIyKQ0KKwkJCXJldHVybiA1Ow0KKwkJZWxzZSBpZiAo dmlvX2lkeCA9PSA3NSB8fCB2aW9faWR4ID09IDIyMykNCisJCQlyZXR1cm4gNjsNCisJCWVsc2Ug aWYgKCh2aW9faWR4ID49IDc2ICYmIHZpb19pZHggPD0gMTE4KSB8fCB2aW9faWR4ID09IDIyNCkN CisJCQlyZXR1cm4gNzsNCisJCWVsc2UgaWYgKCh2aW9faWR4ID49IDExOSAmJiB2aW9faWR4IDw9 IDEyMSkgfHwgdmlvX2lkeCA9PSAyMjUpDQorCQkJcmV0dXJuIDg7DQorCQlpZiAodmlvX2lkeCA+ PSAxMjIgJiYgdmlvX2lkeCA8PSAxMjUpDQorCQkJcmV0dXJuIDk7DQorCQllbHNlIGlmICh2aW9f aWR4ID09IDEyNiB8fCAodmlvX2lkeCA+PSAyMjYgJiYgdmlvX2lkeCA8PSAyMjcpIHx8DQorCQkJ IHZpb19pZHggPT0gMjg3KQ0KKwkJCXJldHVybiAxMDsNCisJCWlmICh2aW9faWR4ID49IDEyNyAm JiB2aW9faWR4IDw9IDEyOCkNCisJCQlyZXR1cm4gMTE7DQorCQlpZiAodmlvX2lkeCA+PSAxMjkg JiYgdmlvX2lkeCA8PSAxMzApDQorCQkJcmV0dXJuIDEyOw0KKwkJZWxzZSBpZiAoKHZpb19pZHgg Pj0gMTMxICYmIHZpb19pZHggPD0gMTQxKSB8fA0KKwkJCSAodmlvX2lkeCA+PSAyMjggJiYgdmlv X2lkeCA8PSAyMzgpIHx8DQorCQkJIHZpb19pZHggPT0gMjg4KQ0KKwkJCXJldHVybiAxMzsNCisJ CWVsc2UgaWYgKCh2aW9faWR4ID49IDE0MiAmJiB2aW9faWR4IDw9IDE0MykgfHwNCisJCQkgKHZp b19pZHggPj0gMjM5ICYmIHZpb19pZHggPD0gMjQwKSB8fA0KKwkJCSB2aW9faWR4ID09IDI4OSkN CisJCQlyZXR1cm4gMTQ7DQorCQllbHNlIGlmICgodmlvX2lkeCA+PSAxNDQgJiYgdmlvX2lkeCA8 PSAxNzMpIHx8IHZpb19pZHggPT0gMjQxIHx8DQorCQkJICh2aW9faWR4ID49IDI0MiAmJiB2aW9f aWR4IDw9IDI3MSkgfHwNCisJCQkgdmlvX2lkeCA9PSAyOTApDQorCQkJcmV0dXJuIDE1Ow0KKwkJ ZWxzZSBpZiAoKHZpb19pZHggPj0gMTc0ICYmIHZpb19pZHggPD0gMTg2KSB8fCB2aW9faWR4ID09 IDI3MiB8fA0KKwkJCSAodmlvX2lkeCA+PSAyNzMgJiYgdmlvX2lkeCA8PSAyODUpIHx8DQorCQkJ IHZpb19pZHggPT0gMjkxKQ0KKwkJCXJldHVybiAxNjsNCisNCisJCXByX2VycihQRlggIiVzOiVk IFdyb25nIHZpb19pZHg6MHgleFxuIiwNCisJCSAgICAgICBfX2Z1bmNfXywgX19MSU5FX18sIHZp b19pZHgpOw0KKw0KKwl9IGVsc2UgaWYgKHNsYXZlX3R5cGUgPT0gU0xBVkVfVFlQRV9QRVJJMikg ew0KKwkJaWYgKCh2aW9faWR4ID49IDAgJiYgdmlvX2lkeCA8PSAxMikgfHwgdmlvX2lkeCA9PSAx MTcgfHwNCisJCSAgICAodmlvX2lkeCA+PSAxMTggJiYgdmlvX2lkeCA8PSAxMzApIHx8DQorCQkg ICAgdmlvX2lkeCA9PSAyMzQpDQorCQkJcmV0dXJuIDA7DQorCQllbHNlIGlmICh2aW9faWR4ID49 IDEzICYmIHZpb19pZHggPD0gMTYpDQorCQkJcmV0dXJuIDE7DQorCQllbHNlIGlmICh2aW9faWR4 ID49IDE3ICYmIHZpb19pZHggPD0gMjApDQorCQkJcmV0dXJuIDI7DQorCQllbHNlIGlmICgodmlv X2lkeCA+PSAyMSAmJiB2aW9faWR4IDw9IDM2KSB8fCB2aW9faWR4ID09IDEzMSB8fA0KKwkJCSAo dmlvX2lkeCA+PSAxMzIgJiYgdmlvX2lkeCA8PSAxNDcpIHx8DQorCQkJIHZpb19pZHggPT0gMjM1 KQ0KKwkJCXJldHVybiAzOw0KKwkJZWxzZSBpZiAoKHZpb19pZHggPj0gMzcgJiYgdmlvX2lkeCA8 PSA0NCkgfHwgdmlvX2lkeCA9PSAxNDggfHwNCisJCQkgKHZpb19pZHggPj0gMTQ5ICYmIHZpb19p ZHggPD0gMTU2KSB8fA0KKwkJCSB2aW9faWR4ID09IDIzNikNCisJCQlyZXR1cm4gNDsNCisJCWVs c2UgaWYgKCh2aW9faWR4ID49IDQ1ICYmIHZpb19pZHggPD0gNjApIHx8IHZpb19pZHggPT0gMTU3 IHx8DQorCQkJICh2aW9faWR4ID49IDE1OCAmJiB2aW9faWR4IDw9IDE3MykgfHwNCisJCQkgdmlv X2lkeCA9PSAyMzcpDQorCQkJcmV0dXJuIDU7DQorCQllbHNlIGlmICgodmlvX2lkeCA+PSA2MSAm JiB2aW9faWR4IDw9IDc2KSB8fCB2aW9faWR4ID09IDE3NCB8fA0KKwkJCSAodmlvX2lkeCA+PSAx NzUgJiYgdmlvX2lkeCA8PSAxOTApIHx8DQorCQkJIHZpb19pZHggPT0gMjM4KQ0KKwkJCXJldHVy biA2Ow0KKwkJZWxzZSBpZiAoKHZpb19pZHggPj0gNzcgJiYgdmlvX2lkeCA8PSA4NCkgfHwgdmlv X2lkeCA9PSAxOTEgfHwNCisJCQkgKHZpb19pZHggPj0gMTkyICYmIHZpb19pZHggPD0gMTk5KSB8 fA0KKwkJCSB2aW9faWR4ID09IDIzOSkNCisJCQlyZXR1cm4gNzsNCisJCWVsc2UgaWYgKCh2aW9f aWR4ID49IDg1ICYmIHZpb19pZHggPD0gMTA1KSB8fCB2aW9faWR4ID09IDIwMCB8fA0KKwkJCSAo dmlvX2lkeCA+PSAyMDEgJiYgdmlvX2lkeCA8PSAyMjEpIHx8DQorCQkJIHZpb19pZHggPT0gMjQw KQ0KKwkJCXJldHVybiA4Ow0KKwkJZWxzZSBpZiAoKHZpb19pZHggPj0gMTA2ICYmIHZpb19pZHgg PD0gMTE2KSB8fCB2aW9faWR4ID09IDIyMiB8fA0KKwkJCSAodmlvX2lkeCA+PSAyMjMgJiYgdmlv X2lkeCA8PSAyMzMpIHx8DQorCQkJIHZpb19pZHggPT0gMjQxKQ0KKwkJCXJldHVybiA5Ow0KKw0K KwkJcHJfZXJyKFBGWCAiJXM6JWQgV3JvbmcgdmlvX2lkeDoweCV4XG4iLA0KKwkJICAgICAgIF9f ZnVuY19fLCBfX0xJTkVfXywgdmlvX2lkeCk7DQorDQorCX0gZWxzZSBpZiAoc2xhdmVfdHlwZSA9 PSBTTEFWRV9UWVBFX1BFUklfUEFSKSB7DQorCQlpZiAoKHZpb19pZHggPj0gMCAmJiB2aW9faWR4 IDw9IDIzKSB8fCB2aW9faWR4ID09IDI3IHx8DQorCQkgICAgKHZpb19pZHggPj0gMjggJiYgdmlv X2lkeCA8PSA1MSkgfHwNCisJCSAgICB2aW9faWR4ID09IDU2KQ0KKwkJCXJldHVybiAwOw0KKwkJ ZWxzZSBpZiAoKHZpb19pZHggPj0gMjQgJiYgdmlvX2lkeCA8PSAyNikgfHwgdmlvX2lkeCA9PSA1 MiB8fA0KKwkJCSAodmlvX2lkeCA+PSA1MyAmJiB2aW9faWR4IDw9IDU1KSB8fA0KKwkJCSB2aW9f aWR4ID09IDU3KQ0KKwkJCXJldHVybiAxOw0KKw0KKwkJcHJfZXJyKFBGWCAiJXM6JWQgV3Jvbmcg dmlvX2lkeDoweCV4XG4iLA0KKwkJICAgICAgIF9fZnVuY19fLCBfX0xJTkVfXywgdmlvX2lkeCk7 DQorDQorCX0gZWxzZSB7DQorCQlwcl9lcnIoUEZYICIlczolZCBXcm9uZyBzbGF2ZV90eXBlOjB4 JXhcbiIsDQorCQkgICAgICAgX19mdW5jX18sIF9fTElORV9fLCBzbGF2ZV90eXBlKTsNCisJfQ0K Kw0KKwlyZXR1cm4gMzE7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgbXRrX2RldmFwY19kYmdfc3Rh dHVzIG10Njg3M19kZXZhcGNfZGJnX3N0YXQgPSB7DQorCS5lbmFibGVfdXQgPSBQTEFUX0RCR19V VF9ERUZBVUxULA0KKwkuZW5hYmxlX2RhcGMgPSBQTEFUX0RCR19EQVBDX0RFRkFVTFQsDQorfTsN CisNCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNsYXZlX3R5cGVfdG9fc3RyW10gPSB7DQor CSJTTEFWRV9UWVBFX0lORlJBIiwNCisJIlNMQVZFX1RZUEVfUEVSSSIsDQorCSJTTEFWRV9UWVBF X1BFUkkyIiwNCisJIlNMQVZFX1RZUEVfUEVSSV9QQVIiLA0KKwkiV1JPTkdfU0xBVkVfVFlQRSIs DQorfTsNCisNCitzdGF0aWMgaW50IG10a192aW9fbWFza19zdGFfbnVtW10gPSB7DQorCVZJT19N QVNLX1NUQV9OVU1fSU5GUkEsDQorCVZJT19NQVNLX1NUQV9OVU1fUEVSSSwNCisJVklPX01BU0tf U1RBX05VTV9QRVJJMiwNCisJVklPX01BU0tfU1RBX05VTV9QRVJJX1BBUiwNCit9Ow0KKw0KK3N0 YXRpYyBzdHJ1Y3QgbXRrX2RldmFwY192aW9faW5mbyBtdDY4NzNfZGV2YXBjX3Zpb19pbmZvID0g ew0KKwkudmlvX21hc2tfc3RhX251bSA9IG10a192aW9fbWFza19zdGFfbnVtLA0KKwkuc3JhbXJv bV92aW9faWR4ID0gU1JBTVJPTV9WSU9fSU5ERVgsDQorCS5tZHBfdmlvX2lkeCA9IE1EUF9WSU9f SU5ERVgsDQorCS5kaXNwMl92aW9faWR4ID0gTURQX1ZJT19JTkRFWCwNCisJLm1tc3lzX3Zpb19p ZHggPSBNTVNZU19WSU9fSU5ERVgsDQorCS5zcmFtcm9tX3Nsdl90eXBlID0gU1JBTVJPTV9TTEFW RV9UWVBFLA0KKwkubW0ybmRfc2x2X3R5cGUgPSBNTTJORF9TTEFWRV9UWVBFLA0KK307DQorDQor c3RhdGljIGNvbnN0IHN0cnVjdCBtdGtfaW5mcmFfdmlvX2RiZ19kZXNjIG10Njg3M192aW9fZGJn cyA9IHsNCisJLnZpb19kYmdfbXN0aWQgPSBJTkZSQV9WSU9fREJHX01TVElELA0KKwkudmlvX2Ri Z19tc3RpZF9zdGFydF9iaXQgPSBJTkZSQV9WSU9fREJHX01TVElEX1NUQVJUX0JJVCwNCisJLnZp b19kYmdfZG1uaWQgPSBJTkZSQV9WSU9fREJHX0RNTklELA0KKwkudmlvX2RiZ19kbW5pZF9zdGFy dF9iaXQgPSBJTkZSQV9WSU9fREJHX0RNTklEX1NUQVJUX0JJVCwNCisJLnZpb19kYmdfd192aW8g PSBJTkZSQV9WSU9fREJHX1dfVklPLA0KKwkudmlvX2RiZ193X3Zpb19zdGFydF9iaXQgPSBJTkZS QV9WSU9fREJHX1dfVklPX1NUQVJUX0JJVCwNCisJLnZpb19kYmdfcl92aW8gPSBJTkZSQV9WSU9f REJHX1JfVklPLA0KKwkudmlvX2RiZ19yX3Zpb19zdGFydF9iaXQgPSBJTkZSQV9WSU9fREJHX1Jf VklPX1NUQVJUX0JJVCwNCisJLnZpb19hZGRyX2hpZ2ggPSBJTkZSQV9WSU9fQUREUl9ISUdILA0K KwkudmlvX2FkZHJfaGlnaF9zdGFydF9iaXQgPSBJTkZSQV9WSU9fQUREUl9ISUdIX1NUQVJUX0JJ VCwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgbXRrX3NyYW1yb21fc2VjX3Zpb19kZXNj IG10Njg3M19zcmFtcm9tX3NlY192aW9zID0gew0KKwkudmlvX2lkX21hc2sgPSBTUkFNUk9NX1NF Q19WSU9fSURfTUFTSywNCisJLnZpb19pZF9zaGlmdCA9IFNSQU1ST01fU0VDX1ZJT19JRF9TSElG VCwNCisJLnZpb19kb21haW5fbWFzayA9IFNSQU1ST01fU0VDX1ZJT19ET01BSU5fTUFTSywNCisJ LnZpb19kb21haW5fc2hpZnQgPSBTUkFNUk9NX1NFQ19WSU9fRE9NQUlOX1NISUZULA0KKwkudmlv X3J3X21hc2sgPSBTUkFNUk9NX1NFQ19WSU9fUldfTUFTSywNCisJLnZpb19yd19zaGlmdCA9IFNS QU1ST01fU0VDX1ZJT19SV19TSElGVCwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1MzIgbXQ2ODcz X2RldmFwY19wZHNbXSA9IHsNCisJUERfVklPX01BU0tfT0ZGU0VULA0KKwlQRF9WSU9fU1RBX09G RlNFVCwNCisJUERfVklPX0RCRzBfT0ZGU0VULA0KKwlQRF9WSU9fREJHMV9PRkZTRVQsDQorCVBE X1ZJT19EQkcyX09GRlNFVCwNCisJUERfQVBDX0NPTl9PRkZTRVQsDQorCVBEX1NISUZUX1NUQV9P RkZTRVQsDQorCVBEX1NISUZUX1NFTF9PRkZTRVQsDQorCVBEX1NISUZUX0NPTl9PRkZTRVQsDQor fTsNCisNCitzdGF0aWMgc3RydWN0IG10a19kZXZhcGNfc29jIG10Njg3M19kYXRhID0gew0KKwku ZGJnX3N0YXQgPSAmbXQ2ODczX2RldmFwY19kYmdfc3RhdCwNCisJLnNsYXZlX3R5cGVfYXJyID0g c2xhdmVfdHlwZV90b19zdHIsDQorCS5zbGF2ZV90eXBlX251bSA9IFNMQVZFX1RZUEVfTlVNLA0K KwkuZGV2aWNlX2luZm9bU0xBVkVfVFlQRV9JTkZSQV0gPSBtdDY4NzNfZGV2aWNlc19pbmZyYSwN CisJLmRldmljZV9pbmZvW1NMQVZFX1RZUEVfUEVSSV0gPSBtdDY4NzNfZGV2aWNlc19wZXJpLA0K KwkuZGV2aWNlX2luZm9bU0xBVkVfVFlQRV9QRVJJMl0gPSBtdDY4NzNfZGV2aWNlc19wZXJpMiwN CisJLmRldmljZV9pbmZvW1NMQVZFX1RZUEVfUEVSSV9QQVJdID0gbXQ2ODczX2RldmljZXNfcGVy aV9wYXIsDQorCS5uZGV2aWNlcyA9IG10azY4NzNfZGV2aWNlc19udW0sDQorCS52aW9faW5mbyA9 ICZtdDY4NzNfZGV2YXBjX3Zpb19pbmZvLA0KKwkudmlvX2RiZ3MgPSAmbXQ2ODczX3Zpb19kYmdz LA0KKwkuc3JhbXJvbV9zZWNfdmlvcyA9ICZtdDY4NzNfc3JhbXJvbV9zZWNfdmlvcywNCisJLmRl dmFwY19wZHMgPSBtdDY4NzNfZGV2YXBjX3BkcywNCisJLm1hc3Rlcl9nZXQgPSAmbXQ2ODczX2J1 c19pZF90b19tYXN0ZXIsDQorCS5tbTJuZF92aW9faGFuZGxlciA9ICZtbTJuZF92aW9faGFuZGxl ciwNCisJLnNoaWZ0X2dyb3VwX2dldCA9IG10Njg3M19zaGlmdF9ncm91cF9nZXQsDQorfTsNCisN CitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdDY4NzNfZGV2YXBjX2R0X21hdGNo W10gPSB7DQorCXsgLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXQ2ODczLWRldmFwYyIgfSwNCisJ e30sDQorfTsNCisNCitzdGF0aWMgaW50IG10Njg3M19kZXZhcGNfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCit7DQorCXJldHVybiBtdGtfZGV2YXBjX3Byb2JlKHBkZXYsICZt dDY4NzNfZGF0YSk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgbXQ2ODczX2RldmFwY19yZW1vdmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQ0KK3sNCisJcmV0dXJuIG10a19kZXZhcGNfcmVtb3Zl KGRldik7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIG10Njg3M19kZXZh cGNfZHJpdmVyID0gew0KKwkucHJvYmUgPSBtdDY4NzNfZGV2YXBjX3Byb2JlLA0KKwkucmVtb3Zl ID0gbXQ2ODczX2RldmFwY19yZW1vdmUsDQorCS5kcml2ZXIgPSB7DQorCQkubmFtZSA9IEtCVUlM RF9NT0ROQU1FLA0KKwkJLm9mX21hdGNoX3RhYmxlID0gbXQ2ODczX2RldmFwY19kdF9tYXRjaCwN CisJfSwNCit9Ow0KKw0KK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXQ2ODczX2RldmFwY19kcml2 ZXIpOw0KKw0KK01PRFVMRV9ERVNDUklQVElPTigiTWVkaWF0ZWsgTVQ2ODczIERldmljZSBBUEMg RHJpdmVyIik7DQorTU9EVUxFX0FVVEhPUigiTmVhbCBMaXUgPG5lYWwubGl1QG1lZGlhdGVrLmNv bT4iKTsNCitNT0RVTEVfTElDRU5TRSgiR1BMIik7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zb2Mv bWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdDY4NzMuaCBiL2RyaXZlcnMvc29jL21lZGlhdGVrL2Rl dmFwYy9kZXZhcGMtbXQ2ODczLmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAw Li4xNmJlMDllDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZh cGMvZGV2YXBjLW10Njg3My5oDQpAQCAtMCwwICsxLDExMSBAQA0KKy8qIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wICovDQorLyoNCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgTWVkaWFU ZWsgSW5jLg0KKyAqLw0KKw0KKyNpZm5kZWYgX19ERVZBUENfTVQ2ODczX0hfXw0KKyNkZWZpbmUg X19ERVZBUENfTVQ2ODczX0hfXw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBWQVJJ QUJMRSBERUZJTklUSU9ODQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiBkYmcgc3RhdHVz IGRlZmF1bHQgc2V0dGluZyAqLw0KKyNkZWZpbmUgUExBVF9EQkdfVVRfREVGQVVMVAkJZmFsc2UN CisjZGVmaW5lIFBMQVRfREJHX0RBUENfREVGQVVMVAkJZmFsc2UNCisNCisvKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqDQorICogU1RSVUNUVVJFIERFRklOSVRJT04NCisgKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLw0KK2VudW0gREVWQVBDX1NMQVZFX1RZUEUgew0KKwlTTEFWRV9UWVBFX0lORlJBID0gMCwN CisJU0xBVkVfVFlQRV9QRVJJLA0KKwlTTEFWRV9UWVBFX1BFUkkyLA0KKwlTTEFWRV9UWVBFX1BF UklfUEFSLA0KKwlTTEFWRV9UWVBFX05VTSwNCit9Ow0KKw0KK2VudW0gREVWQVBDX1ZJT19NQVNL X1NUQV9OVU0gew0KKwlWSU9fTUFTS19TVEFfTlVNX0lORlJBID0gMTIsDQorCVZJT19NQVNLX1NU QV9OVU1fUEVSSSA9IDEwLA0KKwlWSU9fTUFTS19TVEFfTlVNX1BFUkkyID0gOCwNCisJVklPX01B U0tfU1RBX05VTV9QRVJJX1BBUiA9IDIsDQorfTsNCisNCitlbnVtIERFVkFQQ19WSU9fU0xBVkVf TlVNIHsNCisJVklPX1NMQVZFX05VTV9JTkZSQSA9IDM2NiwNCisJVklPX1NMQVZFX05VTV9QRVJJ ID0gMjg0LA0KKwlWSU9fU0xBVkVfTlVNX1BFUkkyID0gMjQ3LA0KKwlWSU9fU0xBVkVfTlVNX1BF UklfUEFSID0gNTgsDQorfTsNCisNCitlbnVtIERFVkFQQ19QRF9PRkZTRVQgew0KKwlQRF9WSU9f TUFTS19PRkZTRVQgPSAweDAsDQorCVBEX1ZJT19TVEFfT0ZGU0VUID0gMHg0MDAsDQorCVBEX1ZJ T19EQkcwX09GRlNFVCA9IDB4OTAwLA0KKwlQRF9WSU9fREJHMV9PRkZTRVQgPSAweDkwNCwNCisJ UERfVklPX0RCRzJfT0ZGU0VUID0gMHg5MDgsDQorCVBEX0FQQ19DT05fT0ZGU0VUID0gMHhGMDAs DQorCVBEX1NISUZUX1NUQV9PRkZTRVQgPSAweEYyMCwNCisJUERfU0hJRlRfU0VMX09GRlNFVCA9 IDB4RjMwLA0KKwlQRF9TSElGVF9DT05fT0ZGU0VUID0gMHhGMTAsDQorfTsNCisNCisjZGVmaW5l IFNSQU1ST01fU0xBVkVfVFlQRQlTTEFWRV9UWVBFX0lORlJBCS8qIEluZnJhICovDQorI2RlZmlu ZSBNTTJORF9TTEFWRV9UWVBFCVNMQVZFX1RZUEVfUEVSSQkJLyogUGVyaSAqLw0KKw0KK2VudW0g T1RIRVJfVFlQRVNfSU5ERVggew0KKwlTUkFNUk9NX1ZJT19JTkRFWCA9IDM2NywNCisJQ09OTl9W SU9fSU5ERVggPSA3NSwgLyogc3RhcnRzIGZyb20gMHgxOCAqLw0KKwlNRFBfVklPX0lOREVYID0g MjkyLA0KKwlNTVNZU19WSU9fSU5ERVggPSAyOTQsDQorfTsNCisNCitlbnVtIElORlJBQ0ZHX01N Mk5EX1ZJT19OVU0gew0KKwlJTkZSQUNGR19NTV9WSU9fU1RBX05VTSA9IDIsDQorCUlORlJBQ0ZH X01EUF9WSU9fU1RBX05VTSA9IDgsDQorfTsNCisNCitlbnVtIElORlJBQ0ZHX01NMk5EX09GRlNF VCB7DQorCUlORlJBQ0ZHX01NX1NFQ19WSU8wX09GRlNFVCA9IDB4QjMwLA0KKwlJTkZSQUNGR19N RFBfU0VDX1ZJTzBfT0ZGU0VUID0gMHhCNDAsDQorfTsNCisNCitzdHJ1Y3QgSU5GUkFBWElfSURf SU5GTyB7DQorCWNvbnN0IGNoYXIJKm1hc3RlcjsNCisJdTMyCQlidXNfaWQ7DQorCXUzMgkJbWFz azsNCit9Ow0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBQTEFURk9STSBERUZJTkFU SU9ODQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisvKiBGb3IgSW5mcmEgVklPX0RCRyAq Lw0KKyNkZWZpbmUgSU5GUkFfVklPX0RCR19NU1RJRAkJCTB4RkZGRkZGRkYNCisjZGVmaW5lIElO RlJBX1ZJT19EQkdfTVNUSURfU1RBUlRfQklUCQkwDQorI2RlZmluZSBJTkZSQV9WSU9fREJHX0RN TklECQkJMHgwMDAwMDAzRg0KKyNkZWZpbmUgSU5GUkFfVklPX0RCR19ETU5JRF9TVEFSVF9CSVQJ CTANCisjZGVmaW5lIElORlJBX1ZJT19EQkdfV19WSU8JCQkweDAwMDAwMDQwDQorI2RlZmluZSBJ TkZSQV9WSU9fREJHX1dfVklPX1NUQVJUX0JJVAkJNg0KKyNkZWZpbmUgSU5GUkFfVklPX0RCR19S X1ZJTwkJCTB4MDAwMDAwODANCisjZGVmaW5lIElORlJBX1ZJT19EQkdfUl9WSU9fU1RBUlRfQklU CQk3DQorI2RlZmluZSBJTkZSQV9WSU9fQUREUl9ISUdICQkJMHgwMDAwMEYwMA0KKyNkZWZpbmUg SU5GUkFfVklPX0FERFJfSElHSF9TVEFSVF9CSVQJCTgNCisNCisvKiBGb3IgU1JBTVJPTSBWSU8g Ki8NCisjZGVmaW5lIFNSQU1ST01fU0VDX1ZJT19JRF9NQVNLCQkJMHgwMEZGRkYwMA0KKyNkZWZp bmUgU1JBTVJPTV9TRUNfVklPX0lEX1NISUZUCQk4DQorI2RlZmluZSBTUkFNUk9NX1NFQ19WSU9f RE9NQUlOX01BU0sJCTB4MEYwMDAwMDANCisjZGVmaW5lIFNSQU1ST01fU0VDX1ZJT19ET01BSU5f U0hJRlQJCTI0DQorI2RlZmluZSBTUkFNUk9NX1NFQ19WSU9fUldfTUFTSwkJCTB4ODAwMDAwMDAN CisjZGVmaW5lIFNSQU1ST01fU0VDX1ZJT19SV19TSElGVAkJMzENCisNCisvKiBGb3IgTU0gMm5k IFZJTyAqLw0KKyNkZWZpbmUgSU5GUkFDRkdfTU0yTkRfVklPX0RPTUFJTl9NQVNLCQkweDAwMDAw MDMwDQorI2RlZmluZSBJTkZSQUNGR19NTTJORF9WSU9fRE9NQUlOX1NISUZUCQk0DQorI2RlZmlu ZSBJTkZSQUNGR19NTTJORF9WSU9fSURfTUFTSwkJMHgwMEZGRkYwMA0KKyNkZWZpbmUgSU5GUkFD RkdfTU0yTkRfVklPX0lEX1NISUZUCQk4DQorI2RlZmluZSBJTkZSQUNGR19NTTJORF9WSU9fUldf TUFTSwkJMHgwMTAwMDAwMA0KKyNkZWZpbmUgSU5GUkFDRkdfTU0yTkRfVklPX1JXX1NISUZUCQky NA0KKw0KKyNlbmRpZiAvKiBfX0RFVkFQQ19NVDY4NzNfSF9fICovDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9zb2MvbWVkaWF0ZWsvZGV2YXBjL2RldmFwYy1tdGstbXVsdGktYW8uYyBiL2RyaXZlcnMv c29jL21lZGlhdGVrL2RldmFwYy9kZXZhcGMtbXRrLW11bHRpLWFvLmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwLi42YzRhOGVjDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2 ZXJzL3NvYy9tZWRpYXRlay9kZXZhcGMvZGV2YXBjLW10ay1tdWx0aS1hby5jDQpAQCAtMCwwICsx LDc1NiBAQA0KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQorLyoNCisgKiBD b3B5cmlnaHQgKEMpIDIwMjAgTWVkaWFUZWsgSW5jLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51 eC9hcm0tc21jY2MuaD4NCisjaW5jbHVkZSA8bGludXgvY2xrLmg+DQorI2luY2x1ZGUgPGxpbnV4 L2ZzLmg+DQorI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KKyNpbmNsdWRlIDxsaW51eC9t b2R1bGUuaD4NCisjaW5jbHVkZSA8bGludXgvb2ZfaXJxLmg+DQorI2luY2x1ZGUgPGxpbnV4L29m X2FkZHJlc3MuaD4NCisjaW5jbHVkZSA8bGludXgvc2NoZWQvZGVidWcuaD4NCisjaW5jbHVkZSA8 bGludXgvdWFjY2Vzcy5oPg0KKyNpbmNsdWRlIDxsaW51eC9zb2MvbWVkaWF0ZWsvbXRrX3NpcF9z dmMuaD4NCisjaW5jbHVkZSAiZGV2YXBjLW10ay1tdWx0aS1hby5oIg0KKw0KKy8qDQorICogbXRr X2RldmFwY19wZF9nZXQgLSBnZXQgZGV2YXBjIHBkX3R5cGVzIG9mIHJlZ2lzdGVyIGFkZHJlc3Mu DQorICoNCisgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiByZWcgYWRkcg0KKyAqLw0KK3N0YXRpYyB2 b2lkIF9faW9tZW0gKm10a19kZXZhcGNfcGRfZ2V0KHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQg KmRldmFwY19jdHgsDQorCQkJCSAgICAgICBpbnQgc2xhdmVfdHlwZSwNCisJCQkJICAgICAgIGVu dW0gREVWQVBDX1BEX1JFR19UWVBFIHBkX3JlZ190eXBlLA0KKwkJCQkgICAgICAgdTMyIGluZGV4 KQ0KK3sNCisJc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8gKnZpb19pbmZvID0gZGV2YXBjX2N0 eC0+c29jLT52aW9faW5mbzsNCisJdTMyIHNsYXZlX3R5cGVfbnVtID0gZGV2YXBjX2N0eC0+c29j LT5zbGF2ZV90eXBlX251bTsNCisJY29uc3QgdTMyICpkZXZhcGNfcGRzID0gZGV2YXBjX2N0eC0+ c29jLT5kZXZhcGNfcGRzOw0KKwl2b2lkIF9faW9tZW0gKnJlZzsNCisNCisJaWYgKCFkZXZhcGNf cGRzKQ0KKwkJcmV0dXJuIE5VTEw7DQorDQorCWlmICgoc2xhdmVfdHlwZSA8IHNsYXZlX3R5cGVf bnVtICYmDQorCSAgICAgaW5kZXggPCB2aW9faW5mby0+dmlvX21hc2tfc3RhX251bVtzbGF2ZV90 eXBlXSkgJiYNCisJICAgIHBkX3JlZ190eXBlIDwgUERfUkVHX1RZUEVfTlVNKSB7DQorCQlyZWcg PSBkZXZhcGNfY3R4LT5kZXZhcGNfcGRfYmFzZVtzbGF2ZV90eXBlXSArDQorCQkJZGV2YXBjX3Bk c1twZF9yZWdfdHlwZV07DQorDQorCQlpZiAocGRfcmVnX3R5cGUgPT0gVklPX01BU0sgfHwgcGRf cmVnX3R5cGUgPT0gVklPX1NUQSkNCisJCQlyZWcgKz0gMHg0ICogaW5kZXg7DQorDQorCX0gZWxz ZSB7DQorCQlwcl9lcnIoUEZYICJPdXQgT2YgQm91bmRhcnksIHNsYXZlX3R5cGU6MHgleC9wZF9y ZWdfdHlwZToweCV4L2luZGV4OjB4JXhcbiIsDQorCQkgICAgICAgc2xhdmVfdHlwZSwgcGRfcmVn X3R5cGUsIGluZGV4KTsNCisJCXJldHVybiBOVUxMOw0KKwl9DQorDQorCXJldHVybiByZWc7DQor fQ0KKw0KKy8qDQorICogc3JhbXJvbV92aW9faGFuZGxlciAtIGNsZWFuIHNyYW1yb20gdmlvbGF0 aW9uICYgcHJpbnQgdmlvbGF0aW9uIGluZm9ybWF0aW9uDQorICoJCQkgZm9yIGRlYnVnZ2luZy4N CisgKi8NCitzdGF0aWMgdm9pZCBzcmFtcm9tX3Zpb19oYW5kbGVyKHN0cnVjdCBtdGtfZGV2YXBj X2NvbnRleHQgKmRldmFwY19jdHgpDQorew0KKwljb25zdCBzdHJ1Y3QgbXRrX3NyYW1yb21fc2Vj X3Zpb19kZXNjICpzcmFtcm9tX3Zpb3M7DQorCXN0cnVjdCBtdGtfZGV2YXBjX3Zpb19pbmZvICp2 aW9faW5mbzsNCisJc3RydWN0IGFybV9zbWNjY19yZXMgcmVzOw0KKwlzaXplX3Qgc3JhbXJvbV92 aW9fc3RhOw0KKwlpbnQgc3JhbXJvbV92aW87DQorCXUzMiBydzsNCisNCisJc3JhbXJvbV92aW9z ID0gZGV2YXBjX2N0eC0+c29jLT5zcmFtcm9tX3NlY192aW9zOw0KKwl2aW9faW5mbyA9IGRldmFw Y19jdHgtPnNvYy0+dmlvX2luZm87DQorDQorCWFybV9zbWNjY19zbWMoTVRLX1NJUF9LRVJORUxf Q0xSX1NSQU1ST01fVklPLA0KKwkJICAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgJnJlcyk7DQor DQorCXNyYW1yb21fdmlvID0gcmVzLmEwOw0KKwlzcmFtcm9tX3Zpb19zdGEgPSByZXMuYTE7DQor CXZpb19pbmZvLT52aW9fYWRkciA9IHJlcy5hMjsNCisNCisJaWYgKHNyYW1yb21fdmlvID09IFNS QU1fVklPTEFUSU9OKQ0KKwkJcHJfaW5mbyhQRlggIlNSQU0gdmlvbGF0aW9uIGlzIHRyaWdnZXJl ZFxuIik7DQorCWVsc2UgaWYgKHNyYW1yb21fdmlvID09IFJPTV9WSU9MQVRJT04pDQorCQlwcl9p bmZvKFBGWCAiUk9NIHZpb2xhdGlvbiBpcyB0cmlnZ2VyZWRcbiIpOw0KKwllbHNlDQorCQlyZXR1 cm47DQorDQorCXZpb19pbmZvLT5tYXN0ZXJfaWQgPSAoc3JhbXJvbV92aW9fc3RhICYgc3JhbXJv bV92aW9zLT52aW9faWRfbWFzaykNCisJCQk+PiBzcmFtcm9tX3Zpb3MtPnZpb19pZF9zaGlmdDsN CisJdmlvX2luZm8tPmRvbWFpbl9pZCA9IChzcmFtcm9tX3Zpb19zdGEgJiBzcmFtcm9tX3Zpb3Mt PnZpb19kb21haW5fbWFzaykNCisJCQk+PiBzcmFtcm9tX3Zpb3MtPnZpb19kb21haW5fc2hpZnQ7 DQorCXJ3ID0gKHNyYW1yb21fdmlvX3N0YSAmIHNyYW1yb21fdmlvcy0+dmlvX3J3X21hc2spID4+ DQorCQkJc3JhbXJvbV92aW9zLT52aW9fcndfc2hpZnQ7DQorDQorCWlmIChydykNCisJCXZpb19p bmZvLT53cml0ZSA9IDE7DQorCWVsc2UNCisJCXZpb19pbmZvLT5yZWFkID0gMTsNCisNCisJcHJf aW5mbyhQRlggIiVzOiBtYXN0ZXJfaWQ6MHgleCwgZG9tYWluX2lkOjB4JXgsIHJ3OiVzLCB2aW9f YWRkcjoweCV4XG4iLA0KKwkJX19mdW5jX18sIHZpb19pbmZvLT5tYXN0ZXJfaWQsIHZpb19pbmZv LT5kb21haW5faWQsDQorCQlydyA/ICJXcml0ZSIgOiAiUmVhZCIsIHZpb19pbmZvLT52aW9fYWRk cik7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG1hc2tfbW9kdWxlX2lycShzdHJ1Y3QgbXRrX2RldmFw Y19jb250ZXh0ICpkZXZhcGNfY3R4LA0KKwkJCSAgICBpbnQgc2xhdmVfdHlwZSwgdTMyIG1vZHVs ZSwgYm9vbCBtYXNrKQ0KK3sNCisJc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8gKnZpb19pbmZv ID0gZGV2YXBjX2N0eC0+c29jLT52aW9faW5mbzsNCisJdTMyIHNsYXZlX3R5cGVfbnVtID0gZGV2 YXBjX2N0eC0+c29jLT5zbGF2ZV90eXBlX251bTsNCisJdTMyIGFwY19yZWdpc3Rlcl9pbmRleDsN CisJdTMyIGFwY19zZXRfaW5kZXg7DQorCXZvaWQgX19pb21lbSAqcmVnOw0KKw0KKwlhcGNfcmVn aXN0ZXJfaW5kZXggPSBtb2R1bGUgLyAoTU9EX05PX0lOXzFfREVWQVBDICogMik7DQorCWFwY19z ZXRfaW5kZXggPSBtb2R1bGUgJSAoTU9EX05PX0lOXzFfREVWQVBDICogMik7DQorDQorCWlmIChz bGF2ZV90eXBlIDwgc2xhdmVfdHlwZV9udW0gJiYNCisJICAgIGFwY19yZWdpc3Rlcl9pbmRleCA8 IHZpb19pbmZvLT52aW9fbWFza19zdGFfbnVtW3NsYXZlX3R5cGVdKSB7DQorCQlyZWcgPSBtdGtf ZGV2YXBjX3BkX2dldChkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBWSU9fTUFTSywNCisJCQkJCWFw Y19yZWdpc3Rlcl9pbmRleCk7DQorDQorCQlpZiAobWFzaykNCisJCQl3cml0ZWwocmVhZGwocmVn KSB8ICgxIDw8IGFwY19zZXRfaW5kZXgpLCByZWcpOw0KKwkJZWxzZQ0KKwkJCXdyaXRlbChyZWFk bChyZWcpICYgKH4oMSA8PCBhcGNfc2V0X2luZGV4KSksIHJlZyk7DQorDQorCX0gZWxzZSB7DQor CQlwcl9lcnIoUEZYICIlczogT3V0IE9mIEJvdW5kYXJ5LCBzbGF2ZV90eXBlOjB4JXgsIG1vZHVs ZV9pbmRleDoweCV4LCBtYXNrOiVzXG4iLA0KKwkJICAgICAgIF9fZnVuY19fLCBzbGF2ZV90eXBl LCBtb2R1bGUsIG1hc2sgPyAidHJ1ZSIgOiAiZmFsc2UiKTsNCisJfQ0KK30NCisNCitzdGF0aWMg aW50IGNoZWNrX3Zpb19tYXNrKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgs IGludCBzbGF2ZV90eXBlLA0KKwkJCSAgdTMyIG1vZHVsZSkNCit7DQorCXN0cnVjdCBtdGtfZGV2 YXBjX3Zpb19pbmZvICp2aW9faW5mbyA9IGRldmFwY19jdHgtPnNvYy0+dmlvX2luZm87DQorCXUz MiBzbGF2ZV90eXBlX251bSA9IGRldmFwY19jdHgtPnNvYy0+c2xhdmVfdHlwZV9udW07DQorCXUz MiBhcGNfcmVnaXN0ZXJfaW5kZXg7DQorCXUzMiBhcGNfc2V0X2luZGV4Ow0KKwl2b2lkIF9faW9t ZW0gKnJlZzsNCisNCisJYXBjX3JlZ2lzdGVyX2luZGV4ID0gbW9kdWxlIC8gKE1PRF9OT19JTl8x X0RFVkFQQyAqIDIpOw0KKwlhcGNfc2V0X2luZGV4ID0gbW9kdWxlICUgKE1PRF9OT19JTl8xX0RF VkFQQyAqIDIpOw0KKw0KKwlpZiAoc2xhdmVfdHlwZSA8IHNsYXZlX3R5cGVfbnVtICYmDQorCSAg ICBhcGNfcmVnaXN0ZXJfaW5kZXggPCB2aW9faW5mby0+dmlvX21hc2tfc3RhX251bVtzbGF2ZV90 eXBlXSkNCisJCXJlZyA9IG10a19kZXZhcGNfcGRfZ2V0KGRldmFwY19jdHgsIHNsYXZlX3R5cGUs IFZJT19NQVNLLA0KKwkJCQkJYXBjX3JlZ2lzdGVyX2luZGV4KTsNCisJZWxzZQ0KKwkJcmV0dXJu IC1FT1ZFUkZMT1c7DQorDQorCWlmIChyZWFkbChyZWcpICYgKDB4MSA8PCBhcGNfc2V0X2luZGV4 KSkNCisJCXJldHVybiBWSU9MQVRJT05fTUFTS0VEOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQor c3RhdGljIGludDMyX3QgY2hlY2tfdmlvX3N0YXR1cyhzdHJ1Y3QgbXRrX2RldmFwY19jb250ZXh0 ICpkZXZhcGNfY3R4LA0KKwkJCQlpbnQgc2xhdmVfdHlwZSwgdTMyIG1vZHVsZSkNCit7DQorCXN0 cnVjdCBtdGtfZGV2YXBjX3Zpb19pbmZvICp2aW9faW5mbyA9IGRldmFwY19jdHgtPnNvYy0+dmlv X2luZm87DQorCXUzMiBzbGF2ZV90eXBlX251bSA9IGRldmFwY19jdHgtPnNvYy0+c2xhdmVfdHlw ZV9udW07DQorCXUzMiBhcGNfcmVnaXN0ZXJfaW5kZXg7DQorCXUzMiBhcGNfc2V0X2luZGV4Ow0K Kwl2b2lkIF9faW9tZW0gKnJlZzsNCisNCisJYXBjX3JlZ2lzdGVyX2luZGV4ID0gbW9kdWxlIC8g KE1PRF9OT19JTl8xX0RFVkFQQyAqIDIpOw0KKwlhcGNfc2V0X2luZGV4ID0gbW9kdWxlICUgKE1P RF9OT19JTl8xX0RFVkFQQyAqIDIpOw0KKw0KKwlpZiAoc2xhdmVfdHlwZSA8IHNsYXZlX3R5cGVf bnVtICYmDQorCSAgICBhcGNfcmVnaXN0ZXJfaW5kZXggPCB2aW9faW5mby0+dmlvX21hc2tfc3Rh X251bVtzbGF2ZV90eXBlXSkgew0KKwkJcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0 eCwgc2xhdmVfdHlwZSwgVklPX1NUQSwNCisJCQkJCWFwY19yZWdpc3Rlcl9pbmRleCk7DQorDQor CX0gZWxzZSB7DQorCQlwcl9lcnIoUEZYICIlczogT3V0IE9mIEJvdW5kYXJ5LCBzbGF2ZV90eXBl OjB4JXgsIG1vZHVsZV9pbmRleDoweCV4XG4iLA0KKwkJICAgICAgIF9fZnVuY19fLCBzbGF2ZV90 eXBlLCBtb2R1bGUpOw0KKwkJcmV0dXJuIC1FT1ZFUkZMT1c7DQorCX0NCisNCisJaWYgKHJlYWRs KHJlZykgJiAoMHgxIDw8IGFwY19zZXRfaW5kZXgpKQ0KKwkJcmV0dXJuIFZJT0xBVElPTl9UUklH R0VSRUQ7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50MzJfdCBjbGVhcl92aW9f c3RhdHVzKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgsDQorCQkJCWludCBz bGF2ZV90eXBlLCB1MzIgbW9kdWxlKQ0KK3sNCisJc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8g KnZpb19pbmZvID0gZGV2YXBjX2N0eC0+c29jLT52aW9faW5mbzsNCisJdTMyIHNsYXZlX3R5cGVf bnVtID0gZGV2YXBjX2N0eC0+c29jLT5zbGF2ZV90eXBlX251bTsNCisJdTMyIGFwY19yZWdpc3Rl cl9pbmRleDsNCisJdTMyIGFwY19zZXRfaW5kZXg7DQorCXZvaWQgX19pb21lbSAqcmVnOw0KKw0K KwlhcGNfcmVnaXN0ZXJfaW5kZXggPSBtb2R1bGUgLyAoTU9EX05PX0lOXzFfREVWQVBDICogMik7 DQorCWFwY19zZXRfaW5kZXggPSBtb2R1bGUgJSAoTU9EX05PX0lOXzFfREVWQVBDICogMik7DQor DQorCWlmIChzbGF2ZV90eXBlIDwgc2xhdmVfdHlwZV9udW0gJiYNCisJICAgIGFwY19yZWdpc3Rl cl9pbmRleCA8IHZpb19pbmZvLT52aW9fbWFza19zdGFfbnVtW3NsYXZlX3R5cGVdKSB7DQorCQly ZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBWSU9fU1RBLA0K KwkJCQkJYXBjX3JlZ2lzdGVyX2luZGV4KTsNCisJCXdyaXRlbCgweDEgPDwgYXBjX3NldF9pbmRl eCwgcmVnKTsNCisNCisJfSBlbHNlIHsNCisJCXByX2VycihQRlggIiVzOiBPdXQgT2YgQm91bmRh cnksIHNsYXZlX3R5cGU6MHgleCwgbW9kdWxlX2luZGV4OjB4JXhcbiIsDQorCQkgICAgICAgX19m dW5jX18sIHNsYXZlX3R5cGUsIG1vZHVsZSk7DQorCQlyZXR1cm4gLUVPVkVSRkxPVzsNCisJfQ0K Kw0KKwlpZiAoY2hlY2tfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBtb2R1bGUp KQ0KKwkJcmV0dXJuIC1FSU87DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBk ZXZhcGNfdmlvX2luZm9fcHJpbnQoc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0 eCkNCit7DQorCXN0cnVjdCBtdGtfZGV2YXBjX3Zpb19pbmZvICp2aW9faW5mbzsNCisNCisJdmlv X2luZm8gPSBkZXZhcGNfY3R4LT5zb2MtPnZpb19pbmZvOw0KKw0KKwkvKiBQcmludCB2aW9sYXRp b24gaW5mb3JtYXRpb24gKi8NCisJaWYgKHZpb19pbmZvLT53cml0ZSkNCisJCXByX2luZm8oUEZY ICJXcml0ZSBWaW9sYXRpb25cbiIpOw0KKwllbHNlIGlmICh2aW9faW5mby0+cmVhZCkNCisJCXBy X2luZm8oUEZYICJSZWFkIFZpb2xhdGlvblxuIik7DQorDQorCXByX2luZm8oUEZYICIlcyV4LCAl cyV4LCAlcyV4LCAlcyV4XG4iLA0KKwkJIlZpbyBBZGRyOjB4IiwgdmlvX2luZm8tPnZpb19hZGRy LA0KKwkJIkhpZ2g6MHgiLCB2aW9faW5mby0+dmlvX2FkZHJfaGlnaCwNCisJCSJCdXMgSUQ6MHgi LCB2aW9faW5mby0+bWFzdGVyX2lkLA0KKwkJIkRvbSBJRDoweCIsIHZpb19pbmZvLT5kb21haW5f aWQpOw0KK30NCisNCisvKg0KKyAqIGNoZWNrX3R5cGUyX3Zpb19zdGF0dXMgLSB0aGVyZSBhcmUg dHlwZSAyIHNsYXZlcyB3aGljaCB2aW9sYXRpb24gaW5mb3JtYXRpb24NCisgKgkJCSAgICBpcyBz dG9yZWQgaW4gZGlmZmVyZW50IHJlZ2lzdGVyIGJhbmsuDQorICoNCisgKiBSZXR1cm5zIHRydWUg aWYgdHlwZTIgdmlvbGF0aW9uIGlzIHRyaWdnZXJlZC4NCisgKi8NCitzdGF0aWMgYm9vbCBjaGVj a190eXBlMl92aW9fc3RhdHVzKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgs DQorCQkJCSAgIGludCBzbGF2ZV90eXBlLCBpbnQgKnZpb19pZHgsIGludCAqaW5kZXgpDQorew0K Kwl1MzIgc3JhbXJvbV92aW9faWR4LCBtZHBfdmlvX2lkeCwgZGlzcDJfdmlvX2lkeCwgbW1zeXNf dmlvX2lkeDsNCisJY29uc3Qgc3RydWN0IG10a19kZXZpY2VfaW5mbyAqKmRldmljZV9pbmZvOw0K Kwljb25zdCBzdHJ1Y3QgbXRrX2RldmljZV9udW0gKm5kZXZpY2VzOw0KKwlpbnQgc3JhbXJvbV9z bHZfdHlwZSwgbW0ybmRfc2x2X3R5cGU7DQorCWJvb2wgbWRwX3ZpbywgZGlzcDJfdmlvLCBtbXN5 c192aW87DQorCWludCBpOw0KKw0KKwlzcmFtcm9tX3Nsdl90eXBlID0gZGV2YXBjX2N0eC0+c29j LT52aW9faW5mby0+c3JhbXJvbV9zbHZfdHlwZTsNCisJc3JhbXJvbV92aW9faWR4ID0gZGV2YXBj X2N0eC0+c29jLT52aW9faW5mby0+c3JhbXJvbV92aW9faWR4Ow0KKw0KKwltbTJuZF9zbHZfdHlw ZSA9IGRldmFwY19jdHgtPnNvYy0+dmlvX2luZm8tPm1tMm5kX3Nsdl90eXBlOw0KKwltZHBfdmlv X2lkeCA9IGRldmFwY19jdHgtPnNvYy0+dmlvX2luZm8tPm1kcF92aW9faWR4Ow0KKwlkaXNwMl92 aW9faWR4ID0gZGV2YXBjX2N0eC0+c29jLT52aW9faW5mby0+ZGlzcDJfdmlvX2lkeDsNCisJbW1z eXNfdmlvX2lkeCA9IGRldmFwY19jdHgtPnNvYy0+dmlvX2luZm8tPm1tc3lzX3Zpb19pZHg7DQor DQorCWRldmljZV9pbmZvID0gZGV2YXBjX2N0eC0+c29jLT5kZXZpY2VfaW5mbzsNCisJbmRldmlj ZXMgPSBkZXZhcGNfY3R4LT5zb2MtPm5kZXZpY2VzOw0KKw0KKwkvKiBjaGVjayBTUkFNUk9NIHZp b2xhdGlvbiAqLw0KKwlpZiAoc2xhdmVfdHlwZSA9PSBzcmFtcm9tX3Nsdl90eXBlICYmDQorCSAg ICBjaGVja192aW9fc3RhdHVzKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsIHNyYW1yb21fdmlvX2lk eCkpIHsNCisJCXByX2luZm8oUEZYICJTUkFNUk9NIHZpb2xhdGlvbiBpcyB0cmlnZ2VyZWRcbiIp Ow0KKwkJc3JhbXJvbV92aW9faGFuZGxlcihkZXZhcGNfY3R4KTsNCisNCisJCSp2aW9faWR4ID0g c3JhbXJvbV92aW9faWR4Ow0KKwkJZm9yIChpID0gMDsgaSA8IG5kZXZpY2VzW3NsYXZlX3R5cGVd LnZpb19zbGF2ZV9udW07IGkrKykgew0KKwkJCWlmIChkZXZpY2VfaW5mb1tzbGF2ZV90eXBlXVtp XS52aW9faW5kZXggPT0gKnZpb19pZHgpDQorCQkJCSppbmRleCA9IGk7DQorCQl9DQorDQorCQly ZXR1cm4gdHJ1ZTsNCisJfQ0KKw0KKwkvKiBjaGVjayBNTSAybmQgbGV2ZWwgdmlvbGF0aW9uICov DQorCWlmIChzbGF2ZV90eXBlID09IG1tMm5kX3Nsdl90eXBlKSB7DQorCQltZHBfdmlvID0gY2hl Y2tfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLA0KKwkJCQkJICAgbWRwX3Zpb19p ZHgpID09DQorCQkJCQkgICBWSU9MQVRJT05fVFJJR0dFUkVEOw0KKwkJZGlzcDJfdmlvID0gY2hl Y2tfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLA0KKwkJCQkJICAgICBkaXNwMl92 aW9faWR4KSA9PQ0KKwkJCQkJICAgICBWSU9MQVRJT05fVFJJR0dFUkVEOw0KKwkJbW1zeXNfdmlv ID0gY2hlY2tfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLA0KKwkJCQkJICAgICBt bXN5c192aW9faWR4KSA9PQ0KKwkJCQkJICAgICBWSU9MQVRJT05fVFJJR0dFUkVEOw0KKw0KKwkJ aWYgKG1kcF92aW8gfHwgZGlzcDJfdmlvIHx8IG1tc3lzX3Zpbykgew0KKwkJCXByX2luZm8oUEZY ICJNTTJuZCB2aW9sYXRpb24gaXMgdHJpZ2dlcmVkXG4iKTsNCisJCQlkZXZhcGNfY3R4LT5zb2Mt Pm1tMm5kX3Zpb19oYW5kbGVyDQorCQkJCShkZXZhcGNfY3R4LT5pbmZyYWNmZ19iYXNlLA0KKwkJ CQkgZGV2YXBjX2N0eC0+c29jLT52aW9faW5mbywNCisJCQkJIG1kcF92aW8sDQorCQkJCSBkaXNw Ml92aW8sDQorCQkJCSBtbXN5c192aW8pOw0KKwkJfSBlbHNlIHsNCisJCQlyZXR1cm4gZmFsc2U7 DQorCQl9DQorDQorCQlpZiAobWRwX3ZpbykNCisJCQkqdmlvX2lkeCA9IG1kcF92aW9faWR4Ow0K KwkJZWxzZSBpZiAoZGlzcDJfdmlvKQ0KKwkJCSp2aW9faWR4ID0gZGlzcDJfdmlvX2lkeDsNCisJ CWVsc2UgaWYgKG1tc3lzX3ZpbykNCisJCQkqdmlvX2lkeCA9IG1tc3lzX3Zpb19pZHg7DQorDQor CQlmb3IgKGkgPSAwOyBpIDwgbmRldmljZXNbc2xhdmVfdHlwZV0udmlvX3NsYXZlX251bTsgaSsr KSB7DQorCQkJaWYgKGRldmljZV9pbmZvW3NsYXZlX3R5cGVdW2ldLnZpb19pbmRleCA9PSAqdmlv X2lkeCkNCisJCQkJKmluZGV4ID0gaTsNCisJCX0NCisNCisJCWRldmFwY192aW9faW5mb19wcmlu dChkZXZhcGNfY3R4KTsNCisJCXJldHVybiB0cnVlOw0KKwl9DQorDQorCXJldHVybiBmYWxzZTsN Cit9DQorDQorLyoNCisgKiBzeW5jX3Zpb19kYmcgLSBzdGFydCB0byBnZXQgdmlvbGF0aW9uIGlu Zm9ybWF0aW9uIGJ5IHNlbGVjdGluZyB2aW9sYXRpb24NCisgKgkJICBncm91cCBhbmQgZW5hYmxl IHZpb2xhdGlvbiBzaGlmdC4NCisgKg0KKyAqIFJldHVybnMgc3luYyBkb25lIG9yIG5vdA0KKyAq Lw0KK3N0YXRpYyB1MzIgc3luY192aW9fZGJnKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRl dmFwY19jdHgsIGludCBzbGF2ZV90eXBlLA0KKwkJCXUzMiBzaGlmdF9iaXQpDQorew0KKwl1MzIg c2xhdmVfdHlwZV9udW0gPSBkZXZhcGNfY3R4LT5zb2MtPnNsYXZlX3R5cGVfbnVtOw0KKwl2b2lk IF9faW9tZW0gKnBkX3Zpb19zaGlmdF9zdGFfcmVnOw0KKwl2b2lkIF9faW9tZW0gKnBkX3Zpb19z aGlmdF9zZWxfcmVnOw0KKwl2b2lkIF9faW9tZW0gKnBkX3Zpb19zaGlmdF9jb25fcmVnOw0KKwl1 MzIgc2hpZnRfY291bnQ7DQorCXUzMiBzeW5jX2RvbmU7DQorDQorCWlmIChzbGF2ZV90eXBlID49 IHNsYXZlX3R5cGVfbnVtIHx8DQorCSAgICBzaGlmdF9iaXQgPj0gKE1PRF9OT19JTl8xX0RFVkFQ QyAqIDIpKSB7DQorCQlwcl9lcnIoUEZYICJwYXJhbSBjaGVjayBmYWlsZWQsIHNsYXZlX3R5cGU6 MHgleCwgc2hpZnRfYml0OjB4JXhcbiIsDQorCQkgICAgICAgc2xhdmVfdHlwZSwgc2hpZnRfYml0 KTsNCisJCXJldHVybiAwOw0KKwl9DQorDQorCXBkX3Zpb19zaGlmdF9zdGFfcmVnID0gbXRrX2Rl dmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwNCisJCQkJCQkgVklPX1NISUZUX1NU QSwgMCk7DQorCXBkX3Zpb19zaGlmdF9zZWxfcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBj X2N0eCwgc2xhdmVfdHlwZSwNCisJCQkJCQkgVklPX1NISUZUX1NFTCwgMCk7DQorCXBkX3Zpb19z aGlmdF9jb25fcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwN CisJCQkJCQkgVklPX1NISUZUX0NPTiwgMCk7DQorDQorCXdyaXRlbCgweDEgPDwgc2hpZnRfYml0 LCBwZF92aW9fc2hpZnRfc2VsX3JlZyk7DQorCXdyaXRlbCgweDEsIHBkX3Zpb19zaGlmdF9jb25f cmVnKTsNCisNCisJZm9yIChzaGlmdF9jb3VudCA9IDA7IChzaGlmdF9jb3VudCA8IDEwMCkgJiYN CisJICAgICAoKHJlYWRsKHBkX3Zpb19zaGlmdF9jb25fcmVnKSAmIDB4MykgIT0gMHgzKTsNCisJ ICAgICArK3NoaWZ0X2NvdW50KQ0KKwkJOw0KKw0KKwlpZiAoKHJlYWRsKHBkX3Zpb19zaGlmdF9j b25fcmVnKSAmIDB4MykgPT0gMHgzKQ0KKwkJc3luY19kb25lID0gMTsNCisJZWxzZQ0KKwkJc3lu Y19kb25lID0gMDsNCisNCisJLyogRGlzYWJsZSBzaGlmdCBtZWNoYW5pc20gKi8NCisJd3JpdGVs KDB4MCwgcGRfdmlvX3NoaWZ0X2Nvbl9yZWcpOw0KKwl3cml0ZWwoMHgwLCBwZF92aW9fc2hpZnRf c2VsX3JlZyk7DQorCXdyaXRlbCgweDEgPDwgc2hpZnRfYml0LCBwZF92aW9fc2hpZnRfc3RhX3Jl Zyk7DQorDQorCXJldHVybiBzeW5jX2RvbmU7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBjaGFyICog Y29uc3QgcGVybV90b19zdHJbXSA9IHsNCisJIk5PX1BST1RFQ1RJT04iLA0KKwkiU0VDVVJFX1JX X09OTFkiLA0KKwkiU0VDVVJFX1JXX05TX1JfT05MWSIsDQorCSJGT1JCSURERU4iLA0KKwkiTk9f UEVSTV9DVFJMIg0KK307DQorDQorc3RhdGljIGNvbnN0IGNoYXIgKnBlcm1fdG9fc3RyaW5nKHU4 IHBlcm0pDQorew0KKwlpZiAocGVybSA8IFBFUk1fVFlQRV9OVU0pDQorCQlyZXR1cm4gcGVybV90 b19zdHJbcGVybV07DQorCWVsc2UNCisJCXJldHVybiBwZXJtX3RvX3N0cltQRVJNX1RZUEVfTlVN XTsNCit9DQorDQorc3RhdGljIHZvaWQgZGV2YXBjX3Zpb19yZWFzb24odTggcGVybSkNCit7DQor CXByX2luZm8oUEZYICJQZXJtaXNzaW9uIHNldHRpbmc6ICVzXG4iLCBwZXJtX3RvX3N0cmluZyhw ZXJtKSk7DQorDQorCWlmIChwZXJtID09IE5PX1BST1RFQ1RJT04gfHwgcGVybSA+PSBQRVJNX1RZ UEVfTlVNKQ0KKwkJcHJfaW5mbyhQRlggIlJlYXNvbjogcG93ZXIvY2xvY2sgaXMgbm90IGVuYWJs ZWRcbiIpOw0KKwllbHNlIGlmIChwZXJtID09IFNFQ19SV19PTkxZIHx8DQorCQkgcGVybSA9PSBT RUNfUldfTlNfUiB8fA0KKwkJIHBlcm0gPT0gRk9SQklEREVOKQ0KKwkJcHJfaW5mbyhQRlggIlJl YXNvbjogbWlnaHQgYmUgcGVybWlzc2lvbiBkZW5pZWRcbiIpOw0KK30NCisNCisvKg0KKyAqIGdl dF9wZXJtaXNzaW9uIC0gZ2V0IHNsYXZlJ3MgYWNjZXNzIHBlcm1pc3Npb24gb2YgZG9tYWluIGlk Lg0KKyAqDQorICogUmV0dXJucyB0aGUgdmFsdWUgb2YgYWNjZXNzIHBlcm1pc3Npb24NCisgKi8N CitzdGF0aWMgdTggZ2V0X3Blcm1pc3Npb24oc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2 YXBjX2N0eCwgaW50IHNsYXZlX3R5cGUsDQorCQkJIGludCBtb2R1bGVfaW5kZXgsIGludCBkb21h aW4pDQorew0KKwl1MzIgc2xhdmVfdHlwZV9udW0gPSBkZXZhcGNfY3R4LT5zb2MtPnNsYXZlX3R5 cGVfbnVtOw0KKwljb25zdCBzdHJ1Y3QgbXRrX2RldmljZV9pbmZvICoqZGV2aWNlX2luZm87DQor CWNvbnN0IHN0cnVjdCBtdGtfZGV2aWNlX251bSAqbmRldmljZXM7DQorCWludCBzeXNfaW5kZXgs IGN0cmxfaW5kZXgsIHZpb19pbmRleDsNCisJc3RydWN0IGFybV9zbWNjY19yZXMgcmVzOw0KKwl1 MzIgcmV0LCBhcGNfc2V0X2luZGV4Ow0KKw0KKwluZGV2aWNlcyA9IGRldmFwY19jdHgtPnNvYy0+ bmRldmljZXM7DQorDQorCWlmIChzbGF2ZV90eXBlID49IHNsYXZlX3R5cGVfbnVtIHx8DQorCSAg ICBtb2R1bGVfaW5kZXggPj0gbmRldmljZXNbc2xhdmVfdHlwZV0udmlvX3NsYXZlX251bSkgew0K KwkJcHJfZXJyKFBGWCAiJXM6IHBhcmFtIGNoZWNrIGZhaWxlZCwgc2xhdmVfdHlwZToweCV4LCBt b2R1bGVfaW5kZXg6MHgleFxuIiwNCisJCSAgICAgICBfX2Z1bmNfXywgc2xhdmVfdHlwZSwgbW9k dWxlX2luZGV4KTsNCisJCXJldHVybiAweEZGOw0KKwl9DQorDQorCWRldmljZV9pbmZvID0gZGV2 YXBjX2N0eC0+c29jLT5kZXZpY2VfaW5mbzsNCisNCisJc3lzX2luZGV4ID0gZGV2aWNlX2luZm9b c2xhdmVfdHlwZV1bbW9kdWxlX2luZGV4XS5zeXNfaW5kZXg7DQorCWN0cmxfaW5kZXggPSBkZXZp Y2VfaW5mb1tzbGF2ZV90eXBlXVttb2R1bGVfaW5kZXhdLmN0cmxfaW5kZXg7DQorCXZpb19pbmRl eCA9IGRldmljZV9pbmZvW3NsYXZlX3R5cGVdW21vZHVsZV9pbmRleF0udmlvX2luZGV4Ow0KKw0K KwlpZiAoc3lzX2luZGV4ID09IC0xIHx8IGN0cmxfaW5kZXggPT0gLTEpDQorCQlyZXR1cm4gMHhG RjsNCisNCisJYXJtX3NtY2NjX3NtYyhNVEtfU0lQX0tFUk5FTF9EQVBDX1BFUk1fR0VULCBzbGF2 ZV90eXBlLCBzeXNfaW5kZXgsDQorCQkgICAgICBkb21haW4sIGN0cmxfaW5kZXgsIHZpb19pbmRl eCwgMCwgMCwgJnJlcyk7DQorCXJldCA9IHJlcy5hMDsNCisNCisJaWYgKHJldCA9PSBERUFEKSB7 DQorCQlwcl9lcnIoUEZYICJwZXJtaXNzaW9uIGdldCBmYWlsZWQsIHJldDoweCV4XG4iLCByZXQp Ow0KKwkJcmV0dXJuIDB4RkY7DQorCX0NCisNCisJYXBjX3NldF9pbmRleCA9IGN0cmxfaW5kZXgg JSBNT0RfTk9fSU5fMV9ERVZBUEM7DQorCXJldCA9IChyZXQgJiAoMHgzIDw8IChhcGNfc2V0X2lu ZGV4ICogMikpKSA+PiAoYXBjX3NldF9pbmRleCAqIDIpOw0KKw0KKwlyZXR1cm4gKHJldCAmIDB4 Myk7DQorfQ0KKw0KKy8qDQorICogbXRrX2RldmFwY192aW9fY2hlY2sgLSBjaGVjayB2aW9sYXRp b24gc2hpZnQgc3RhdHVzIGlzIHJhaXNlZCBvciBub3QuDQorICoNCisgKiBSZXR1cm5zIHRoZSB2 YWx1ZSBvZiB2aW9sYXRpb24gc2hpZnQgc3RhdHVzIHJlZw0KKyAqLw0KK3N0YXRpYyB2b2lkIG10 a19kZXZhcGNfdmlvX2NoZWNrKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHgs DQorCQkJCSBpbnQgc2xhdmVfdHlwZSwgaW50ICpzaGlmdF9iaXQpDQorew0KKwlzdHJ1Y3QgbXRr X2RldmFwY192aW9faW5mbyAqdmlvX2luZm87DQorCXUzMiB2aW9fc2hpZnRfc3RhOw0KKwlpbnQg aTsNCisNCisJdmlvX2luZm8gPSBkZXZhcGNfY3R4LT5zb2MtPnZpb19pbmZvOw0KKwl2aW9fc2hp ZnRfc3RhID0gcmVhZGwobXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwN CisJCQkJCQlWSU9fU0hJRlRfU1RBLCAwKSk7DQorDQorCWlmICghdmlvX3NoaWZ0X3N0YSkgew0K KwkJcHJfaW5mbyhQRlggInZpb2xhdGlvbiBpcyB0cmlnZ2VyZWQgYmVmb3JlLiBzaGlmdF9iaXQ6 MHgleFxuIiwNCisJCQkqc2hpZnRfYml0KTsNCisNCisJfSBlbHNlIGlmICh2aW9fc2hpZnRfc3Rh ICYgKDB4MVVMIDw8ICpzaGlmdF9iaXQpKSB7DQorCQlwcl9kZWJ1ZyhQRlggInZpb19zaGlmdF9z dGE6MHgleCBpcyBtYXRjaGVkIHdpdGggc2hpZnRfYml0OiVkXG4iLA0KKwkJCSB2aW9fc2hpZnRf c3RhLCAqc2hpZnRfYml0KTsNCisNCisJfSBlbHNlIHsNCisJCXByX2luZm8oUEZYICJ2aW9fc2hp ZnRfc3RhOjB4JXggaXMgbm90IG1hdGNoZWQgd2l0aCBzaGlmdF9iaXQ6JWRcbiIsDQorCQkJdmlv X3NoaWZ0X3N0YSwgKnNoaWZ0X2JpdCk7DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgTU9EX05PX0lO XzFfREVWQVBDICogMjsgaSsrKSB7DQorCQkJaWYgKHZpb19zaGlmdF9zdGEgJiAoMHgxIDw8IGkp KSB7DQorCQkJCSpzaGlmdF9iaXQgPSBpOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQl9DQorCX0N CisNCisJdmlvX2luZm8tPnNoaWZ0X3N0YV9iaXQgPSAqc2hpZnRfYml0Ow0KK30NCisNCitzdGF0 aWMgdm9pZCBkZXZhcGNfZXh0cmFjdF92aW9fZGJnKHN0cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQg KmRldmFwY19jdHgsDQorCQkJCSAgIGludCBzbGF2ZV90eXBlKQ0KK3sNCisJdm9pZCBfX2lvbWVt ICp2aW9fZGJnMF9yZWcsICp2aW9fZGJnMV9yZWcsICp2aW9fZGJnMl9yZWc7DQorCWNvbnN0IHN0 cnVjdCBtdGtfaW5mcmFfdmlvX2RiZ19kZXNjICp2aW9fZGJnczsNCisJc3RydWN0IG10a19kZXZh cGNfdmlvX2luZm8gKnZpb19pbmZvOw0KKwl1MzIgZGJnMDsNCisNCisJdmlvX2RiZzBfcmVnID0g bXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwgVklPX0RCRzAsIDApOw0K Kwl2aW9fZGJnMV9yZWcgPSBtdGtfZGV2YXBjX3BkX2dldChkZXZhcGNfY3R4LCBzbGF2ZV90eXBl LCBWSU9fREJHMSwgMCk7DQorCXZpb19kYmcyX3JlZyA9IG10a19kZXZhcGNfcGRfZ2V0KGRldmFw Y19jdHgsIHNsYXZlX3R5cGUsIFZJT19EQkcyLCAwKTsNCisNCisJdmlvX2RiZ3MgPSBkZXZhcGNf Y3R4LT5zb2MtPnZpb19kYmdzOw0KKwl2aW9faW5mbyA9IGRldmFwY19jdHgtPnNvYy0+dmlvX2lu Zm87DQorDQorCS8qIEV4dHJhY3QgdmlvbGF0aW9uIGluZm9ybWF0aW9uICovDQorCWRiZzAgPSBy ZWFkbCh2aW9fZGJnMF9yZWcpOw0KKwl2aW9faW5mby0+bWFzdGVyX2lkID0gcmVhZGwodmlvX2Ri ZzFfcmVnKTsNCisJdmlvX2luZm8tPnZpb19hZGRyID0gcmVhZGwodmlvX2RiZzJfcmVnKTsNCisN CisJdmlvX2luZm8tPmRvbWFpbl9pZCA9IChkYmcwICYgdmlvX2RiZ3MtPnZpb19kYmdfZG1uaWQp DQorCQk+PiB2aW9fZGJncy0+dmlvX2RiZ19kbW5pZF9zdGFydF9iaXQ7DQorCXZpb19pbmZvLT53 cml0ZSA9ICgoZGJnMCAmIHZpb19kYmdzLT52aW9fZGJnX3dfdmlvKQ0KKwkJCT4+IHZpb19kYmdz LT52aW9fZGJnX3dfdmlvX3N0YXJ0X2JpdCkgPT0gMTsNCisJdmlvX2luZm8tPnJlYWQgPSAoKGRi ZzAgJiB2aW9fZGJncy0+dmlvX2RiZ19yX3ZpbykNCisJCQk+PiB2aW9fZGJncy0+dmlvX2RiZ19y X3Zpb19zdGFydF9iaXQpID09IDE7DQorCXZpb19pbmZvLT52aW9fYWRkcl9oaWdoID0gKGRiZzAg JiB2aW9fZGJncy0+dmlvX2FkZHJfaGlnaCkNCisJCT4+IHZpb19kYmdzLT52aW9fYWRkcl9oaWdo X3N0YXJ0X2JpdDsNCisNCisJZGV2YXBjX3Zpb19pbmZvX3ByaW50KGRldmFwY19jdHgpOw0KK30N CisNCisvKg0KKyAqIG10a19kZXZhcGNfZHVtcF92aW9fZGJnIC0gc2hpZnQgJiBkdW1wIHRoZSB2 aW9sYXRpb24gZGVidWcgaW5mb3JtYXRpb24uDQorICovDQorc3RhdGljIGJvb2wgbXRrX2RldmFw Y19kdW1wX3Zpb19kYmcoc3RydWN0IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0eCwNCisJ CQkJICAgIGludCBzbGF2ZV90eXBlLCBpbnQgKnZpb19pZHgsIGludCAqaW5kZXgpDQorew0KKwlj b25zdCBzdHJ1Y3QgbXRrX2RldmljZV9pbmZvICoqZGV2aWNlX2luZm87DQorCWNvbnN0IHN0cnVj dCBtdGtfZGV2aWNlX251bSAqbmRldmljZXM7DQorCXZvaWQgX19pb21lbSAqcGRfdmlvX3NoaWZ0 X3N0YV9yZWc7DQorCXUzMiBzaGlmdF9iaXQ7DQorCWludCBpOw0KKw0KKwlpZiAoIXZpb19pZHgp DQorCQlyZXR1cm4gTlVMTDsNCisNCisJZGV2aWNlX2luZm8gPSBkZXZhcGNfY3R4LT5zb2MtPmRl dmljZV9pbmZvOw0KKwluZGV2aWNlcyA9IGRldmFwY19jdHgtPnNvYy0+bmRldmljZXM7DQorDQor CXBkX3Zpb19zaGlmdF9zdGFfcmVnID0gbXRrX2RldmFwY19wZF9nZXQoZGV2YXBjX2N0eCwgc2xh dmVfdHlwZSwNCisJCQkJCQkgVklPX1NISUZUX1NUQSwgMCk7DQorDQorCWZvciAoaSA9IDA7IGkg PCBuZGV2aWNlc1tzbGF2ZV90eXBlXS52aW9fc2xhdmVfbnVtOyBpKyspIHsNCisJCSp2aW9faWR4 ID0gZGV2aWNlX2luZm9bc2xhdmVfdHlwZV1baV0udmlvX2luZGV4Ow0KKw0KKwkJaWYgKGNoZWNr X3Zpb19tYXNrKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsICp2aW9faWR4KSkNCisJCQljb250aW51 ZTsNCisNCisJCWlmIChjaGVja192aW9fc3RhdHVzKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsICp2 aW9faWR4KSAhPQ0KKwkJCQlWSU9MQVRJT05fVFJJR0dFUkVEKQ0KKwkJCWNvbnRpbnVlOw0KKw0K KwkJc2hpZnRfYml0ID0gZGV2YXBjX2N0eC0+c29jLT5zaGlmdF9ncm91cF9nZXQoc2xhdmVfdHlw ZSwNCisJCQkJCQkJICAgICAqdmlvX2lkeCk7DQorDQorCQltdGtfZGV2YXBjX3Zpb19jaGVjayhk ZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCAmc2hpZnRfYml0KTsNCisNCisJCWlmICghc3luY192aW9f ZGJnKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsIHNoaWZ0X2JpdCkpDQorCQkJY29udGludWU7DQor DQorCQlkZXZhcGNfZXh0cmFjdF92aW9fZGJnKGRldmFwY19jdHgsIHNsYXZlX3R5cGUpOw0KKwkJ KmluZGV4ID0gaTsNCisNCisJCXJldHVybiB0cnVlOw0KKwl9DQorDQorCXJldHVybiBmYWxzZTsN Cit9DQorDQorLyoNCisgKiBzdGFydF9kZXZhcGMgLSBpbml0aWFsaXplIGRldmFwYyBzdGF0dXMg YW5kIHN0YXJ0IHJlY2VpdmluZyBpbnRlcnJ1cHQNCisgKgkJICB3aGlsZSBkZXZhcGMgdmlvbGF0 aW9uIGlzIHRyaWdnZXJlZC4NCisgKi8NCitzdGF0aWMgdm9pZCBzdGFydF9kZXZhcGMoc3RydWN0 IG10a19kZXZhcGNfY29udGV4dCAqZGV2YXBjX2N0eCkNCit7DQorCXUzMiBzbGF2ZV90eXBlX251 bSA9IGRldmFwY19jdHgtPnNvYy0+c2xhdmVfdHlwZV9udW07DQorCWNvbnN0IHN0cnVjdCBtdGtf ZGV2aWNlX2luZm8gKipkZXZpY2VfaW5mbzsNCisJY29uc3Qgc3RydWN0IG10a19kZXZpY2VfbnVt ICpuZGV2aWNlczsNCisJdm9pZCBfX2lvbWVtICpwZF92aW9fc2hpZnRfc3RhX3JlZzsNCisJdm9p ZCBfX2lvbWVtICpwZF9hcGNfY29uX3JlZzsNCisJaW50IHNsYXZlX3R5cGUsIGksIHZpb19pZHgs IGluZGV4Ow0KKwl1MzIgdmlvX3NoaWZ0X3N0YTsNCisNCisJbmRldmljZXMgPSBkZXZhcGNfY3R4 LT5zb2MtPm5kZXZpY2VzOw0KKw0KKwlkZXZpY2VfaW5mbyA9IGRldmFwY19jdHgtPnNvYy0+ZGV2 aWNlX2luZm87DQorDQorCWZvciAoc2xhdmVfdHlwZSA9IDA7IHNsYXZlX3R5cGUgPCBzbGF2ZV90 eXBlX251bTsgc2xhdmVfdHlwZSsrKSB7DQorCQlwZF9hcGNfY29uX3JlZyA9IG10a19kZXZhcGNf cGRfZ2V0KGRldmFwY19jdHgsIHNsYXZlX3R5cGUsDQorCQkJCQkJICAgQVBDX0NPTiwgMCk7DQor CQlwZF92aW9fc2hpZnRfc3RhX3JlZyA9IG10a19kZXZhcGNfcGRfZ2V0KGRldmFwY19jdHgsIHNs YXZlX3R5cGUsDQorCQkJCQkJCSBWSU9fU0hJRlRfU1RBLCAwKTsNCisNCisJCWlmICghcGRfYXBj X2Nvbl9yZWcgfHwgIXBkX3Zpb19zaGlmdF9zdGFfcmVnIHx8ICFkZXZpY2VfaW5mbykNCisJCQly ZXR1cm47DQorDQorCQkvKiBDbGVhciBERVZBUEMgdmlvbGF0aW9uIHN0YXR1cyAqLw0KKwkJd3Jp dGVsKEJJVCgzMSksIHBkX2FwY19jb25fcmVnKTsNCisNCisJCS8qIENsZWFyIHZpb2xhdGlvbiBz aGlmdCBzdGF0dXMgKi8NCisJCXZpb19zaGlmdF9zdGEgPSByZWFkbChwZF92aW9fc2hpZnRfc3Rh X3JlZyk7DQorCQlpZiAodmlvX3NoaWZ0X3N0YSkNCisJCQl3cml0ZWwodmlvX3NoaWZ0X3N0YSwg cGRfdmlvX3NoaWZ0X3N0YV9yZWcpOw0KKw0KKwkJLyogQ2xlYXIgdHlwZSAyIHZpb2xhdGlvbiBz dGF0dXMgKi8NCisJCWNoZWNrX3R5cGUyX3Zpb19zdGF0dXMoZGV2YXBjX2N0eCwgc2xhdmVfdHlw ZSwgJnZpb19pZHgsICZpKTsNCisNCisJCS8qIENsZWFyIHZpb2xhdGlvbiBzdGF0dXMgKi8NCisJ CWZvciAoaSA9IDA7IGkgPCBuZGV2aWNlc1tzbGF2ZV90eXBlXS52aW9fc2xhdmVfbnVtOyBpKysp IHsNCisJCQl2aW9faWR4ID0gZGV2aWNlX2luZm9bc2xhdmVfdHlwZV1baV0udmlvX2luZGV4Ow0K KwkJCWlmICgoY2hlY2tfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCB2aW9faWR4 KQ0KKwkJCQkJICAgICAgPT0gVklPTEFUSU9OX1RSSUdHRVJFRCkgJiYNCisJCQkgICAgIGNsZWFy X3Zpb19zdGF0dXMoZGV2YXBjX2N0eCwgc2xhdmVfdHlwZSwNCisJCQkJCSAgICAgIHZpb19pZHgp KSB7DQorCQkJCXByX3dhcm4oUEZYICJDbGVhciB2aW8gc3RhdHVzIGZhaWxlZCwgc2xhdmVfdHlw ZToweCV4LCB2aW9faW5kZXg6MHgleFxuIiwNCisJCQkJCXNsYXZlX3R5cGUsIHZpb19pZHgpOw0K Kw0KKwkJCQlpbmRleCA9IGk7DQorCQkJCW10a19kZXZhcGNfZHVtcF92aW9fZGJnKGRldmFwY19j dHgsIHNsYXZlX3R5cGUsDQorCQkJCQkJCSZ2aW9faWR4LCAmaW5kZXgpOw0KKwkJCQlpID0gaW5k ZXggLSAxOw0KKwkJCX0NCisNCisJCQltYXNrX21vZHVsZV9pcnEoZGV2YXBjX2N0eCwgc2xhdmVf dHlwZSwgdmlvX2lkeCwgZmFsc2UpOw0KKwkJfQ0KKwl9DQorfQ0KKw0KK3N0YXRpYyBERUZJTkVf U1BJTkxPQ0soZGV2YXBjX2xvY2spOw0KKw0KKy8qDQorICogZGV2YXBjX3Zpb2xhdGlvbl9pcnEg LSB0aGUgZGV2YXBjIEludGVycnVwdCBTZXJ2aWNlIFJvdXRpbmUgKElTUikgd2lsbCBkdW1wDQor ICoJCQkgIHZpb2xhdGlvbiBpbmZvcm1hdGlvbiBpbmNsdWRpbmcgd2hpY2ggbWFzdGVyIHZpb2xh dGVzDQorICoJCQkgIGFjY2VzcyBzbGF2ZS4NCisgKi8NCitzdGF0aWMgaXJxcmV0dXJuX3QgZGV2 YXBjX3Zpb2xhdGlvbl9pcnEoaW50IGlycV9udW1iZXIsDQorCQkJCQlzdHJ1Y3QgbXRrX2RldmFw Y19jb250ZXh0ICpkZXZhcGNfY3R4KQ0KK3sNCisJdTMyIHNsYXZlX3R5cGVfbnVtID0gZGV2YXBj X2N0eC0+c29jLT5zbGF2ZV90eXBlX251bTsNCisJY29uc3Qgc3RydWN0IG10a19kZXZpY2VfaW5m byAqKmRldmljZV9pbmZvOw0KKwlzdHJ1Y3QgbXRrX2RldmFwY192aW9faW5mbyAqdmlvX2luZm87 DQorCWludCBzbGF2ZV90eXBlLCB2aW9faWR4LCBpbmRleDsNCisJY29uc3QgY2hhciAqdmlvX21h c3RlcjsNCisJdW5zaWduZWQgbG9uZyBmbGFnczsNCisJdTggcGVybTsNCisNCisJc3Bpbl9sb2Nr X2lycXNhdmUoJmRldmFwY19sb2NrLCBmbGFncyk7DQorDQorCWRldmljZV9pbmZvID0gZGV2YXBj X2N0eC0+c29jLT5kZXZpY2VfaW5mbzsNCisJdmlvX2luZm8gPSBkZXZhcGNfY3R4LT5zb2MtPnZp b19pbmZvOw0KKwl2aW9faWR4ID0gLTE7DQorCWluZGV4ID0gLTE7DQorDQorCS8qIFRoZXJlIGFy ZSBtdWx0aXBsZSBERVZBUENfUEQgKi8NCisJZm9yIChzbGF2ZV90eXBlID0gMDsgc2xhdmVfdHlw ZSA8IHNsYXZlX3R5cGVfbnVtOyBzbGF2ZV90eXBlKyspIHsNCisJCWlmICghY2hlY2tfdHlwZTJf dmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCAmdmlvX2lkeCwNCisJCQkJCSAgICAm aW5kZXgpKQ0KKwkJCWlmICghbXRrX2RldmFwY19kdW1wX3Zpb19kYmcoZGV2YXBjX2N0eCwgc2xh dmVfdHlwZSwNCisJCQkJCQkgICAgICZ2aW9faWR4LCAmaW5kZXgpKQ0KKwkJCQljb250aW51ZTsN CisNCisJCS8qIEVuc3VyZSB0aGF0IHZpb2xhdGlvbiBpbmZvIGFyZSB3cml0dGVuIGJlZm9yZQ0K KwkJICogZnVydGhlciBvcGVyYXRpb25zDQorCQkgKi8NCisJCXNtcF9tYigpOw0KKw0KKwkJbWFz a19tb2R1bGVfaXJxKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsIHZpb19pZHgsIHRydWUpOw0KKw0K KwkJY2xlYXJfdmlvX3N0YXR1cyhkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCB2aW9faWR4KTsNCisN CisJCXBlcm0gPSBnZXRfcGVybWlzc2lvbihkZXZhcGNfY3R4LCBzbGF2ZV90eXBlLCBpbmRleCwN CisJCQkJICAgICAgdmlvX2luZm8tPmRvbWFpbl9pZCk7DQorDQorCQl2aW9fbWFzdGVyID0gZGV2 YXBjX2N0eC0+c29jLT5tYXN0ZXJfZ2V0DQorCQkJKHZpb19pbmZvLT5tYXN0ZXJfaWQsDQorCQkJ IHZpb19pbmZvLT52aW9fYWRkciwNCisJCQkgc2xhdmVfdHlwZSwNCisJCQkgdmlvX2luZm8tPnNo aWZ0X3N0YV9iaXQsDQorCQkJIHZpb19pbmZvLT5kb21haW5faWQpOw0KKw0KKwkJaWYgKCF2aW9f bWFzdGVyKQ0KKwkJCXZpb19tYXN0ZXIgPSAiVU5LTk9XTl9NQVNURVIiOw0KKw0KKwkJcHJfaW5m byhQRlggIlZpb2xhdGlvbiAtIHNsYXZlX3R5cGU6MHgleCwgc3lzX2luZGV4OjB4JXgsIGN0cmxf aW5kZXg6MHgleCwgdmlvX2luZGV4OjB4JXhcbiIsDQorCQkJc2xhdmVfdHlwZSwNCisJCQlkZXZp Y2VfaW5mb1tzbGF2ZV90eXBlXVtpbmRleF0uc3lzX2luZGV4LA0KKwkJCWRldmljZV9pbmZvW3Ns YXZlX3R5cGVdW2luZGV4XS5jdHJsX2luZGV4LA0KKwkJCWRldmljZV9pbmZvW3NsYXZlX3R5cGVd W2luZGV4XS52aW9faW5kZXgpOw0KKw0KKwkJcHJfaW5mbyhQRlggIlZpb2xhdGlvbiBNYXN0ZXI6 ICVzXG4iLCB2aW9fbWFzdGVyKTsNCisNCisJCWRldmFwY192aW9fcmVhc29uKHBlcm0pOw0KKw0K KwkJbWFza19tb2R1bGVfaXJxKGRldmFwY19jdHgsIHNsYXZlX3R5cGUsIHZpb19pZHgsIGZhbHNl KTsNCisJfQ0KKw0KKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZhcGNfbG9jaywgZmxhZ3Mp Ow0KKwlyZXR1cm4gSVJRX0hBTkRMRUQ7DQorfQ0KKw0KK2ludCBtdGtfZGV2YXBjX3Byb2JlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBtdGtfZGV2YXBjX3NvYyAqc29jKQ0K K3sNCisJc3RydWN0IGRldmljZV9ub2RlICpub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7DQorCXN0 cnVjdCBtdGtfZGV2YXBjX2NvbnRleHQgKmRldmFwY19jdHg7DQorCXUzMiBzbGF2ZV90eXBlX251 bTsNCisJaW50IHNsYXZlX3R5cGU7DQorCWludCByZXQ7DQorDQorCWlmIChJU19FUlIobm9kZSkp DQorCQlyZXR1cm4gLUVOT0RFVjsNCisNCisJZGV2YXBjX2N0eCA9IGRldm1fa3phbGxvYygmcGRl di0+ZGV2LCBzaXplb2Yoc3RydWN0IG10a19kZXZhcGNfY29udGV4dCksDQorCQkJCSAgR0ZQX0tF Uk5FTCk7DQorCWlmICghZGV2YXBjX2N0eCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlkZXZh cGNfY3R4LT5zb2MgPSBzb2M7DQorCXNsYXZlX3R5cGVfbnVtID0gZGV2YXBjX2N0eC0+c29jLT5z bGF2ZV90eXBlX251bTsNCisNCisJZm9yIChzbGF2ZV90eXBlID0gMDsgc2xhdmVfdHlwZSA8IHNs YXZlX3R5cGVfbnVtOyBzbGF2ZV90eXBlKyspIHsNCisJCWRldmFwY19jdHgtPmRldmFwY19wZF9i YXNlW3NsYXZlX3R5cGVdID0NCisJCQlvZl9pb21hcChub2RlLCBzbGF2ZV90eXBlKTsNCisJCWlm ICghZGV2YXBjX2N0eC0+ZGV2YXBjX3BkX2Jhc2Vbc2xhdmVfdHlwZV0pDQorCQkJcmV0dXJuIC1F SU5WQUw7DQorCX0NCisNCisJZGV2YXBjX2N0eC0+aW5mcmFjZmdfYmFzZSA9IG9mX2lvbWFwKG5v ZGUsIHNsYXZlX3R5cGVfbnVtICsgMSk7DQorCWlmICghZGV2YXBjX2N0eC0+aW5mcmFjZmdfYmFz ZSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwlkZXZhcGNfY3R4LT5kZXZhcGNfaXJxID0gaXJx X29mX3BhcnNlX2FuZF9tYXAobm9kZSwgMCk7DQorCWlmICghZGV2YXBjX2N0eC0+ZGV2YXBjX2ly cSkNCisJCXJldHVybiAtRUlOVkFMOw0KKw0KKwkvKiBDQ0YgKENvbW1vbiBDbG9jayBGcmFtZXdv cmspICovDQorCWRldmFwY19jdHgtPmRldmFwY19pbmZyYV9jbGsgPSBkZXZtX2Nsa19nZXQoJnBk ZXYtPmRldiwNCisJCQkJCQkgICAgImRldmFwYy1pbmZyYS1jbG9jayIpOw0KKw0KKwlpZiAoSVNf RVJSKGRldmFwY19jdHgtPmRldmFwY19pbmZyYV9jbGspKQ0KKwkJcmV0dXJuIC1FSU5WQUw7DQor DQorCWlmIChjbGtfcHJlcGFyZV9lbmFibGUoZGV2YXBjX2N0eC0+ZGV2YXBjX2luZnJhX2Nsaykp DQorCQlyZXR1cm4gLUVJTlZBTDsNCisNCisJc3RhcnRfZGV2YXBjKGRldmFwY19jdHgpOw0KKw0K KwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGRldmFwY19jdHgtPmRldmFwY19p cnEsDQorCQkJICAgICAgIChpcnFfaGFuZGxlcl90KWRldmFwY192aW9sYXRpb25faXJxLA0KKwkJ CSAgICAgICBJUlFGX1RSSUdHRVJfTk9ORSwgImRldmFwYyIsIGRldmFwY19jdHgpOw0KKwlpZiAo cmV0KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK2ludCBtdGtfZGV2 YXBjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpkZXYpDQorew0KKwlyZXR1cm4gMDsN Cit9DQorDQorTU9EVUxFX0RFU0NSSVBUSU9OKCJNZWRpYXRlayBEZXZpY2UgQVBDIERyaXZlciIp Ow0KK01PRFVMRV9BVVRIT1IoIk5lYWwgTGl1IDxuZWFsLmxpdUBtZWRpYXRlay5jb20+Iik7DQor TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc29jL21lZGlhdGVr L2RldmFwYy9kZXZhcGMtbXRrLW11bHRpLWFvLmggYi9kcml2ZXJzL3NvYy9tZWRpYXRlay9kZXZh cGMvZGV2YXBjLW10ay1tdWx0aS1hby5oDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMC4uMWU1OGEzZQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9zb2MvbWVkaWF0ZWsv ZGV2YXBjL2RldmFwYy1tdGstbXVsdGktYW8uaA0KQEAgLTAsMCArMSwxODIgQEANCisvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKy8qDQorICogQ29weXJpZ2h0IChDKSAy MDIwIE1lZGlhVGVrIEluYy4NCisgKi8NCisNCisjaWZuZGVmIF9fREVWQVBDX01US19NVUxUSV9B T19IX18NCisjZGVmaW5lIF9fREVWQVBDX01US19NVUxUSV9BT19IX18NCisNCisjaW5jbHVkZSA8 bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+DQorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQorDQor LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KKyAqIFZBUklBQkxFIERFRklOQVRJT04NCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqLw0KKyNkZWZpbmUgTU9EX05PX0lOXzFfREVWQVBDCTE2DQorI2RlZmlu ZSBWSU9MQVRJT05fVFJJR0dFUkVECTENCisjZGVmaW5lIFZJT0xBVElPTl9NQVNLRUQJMQ0KKyNk ZWZpbmUgREVBRAkJCTB4ZGVhZGJlYWYNCisjZGVmaW5lIFBGWAkJCSJbREVWQVBDXTogIg0KKyNk ZWZpbmUgU0xBVkVfVFlQRV9OVU1fTUFYCTUNCisNCisjZGVmaW5lIGRldmFwY19sb2cocCwgcywg Zm10LCBhcmdzLi4uKSBcDQorCWRvIHsgXA0KKwkJdHlwZW9mKHApIChfcCkgPSAocCk7IFwNCisJ CSgoX3ApICs9IHNjbnByaW50ZihfcCwgc2l6ZW9mKHMpIC0gc3RybGVuKHMpLCBmbXQsICMjYXJn cykpOyBcDQorCX0gd2hpbGUgKDApDQorDQorI2RlZmluZSBVTlVTRUQoeCkJCSh2b2lkKSh4KQ0K Kw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBEQVRBIFNUUlVDVFVSRSAmIEZVTkNUSU9O IERFRklOQVRJT04NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK2VudW0gREVWQVBDX1BEX1JF R19UWVBFIHsNCisJVklPX01BU0sgPSAwLA0KKwlWSU9fU1RBLA0KKwlWSU9fREJHMCwNCisJVklP X0RCRzEsDQorCVZJT19EQkcyLA0KKwlBUENfQ09OLA0KKwlWSU9fU0hJRlRfU1RBLA0KKwlWSU9f U0hJRlRfU0VMLA0KKwlWSU9fU0hJRlRfQ09OLA0KKwlQRF9SRUdfVFlQRV9OVU0sDQorfTsNCisN CitlbnVtIERFVkFQQ19VVF9DTUQgew0KKwlERVZBUENfVVRfREFQQ19WSU8gPSAxLA0KKwlERVZB UENfVVRfU1JBTV9WSU8sDQorfTsNCisNCitlbnVtIERFVkFQQ19ET01fSUQgew0KKwlET01BSU5f MCA9IDAsDQorCURPTUFJTl8xLA0KKwlET01BSU5fMiwNCisJRE9NQUlOXzMsDQorCURPTUFJTl80 LA0KKwlET01BSU5fNSwNCisJRE9NQUlOXzYsDQorCURPTUFJTl83LA0KKwlET01BSU5fOCwNCisJ RE9NQUlOXzksDQorCURPTUFJTl8xMCwNCisJRE9NQUlOXzExLA0KKwlET01BSU5fMTIsDQorCURP TUFJTl8xMywNCisJRE9NQUlOXzE0LA0KKwlET01BSU5fMTUsDQorCURPTUFJTl9PVEhFUlMsDQor fTsNCisNCitlbnVtIFNSQU1ST01fVklPIHsNCisJUk9NX1ZJT0xBVElPTiA9IDAsDQorCVNSQU1f VklPTEFUSU9OLA0KK307DQorDQorZW51bSBERVZBUENfUEVSTV9UWVBFIHsNCisJTk9fUFJPVEVD VElPTiA9IDAsDQorCVNFQ19SV19PTkxZLA0KKwlTRUNfUldfTlNfUiwNCisJRk9SQklEREVOLA0K KwlQRVJNX1RZUEVfTlVNLA0KK307DQorDQorc3RydWN0IG10a19kZXZhcGNfZGJnX3N0YXR1cyB7 DQorCWJvb2wgZW5hYmxlX3V0Ow0KKwlib29sIGVuYWJsZV9kYXBjOyAvKiBkdW1wIEFQQyAqLw0K K307DQorDQorc3RydWN0IG10a19kZXZpY2VfaW5mbyB7DQorCWludCBzeXNfaW5kZXg7DQorCWlu dCBjdHJsX2luZGV4Ow0KKwlpbnQgdmlvX2luZGV4Ow0KK307DQorDQorc3RydWN0IG10a19kZXZp Y2VfbnVtIHsNCisJaW50IHNsYXZlX3R5cGU7DQorCXUzMiB2aW9fc2xhdmVfbnVtOw0KK307DQor DQorc3RydWN0IG10a19kZXZhcGNfdmlvX2luZm8gew0KKwlib29sIHJlYWQ7DQorCWJvb2wgd3Jp dGU7DQorCXUzMiB2aW9fYWRkcjsNCisJdTMyIHZpb19hZGRyX2hpZ2g7DQorCXUzMiBtYXN0ZXJf aWQ7DQorCXUzMiBkb21haW5faWQ7DQorCWludCAqdmlvX21hc2tfc3RhX251bTsNCisJaW50IHNy YW1yb21fc2x2X3R5cGU7DQorCWludCBzcmFtcm9tX3Zpb19pZHg7DQorCWludCBtbTJuZF9zbHZf dHlwZTsNCisJaW50IG1kcF92aW9faWR4Ow0KKwlpbnQgZGlzcDJfdmlvX2lkeDsNCisJaW50IG1t c3lzX3Zpb19pZHg7DQorCWludCBzaGlmdF9zdGFfYml0Ow0KK307DQorDQorc3RydWN0IG10a19p bmZyYV92aW9fZGJnX2Rlc2Mgew0KKwl1MzIgdmlvX2RiZ19tc3RpZDsNCisJdTggdmlvX2RiZ19t c3RpZF9zdGFydF9iaXQ7DQorCXUzMiB2aW9fZGJnX2RtbmlkOw0KKwl1OCB2aW9fZGJnX2Rtbmlk X3N0YXJ0X2JpdDsNCisJdTMyIHZpb19kYmdfd192aW87DQorCXU4IHZpb19kYmdfd192aW9fc3Rh cnRfYml0Ow0KKwl1MzIgdmlvX2RiZ19yX3ZpbzsNCisJdTggdmlvX2RiZ19yX3Zpb19zdGFydF9i aXQ7DQorCXUzMiB2aW9fYWRkcl9oaWdoOw0KKwl1OCB2aW9fYWRkcl9oaWdoX3N0YXJ0X2JpdDsN Cit9Ow0KKw0KK3N0cnVjdCBtdGtfc3JhbXJvbV9zZWNfdmlvX2Rlc2Mgew0KKwl1MzIgdmlvX2lk X21hc2s7DQorCXU4IHZpb19pZF9zaGlmdDsNCisJdTMyIHZpb19kb21haW5fbWFzazsNCisJdTgg dmlvX2RvbWFpbl9zaGlmdDsNCisJdTMyIHZpb19yd19tYXNrOw0KKwl1OCB2aW9fcndfc2hpZnQ7 DQorfTsNCisNCitzdHJ1Y3QgbXRrX2RldmFwY19wZF9kZXNjIHsNCisJdTMyIHBkX3Zpb19tYXNr X29mZnNldDsNCisJdTMyIHBkX3Zpb19zdGFfb2Zmc2V0Ow0KKwl1MzIgcGRfdmlvX2RiZzBfb2Zm c2V0Ow0KKwl1MzIgcGRfdmlvX2RiZzFfb2Zmc2V0Ow0KKwl1MzIgcGRfYXBjX2Nvbl9vZmZzZXQ7 DQorCXUzMiBwZF9zaGlmdF9zdGFfb2Zmc2V0Ow0KKwl1MzIgcGRfc2hpZnRfc2VsX29mZnNldDsN CisJdTMyIHBkX3NoaWZ0X2Nvbl9vZmZzZXQ7DQorfTsNCisNCitzdHJ1Y3QgbXRrX2RldmFwY19z b2Mgew0KKwlzdHJ1Y3QgbXRrX2RldmFwY19kYmdfc3RhdHVzICpkYmdfc3RhdDsNCisJY29uc3Qg Y2hhciAqIGNvbnN0ICpzbGF2ZV90eXBlX2FycjsNCisJdTMyIHNsYXZlX3R5cGVfbnVtOw0KKwlj b25zdCBzdHJ1Y3QgbXRrX2RldmljZV9pbmZvICpkZXZpY2VfaW5mb1tTTEFWRV9UWVBFX05VTV9N QVhdOw0KKwljb25zdCBzdHJ1Y3QgbXRrX2RldmljZV9udW0gKm5kZXZpY2VzOw0KKwlzdHJ1Y3Qg bXRrX2RldmFwY192aW9faW5mbyAqdmlvX2luZm87DQorCWNvbnN0IHN0cnVjdCBtdGtfaW5mcmFf dmlvX2RiZ19kZXNjICp2aW9fZGJnczsNCisJY29uc3Qgc3RydWN0IG10a19zcmFtcm9tX3NlY192 aW9fZGVzYyAqc3JhbXJvbV9zZWNfdmlvczsNCisJY29uc3QgdTMyICpkZXZhcGNfcGRzOw0KKw0K KwkvKiBwbGF0Zm9ybSBzcGVjaWZpYyBvcGVyYXRpb25zICovDQorCWNvbnN0IGNoYXIqICgqbWFz dGVyX2dldCkodTMyIGJ1c19pZCwgdTMyIHZpb19hZGRyLA0KKwkJCQkgIGludCBzbGF2ZV90eXBl LCBpbnQgc2hpZnRfc3RhX2JpdCwNCisJCQkJICBpbnQgZG9tYWluKTsNCisJdm9pZCAoKm1tMm5k X3Zpb19oYW5kbGVyKSh2b2lkIF9faW9tZW0gKmluZnJhY2ZnLA0KKwkJCQkgIHN0cnVjdCBtdGtf ZGV2YXBjX3Zpb19pbmZvICp2aW9faW5mbywNCisJCQkJICBib29sIG1kcF92aW8sIGJvb2wgZGlz cDJfdmlvLCBib29sIG1tc3lzX3Zpbyk7DQorCXUzMiAoKnNoaWZ0X2dyb3VwX2dldCkoaW50IHNs YXZlX3R5cGUsIHUzMiB2aW9faW5kZXgpOw0KK307DQorDQorc3RydWN0IG10a19kZXZhcGNfY29u dGV4dCB7DQorCXN0cnVjdCBjbGsgKmRldmFwY19pbmZyYV9jbGs7DQorCXUzMiBkZXZhcGNfaXJx Ow0KKwl2b2lkIF9faW9tZW0gKmRldmFwY19wZF9iYXNlWzRdOw0KKwl2b2lkIF9faW9tZW0gKmlu ZnJhY2ZnX2Jhc2U7DQorCXN0cnVjdCBtdGtfZGV2YXBjX3NvYyAqc29jOw0KK307DQorDQoraW50 IG10a19kZXZhcGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IG10 a19kZXZhcGNfc29jICpzb2MpOw0KK2ludCBtdGtfZGV2YXBjX3JlbW92ZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpkZXYpOw0KKw0KKyNlbmRpZiAvKiBfX0RFVkFQQ19NVEtfTVVMVElfQU9fSF9f ICovDQotLSANCjEuNy45LjUNCg==