Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp2209770rwr; Sat, 6 May 2023 06:50:04 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7DWjnI8mPktEYmaf5cP/6beujuqBsoZNED0LtXTN2RjWfmSYb0d65Ne3z47gUKe1ufflqE X-Received: by 2002:a17:902:f682:b0:1a0:7156:f8d1 with SMTP id l2-20020a170902f68200b001a07156f8d1mr5426594plg.19.1683381003556; Sat, 06 May 2023 06:50:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1683381003; cv=pass; d=google.com; s=arc-20160816; b=pSArpm/KMxxqXGjDW7AKrp/OP47x8uo+ujakEm4PiVO9DAzJw+yPykb0z3HF2SCGfT NczFCyTFZJ9CiP+IP0eDb5WHACGL4bphRy+aunvkTQR4bhigFG7jn5I+5VYSHAzToQS7 JI1ntJHjmR5R0cSE3v7r6YMXjfR38nxpQFozG1CPeq3TZrtwMCtFduBGi19jUFjmrXY+ iVSFmaX+OE7PYIIRo0xCXqX0pu2uehMp34FSli70F0q/hIlsTLjZQlzvWYVeNUZv3lyD AlGFNDmGOvKJNBIj6XOgEqSJtnNl0mM/24utcA6KAor2UqISeEvtKteEvE5ktTflYeuJ 1CMQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:in-reply-to:from:references:to :subject:cc:user-agent:date:message-id:dkim-signature; bh=FpXVK1Yq4cwUWkdarPFiOHGudO/5KoFdLyphPvvT69M=; b=lpv0H3Ng0o35A4Z4+0oOpBhNqiOp8XWPsQBE+0UidOtPZKOJJ/itgMMxl5nOrGVEB1 vmhL3X/4v2rVrcP7IbP3Pu65n8qXnRS+BL+LqegD5AcEkVrN0aV22wQYS53km6go5t4Z 6L071Z+c9s9vNOBoXmHpp/bFkF4AMXzCMxNZxzsN0+cjFQ7hdakZTsTPuuD7B5xmnhBs PzTRfmAJvaPmvI7pWRj2Bn3lW1i9D5B3MFco1i2vx8jQQ8+IAOfN15+520g1J+iTz0kN 7Y6t/dfrvK92Zgzj1hhMzCglLBWcUe5vkT2SpcilgBscg3PnOVm1pwELkMTCnqNrHmJ6 XwZA== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b=BvmhoLDF; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n2-20020a1709026a8200b001a2445dd0fasi3736028plk.381.2023.05.06.06.49.43; Sat, 06 May 2023 06:50:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@outlook.com header.s=selector1 header.b=BvmhoLDF; arc=pass (i=1); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232243AbjEFNs1 (ORCPT + 99 others); Sat, 6 May 2023 09:48:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56492 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231892AbjEFNsY (ORCPT ); Sat, 6 May 2023 09:48:24 -0400 Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01olkn2016.outbound.protection.outlook.com [40.92.98.16]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73B6C27383; Sat, 6 May 2023 06:48:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ejSk55v6pyxxpNzohjFubwJI3lpFNBiun9BqmosoeMSascqIHcszAH0/svpi2qrj247BFmz8D6o4mLpFe7ZKz7HgeJKJuzkEAK/f3pb3sNtTk5jW5xuxwU0GodtL/ALNfn+pXTEmGxe5X3Gni/5AkISjrBOnDE4GMXUldoE/UWeH2U2h7hPMaoUZ466YEld4KAz8e72/dAFWhrhZSwu+K5hkHpDTLUm1jMt3XJb8o6CXt3y29hhBYgKSPOjDVlrGp7knkVQCTKfCYQGhT4NPyxxMWIU1uXU9le+aaGVSKKeE4e/8ZhT4i6bvcENm4Xuv3fEXEPeLstX2EQgKDV5dng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FpXVK1Yq4cwUWkdarPFiOHGudO/5KoFdLyphPvvT69M=; b=l1KxlRSYEKSMIcNyv7DyISSqwg1vtbI4P7ZLCDchFZw94Bv51DRcR1Nh7QgqL0FEd8otMBC5qZXl/ow8QodpVEXEP+VhuiV3GjyRp6af0H3a6kKwF6N8L7B1F2i2O4LOoByDOYNsw7MhF55BP9umKnxhnpSQPu3aCyXEb4nXrGImrFJBK238kWT/xZJoAiu6KpUO+7IIc9648kCoijnrvC5vL/nu2BNe2ljuYL1KMWRgm/I4HpEotT3coy1ClM+wIpDEKoK+GE7udEH5hrMSwwK9Th+2MaJHEYdLnaQsJxSI40LfgW50+i2ulUfe8ZNwq8OJyZeOWSrJxifurr9M9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FpXVK1Yq4cwUWkdarPFiOHGudO/5KoFdLyphPvvT69M=; b=BvmhoLDF8G6p+zT9gwGeQA566hqq1H+5XdmpXt0Hqy4FlIA+nrdbvaEi4YqnmOzTn84wnTVcX2j0+PjfWifuzgR8FPwENl8UIGaYPYvwN8mLBiGn4HzNrfahJuaYkIvbX6Ll2vbGN8X2MWFY8m7m5r5TpLQjsHpRCDA4nrnghW81QkN1lgkKzJ2U14Elhkqw1h97970QwjuGhFJkKLF1IMU4wBLT0xlPp6g/HjNoY3FlazpAQ49gC7+PLwCL/OsyYRSjRyoFkYNvFJzMVTGgqIFYB7EkS0A2Q7lSOXfgGx9yemhqZ+wbM51wnyPLAi0LOpWdjL2VX80+uZCUsHyVXw== Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:252::12) by OS3P286MB1663.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:160::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.29; Sat, 6 May 2023 13:48:16 +0000 Received: from TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM ([fe80::5805:16d6:6ab7:6639]) by TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM ([fe80::5805:16d6:6ab7:6639%2]) with mapi id 15.20.6363.029; Sat, 6 May 2023 13:48:16 +0000 Message-ID: Date: Sat, 6 May 2023 21:47:55 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.10.1 Cc: wiagn233@outlook.com, alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Subject: Re: [PATCH v3 2/3] ASoC: starfive: Add JH7110 TDM driver To: Walker Chen , Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing References: <20230506090116.9206-1-walker.chen@starfivetech.com> <20230506090116.9206-3-walker.chen@starfivetech.com> From: Shengyu Qu In-Reply-To: <20230506090116.9206-3-walker.chen@starfivetech.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------fyuHLQM20M2CGNfB03W36Pz0" X-TMN: [Bc+WUCseV7v0VlXDBkgE/m3WKRpr6V3B] X-ClientProxiedBy: TYCP286CA0233.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c7::19) To TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:252::12) X-Microsoft-Original-Message-ID: <5552c5c7-5912-8595-e5d3-9ed895f23336@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY3P286MB2611:EE_|OS3P286MB1663:EE_ X-MS-Office365-Filtering-Correlation-Id: 68560fd3-81f7-4f29-2874-08db4e388abe X-MS-Exchange-SLBlob-MailProps: dx7TrgQSB6dyQk8NjdEKM5kIQ3nurzkspNh6BcFVcWiZNV6Wde4v9bK1PpCrPIBHxLlofFvqpYaSJgvL3PzcGvHHkZmIWJjK7WTx36Dk6tSX2Wzpd6fLmMry5X2Q16kEYZHBR5/xp14+sbptXTV81buCtHL6dn51CeTaXNwqu5sw2RUlMPnFfH93/IH3z2gb5/wqkCar0eKDA5U8syu+YQ9PlBrmyZNAJd0mZtKMZhKkUQKxd1/OwNH5eRL0zoo4Vbgcf7emCy1vCeu2Ui/XozGS7DUdGKG5gnah5TvRMGA5R3UBMaXzYr/melZOZaCBOjHyEcHHW4geA75y3EtUSqduHiu/MwbeUy2R9ZIWJVY9cQNbNKwGbya48SYPo3ujs1GXeAYe+fONHfp4pUApX8TxyamgiFTT7A3mmkxJNdurFTi/sIyh6bLZ4LK/r497sTAO6/XxSJaV5hpd4iib/N2BNAFxroeSiJq+OVp1fuzN0uzS6g0PFhHNTb44+/ITequ8cCsG/bMlvwM9lRg81DYVovIaX4DYFRYcYN6Q1J/s/EhfjvsOfv3wXfXlO9Af3NZKGdzCcGT5c/TAfjXF/ypNTQfCKO6fqCKr39hVqVxf9q/aJdTFff5jAtoEVWRL1Gpp3R+U7v4mj9NT8Rd0xaqBOG7J2TS4N66KP02AcHT7I0hA5PEDJm49aJfyT9ZQxbYLx+K9AAvcth1SoukN3T73byzxv1W353MOSB0ERpfKrToeXo4m9usQsaXPdrH5sV6hbu0dQS4= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TPEZ/g2xQj9aSsfmWW1ru1OtaFq7hcQl2t4XxUscJubnpBBmAGM2QzDs3baGgYizIf9Gia0wZUTxPxzGMqBcpQsUfrcJAqDVKwtBQJ3CL2oo/JA69bqQtTPVwSG8lJGL10Dp5Xw4mktATKorFOOkAGyVEJN+rImH1UA0WCWTGemAI5lXbcjqcRQuQjQ/MJViqO0jWwWAHDsYyqk+IDAW9fTwGohS98FJrqPKf1ECZHwUsY6Vd60+g3VS7+OQVfBq9t8MF2f5sPRKrNGozfU4G6JBwgGMeEByEEnDppEOnnjsEi/iQ1TB3AjblMU60I5IPMMIYzCb04AUZ/+Sp10vMiRsufEKFWLG73ynM9Vo6zE4RDxzCWmbCByqNFUWnlCs6NtkpZ5jNONOsv6WCy9M5C3SdsvHhc/StjrnV0YtSEi4lVTyD/mK9loVuZE+hhlLYWCiDkV17SqqrsZnli2TDTSANR0Hp2Lw+7pdMZiPFdDOvd3WSpad+RAtWvQyNvaFRTtRD0OvY9PCW6NT+tLrnY3C7FVchCJlywdg+kyspJgirfXoDtfdbf5GVnKB7iGIsIKhu9SMaMHPFDm+7jAgKHWBRo2e1+gYgu2/d93xwYrsePua/R2I0dLvVoanaUR6t0EwnlYHuRr8OBDiU72u9A== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?c3drS25aQS9XRS9HcHZlZDY2bnNQK2JHVWVBR3gvZHVwTzFUdFdmLzdGc21v?= =?utf-8?B?VmhXR1l4ZCsyV0E4K3ZaT0N6TW5zTi82czB4Q3pKV3IrNEYrVDErSlFYQWV4?= =?utf-8?B?R3pPT0xvZkQrZGsyVE00QUtOU1VHdGhybGV1RjM3akNlajVMeHlsM0hoaTIw?= =?utf-8?B?YXpBengzeU5HZ2Zwc2ZQcXRLdkJmaXJ4bUdrT2tGMmUybGczaDd6ZjdZb0di?= =?utf-8?B?NlN1WmYvcmVTS0Z4Vm9jS0VLelhycmwzendDSU1kQm9SL1pZSk12aUdtbkU2?= =?utf-8?B?bVBEcmlKMTRVSS9QeWJlRFh3M3pYankrT0FHRk8rMFAxbXFkMUovdHg1Q2l1?= =?utf-8?B?ek9sRjRGOXdmWjZnUkpSajQ4aWlhb0poa3dGeHJUS1NBYU9wOWdkT0xNeXJ4?= =?utf-8?B?NHFrbHM0ZjRCbmYxdTdmTDZ1UjBpK01UaEJjaDlrOWtyRjdQeWJxV2p4YzV5?= =?utf-8?B?Vkk5ZnZJSC93d2NvWGRKblljR0EyZXdMendCdFBRTW1abEl6NWJSM1N3THJ3?= =?utf-8?B?L2Z4a3RadHR0L09pSEt2WVZuRkNFWUpicGtaaUt0Sjl5Nzhib0Z5aDZkWUJJ?= =?utf-8?B?MTN3cCtxOWlGa085NkpscTVmdVlQN0toZjg5RkRlR1pWcUg1TlhMUXhETm1j?= =?utf-8?B?OFZzdmVEemU5a3YrbzRSbHArS3JId1dFOUo1dDVMUUJERmkrdG0yMVptRUd6?= =?utf-8?B?VEpuQTFLZndwMXVEcURNWDYxOElIYjZRU1IxUkltLzc2eWYwSDd1b2g0d0tB?= =?utf-8?B?clJrcXd2NTh6WFIxdDhNRENTV0lkWEpLMW1vYUJLYmtCdFVzMTRVVlFSREVv?= =?utf-8?B?SW16RzhLS1Y3UXVreXB2T0tITFFROHBUQjRqeHpwN092MGdvVkI4TW84WUhy?= =?utf-8?B?d3A3VGVTaS92dm53Wlp6SUZiSzFTVlA2czd3aUR5WENYUW9WenNuK21vcVpm?= =?utf-8?B?QXlSdXRBWXJMdUpHa1gxeEtKTDJ5RENyMDFYaUZxL2lxbXZGeUFJUTBXMzYr?= =?utf-8?B?ejQ1YTd6NFZHMGZoeE03YjRzRjg4YW5xUjZ2RyszdWNzQzgrRjZPeUpuSkda?= =?utf-8?B?U2VBNmV4aEZzeWk1ZXBEWURNR2xLK2xkcktqc2RxVHRyUEp2SEpHSitIZm95?= =?utf-8?B?aWVaYVl5S1ZKSDQzTlJ5U3dSQnU3dWlCWkdlVktMNHpRTmpxQnk3N1V1Tlgr?= =?utf-8?B?bEdobkV6OGEzdkllWlcxR2wrVm9JZWVqRDRKQXI1NFg5bW9UYkVzdEpHNXBD?= =?utf-8?B?VURRYkhwSXFINlEzWWNocHZHU21rS285QmtCY1BEamxTRmRGSmxCWXliR3VK?= =?utf-8?B?ckRJNnZkWG5yU0lqeUJOZHJCNThqOXdRUXAzTE9EVEVVcm8wZnFRWURtMmdv?= =?utf-8?B?dk5FRmtOdkdwZVBCOExGVlRQbm9YRXprZWt0RDZVRzhzTnBhTGswSUtaMm5t?= =?utf-8?B?UUlqZWhBL3l1TlpUcVA3aEFKckF6WmhGYlVIYURXZXUyenBiek93SGU2MHNU?= =?utf-8?B?enBrZXhKTHYzc3k3Z1duOVZ0QzBRWXlzUG1YUlg4RWh3MDAzeHNWNDBJSWpW?= =?utf-8?B?QWVxZE5vUE5zZzhlUDJCTGZYT0lBU3dzR2JFV1o3SWtuSTZocHArYU1IUm1R?= =?utf-8?B?NU9RS00yQ1VrSjNpK3hpOUlYaVZCUXc9PQ==?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68560fd3-81f7-4f29-2874-08db4e388abe X-MS-Exchange-CrossTenant-AuthSource: TY3P286MB2611.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2023 13:48:16.1454 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3P286MB1663 X-Spam-Status: No, score=-3.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_MUA_MOZILLA, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --------------fyuHLQM20M2CGNfB03W36Pz0 Content-Type: multipart/mixed; boundary="------------BwlGlbRzy57vcbAQ1MJWzg5K"; protected-headers="v1" From: Shengyu Qu To: Walker Chen , Mark Brown , Liam Girdwood , Jaroslav Kysela , Takashi Iwai , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Emil Renner Berthing Cc: wiagn233@outlook.com, alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org Message-ID: <5552c5c7-5912-8595-e5d3-9ed895f23336@outlook.com> Subject: Re: [PATCH v3 2/3] ASoC: starfive: Add JH7110 TDM driver References: <20230506090116.9206-1-walker.chen@starfivetech.com> <20230506090116.9206-3-walker.chen@starfivetech.com> In-Reply-To: <20230506090116.9206-3-walker.chen@starfivetech.com> --------------BwlGlbRzy57vcbAQ1MJWzg5K Content-Type: multipart/mixed; boundary="------------00OX142jfUw8FZmI0UQh7Bd7" --------------00OX142jfUw8FZmI0UQh7Bd7 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGksDQoNCj4gQWRkIHRkbSBkcml2ZXIgc3VwcG9ydCBmb3IgdGhlIFN0YXJGaXZlIEpINzEx MCBTb0MuDQo+DQo+IFNpZ25lZC1vZmYtYnk6IFdhbGtlciBDaGVuIDx3YWxrZXIuY2hlbkBz dGFyZml2ZXRlY2guY29tPg0KPiAtLS0NCj4gICBNQUlOVEFJTkVSUyAgICAgICAgICAgICAg ICAgICAgIHwgICA2ICsNCj4gICBzb3VuZC9zb2MvS2NvbmZpZyAgICAgICAgICAgICAgIHwg ICAxICsNCj4gICBzb3VuZC9zb2MvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCj4g ICBzb3VuZC9zb2Mvc3RhcmZpdmUvS2NvbmZpZyAgICAgIHwgIDE1ICsNCj4gICBzb3VuZC9z b2Mvc3RhcmZpdmUvTWFrZWZpbGUgICAgIHwgICAyICsNCj4gICBzb3VuZC9zb2Mvc3RhcmZp dmUvamg3MTEwX3RkbS5jIHwgNTczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr DQo+ICAgc291bmQvc29jL3N0YXJmaXZlL2poNzExMF90ZG0uaCB8IDE0NyArKysrKysrKw0K PiAgIDcgZmlsZXMgY2hhbmdlZCwgNzQ1IGluc2VydGlvbnMoKykNCj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgc291bmQvc29jL3N0YXJmaXZlL0tjb25maWcNCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgc291bmQvc29jL3N0YXJmaXZlL01ha2VmaWxlDQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IHNvdW5kL3NvYy9zdGFyZml2ZS9qaDcxMTBfdGRtLmMNCj4gICBjcmVhdGUgbW9kZSAx MDA2NDQgc291bmQvc29jL3N0YXJmaXZlL2poNzExMF90ZG0uaA0KPg0KPiBkaWZmIC0tZ2l0 IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUw0KPiBpbmRleCA1ZjljNTQ0YmMxODkuLmFk ZDg5NjE1ZDMyNyAxMDA2NDQNCj4gLS0tIGEvTUFJTlRBSU5FUlMNCj4gKysrIGIvTUFJTlRB SU5FUlMNCj4gQEAgLTE5OTQ1LDYgKzE5OTQ1LDEyIEBAIEY6CURvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9wb3dlci9zdGFyZml2ZSoNCj4gICBGOglkcml2ZXJzL3NvYy9z dGFyZml2ZS9qaDcxeHhfcG11LmMNCj4gICBGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Bvd2Vy L3N0YXJmaXZlLGpoNzExMC1wbXUuaA0KPiAgIA0KPiArU1RBUkZJVkUgSkg3MTEwIFRETSBE UklWRVJTDQo+ICtNOglXYWxrZXIgQ2hlbiA8d2Fsa2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNv bT4NCj4gK1M6CU1haW50YWluZWQNCj4gK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9zb3VuZC9zdGFyZml2ZSxqaDcxMTAtdGRtLnlhbWwNCj4gK0Y6CXNvdW5kL3Nv Yy9zdGFyZml2ZS9qaDcxMTAtdGRtLioNCj4gKw0KPiAgIFNUQVJGSVZFIFNPQyBEUklWRVJT DQo+ICAgTToJQ29ub3IgRG9vbGV5IDxjb25vckBrZXJuZWwub3JnPg0KPiAgIFM6CU1haW50 YWluZWQNCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9LY29uZmlnIGIvc291bmQvc29jL0tj b25maWcNCj4gaW5kZXggODQ4ZmJhZTI2YzNiLi44ZDFkOTQwMWVjZjIgMTAwNjQ0DQo+IC0t LSBhL3NvdW5kL3NvYy9LY29uZmlnDQo+ICsrKyBiL3NvdW5kL3NvYy9LY29uZmlnDQo+IEBA IC05MSw2ICs5MSw3IEBAIHNvdXJjZSAic291bmQvc29jL3NoL0tjb25maWciDQo+ICAgc291 cmNlICJzb3VuZC9zb2Mvc29mL0tjb25maWciDQo+ICAgc291cmNlICJzb3VuZC9zb2Mvc3Bl YXIvS2NvbmZpZyINCj4gICBzb3VyY2UgInNvdW5kL3NvYy9zcHJkL0tjb25maWciDQo+ICtz b3VyY2UgInNvdW5kL3NvYy9zdGFyZml2ZS9LY29uZmlnIg0KPiAgIHNvdXJjZSAic291bmQv c29jL3N0aS9LY29uZmlnIg0KPiAgIHNvdXJjZSAic291bmQvc29jL3N0bS9LY29uZmlnIg0K PiAgIHNvdXJjZSAic291bmQvc29jL3N1bnhpL0tjb25maWciDQo+IGRpZmYgLS1naXQgYS9z b3VuZC9zb2MvTWFrZWZpbGUgYi9zb3VuZC9zb2MvTWFrZWZpbGUNCj4gaW5kZXggNTA3ZWFl ZDFkNmExLi42NWFlYjRlZjQwNjggMTAwNjQ0DQo+IC0tLSBhL3NvdW5kL3NvYy9NYWtlZmls ZQ0KPiArKysgYi9zb3VuZC9zb2MvTWFrZWZpbGUNCj4gQEAgLTU5LDYgKzU5LDcgQEAgb2Jq LSQoQ09ORklHX1NORF9TT0MpCSs9IHNoLw0KPiAgIG9iai0kKENPTkZJR19TTkRfU09DKQkr PSBzb2YvDQo+ICAgb2JqLSQoQ09ORklHX1NORF9TT0MpCSs9IHNwZWFyLw0KPiAgIG9iai0k KENPTkZJR19TTkRfU09DKQkrPSBzcHJkLw0KPiArb2JqLSQoQ09ORklHX1NORF9TT0MpCSs9 IHN0YXJmaXZlLw0KPiAgIG9iai0kKENPTkZJR19TTkRfU09DKQkrPSBzdGkvDQo+ICAgb2Jq LSQoQ09ORklHX1NORF9TT0MpCSs9IHN0bS8NCj4gICBvYmotJChDT05GSUdfU05EX1NPQykJ Kz0gc3VueGkvDQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc3RhcmZpdmUvS2NvbmZpZyBi L3NvdW5kL3NvYy9zdGFyZml2ZS9LY29uZmlnDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNzM3Yzk1NmY3YjkzDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvc291bmQvc29jL3N0YXJmaXZlL0tjb25maWcNCj4gQEAgLTAsMCArMSwxNSBAQA0K PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ICtjb25maWcg U05EX1NPQ19TVEFSRklWRQ0KPiArCXRyaXN0YXRlICJBdWRpbyBzdXBwb3J0IGZvciBTdGFy Rml2ZSBTb0MiDQo+ICsJZGVwZW5kcyBvbiBDT01QSUxFX1RFU1QgfHwgU09DX1NUQVJGSVZF DQo+ICsJaGVscA0KPiArCSAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9y dCBmb3IgY29kZWNzIGF0dGFjaGVkIHRvDQo+ICsJICB0aGUgU3RhcmZpdmUgU29DcycgQXVk aW8gaW50ZXJmYWNlcy4gWW91IHdpbGwgYWxzbyBuZWVkIHRvDQo+ICsJICBzZWxlY3QgdGhl IGF1ZGlvIGludGVyZmFjZXMgdG8gc3VwcG9ydCBiZWxvdy4NCj4gKw0KPiArY29uZmlnIFNO RF9TT0NfSkg3MTEwX1RETQ0KPiArCXRyaXN0YXRlICJKSDcxMTAgVERNIGRldmljZSBkcml2 ZXIiDQo+ICsJZGVwZW5kcyBvbiBIQVZFX0NMSyAmJiBTTkRfU09DX1NUQVJGSVZFDQo+ICsJ c2VsZWN0IFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNDQo+ICsJaGVscA0KPiArCSAg U2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgU3RhckZpdmUgVERN IGRyaXZlci4NCj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9zdGFyZml2ZS9NYWtlZmlsZSBi L3NvdW5kL3NvYy9zdGFyZml2ZS9NYWtlZmlsZQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwMDAuLmY3ZDk2MDIxMWQ3Mg0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL3NvdW5kL3NvYy9zdGFyZml2ZS9NYWtlZmlsZQ0KPiBAQCAtMCwwICsxLDIgQEAN Cj4gKyMgU3RhckZpdmUgUGxhdGZvcm0gU3VwcG9ydA0KPiArb2JqLSQoQ09ORklHX1NORF9T T0NfSkg3MTEwX1RETSkgKz0gamg3MTEwX3RkbS5vDQo+IGRpZmYgLS1naXQgYS9zb3VuZC9z b2Mvc3RhcmZpdmUvamg3MTEwX3RkbS5jIGIvc291bmQvc29jL3N0YXJmaXZlL2poNzExMF90 ZG0uYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjMz ZjdjZjQzZTRiZA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL3NvdW5kL3NvYy9zdGFyZml2 ZS9qaDcxMTBfdGRtLmMNCj4gQEAgLTAsMCArMSw1NzMgQEANCj4gKy8vIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0KPiArICogamg3MTEwX3RkbS5jIC0tIFN0 YXJGaXZlIEpINzExMCBURE0gZHJpdmVyDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAy MDIyLTIwMjMgU3RhckZpdmUgVGVjaG5vbG9neSBDby4sIEx0ZC4NCj4gKyAqDQo+ICsgKiBB dXRob3I6IFdhbGtlciBDaGVuIDx3YWxrZXIuY2hlbkBzdGFyZml2ZXRlY2guY29tPg0KPiAr ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRl IDxsaW51eC9vZl9pcnEuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPg0KPiArI2luY2x1ZGUgPHNv dW5kL2luaXR2YWwuaD4NCj4gKyNpbmNsdWRlIDxzb3VuZC9wY21fcGFyYW1zLmg+DQo+ICsj aW5jbHVkZSA8c291bmQvc29jLmg+DQo+ICsjaW5jbHVkZSA8c291bmQvc29jLWRhaS5oPg0K PiArI2luY2x1ZGUgImpoNzExMF90ZG0uaCINCj4gKw0KPiArc3RhdGljIGlubGluZSB1MzIg amg3MTEwX3RkbV9yZWFkbChzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSwgdTE2IHJlZykN Cj4gK3sNCj4gKwlyZXR1cm4gcmVhZGxfcmVsYXhlZCh0ZG0tPnRkbV9iYXNlICsgcmVnKTsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGlubGluZSB2b2lkIGpoNzExMF90ZG1fd3JpdGVsKHN0 cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtLCB1MTYgcmVnLCB1MzIgdmFsKQ0KPiArew0KPiAr CXdyaXRlbF9yZWxheGVkKHZhbCwgdGRtLT50ZG1fYmFzZSArIHJlZyk7DQo+ICt9DQo+ICsN Cj4gK3N0YXRpYyB2b2lkIGpoNzExMF90ZG1fc2F2ZV9jb250ZXh0KHN0cnVjdCBqaDcxMTBf dGRtX2RldiAqdGRtLA0KPiArCQkJCSAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1 YnN0cmVhbSkNCj4gK3sNCj4gKwlpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENN X1NUUkVBTV9QTEFZQkFDSykNCj4gKwkJdGRtLT5zYXZlZF9wY210eGNyID0gamg3MTEwX3Rk bV9yZWFkbCh0ZG0sIFRETV9QQ01UWENSKTsNCj4gKwllbHNlDQo+ICsJCXRkbS0+c2F2ZWRf cGNtcnhjciA9IGpoNzExMF90ZG1fcmVhZGwodGRtLCBURE1fUENNUlhDUik7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIGpoNzExMF90ZG1fc3RhcnQoc3RydWN0IGpoNzExMF90ZG1f ZGV2ICp0ZG0sDQo+ICsJCQkgICAgIHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtKQ0KPiArew0KPiArCXUzMiBkYXRhOw0KPiArDQo+ICsJZGF0YSA9IGpoNzExMF90ZG1f cmVhZGwodGRtLCBURE1fUENNR0JDUik7DQo+ICsJamg3MTEwX3RkbV93cml0ZWwodGRtLCBU RE1fUENNR0JDUiwgZGF0YSB8IFBDTUdCQ1JfRU5BQkxFKTsNCj4gKw0KPiArCS8qIHJlc3Rv cmUgY29udGV4dCAqLw0KPiArCWlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9QQ01f U1RSRUFNX1BMQVlCQUNLKQ0KPiArCQlqaDcxMTBfdGRtX3dyaXRlbCh0ZG0sIFRETV9QQ01U WENSLCB0ZG0tPnNhdmVkX3BjbXR4Y3IgfCBQQ01UWENSX1RYRU4pOw0KPiArCWVsc2UNCj4g KwkJamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1fUENNUlhDUiwgdGRtLT5zYXZlZF9wY21y eGNyIHwgUENNUlhDUl9SWEVOKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgamg3MTEw X3RkbV9zdG9wKHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtLA0KPiArCQkJICAgIHN0cnVj dCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtKQ0KPiArew0KPiArCXVuc2lnbmVkIGlu dCB2YWw7DQo+ICsNCj4gKwlpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NU UkVBTV9QTEFZQkFDSykgew0KPiArCQl2YWwgPSBqaDcxMTBfdGRtX3JlYWRsKHRkbSwgVERN X1BDTVRYQ1IpOw0KPiArCQl2YWwgJj0gflBDTVRYQ1JfVFhFTjsNCj4gKwkJamg3MTEwX3Rk bV93cml0ZWwodGRtLCBURE1fUENNVFhDUiwgdmFsKTsNCj4gKwl9IGVsc2Ugew0KPiArCQl2 YWwgPSBqaDcxMTBfdGRtX3JlYWRsKHRkbSwgVERNX1BDTVJYQ1IpOw0KPiArCQl2YWwgJj0g flBDTVJYQ1JfUlhFTjsNCj4gKwkJamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1fUENNUlhD UiwgdmFsKTsNCj4gKwl9DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3RkbV9z eW5jZGl2KHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtKQ0KPiArew0KPiArCXUzMiBzbCwg c3NjYWxlLCBzeW5jZGl2Ow0KPiArDQo+ICsJaWYgKHRkbS0+cnguc2wgPj0gdGRtLT50eC5z bCkNCj4gKwkJc2wgPSB0ZG0tPnJ4LnNsOw0KPiArCWVsc2UNCj4gKwkJc2wgPSB0ZG0tPnR4 LnNsOw0KPiArDQo+ICsJaWYgKHRkbS0+cnguc3NjYWxlID49IHRkbS0+dHguc3NjYWxlKQ0K PiArCQlzc2NhbGUgPSB0ZG0tPnJ4LnNzY2FsZTsNCj4gKwllbHNlDQo+ICsJCXNzY2FsZSA9 IHRkbS0+dHguc3NjYWxlOw0KPiArDQo+ICsJc3luY2RpdiA9IHRkbS0+cGNtY2xrIC8gdGRt LT5zYW1wbGVyYXRlIC0gMTsNCj4gKw0KPiArCWlmICgoc3luY2RpdiArIDEpIDwgKHNsICog c3NjYWxlKSkgew0KPiArCQlkZXZfZXJyKHRkbS0+ZGV2LCAiRmFpbGVkIHRvIHNldCBzeW5j ZGl2IVxuIik7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0KPiArCWlmICh0 ZG0tPnN5bmNtID09IFRETV9TWU5DTV9MT05HICYmDQo+ICsJICAgICh0ZG0tPnJ4LnNzY2Fs ZSA8PSAxIHx8IHRkbS0+dHguc3NjYWxlIDw9IDEpKSB7DQo+ICsJCWlmICgoc3luY2RpdiAr IDEpIDw9IHNsKSB7DQo+ICsJCQlkZXZfZXJyKHRkbS0+ZGV2LCAiV3Jvbmcgc3luY2RpdiEg SXQgbXVzdCBiZSAoc3luY2RpdisxKSA+IG1heFt0eC5zbCwgcnguc2xdXG4iKTsNCj4gKwkJ CXJldHVybiAtRUlOVkFMOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJamg3MTEwX3RkbV93 cml0ZWwodGRtLCBURE1fUENNRElWLCBzeW5jZGl2KTsNCj4gKwlyZXR1cm4gMDsNCj4gK30N Cj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBfdGRtX2NvbmZpZyhzdHJ1Y3Qgamg3MTEwX3Rk bV9kZXYgKnRkbSwNCj4gKwkJCSAgICAgc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJz dHJlYW0pDQo+ICt7DQo+ICsJdTMyIGRhdGFyeCwgZGF0YXR4Ow0KPiArCWludCByZXQ7DQo+ ICsNCj4gKwlyZXQgPSBqaDcxMTBfdGRtX3N5bmNkaXYodGRtKTsNCj4gKwlpZiAocmV0KQ0K PiArCQlyZXR1cm4gcmV0Ow0KPiArDQo+ICsJZGF0YXJ4ID0gKHRkbS0+cnguaWZsIDw8IElG TF9CSVQpIHwNCj4gKwkJICAodGRtLT5yeC53bCA8PCBXTF9CSVQpIHwNCj4gKwkJICAodGRt LT5yeC5zc2NhbGUgPDwgU1NDQUxFX0JJVCkgfA0KPiArCQkgICh0ZG0tPnJ4LnNsIDw8IFNM X0JJVCkgfA0KPiArCQkgICh0ZG0tPnJ4LmxyaiA8PCBMUkpfQklUKTsNCj4gKw0KPiArCWRh dGF0eCA9ICh0ZG0tPnR4LmlmbCA8PCBJRkxfQklUKSB8DQo+ICsJCSAgKHRkbS0+dHgud2wg PDwgV0xfQklUKSB8DQo+ICsJCSAgKHRkbS0+dHguc3NjYWxlIDw8IFNTQ0FMRV9CSVQpIHwN Cj4gKwkJICAodGRtLT50eC5zbCA8PCBTTF9CSVQpIHwNCj4gKwkJICAodGRtLT50eC5scmog PDwgTFJKX0JJVCk7DQo+ICsNCj4gKwlpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZf UENNX1NUUkVBTV9QTEFZQkFDSykNCj4gKwkJamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1f UENNVFhDUiwgZGF0YXR4KTsNCj4gKwllbHNlDQo+ICsJCWpoNzExMF90ZG1fd3JpdGVsKHRk bSwgVERNX1BDTVJYQ1IsIGRhdGFyeCk7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHZvaWQgamg3MTEwX3RkbV9jbGtfZGlzYWJsZShzdHJ1Y3Qgamg3MTEw X3RkbV9kZXYgKnRkbSkNCj4gK3sNCj4gKwlpbnQgaTsNCj4gKw0KPiArCWZvciAoaSA9IHRk bS0+bnVtX2Nsa3MgLSAxOyBpID49IDA7IGktLSkNCj4gKwkJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKHRkbS0+Y2xrc1tpXSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3Rk bV9jbGtfZW5hYmxlKHN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtKQ0KPiArew0KPiArCWlu dCBpLCByZXQ7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwgdGRtLT5udW1fY2xrczsgaSsr KSB7DQo+ICsJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSh0ZG0tPmNsa3NbaV0pOw0KPiAr CQlpZiAocmV0KSB7DQo+ICsJCQl3aGlsZSAoaS0tID4gMCkNCj4gKwkJCQljbGtfZGlzYWJs ZV91bnByZXBhcmUodGRtLT5jbGtzW2ldKTsNCj4gKwkJCXJldHVybiByZXQ7DQo+ICsJCX0N Cj4gKwl9DQo+ICsNCj4gKwlyZXQgPSByZXNldF9jb250cm9sX2RlYXNzZXJ0KHRkbS0+cmVz ZXRzKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRldl9lcnIodGRtLT5kZXYsICJGYWlsZWQg dG8gZGVhc3NlcnQgdGRtIHJlc2V0c1xuIik7DQo+ICsJCWdvdG8gZGlzX3RkbV9jbGs7DQo+ ICsJfQ0KPiArDQo+ICsJLyogc2VsZWN0IHRkbV9leHQgY2xvY2sgYXMgdGhlIGNsb2NrIHNv dXJjZSBmb3IgdGRtICovDQo+ICsJcmV0ID0gY2xrX3NldF9wYXJlbnQodGRtLT5jbGtzWzVd LCB0ZG0tPmNsa3NbNF0pOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2Vycih0ZG0tPmRl diwgIkNhbid0IHNldCBjbG9jayBzb3VyY2UgZm9yIGNsa190ZG06ICVkXG4iLCByZXQpOw0K PiArCQlnb3RvIGRpc190ZG1fY2xrOw0KPiArCX0NCj4gKwlyZXR1cm4gMDsNCj4gKw0KPiAr ZGlzX3RkbV9jbGs6DQo+ICsJZm9yIChpID0gdGRtLT5udW1fY2xrcyAtIDE7IGkgPj0gMDsg aS0tKQ0KPiArCQljbGtfZGlzYWJsZV91bnByZXBhcmUodGRtLT5jbGtzW2ldKTsNCj4gKw0K PiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gKyNpZmRlZiBDT05GSUdfUE0NCj4gK3N0 YXRpYyBpbnQgamg3MTEwX3RkbV9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2 KQ0KPiArew0KPiArCXN0cnVjdCBqaDcxMTBfdGRtX2RldiAqdGRtID0gZGV2X2dldF9kcnZk YXRhKGRldik7DQo+ICsNCj4gKwlqaDcxMTBfdGRtX2Nsa19kaXNhYmxlKHRkbSk7DQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3RkbV9ydW50aW1l X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsJc3RydWN0IGpoNzExMF90 ZG1fZGV2ICp0ZG0gPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gKw0KPiArCXJldHVybiBq aDcxMTBfdGRtX2Nsa19lbmFibGUodGRtKTsNCj4gK30NCj4gKyNlbmRpZg0KPiArDQo+ICsj aWZkZWYgQ09ORklHX1BNX1NMRUVQDQo+ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fc3VzcGVu ZChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCkNCj4gK3sNCj4gKwkvKiBz YXZlIGNvbnRleHQgKi8NCj4gKwl0ZG0tPnNhdmVkX3BjbWdiY3IgPSBqaDcxMTBfdGRtX3Jl YWRsKHRkbSwgVERNX1BDTUdCQ1IpOw0KPiArCXRkbS0+c2F2ZWRfcGNtZGl2ID0gamg3MTEw X3RkbV9yZWFkbCh0ZG0sIFRETV9QQ01ESVYpOw0KDQp0ZG0gaXNuJ3QgZGVjbGFyZWQgaGVy ZS4gSXMgdGhhdCBzYW1lIHdpdGggcmVzdW1lIGZ1bmN0aW9uPw0KDQpCZXN0IHJlZ2FyZHMs DQoNClNoZW5neXUNCg0KPiArDQo+ICsJcmV0dXJuIHBtX3J1bnRpbWVfZm9yY2Vfc3VzcGVu ZChjb21wb25lbnQtPmRldik7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3Rk bV9yZXN1bWUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpDQo+ICt7DQo+ ICsJc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0gPSBzbmRfc29jX2NvbXBvbmVudF9nZXRf ZHJ2ZGF0YShjb21wb25lbnQpOw0KPiArDQo+ICsJLyogcmVzdG9yZSBjb250ZXh0ICovDQo+ ICsJamg3MTEwX3RkbV93cml0ZWwodGRtLCBURE1fUENNR0JDUiwgdGRtLT5zYXZlZF9wY21n YmNyKTsNCj4gKwlqaDcxMTBfdGRtX3dyaXRlbCh0ZG0sIFRETV9QQ01ESVYsIHRkbS0+c2F2 ZWRfcGNtZGl2KTsNCj4gKw0KPiArCXJldHVybiBwbV9ydW50aW1lX2ZvcmNlX3Jlc3VtZShj b21wb25lbnQtPmRldik7DQo+ICt9DQo+ICsNCj4gKyNlbHNlDQo+ICsjZGVmaW5lIGpoNzEx MF90ZG1fc3VzcGVuZAlOVUxMDQo+ICsjZGVmaW5lIGpoNzExMF90ZG1fcmVzdW1lCU5VTEwN Cj4gKyNlbmRpZg0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9u ZW50X2RyaXZlciBqaDcxMTBfdGRtX2NvbXBvbmVudCA9IHsNCj4gKwkubmFtZSA9ICJqaDcx MTAtdGRtIiwNCj4gKwkuc3VzcGVuZCA9IGpoNzExMF90ZG1fc3VzcGVuZCwNCj4gKwkucmVz dW1lCT0gamg3MTEwX3RkbV9yZXN1bWUsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgaW50IGpo NzExMF90ZG1fc3RhcnR1cChzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwN Cj4gKwkJCSAgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqY3B1X2RhaSkNCj4gK3sNCj4gKwlz dHJ1Y3Qgc25kX3NvY19wY21fcnVudGltZSAqcnRkID0gYXNvY19zdWJzdHJlYW1fdG9fcnRk KHN1YnN0cmVhbSk7DQo+ICsJc3RydWN0IHNuZF9zb2NfZGFpX2xpbmsgKmRhaV9saW5rID0g cnRkLT5kYWlfbGluazsNCj4gKw0KPiArCWRhaV9saW5rLT5zdG9wX2RtYV9maXJzdCA9IDE7 DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBqaDcxMTBf dGRtX2h3X3BhcmFtcyhzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCj4g KwkJCQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywNCj4gKwkJCQlzdHJ1Y3Qg c25kX3NvY19kYWkgKmRhaSkNCj4gK3sNCj4gKwlzdHJ1Y3Qgamg3MTEwX3RkbV9kZXYgKnRk bSA9IHNuZF9zb2NfZGFpX2dldF9kcnZkYXRhKGRhaSk7DQo+ICsJaW50IGNoYW5fd2wsIGNo YW5fc2wsIGNoYW5fbnI7DQo+ICsJdW5zaWduZWQgaW50IGRhdGFfd2lkdGg7DQo+ICsJdW5z aWduZWQgaW50IGRtYV9idXNfd2lkdGg7DQo+ICsJc3RydWN0IHNuZF9kbWFlbmdpbmVfZGFp X2RtYV9kYXRhICpkbWFfZGF0YSA9IE5VTEw7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsNCj4g KwlkYXRhX3dpZHRoID0gcGFyYW1zX3dpZHRoKHBhcmFtcyk7DQo+ICsNCj4gKwl0ZG0tPnNh bXBsZXJhdGUgPSBwYXJhbXNfcmF0ZShwYXJhbXMpOw0KPiArCXRkbS0+cGNtY2xrID0gcGFy YW1zX2NoYW5uZWxzKHBhcmFtcykgKiB0ZG0tPnNhbXBsZXJhdGUgKiBkYXRhX3dpZHRoOw0K PiArDQo+ICsJc3dpdGNoIChwYXJhbXNfZm9ybWF0KHBhcmFtcykpIHsNCj4gKwljYXNlIFNO RFJWX1BDTV9GT1JNQVRfUzE2X0xFOg0KPiArCQljaGFuX3dsID0gVERNXzE2QklUX1dPUkRf TEVOOw0KPiArCQljaGFuX3NsID0gVERNXzE2QklUX1NMT1RfTEVOOw0KPiArCQlkbWFfYnVz X3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzJfQllURVM7DQo+ICsJCWJyZWFrOw0KPiAr DQo+ICsJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRToNCj4gKwkJY2hhbl93bCA9IFRE TV8zMkJJVF9XT1JEX0xFTjsNCj4gKwkJY2hhbl9zbCA9IFRETV8zMkJJVF9TTE9UX0xFTjsN Cj4gKwkJZG1hX2J1c193aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF80X0JZVEVTOw0KPiAr CQlicmVhazsNCj4gKw0KPiArCWRlZmF1bHQ6DQo+ICsJCWRldl9lcnIodGRtLT5kZXYsICJ0 ZG06IHVuc3VwcG9ydGVkIFBDTSBmbXQiKTsNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJ fQ0KPiArDQo+ICsJY2hhbl9uciA9IHBhcmFtc19jaGFubmVscyhwYXJhbXMpOw0KPiArCXN3 aXRjaCAoY2hhbl9ucikgew0KPiArCWNhc2UgMToNCj4gKwljYXNlIDI6DQo+ICsJY2FzZSA0 Og0KPiArCWNhc2UgNjoNCj4gKwljYXNlIDg6DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6 DQo+ICsJCWRldl9lcnIodGRtLT5kZXYsICJjaGFubmVsIG5vdCBzdXBwb3J0ZWRcbiIpOw0K PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4gKwlpZiAoc3Vic3RyZWFtLT5z dHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgew0KPiArCQl0ZG0tPnR4Lnds ID0gY2hhbl93bDsNCj4gKwkJdGRtLT50eC5zbCA9IGNoYW5fc2w7DQo+ICsJCXRkbS0+dHgu c3NjYWxlID0gY2hhbl9ucjsNCj4gKwkJdGRtLT5wbGF5X2RtYV9kYXRhLmFkZHJfd2lkdGgg PSBkbWFfYnVzX3dpZHRoOw0KPiArCQlkbWFfZGF0YSA9ICZ0ZG0tPnBsYXlfZG1hX2RhdGE7 DQo+ICsJfSBlbHNlIHsNCj4gKwkJdGRtLT5yeC53bCA9IGNoYW5fd2w7DQo+ICsJCXRkbS0+ cnguc2wgPSBjaGFuX3NsOw0KPiArCQl0ZG0tPnJ4LnNzY2FsZSA9IGNoYW5fbnI7DQo+ICsJ CXRkbS0+Y2FwdHVyZV9kbWFfZGF0YS5hZGRyX3dpZHRoID0gZG1hX2J1c193aWR0aDsNCj4g KwkJZG1hX2RhdGEgPSAmdGRtLT5jYXB0dXJlX2RtYV9kYXRhOw0KPiArCX0NCj4gKw0KPiAr CXNuZF9zb2NfZGFpX3NldF9kbWFfZGF0YShkYWksIHN1YnN0cmVhbSwgZG1hX2RhdGEpOw0K PiArDQo+ICsJcmV0ID0gamg3MTEwX3RkbV9jb25maWcodGRtLCBzdWJzdHJlYW0pOw0KPiAr CWlmIChyZXQpDQo+ICsJCXJldHVybiByZXQ7DQo+ICsNCj4gKwlqaDcxMTBfdGRtX3NhdmVf Y29udGV4dCh0ZG0sIHN1YnN0cmVhbSk7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgamg3MTEwX3RkbV90cmlnZ2VyKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVh bSAqc3Vic3RyZWFtLA0KPiArCQkJICAgICAgaW50IGNtZCwgc3RydWN0IHNuZF9zb2NfZGFp ICpkYWkpDQo+ICt7DQo+ICsJc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG0gPSBzbmRfc29j X2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0KPiArCWludCByZXQgPSAwOw0KPiArDQo+ICsJc3dp dGNoIChjbWQpIHsNCj4gKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUQVJUOg0KPiArCWNh c2UgU05EUlZfUENNX1RSSUdHRVJfUkVTVU1FOg0KPiArCWNhc2UgU05EUlZfUENNX1RSSUdH RVJfUEFVU0VfUkVMRUFTRToNCj4gKwkJamg3MTEwX3RkbV9zdGFydCh0ZG0sIHN1YnN0cmVh bSk7DQo+ICsJCWJyZWFrOw0KPiArDQo+ICsJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9TVE9Q Og0KPiArCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfU1VTUEVORDoNCj4gKwljYXNlIFNORFJW X1BDTV9UUklHR0VSX1BBVVNFX1BVU0g6DQo+ICsJCWpoNzExMF90ZG1fc3RvcCh0ZG0sIHN1 YnN0cmVhbSk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldCA9IC1FSU5W QUw7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fc2V0X2RhaV9mbXQoc3RydWN0IHNuZF9zb2NfZGFp ICpjcHVfZGFpLA0KPiArCQkJCSAgdW5zaWduZWQgaW50IGZtdCkNCj4gK3sNCj4gKwlzdHJ1 Y3Qgamg3MTEwX3RkbV9kZXYgKnRkbSA9IHNuZF9zb2NfZGFpX2dldF9kcnZkYXRhKGNwdV9k YWkpOw0KPiArCXVuc2lnbmVkIGludCBnYmNyOw0KPiArCWludCByZXQgPSAwOw0KPiArDQo+ ICsJLyogc2V0IG1hc3Rlci9zbGF2ZSBhdWRpbyBpbnRlcmZhY2UgKi8NCj4gKwlzd2l0Y2gg KGZtdCAmIFNORF9TT0NfREFJRk1UX0NMT0NLX1BST1ZJREVSX01BU0spIHsNCj4gKwljYXNl IFNORF9TT0NfREFJRk1UX0JQX0ZQOg0KPiArCQkvKiBjcHUgaXMgbWFzdGVyICovDQo+ICsJ CXRkbS0+bXNfbW9kZSA9IFRETV9BU19NQVNURVI7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug U05EX1NPQ19EQUlGTVRfQkNfRkM6DQo+ICsJCS8qIGNvZGVjIGlzIG1hc3RlciAqLw0KPiAr CQl0ZG0tPm1zX21vZGUgPSBURE1fQVNfU0xBVkU7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2Ug U05EX1NPQ19EQUlGTVRfQkNfRlA6DQo+ICsJY2FzZSBTTkRfU09DX0RBSUZNVF9CUF9GQzoN Cj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJ ZGV2X2RiZyh0ZG0tPmRldiwgImR3YyA6IEludmFsaWQgY2xvY2sgcHJvdmlkZXIgZm9ybWF0 XG4iKTsNCj4gKwkJcmV0ID0gLUVJTlZBTDsNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArDQo+ ICsJZ2JjciA9ICh0ZG0tPmNsa3BvbGl0eSA8PCBDTEtQT0xfQklUKSB8DQo+ICsJCSh0ZG0t PmVsbSA8PCBFTE1fQklUKSB8DQo+ICsJCSh0ZG0tPnN5bmNtIDw8IFNZTkNNX0JJVCkgfA0K PiArCQkodGRtLT5tc19tb2RlIDw8IE1TX0JJVCk7DQo+ICsJamg3MTEwX3RkbV93cml0ZWwo dGRtLCBURE1fUENNR0JDUiwgZ2Jjcik7DQo+ICsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFpX29wcyBqaDcxMTBfdGRt X2RhaV9vcHMgPSB7DQo+ICsJLnN0YXJ0dXAJPSBqaDcxMTBfdGRtX3N0YXJ0dXAsDQo+ICsJ Lmh3X3BhcmFtcwk9IGpoNzExMF90ZG1faHdfcGFyYW1zLA0KPiArCS50cmlnZ2VyCT0gamg3 MTEwX3RkbV90cmlnZ2VyLA0KPiArCS5zZXRfZm10CT0gamg3MTEwX3RkbV9zZXRfZGFpX2Zt dCwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3RkbV9kYWlfcHJvYmUoc3Ry dWN0IHNuZF9zb2NfZGFpICpkYWkpDQo+ICt7DQo+ICsJc3RydWN0IGpoNzExMF90ZG1fZGV2 ICp0ZG0gPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShkYWkpOw0KPiArDQo+ICsJc25kX3Nv Y19kYWlfaW5pdF9kbWFfZGF0YShkYWksICZ0ZG0tPnBsYXlfZG1hX2RhdGEsICZ0ZG0tPmNh cHR1cmVfZG1hX2RhdGEpOw0KPiArCXNuZF9zb2NfZGFpX3NldF9kcnZkYXRhKGRhaSwgdGRt KTsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArI2RlZmluZSBKSDcxMTBfVERNX1JB VEVTCVNORFJWX1BDTV9SQVRFXzgwMDBfNDgwMDANCj4gKw0KPiArI2RlZmluZSBKSDcxMTBf VERNX0ZPUk1BVFMJKFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgXA0KPiArCQkJCSBTTkRS Vl9QQ01fRk1UQklUX1MzMl9MRSkNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBzbmRfc29jX2Rh aV9kcml2ZXIgamg3MTEwX3RkbV9kYWkgPSB7DQo+ICsJLm5hbWUgPSAic2ZfdGRtIiwNCj4g KwkuaWQgPSAwLA0KPiArCS5wbGF5YmFjayA9IHsNCj4gKwkJLnN0cmVhbV9uYW1lICAgID0g IlBsYXliYWNrIiwNCj4gKwkJLmNoYW5uZWxzX21pbiAgID0gMSwNCj4gKwkJLmNoYW5uZWxz X21heCAgID0gOCwNCj4gKwkJLnJhdGVzICAgICAgICAgID0gSkg3MTEwX1RETV9SQVRFUywN Cj4gKwkJLmZvcm1hdHMgICAgICAgID0gSkg3MTEwX1RETV9GT1JNQVRTLA0KPiArCX0sDQo+ ICsJLmNhcHR1cmUgPSB7DQo+ICsJCS5zdHJlYW1fbmFtZSAgICA9ICJDYXB0dXJlIiwNCj4g KwkJLmNoYW5uZWxzX21pbiAgID0gMSwNCj4gKwkJLmNoYW5uZWxzX21heCAgID0gOCwNCj4g KwkJLnJhdGVzICAgICAgICAgID0gSkg3MTEwX1RETV9SQVRFUywNCj4gKwkJLmZvcm1hdHMg ICAgICAgID0gSkg3MTEwX1RETV9GT1JNQVRTLA0KPiArCX0sDQo+ICsJLm9wcyA9ICZqaDcx MTBfdGRtX2RhaV9vcHMsDQo+ICsJLnByb2JlID0gamg3MTEwX3RkbV9kYWlfcHJvYmUsDQo+ ICsJLnN5bW1ldHJpY19yYXRlID0gMSwNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc25kX3BjbV9oYXJkd2FyZSBqaDcxMTBfcGNtX2hhcmR3YXJlID0gew0KPiArCS5p bmZvCQkJPSAoU05EUlZfUENNX0lORk9fTU1BUAkJfA0KPiArCQkJCSAgIFNORFJWX1BDTV9J TkZPX01NQVBfVkFMSUQJfA0KPiArCQkJCSAgIFNORFJWX1BDTV9JTkZPX1BBVVNFCQl8DQo+ ICsJCQkJICAgU05EUlZfUENNX0lORk9fUkVTVU1FCXwNCj4gKwkJCQkgICBTTkRSVl9QQ01f SU5GT19JTlRFUkxFQVZFRAl8DQo+ICsJCQkJICAgU05EUlZfUENNX0lORk9fQkxPQ0tfVFJB TlNGRVIpLA0KPiArCS5idWZmZXJfYnl0ZXNfbWF4CT0gMTkyNTEyLA0KPiArCS5wZXJpb2Rf Ynl0ZXNfbWluCT0gNDA5NiwNCj4gKwkucGVyaW9kX2J5dGVzX21heAk9IDMyNzY4LA0KPiAr CS5wZXJpb2RzX21pbgkJPSAxLA0KPiArCS5wZXJpb2RzX21heAkJPSA0OCwNCj4gKwkuZmlm b19zaXplCQk9IDE2LA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzbmRf ZG1hZW5naW5lX3BjbV9jb25maWcgamg3MTEwX2RtYWVuZ2luZV9wY21fY29uZmlnID0gew0K PiArCS5wY21faGFyZHdhcmUgPSAmamg3MTEwX3BjbV9oYXJkd2FyZSwNCj4gKwkucHJlcGFy ZV9zbGF2ZV9jb25maWcgPSBzbmRfZG1hZW5naW5lX3BjbV9wcmVwYXJlX3NsYXZlX2NvbmZp ZywNCj4gKwkucHJlYWxsb2NfYnVmZmVyX3NpemUgPSAxOTI1MTIsDQo+ICt9Ow0KPiArDQo+ ICtzdGF0aWMgdm9pZCBqaDcxMTBfdGRtX2luaXRfcGFyYW1zKHN0cnVjdCBqaDcxMTBfdGRt X2RldiAqdGRtKQ0KPiArew0KPiArCXRkbS0+Y2xrcG9saXR5ID0gVERNX1RYX1JBU0lOR19S WF9GQUxMSU5HOw0KPiArCXRkbS0+ZWxtID0gVERNX0VMTV9MQVRFOw0KPiArCXRkbS0+c3lu Y20gPSBURE1fU1lOQ01fU0hPUlQ7DQo+ICsNCj4gKwl0ZG0tPnJ4LmlmbCA9IFRETV9GSUZP X0hBTEY7DQo+ICsJdGRtLT50eC5pZmwgPSBURE1fRklGT19IQUxGOw0KPiArCXRkbS0+cngu d2wgPSBURE1fMTZCSVRfV09SRF9MRU47DQo+ICsJdGRtLT50eC53bCA9IFRETV8xNkJJVF9X T1JEX0xFTjsNCj4gKwl0ZG0tPnJ4LnNzY2FsZSA9IDI7DQo+ICsJdGRtLT50eC5zc2NhbGUg PSAyOw0KPiArCXRkbS0+cngubHJqID0gVERNX0xFRlRfSlVTVElGVDsNCj4gKwl0ZG0tPnR4 LmxyaiA9IFRETV9MRUZUX0pVU1RJRlQ7DQo+ICsNCj4gKwl0ZG0tPnBsYXlfZG1hX2RhdGEu YWRkciA9IEpINzExMF9URE1fRklGTzsNCj4gKwl0ZG0tPnBsYXlfZG1hX2RhdGEuYWRkcl93 aWR0aCA9IERNQV9TTEFWRV9CVVNXSURUSF8yX0JZVEVTOw0KPiArCXRkbS0+cGxheV9kbWFf ZGF0YS5maWZvX3NpemUgPSBKSDcxMTBfVERNX0ZJRk9fREVQVEggLyAyOw0KPiArCXRkbS0+ cGxheV9kbWFfZGF0YS5tYXhidXJzdCA9IDE2Ow0KPiArDQo+ICsJdGRtLT5jYXB0dXJlX2Rt YV9kYXRhLmFkZHIgPSBKSDcxMTBfVERNX0ZJRk87DQo+ICsJdGRtLT5jYXB0dXJlX2RtYV9k YXRhLmFkZHJfd2lkdGggPSBETUFfU0xBVkVfQlVTV0lEVEhfMl9CWVRFUzsNCj4gKwl0ZG0t PmNhcHR1cmVfZG1hX2RhdGEuZmlmb19zaXplID0gSkg3MTEwX1RETV9GSUZPX0RFUFRIIC8g MjsNCj4gKwl0ZG0tPmNhcHR1cmVfZG1hX2RhdGEubWF4YnVyc3QgPSA4Ow0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IGpoNzExMF90ZG1fY2xrX3Jlc2V0X2luaXQoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldiwNCj4gKwkJCQkgICAgIHN0cnVjdCBqaDcxMTBfdGRtX2RldiAq dGRtKQ0KPiArew0KPiArCWludCBpLCByZXQ7DQo+ICsNCj4gKwlmb3IgKGkgPSAwOyBpIDwg dGRtLT5udW1fY2xrczsgaSsrKSB7DQo+ICsJCXRkbS0+Y2xrc1tpXSA9IGRldm1fY2xrX2dl dCgmcGRldi0+ZGV2LCB0ZG0tPmNsa19uYW1lc1tpXSk7DQo+ICsJCWlmIChJU19FUlIodGRt LT5jbGtzW2ldKSkgew0KPiArCQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIGdl dCBjbG9jazogJXNcbiIsDQo+ICsJCQkJdGRtLT5jbGtfbmFtZXNbaV0pOw0KPiArCQkJcmV0 dXJuIFBUUl9FUlIodGRtLT5jbGtzW2ldKTsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCXRk bS0+cmVzZXRzID0gZGV2bV9yZXNldF9jb250cm9sX2FycmF5X2dldF9leGNsdXNpdmUoJnBk ZXYtPmRldik7DQo+ICsJaWYgKElTX0VSUih0ZG0tPnJlc2V0cykpIHsNCj4gKwkJcmV0ID0g UFRSX0VSUih0ZG0tPnJlc2V0cyk7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxl ZCB0byBnZXQgdGRtIHJlc2V0cyIpOw0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0K PiArCXJldHVybiBqaDcxMTBfdGRtX2Nsa19lbmFibGUodGRtKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludCBqaDcxMTBfdGRtX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBk ZXYpDQo+ICt7DQo+ICsJc3RydWN0IGpoNzExMF90ZG1fZGV2ICp0ZG07DQo+ICsJY29uc3Qg c3RydWN0IHN0YXJmaXZlX3RkbV9kcml2ZXJkYXRhICpkcml2ZXJfZGF0YTsNCj4gKwlpbnQg cmV0Ow0KPiArDQo+ICsJdGRtID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigq dGRtKSwgR0ZQX0tFUk5FTCk7DQo+ICsJaWYgKCF0ZG0pDQo+ICsJCXJldHVybiAtRU5PTUVN Ow0KPiArDQo+ICsJZHJpdmVyX2RhdGEgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJnBk ZXYtPmRldik7DQo+ICsJdGRtLT5jbGtfbmFtZXMgPSAoY29uc3QgY2hhciAqKilkcml2ZXJf ZGF0YS0+Y2xrX25hbWVzOw0KPiArCXRkbS0+bnVtX2Nsa3MgPSBkcml2ZXJfZGF0YS0+bnVt X2Nsa3M7DQo+ICsNCj4gKwl0ZG0tPnRkbV9iYXNlID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFw X3Jlc291cmNlKHBkZXYsIDApOw0KPiArCWlmIChJU19FUlIodGRtLT50ZG1fYmFzZSkpDQo+ ICsJCXJldHVybiBQVFJfRVJSKHRkbS0+dGRtX2Jhc2UpOw0KPiArDQo+ICsJdGRtLT5kZXYg PSAmcGRldi0+ZGV2Ow0KPiArDQo+ICsJcmV0ID0gamg3MTEwX3RkbV9jbGtfcmVzZXRfaW5p dChwZGV2LCB0ZG0pOw0KPiArCWlmIChyZXQpIHsNCj4gKwkJZGV2X2VycigmcGRldi0+ZGV2 LCAiRmFpbGVkIHRvIGVuYWJsZSBhdWRpby10ZG0gY2xvY2tcbiIpOw0KPiArCQlyZXR1cm4g cmV0Ow0KPiArCX0NCj4gKw0KPiArCWpoNzExMF90ZG1faW5pdF9wYXJhbXModGRtKTsNCj4g Kw0KPiArCWRldl9zZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2LCB0ZG0pOw0KPiArCXJldCA9IGRl dm1fc25kX3NvY19yZWdpc3Rlcl9jb21wb25lbnQoJnBkZXYtPmRldiwgJmpoNzExMF90ZG1f Y29tcG9uZW50LA0KPiArCQkJCQkgICAgICAmamg3MTEwX3RkbV9kYWksIDEpOw0KPiArCWlm IChyZXQgIT0gMCkgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVn aXN0ZXIgZGFpXG4iKTsNCj4gKwkJcmV0dXJuIHJldDsNCj4gKwl9DQo+ICsNCj4gKwlyZXQg PSBkZXZtX3NuZF9kbWFlbmdpbmVfcGNtX3JlZ2lzdGVyKCZwZGV2LT5kZXYsDQo+ICsJCQkJ CSAgICAgICZqaDcxMTBfZG1hZW5naW5lX3BjbV9jb25maWcsDQo+ICsJCQkJCSAgICAgIFNO RF9ETUFFTkdJTkVfUENNX0ZMQUdfQ09NUEFUKTsNCj4gKwlpZiAocmV0KSB7DQo+ICsJCWRl dl9lcnIoJnBkZXYtPmRldiwgIkNvdWxkIG5vdCByZWdpc3RlciBwY206ICVkXG4iLCByZXQp Ow0KPiArCQlyZXR1cm4gcmV0Ow0KPiArCX0NCj4gKw0KPiArCXBtX3J1bnRpbWVfZW5hYmxl KCZwZGV2LT5kZXYpOw0KPiArI2lmZGVmIENPTkZJR19QTQ0KPiArCWpoNzExMF90ZG1fY2xr X2Rpc2FibGUodGRtKTsNCj4gKyNlbmRpZg0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgamg3MTEwX3RkbV9kZXZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ICt7DQo+ICsJcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5k ZXYpOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHN0YXJmaXZlX3RkbV9kcml2ZXJkYXRhIGpoNzExMF9kcnZkYXRhID0gew0KPiArCS5jbGtf bmFtZXMgPSB7Im1jbGtfaW5uZXIiLCAidGRtX2FoYiIsICJ0ZG1fYXBiIiwgInRkbV9pbnRl cm5hbCIsICJ0ZG1fZXh0IiwgInRkbSJ9LA0KPiArCS5udW1fY2xrcyA9IDYsDQo+ICt9Ow0K PiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBqaDcxMTBfdGRtX29m X21hdGNoW10gPSB7DQo+ICsJeyAuY29tcGF0aWJsZSA9ICJzdGFyZml2ZSxqaDcxMTAtdGRt IiwgLmRhdGEgPSAmamg3MTEwX2RydmRhdGEgfSwNCj4gKwl7fQ0KPiArfTsNCj4gKw0KPiAr TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgamg3MTEwX3RkbV9vZl9tYXRjaCk7DQo+ICsNCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBqaDcxMTBfdGRtX3BtX29wcyA9IHsN Cj4gKwlTRVRfUlVOVElNRV9QTV9PUFMoamg3MTEwX3RkbV9ydW50aW1lX3N1c3BlbmQsDQo+ ICsJCQkgICBqaDcxMTBfdGRtX3J1bnRpbWVfcmVzdW1lLCBOVUxMKQ0KPiArfTsNCj4gKw0K PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgamg3MTEwX3RkbV9kcml2ZXIgPSB7 DQo+ICsJLmRyaXZlciA9IHsNCj4gKwkJLm5hbWUgPSAiamg3MTEwLXRkbSIsDQo+ICsJCS5v Zl9tYXRjaF90YWJsZSA9IGpoNzExMF90ZG1fb2ZfbWF0Y2gsDQo+ICsJCS5wbSA9ICZqaDcx MTBfdGRtX3BtX29wcywNCj4gKwl9LA0KPiArCS5wcm9iZSA9IGpoNzExMF90ZG1fcHJvYmUs DQo+ICsJLnJlbW92ZSA9IGpoNzExMF90ZG1fZGV2X3JlbW92ZSwNCj4gK307DQo+ICttb2R1 bGVfcGxhdGZvcm1fZHJpdmVyKGpoNzExMF90ZG1fZHJpdmVyKTsNCj4gKw0KPiArTU9EVUxF X0RFU0NSSVBUSU9OKCJTdGFyRml2ZSBKSDcxMTAgVERNIEFTb0MgRHJpdmVyIik7DQo+ICtN T0RVTEVfQVVUSE9SKCJXYWxrZXIgQ2hlbiA8d2Fsa2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNv bT4iKTsNCj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4gZGlmZiAtLWdpdCBhL3NvdW5k L3NvYy9zdGFyZml2ZS9qaDcxMTBfdGRtLmggYi9zb3VuZC9zb2Mvc3RhcmZpdmUvamg3MTEw X3RkbS5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4u ODBmMTc5NDZhNDVkDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc291bmQvc29jL3N0YXJm aXZlL2poNzExMF90ZG0uaA0KPiBAQCAtMCwwICsxLDE0NyBAQA0KPiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKyAqDQo+ICsgKiBURE0gZHJpdmVyIGZvciB0 aGUgU3RhckZpdmUgSkg3MTEwIFNvQw0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAy Mi0yMDIzIFN0YXJGaXZlIFRlY2hub2xvZ3kgQ28uLCBMdGQuDQo+ICsgKg0KPiArICogQXV0 aG9yOiBXYWxrZXIgQ2hlbiA8d2Fsa2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNvbT4NCj4gKyAq Lw0KPiArDQo+ICsjaWZuZGVmIF9fU05EX1NPQ19TVEFSRklWRV9URE1fSA0KPiArI2RlZmlu ZSBfX1NORF9TT0NfU1RBUkZJVkVfVERNX0gNCj4gKw0KPiArI2luY2x1ZGUgPGxpbnV4L2Ns ay5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+DQo+ICsjaW5jbHVkZSA8c291bmQvZG1hZW5naW5lX3BjbS5oPg0KPiArI2lu Y2x1ZGUgPHNvdW5kL3BjbS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2RtYWVuZ2luZS5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+DQo+ICsNCj4gKyNkZWZpbmUgVERNX1BDTUdC Q1IJCQkweDAwDQo+ICsJI2RlZmluZSBQQ01HQkNSX01BU0sJCTB4MWUNCj4gKwkjZGVmaW5l IFBDTUdCQ1JfRU5BQkxFCQlCSVQoMCkNCj4gKwkjZGVmaW5lIFBDTUdCQ1JfVFJJVFhFTgkJ QklUKDQpDQo+ICsJI2RlZmluZSBDTEtQT0xfQklUCQk1DQo+ICsJI2RlZmluZSBUUklUWEVO X0JJVAkJNA0KPiArCSNkZWZpbmUgRUxNX0JJVAkJCTMNCj4gKwkjZGVmaW5lIFNZTkNNX0JJ VAkJMg0KPiArCSNkZWZpbmUgTVNfQklUCQkJMQ0KPiArI2RlZmluZSBURE1fUENNVFhDUgkJ CTB4MDQNCj4gKwkjZGVmaW5lIFBDTVRYQ1JfVFhFTgkJQklUKDApDQo+ICsJI2RlZmluZSBJ RkxfQklUCQkJMTENCj4gKwkjZGVmaW5lIFdMX0JJVAkJCTgNCj4gKwkjZGVmaW5lIFNTQ0FM RV9CSVQJCTQNCj4gKwkjZGVmaW5lIFNMX0JJVAkJCTINCj4gKwkjZGVmaW5lIExSSl9CSVQJ CQkxDQo+ICsjZGVmaW5lIFRETV9QQ01SWENSCQkJMHgwOA0KPiArCSNkZWZpbmUgUENNUlhD Ul9SWEVOCQlCSVQoMCkNCj4gKwkjZGVmaW5lIFBDTVJYQ1JfUlhTTF9NQVNLCTB4Yw0KPiAr CSNkZWZpbmUgUENNUlhDUl9SWFNMXzE2QklUCTB4NA0KPiArCSNkZWZpbmUgUENNUlhDUl9S WFNMXzMyQklUCTB4OA0KPiArCSNkZWZpbmUgUENNUlhDUl9TQ0FMRV9NQVNLCTB4ZjANCj4g KwkjZGVmaW5lIFBDTVJYQ1JfU0NBTEVfMUNICTB4MTANCj4gKyNkZWZpbmUgVERNX1BDTURJ VgkJCTB4MGMNCj4gKw0KPiArLyogIERNQSByZWdpc3RlcnMgKi8NCj4gKyNkZWZpbmUgSkg3 MTEwX1RETV9GSUZPCQkJMHgxNzBjMDAwMA0KPiArI2RlZmluZSBKSDcxMTBfVERNX0ZJRk9f REVQVEgJCTMyDQo+ICsjZGVmaW5lIEpINzExMF9URE1fTUFYX0NMT0NLUwkJNg0KPiArDQo+ ICtlbnVtIFRETV9NQVNURVJfU0xBVkVfTU9ERSB7DQo+ICsJVERNX0FTX01BU1RFUiA9IDAs DQo+ICsJVERNX0FTX1NMQVZFLA0KPiArfTsNCj4gKw0KPiArZW51bSBURE1fQ0xLUE9MIHsN Cj4gKwkvKiB0eCByYWlzaW5nIGFuZCByeCBmYWxsaW5nICovDQo+ICsJVERNX1RYX1JBU0lO R19SWF9GQUxMSU5HID0gMCwNCj4gKwkvKiB0eCBmYWxsaW5nIGFuZCByeCByYWlzaW5nICov DQo+ICsJVERNX1RYX0ZBTExJTkdfUlhfUkFTSU5HLA0KPiArfTsNCj4gKw0KPiArZW51bSBU RE1fRUxNIHsNCj4gKwkvKiBvbmx5IHdvcmsgd2hpbGUgU1lOQ009MCAqLw0KPiArCVRETV9F TE1fTEFURSA9IDAsDQo+ICsJVERNX0VMTV9FQVJMWSwNCj4gK307DQo+ICsNCj4gK2VudW0g VERNX1NZTkNNIHsNCj4gKwkvKiBzaG9ydCBmcmFtZSBzeW5jICovDQo+ICsJVERNX1NZTkNN X1NIT1JUID0gMCwNCj4gKwkvKiBsb25nIGZyYW1lIHN5bmMgKi8NCj4gKwlURE1fU1lOQ01f TE9ORywNCj4gK307DQo+ICsNCj4gK2VudW0gVERNX0lGTCB7DQo+ICsJLyogRklGTyB0byBz ZW5kIG9yIHJlY2VpdmVkIDogaGFsZi0xLzIsIFF1YXJ0ZXItMS80ICovDQo+ICsJVERNX0ZJ Rk9fSEFMRiA9IDAsDQo+ICsJVERNX0ZJRk9fUVVBUlRFUiwNCj4gK307DQo+ICsNCj4gK2Vu dW0gVERNX1dMIHsNCj4gKwkvKiBzZW5kIG9yIHJlY2VpdmVkIHdvcmQgbGVuZ3RoICovDQo+ ICsJVERNXzhCSVRfV09SRF9MRU4gPSAwLA0KPiArCVRETV8xNkJJVF9XT1JEX0xFTiwNCj4g KwlURE1fMjBCSVRfV09SRF9MRU4sDQo+ICsJVERNXzI0QklUX1dPUkRfTEVOLA0KPiArCVRE TV8zMkJJVF9XT1JEX0xFTiwNCj4gK307DQo+ICsNCj4gK2VudW0gVERNX1NMIHsNCj4gKwkv KiBzZW5kIG9yIHJlY2VpdmVkIHNsb3QgbGVuZ3RoICovDQo+ICsJVERNXzhCSVRfU0xPVF9M RU4gPSAwLA0KPiArCVRETV8xNkJJVF9TTE9UX0xFTiwNCj4gKwlURE1fMzJCSVRfU0xPVF9M RU4sDQo+ICt9Ow0KPiArDQo+ICtlbnVtIFRETV9MUkogew0KPiArCS8qIGxlZnQtanVzdGlm eSBvciByaWdodC1qdXN0aWZ5ICovDQo+ICsJVERNX1JJR0hUX0pVU1RJRlkgPSAwLA0KPiAr CVRETV9MRUZUX0pVU1RJRlQsDQo+ICt9Ow0KPiArDQo+ICtzdHJ1Y3QgdGRtX2NoYW5fY2Zn IHsNCj4gKwllbnVtIFRETV9JRkwgaWZsOw0KPiArCWVudW0gVERNX1dMICB3bDsNCj4gKwl1 bnNpZ25lZCBjaGFyIHNzY2FsZTsNCj4gKwllbnVtIFRETV9TTCAgc2w7DQo+ICsJZW51bSBU RE1fTFJKIGxyajsNCj4gKwl1bnNpZ25lZCBjaGFyIGVuYWJsZTsNCj4gK307DQo+ICsNCj4g K3N0cnVjdCBzdGFyZml2ZV90ZG1fZHJpdmVyZGF0YSB7DQo+ICsJY29uc3QgY2hhciAqY2xr X25hbWVzW0pINzExMF9URE1fTUFYX0NMT0NLU107DQo+ICsJaW50IG51bV9jbGtzOw0KPiAr fTsNCj4gKw0KPiArc3RydWN0IGpoNzExMF90ZG1fZGV2IHsNCj4gKwl2b2lkIF9faW9tZW0g KnRkbV9iYXNlOw0KPiArCXN0cnVjdCBkZXZpY2UgKmRldjsNCj4gKwljb25zdCBjaGFyICoq Y2xrX25hbWVzOw0KPiArCXN0cnVjdCBjbGsgKmNsa3NbSkg3MTEwX1RETV9NQVhfQ0xPQ0tT XTsNCj4gKwlpbnQgbnVtX2Nsa3M7DQo+ICsJc3RydWN0IHJlc2V0X2NvbnRyb2wgKnJlc2V0 czsNCj4gKw0KPiArCWVudW0gVERNX0NMS1BPTCBjbGtwb2xpdHk7DQo+ICsJZW51bSBURE1f RUxNCWVsbTsNCj4gKwllbnVtIFRETV9TWU5DTQlzeW5jbTsNCj4gKwllbnVtIFRETV9NQVNU RVJfU0xBVkVfTU9ERSBtc19tb2RlOw0KPiArDQo+ICsJc3RydWN0IHRkbV9jaGFuX2NmZyB0 eDsNCj4gKwlzdHJ1Y3QgdGRtX2NoYW5fY2ZnIHJ4Ow0KPiArDQo+ICsJdTE2IHN5bmNkaXY7 DQo+ICsJdTMyIHNhbXBsZXJhdGU7DQo+ICsJdTMyIHBjbWNsazsNCj4gKw0KPiArCS8qIGRh dGEgcmVsYXRlZCB0byBETUEgdHJhbnNmZXJzIGIvdyB0ZG0gYW5kIERNQUMgKi8NCj4gKwlz dHJ1Y3Qgc25kX2RtYWVuZ2luZV9kYWlfZG1hX2RhdGEgcGxheV9kbWFfZGF0YTsNCj4gKwlz dHJ1Y3Qgc25kX2RtYWVuZ2luZV9kYWlfZG1hX2RhdGEgY2FwdHVyZV9kbWFfZGF0YTsNCj4g Kwl1MzIgc2F2ZWRfcGNtZ2JjcjsNCj4gKwl1MzIgc2F2ZWRfcGNtdHhjcjsNCj4gKwl1MzIg c2F2ZWRfcGNtcnhjcjsNCj4gKwl1MzIgc2F2ZWRfcGNtZGl2Ow0KPiArfTsNCj4gKw0KPiAr I2VuZGlmCS8qIF9fU05EX1NPQ19TVEFSRklWRV9URE1fSCAqLw0K --------------00OX142jfUw8FZmI0UQh7Bd7 Content-Type: application/pgp-keys; name="OpenPGP_0xE3520CC91929C8E7.asc" Content-Disposition: attachment; filename="OpenPGP_0xE3520CC91929C8E7.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- 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 lMSoVV3z1s8dA1DK95ykSdIFtVZT =3Dr4B8 -----END PGP PUBLIC KEY BLOCK----- --------------00OX142jfUw8FZmI0UQh7Bd7-- --------------BwlGlbRzy57vcbAQ1MJWzg5K-- --------------fyuHLQM20M2CGNfB03W36Pz0 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEET/yoGP3p5Zl+RKVuX75KBAfJsRkFAmRWWpUACgkQX75KBAfJ sRmD9w/8DbVetfE3tjtXN5vrydk+aDYnv5JxPpfy8n3C6jnRKAFwnsNir5n7OS3P lCDI+vm0/czueja8GthlKAu7x9y+tENaCb1+elUM4MJo8e/t7VoJDFbuOROKBtgK qLCvlcTKrDMDpzudc2s7yaidPEmbPgcOjgcd+9KnL8/tZo7k6kwrOh5XKi5eLjwl 2hsKWdfo6Z+vrvLmnepDzTI5C7CkIybUGBjcs8cVNVnxLg9bjtY5un0tgrMPjJO/ KiDpLzpjTaVTYRUBhI+3CiJBmNWCy8pAnLRKhPX1OjR49ZJP4t758gmh1QVioRDQ Ho1UBfAtHjN9bC6yY6oR4nTnSPO69cJV6FG3vYNCyDaJUaFld+/UdE+SNSb63PIn v0qJ3tzSM+H6VTgNc28j1kNf/GF9X6ZhGAXE5EjmiONdpJpQak8alU/tERKc6TXf HDTIMTQCgLrxuEgoXE83USU5z6m6RdQX26K1YrWNw+UHju/7zwKXzS0o0w+4wn4/ mp1yQHy6MXN6PiXm/g94l+pkUphE3GxTgnk4ZFETH5kmdF7g2Kx/3PWM0jm8EMVU 4DsS+pxudakbnhol9oFMP+vtY1/e1KMN6IDFW7kPUP8xGoRvVIjfdU4KzVb4IPeU xvX3wQ6h/cG+mJ4uwRqzorc2jIPLUsN5pj7beMgUed6PGJXX0KY= =htl6 -----END PGP SIGNATURE----- --------------fyuHLQM20M2CGNfB03W36Pz0--