Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp481909imw; Wed, 13 Jul 2022 02:08:08 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sduS5axewR8hiomRbJj9AUKvfFp7Y+MoTwWf/BE2gT9koebb/5p0jZRe/tob/rZTasRlNC X-Received: by 2002:a63:385d:0:b0:415:df85:4b73 with SMTP id h29-20020a63385d000000b00415df854b73mr2172971pgn.179.1657703288051; Wed, 13 Jul 2022 02:08:08 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1657703288; cv=pass; d=google.com; s=arc-20160816; b=Ve9hnodkJQPKaj+RmEIQd/m9Zpy/gCxlpOlTiaU6xFK/hfDLgzAGLKu7G2jajhYybZ TbMgOH6dYQENXYIdbO3D+N+m3ZONiL9SfiSxJh5Z4yEW/A0CLEh+A/NrtzZmd+u1Zb56 2FBPASUwE5P/dGOMnIYFNEZxBgWdMmv6EFQeDQ1P4GBkh7tfF2sMHWhBqhqKLSiGuMbw TocqpOCbgWq6fntYJbZw2HIRDuhqaLoU8It3HdQKBVuH9qidck48WrVt3PUfME7IJTBG 5hSa5gm6bPh3LNxpx2rneyDOK/cmMJ+ROkrM+QxyFd/kpNIr6VpEKlsFB8FpR8cf3AN2 uNrg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:dkim-signature; bh=EnkAiLmdRtxZF25w4uQ6DCdaA972SMesEKRhU/QgGow=; b=a/nIO1qYBipBlTAab/TW3zhKq0u8t0wsdU0ePSrEfXodn5t83OIVWz97/93JuRdaaP MDMY0FN+sYd/Hvjp3FoWBGs9DLGUC2IZXUnFT7b5tdEJWlGrS8YSYkxwYpn8nMJEXAMl rcKWjDkAj+Or0/i3ff5xTbmiaqQCvGjGbPB4JYe71zRI2V1F6bRtHr/CFO9SLvTmT3q/ iwCuw1PFjpUwZghKcUtnDLClZx+vrdBg3ZAS+zWAhRXJp+cwm27M+uFO2iDf6m8tdXw8 Zx0AHBPzpXdFAqe/nm49OacL/BaVmZ3ihqW6H+kxUVtpAdAM1b0qEtsNthFWNCnvk3eb ZZXw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=AnYt+jYh; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b="u4ujDXu/"; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nt15-20020a17090b248f00b001f05f24be87si1571880pjb.86.2022.07.13.02.07.56; Wed, 13 Jul 2022 02:08:08 -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=@microchip.com header.s=mchp header.b=AnYt+jYh; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b="u4ujDXu/"; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234486AbiGMIyz (ORCPT + 99 others); Wed, 13 Jul 2022 04:54:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230471AbiGMIyy (ORCPT ); Wed, 13 Jul 2022 04:54:54 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1E3AAE578; Wed, 13 Jul 2022 01:54:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1657702491; x=1689238491; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=EnkAiLmdRtxZF25w4uQ6DCdaA972SMesEKRhU/QgGow=; b=AnYt+jYhurns079eZg2txkCF6M3AlmGtvFVXCkiwDfuUKhxrw8quj0JE XfkkAw1VMAr6YfyxnzIixThOgFFZg3n1tR6fdIfB+LruIet3cTjBWljdW qHC8ckso0WbeJGNs6xzQoS/PqvsjHjot9tA0yt8soxP0I5BCFzAjpCRYq ik3X0t6XK1e16Fu4uf/6+Tcxes1iZKAhqq+6pw8SKUnk7SHp3DutUZx0p JSGEjuxHZzxrY8heSXFQ1jIn8878JZlCUtkKMtgexfG6m01Wv+J2u7Vm/ oJS9XZ4vrCKYRvrqxIQ+//QJRfzwoOYui1n+nT3c/tdGzPenhvCkekI6j Q==; X-IronPort-AV: E=Sophos;i="5.92,267,1650956400"; d="scan'208";a="167606916" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 13 Jul 2022 01:54:50 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Wed, 13 Jul 2022 01:54:50 -0700 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Wed, 13 Jul 2022 01:54:50 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q7p2hcWxVEgR2osKWh51+ynG4Ki4tNXrZ9/PzURqASAC9/VUDxdD53yUFI1WXw1QsPz+A/LXFNM6LCu9ZeidQHJsWsvxPcCsQDMOVPxd/mra36h8oynOXiJdPToszK+Wm2jjsoBrOOrMnVp17QH0I2Gm/SFR5PErU8bARzrwbzw95ueh3+CJRMpcQKcH5nievHlGu4YeNztjCo37kPvgWo2YVrBVbqWU2TSqSoybbhaOw+YIpLDHzdqmLx4kkiEd37ytvRGs9isr78VsmXk0GEgDH4nuQJzxVaOIBW7ByIHIDF60pBNPkxNXnaQfuZ1TKmHkDYI9/11NBYrjvGyAYQ== 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=EnkAiLmdRtxZF25w4uQ6DCdaA972SMesEKRhU/QgGow=; b=G55XcDQ5DYp0GU9NSsLBV93kwPlmkQVjb7B/peWP9idw4dQAalDOCVrQIhpWQoDDknYFDXe/lwaPzY/P3V61t9x8gdRXv2qa5rDWB4cicsZG1hXye45IWRG0N/CrG7c//tsPeZJ/2F6OMrpSSvS+iU75VUDDjUIUsO8sON7txPIHLmZ1v7MIlVamqSnXqgatBKeB93E492W6A7xH8Xv3jX2tBTtKeRmw+8Dyk+gB9fYAqeBuH+CW0ucFZz5wDYtIc9HB0iouBffVQcjS2WRjjDE6H8QG4Rp/C+S/OKYiOTRw7WR8IpJL3Tke1zpN4jdED42RNXEW5N0dHx+Aujl1BQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=EnkAiLmdRtxZF25w4uQ6DCdaA972SMesEKRhU/QgGow=; b=u4ujDXu/Hn5m3ls5dzj4LI+mMk9PkPuo4DnRXIWhRcb7f2RH+UTqeBDQ69zeyCiw1Y5x08SnHtWrz9d56f483sR7+csWJHvUy2n+MSooFF/z8vep4z7z4iwwIlDDKg5c7JjUFcoNYJCIv4Di4L5oLEr7ZUMeCUz/RJb7+FG/j+Y= Received: from PH0PR11MB5160.namprd11.prod.outlook.com (2603:10b6:510:3e::8) by BY5PR11MB4467.namprd11.prod.outlook.com (2603:10b6:a03:1b9::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.20; Wed, 13 Jul 2022 08:54:47 +0000 Received: from PH0PR11MB5160.namprd11.prod.outlook.com ([fe80::6090:db2c:283b:fe69]) by PH0PR11MB5160.namprd11.prod.outlook.com ([fe80::6090:db2c:283b:fe69%8]) with mapi id 15.20.5417.026; Wed, 13 Jul 2022 08:54:47 +0000 From: To: , , , , CC: , , , , Subject: Re: [PATCH v6 3/4] pwm: add microchip soft ip corePWM driver Thread-Topic: [PATCH v6 3/4] pwm: add microchip soft ip corePWM driver Thread-Index: AQHYlftutkb03ZS7CE62xip0d2IE2a18AH4A Date: Wed, 13 Jul 2022 08:54:47 +0000 Message-ID: References: <20220712142557.1773075-1-conor.dooley@microchip.com> <20220712142557.1773075-4-conor.dooley@microchip.com> In-Reply-To: <20220712142557.1773075-4-conor.dooley@microchip.com> Accept-Language: en-IE, en-US Content-Language: en-IE X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.9.1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ebfb92ef-2a35-4743-de2a-08da64ad56d8 x-ms-traffictypediagnostic: BY5PR11MB4467:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: YEpd7cdlyIEBubKqdOI+UAywNIvGMDS4p3VmcfIKRjfa9FsllkYVUN5hbd6uSb7JIOSdQi62eqwTUCSKoYiFjKHvMz4GDKVaYP4FlimECkTvLtVbNctYFFjPgqfCuDro7uEmLB7v0th/xgp5h9t6jnLbPwKsyQ8vrVTl0PKGVHBp2n9Fp0aKrvIr7lTvdR6uywM0Pyln+CzoA+p49MR5wH0+7+/DyAmSukMLRwKscaor7NlwgsqXCMjp1VM4mHK4FhWqk3srQynLHDzGDKNvRIg7Lor5CgyS3XIAjDdIV0qs2auMMCTO+j12t3H3qrOD/pkWT+Za7Mnq5cjclbVXf7LX8ZjTG9zU1CGUj32A44s9KX7TbiTVobVZ6bhkejdsiPPs8MyKJAqOQ5h7phZo881BrUYkYfIF33HPOo4v5j7WsVulELow6wSQX37fVoa88YESqaInE1f11utRPijM/Es0PRrK4F5Ha9Q83tE1UM6xl8K+CRPHc5iyM6GFb1QSaJ7ucI9AUv0yxbHPWrOZuMh2opIY8AK5cEqX1fIOswp8SoU0kdXJNEBStfu83PFBTa147VDTSv1S/DJ7lNQUoH/VenUy7HeDOxHhw5QSgdUP6HRToO/CMoRgyXBqfWklZPZ971gLE3osC2U3rehNbUptAvg7U+5CCzeS4UEE/0N6TyeS7KlnO5/h97vX/e43QIe2eZR0LyXGK6VtzSV6bXX0Himic8gwrazKoCST7281OQAlaP+5EqkW1Z7bVGSsWLXSWAhQLbTEg4aKzUfkIjA3lGDyHoaSlO+SUpADPV8tltmmIPQtqPURBM8EpdJyMTJY1hsqeO5nEwK0xUBKn/e26+Vc/yj8qmQKEmp/IAXmZTpIB/uWzZbrXnIqVttOGRDRkNgUGJSXW6LcRA9X+m/ugyo93iqPeqLinprAQfzWvJlYUvcUBgp23tOmUmvx x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB5160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(366004)(396003)(346002)(39860400002)(136003)(376002)(316002)(6506007)(26005)(91956017)(478600001)(2906002)(86362001)(8936002)(41300700001)(966005)(5660300002)(6512007)(53546011)(6486002)(2616005)(31696002)(38070700005)(38100700002)(122000001)(76116006)(83380400001)(64756008)(4326008)(66476007)(30864003)(71200400001)(8676002)(110136005)(66946007)(54906003)(36756003)(66446008)(31686004)(186003)(66556008)(45980500001)(43740500002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cUNBK25Wa0lRMmxzMlZrRnpvbUUxQkZ0VFJydTQ4QkRCK0F3R1d1U2FZbzA2?= =?utf-8?B?U1BnNDZUdXFmdzlTekhzRkpUbTBPb3ltcjV1T0h6ZWZ4T2JsRHQ5UFJqSHJq?= =?utf-8?B?K2dSVTlpdkZ4T2lNOWd3MWlvT25NaTBpNW9IRzBrVkZzWVRLcWJGMFBpQW1T?= =?utf-8?B?bk5pTENydkhPdlZWK2t0WWpydnUwUVJ3SzVWaVcwTnZFK0VYRzVJQUFYV2Qv?= =?utf-8?B?L2laVFV1UDk3N1g3K1cxUVJ6VkZtSVZqQXBqdU9yWWF3c051MGZvanA2OGVr?= =?utf-8?B?Vm42NzRDQ1FkcldmdC9nWlpsM0dwcTFTRGdTSjVhZDd2TUZJNk1iSmpMM3BF?= =?utf-8?B?MVRSVXRnUWlaUjQyYU4zbldoMjRzUXNSbGJqSEd4bjk5WUJEUlZDVXo1M1dz?= =?utf-8?B?MWZJZUM1YWVIUlFyYjBaK1hOMzdjZDlvVTRteVE5bE5wVWVDTmRseERKWmhL?= =?utf-8?B?QS94ZXpEcnVrcStoMUdtQnNBTWMyVlMrQzBVTGNUMHFia2dtVnJReHMxenBn?= =?utf-8?B?ekFqbk9NT3lsalpVbE9nbENJNmtGQ0YxZUdvajY5ektENlZmRlJsWXhZbGI3?= =?utf-8?B?RWN2MjQ5UGxTazdSYzY4ZjJkaTU1d2UzaWY1TExySmtLSXgrNzJwQXUyazJa?= =?utf-8?B?aGZlN2NMek9KZEIwRS91aDRMcFh3cTc3TXRsUDlMVnhCcnZKcFhaMXNmVElZ?= =?utf-8?B?dW4vYWQ3cUozdXZySGd4ZWh5T1c3aFYwZWQzT0Z5Q0doK2hGRVo4WjI1djh1?= =?utf-8?B?ZngySFJLMzBPVmduNWFHcFBmVk5oVGhSUnVWQmpURDNpZ0tVM3lNdmludmd2?= =?utf-8?B?VUgxQnpacHpUN1hYNjd0WEZuQVpmUW1mR1VXK2JNdjBHaUdaMkJpUW5FbmNJ?= =?utf-8?B?L2dBdzFCSFB0dE1qK2kya0dtWHlMNGhsRUZNSnZWWXVhOENFZC9lVmtmbGpX?= =?utf-8?B?Q3Q3Qkg5NEhBUG5CaU9tWU1QM1AwNEc0Qng3djFxNGtjeHZOSzQwZ3FBTmxx?= =?utf-8?B?VWsvMnhaUlR2WXRPZ3FlOVUzYlhBby9LMXM1a2V1UklqNXZFdktzdHRZeWdR?= =?utf-8?B?cWRvUFdVQlp1VExRY2ZnV3V3LzIxUkJKWDc3NG5iVTF1VTU5eEhtN3NWa0wz?= =?utf-8?B?S0t4dkhmUW9GYTczZUJJN1RvZ1poRE44dkVycVpwSkZNQjN5MS9WMGdVZG0x?= =?utf-8?B?Ny9CcGlybVNoZUErejlxTTQ3ekVYaGhueVhFSkEzcGtHVjlXcmgyNDFVM3Q0?= =?utf-8?B?cytOYmpNWjl2MUw1V3piS0pnVFdDL3lLZ2luVUJEZ2pwVkl3aEZ0V2hxNWR4?= =?utf-8?B?ZFJsci9MR01xOVJBQlN1LzRBTFkzb3RnZ0xwd21ORjJ1c0sxVDZtMUhGd281?= =?utf-8?B?a05LWXZETytXT0tGT1UwY0FKMFFPY2NCN2h1RjlDUGtFUjM2S251S09ha3U0?= =?utf-8?B?eXZLT0IyaiszWVVrVExsQTdUUUY0S2Qwb29qQnA5UlluWWxBcy9ZTHRoSXM1?= =?utf-8?B?ekE2aGlGMWxQeTFlRWNVTi92QmZPQkdLK3hKdGZZdjhLM0daZytic2dpSmlw?= =?utf-8?B?Q2pKZ25HRDhzZ3JJUGlRcDFlVzEyR1J1QU1adFhGRHM0MkN2NUE3VzhuR0V3?= =?utf-8?B?ZmxsSk95cmkvc3JreDFOZE8yZWZWK3paT3o4Z1F3aHl4Z0wyVzdNUjBTVjNN?= =?utf-8?B?K0pjR0ZCOXVYcXB4TXJPVzN4VDg4WjZNL2tEaHNiUG5ESzdPMlp4eHo2cjRu?= =?utf-8?B?NG52MmVPVUNFTERDNTk5SzRUMHhrZjZBMDVOTzhIMEdUL3dBVlNkbEFQQ3hH?= =?utf-8?B?Y1lJaE1EZEZheWtPSGNIbEpTd3U5Skltc203cWRCdEJYYS9ZREdZUUxPeWRF?= =?utf-8?B?aUZJOWZMNHhVc3VsYmNWeUYzZ0V1NUptSU9YZytadzlBbWJkdGcyVUd3R0RH?= =?utf-8?B?TVlkTzRLYXhzbWIxb0xpOU1McTBMaGxtdUhsU20zSXIvTHdCeVV3ZDBmWDl6?= =?utf-8?B?TndHKzZEbzdxY2M5Qmc3Z1l0MGU4bTBxSjVFcWVZOFE0NnJDeDk3MEpoWVZ2?= =?utf-8?B?SHZUSFk3V24vZGV1NzBzNENqZnRNYlF2eklpTGROK0lld0xoOEY2aWUwS1Rs?= =?utf-8?Q?OVXePG14HuKw+0tIXd21H1eud?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB5160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ebfb92ef-2a35-4743-de2a-08da64ad56d8 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jul 2022 08:54:47.5207 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: V4tUnA86QMvLIkTC2eMHB/F7rs0yTnjlnsDuJu6+lLmMvrlp5ehJY/aXMDXZojrToXb3tmQJvJErEs/zNGIkOswvFBjaqSL1MktRcUFcuHw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4467 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE 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 T24gMTIvMDcvMjAyMiAxNToyNSwgQ29ub3IgRG9vbGV5IHdyb3RlOg0KPiBFWFRFUk5BTCBFTUFJ TDogRG8gbm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBrbm93 IHRoZSBjb250ZW50IGlzIHNhZmUNCj4gDQo+IEFkZCBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRo ZSBNaWNyb2NoaXAgRlBHQSAic29mdCIgUFdNIElQIGNvcmUuDQoNCkxvb2tzIGxpa2UgdGhlcmUn cyBhIGNvdXBsZSBXPTEgd2FybmluZ3MgYWJvdXQgdGhlIG11dGV4IHVzZSwgSSdsbCBub3QgcmVz cGluDQp1bnRpbCB5b3UndmUgaGFkIGEgY2hhbmNlIHRvIGhhdmUgYSBsb29rIGF0IHRoaXMgdmVy c2lvbi4NClRoYW5rcywNCkNvbm9yLg0KDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBDb25vciBEb29s ZXkgPGNvbm9yLmRvb2xleUBtaWNyb2NoaXAuY29tPg0KPiAtLS0NCj4gICBkcml2ZXJzL3B3bS9L Y29uZmlnICAgICAgICAgICAgICB8ICAxMCArDQo+ICAgZHJpdmVycy9wd20vTWFrZWZpbGUgICAg ICAgICAgICAgfCAgIDEgKw0KPiAgIGRyaXZlcnMvcHdtL3B3bS1taWNyb2NoaXAtY29yZS5jIHwg MzcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICAzIGZpbGVzIGNoYW5nZWQs IDM4MSBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcHdtL3B3 bS1taWNyb2NoaXAtY29yZS5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vS2NvbmZp ZyBiL2RyaXZlcnMvcHdtL0tjb25maWcNCj4gaW5kZXggOTA0ZGU4ZDYxODI4Li4wMDdlYTU3NTBl NzMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcHdtL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9w d20vS2NvbmZpZw0KPiBAQCAtMzgzLDYgKzM4MywxNiBAQCBjb25maWcgUFdNX01FRElBVEVLDQo+ ICAgICAgICAgICAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0g aGVyZTogdGhlIG1vZHVsZQ0KPiAgICAgICAgICAgIHdpbGwgYmUgY2FsbGVkIHB3bS1tZWRpYXRl ay4NCj4gDQo+ICtjb25maWcgUFdNX01JQ1JPQ0hJUF9DT1JFDQo+ICsgICAgICAgdHJpc3RhdGUg Ik1pY3JvY2hpcCBjb3JlUFdNIFBXTSBzdXBwb3J0Ig0KPiArICAgICAgIGRlcGVuZHMgb24gU09D X01JQ1JPQ0hJUF9QT0xBUkZJUkUgfHwgQ09NUElMRV9URVNUDQo+ICsgICAgICAgZGVwZW5kcyBv biBIQVNfSU9NRU0gJiYgT0YNCj4gKyAgICAgICBoZWxwDQo+ICsgICAgICAgICBQV00gZHJpdmVy IGZvciBNaWNyb2NoaXAgRlBHQSBzb2Z0IElQIGNvcmUuDQo+ICsNCj4gKyAgICAgICAgIFRvIGNv bXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUN Cj4gKyAgICAgICAgIHdpbGwgYmUgY2FsbGVkIHB3bS1taWNyb2NoaXAtY29yZS4NCj4gKw0KPiAg IGNvbmZpZyBQV01fTVhTDQo+ICAgICAgICAgIHRyaXN0YXRlICJGcmVlc2NhbGUgTVhTIFBXTSBz dXBwb3J0Ig0KPiAgICAgICAgICBkZXBlbmRzIG9uIEFSQ0hfTVhTIHx8IENPTVBJTEVfVEVTVA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vTWFrZWZpbGUgYi9kcml2ZXJzL3B3bS9NYWtlZmls ZQ0KPiBpbmRleCA1YzA4YmRiODE3YjQuLjQzZmViN2NmYzY2YSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9wd20vTWFrZWZpbGUNCj4gKysrIGIvZHJpdmVycy9wd20vTWFrZWZpbGUNCj4gQEAgLTMz LDYgKzMzLDcgQEAgb2JqLSQoQ09ORklHX1BXTV9MUFNTX1BDSSkgICAgKz0gcHdtLWxwc3MtcGNp Lm8NCj4gICBvYmotJChDT05GSUdfUFdNX0xQU1NfUExBVEZPUk0pICAgICAgICArPSBwd20tbHBz cy1wbGF0Zm9ybS5vDQo+ICAgb2JqLSQoQ09ORklHX1BXTV9NRVNPTikgICAgICAgICAgICAgICAg Kz0gcHdtLW1lc29uLm8NCj4gICBvYmotJChDT05GSUdfUFdNX01FRElBVEVLKSAgICAgKz0gcHdt LW1lZGlhdGVrLm8NCj4gK29iai0kKENPTkZJR19QV01fTUlDUk9DSElQX0NPUkUpICAgICAgICs9 IHB3bS1taWNyb2NoaXAtY29yZS5vDQo+ICAgb2JqLSQoQ09ORklHX1BXTV9NVEtfRElTUCkgICAg ICs9IHB3bS1tdGstZGlzcC5vDQo+ICAgb2JqLSQoQ09ORklHX1BXTV9NWFMpICAgICAgICAgICs9 IHB3bS1teHMubw0KPiAgIG9iai0kKENPTkZJR19QV01fTlRYRUMpICAgICAgICAgICAgICAgICs9 IHB3bS1udHhlYy5vDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3B3bS9wd20tbWljcm9jaGlwLWNv cmUuYyBiL2RyaXZlcnMvcHdtL3B3bS1taWNyb2NoaXAtY29yZS5jDQo+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uM2UyODg2OGVlNDk5DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZHJpdmVycy9wd20vcHdtLW1pY3JvY2hpcC1jb3JlLmMNCj4gQEAgLTAsMCAr MSwzNzAgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0K PiArICogY29yZVBXTSBkcml2ZXIgZm9yIE1pY3JvY2hpcCAic29mdCIgRlBHQSBJUCBjb3Jlcy4N Cj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBNaWNyb2NoaXAgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsgKiBBdXRob3I6IENvbm9yIERvb2xleSA8Y29u b3IuZG9vbGV5QG1pY3JvY2hpcC5jb20+DQo+ICsgKiBEb2N1bWVudGF0aW9uOg0KPiArICogaHR0 cHM6Ly93d3cubWljcm9zZW1pLmNvbS9kb2N1bWVudC1wb3J0YWwvZG9jX2Rvd25sb2FkLzEyNDUy NzUtY29yZXB3bS1oYg0KPiArICoNCj4gKyAqIExpbWl0YXRpb25zOg0KPiArICogLSBJZiB0aGUg SVAgYmxvY2sgaXMgY29uZmlndXJlZCB3aXRob3V0ICJzaGFkb3cgcmVnaXN0ZXJzIiwgYWxsIHJl Z2lzdGVyDQo+ICsgKiAgIHdyaXRlcyB3aWxsIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LCBjYXVz aW5nIGdsaXRjaGVzIG9uIHRoZSBvdXRwdXQuDQo+ICsgKiAgIElmIHNoYWRvdyByZWdpc3RlcnMg KmFyZSogZW5hYmxlZCwgYSB3cml0ZSB0byB0aGUgIlNZTkNfVVBEQVRFIiByZWdpc3Rlcg0KPiAr ICogICBub3RpZmllcyB0aGUgY29yZSB0aGF0IGl0IG5lZWRzIHRvIHVwZGF0ZSB0aGUgcmVnaXN0 ZXJzIGRlZmluaW5nIHRoZQ0KPiArICogICB3YXZlZm9ybSBmcm9tIHRoZSBjb250ZW50cyBvZiB0 aGUgInNoYWRvdyByZWdpc3RlcnMiLg0KPiArICogLSBUaGUgSVAgYmxvY2sgaGFzIG5vIGNvbmNl cHQgb2YgYSBkdXR5IGN5Y2xlLCBvbmx5IHJpc2luZy9mYWxsaW5nIGVkZ2VzIG9mDQo+ICsgKiAg IHRoZSB3YXZlZm9ybS4gVW5mb3J0dW5hdGVseSwgaWYgdGhlIHJpc2luZyAmIGZhbGxpbmcgZWRn ZXMgcmVnaXN0ZXJzIGhhdmUNCj4gKyAqICAgdGhlIHNhbWUgdmFsdWUgd3JpdHRlbiB0byB0aGVt IHRoZSBJUCBibG9jayB3aWxsIGRvIHdoaWNoZXZlciBvZiBhIHJpc2luZw0KPiArICogICBvciBh IGZhbGxpbmcgZWRnZSBpcyBwb3NzaWJsZS4gSS5FLiBhIDUwJSB3YXZlZm9ybSBhdCB0d2ljZSB0 aGUgcmVxdWVzdGVkDQo+ICsgKiAgIHBlcmlvZC4gVGhlcmVmb3JlIHRvIGdldCBhIDAlIHdhdmVm b3JtLCB0aGUgb3V0cHV0IGlzIHNldCB0aGUgbWF4IGhpZ2gvbG93DQo+ICsgKiAgIHRpbWUgZGVw ZW5kaW5nIG9uIHBvbGFyaXR5Lg0KPiArICogLSBUaGUgUFdNIHBlcmlvZCBpcyBzZXQgZm9yIHRo ZSB3aG9sZSBJUCBibG9jayBub3QgcGVyIGNoYW5uZWwuIFRoZSBkcml2ZXINCj4gKyAqICAgd2ls bCBvbmx5IGNoYW5nZSB0aGUgcGVyaW9kIGlmIG5vIG90aGVyIFBXTSBvdXRwdXQgaXMgZW5hYmxl ZC4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4NCj4gKyNpbmNsdWRlIDxs aW51eC9pby5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21hdGguaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9tdXRleC5oPg0KPiArI2luY2x1ZGUgPGxp bnV4L29mX2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3B3bS5oPg0KPiArDQo+ICsjZGVmaW5lIFBSRUdfVE9fVkFMKFBS RUcpICgoUFJFRykgKyAxKQ0KPiArDQo+ICsjZGVmaW5lIE1DSFBDT1JFUFdNX1BSRVNDQUxFX01B WCAgICAgICAweDEwMA0KPiArI2RlZmluZSBNQ0hQQ09SRVBXTV9QRVJJT0RfU1RFUFNfTUFYICAg MHhmZg0KPiArI2RlZmluZSBNQ0hQQ09SRVBXTV9QRVJJT0RfTUFYICAgICAgICAgMHhmZjAwDQo+ ICsNCj4gKyNkZWZpbmUgTUNIUENPUkVQV01fUFJFU0NBTEUgICAweDAwDQo+ICsjZGVmaW5lIE1D SFBDT1JFUFdNX1BFUklPRCAgICAgMHgwNA0KPiArI2RlZmluZSBNQ0hQQ09SRVBXTV9FTihpKSAg ICAgICgweDA4ICsgMHgwNCAqIChpKSkgLyogMHgwOCwgMHgwYyAqLw0KPiArI2RlZmluZSBNQ0hQ Q09SRVBXTV9QT1NFREdFKGkpICgweDEwICsgMHgwOCAqIChpKSkgLyogMHgxMCwgMHgxOCwgLi4u LCAweDg4ICovDQo+ICsjZGVmaW5lIE1DSFBDT1JFUFdNX05FR0VER0UoaSkgKDB4MTQgKyAweDA4 ICogKGkpKSAvKiAweDE0LCAweDFjLCAuLi4sIDB4OGMgKi8NCj4gKyNkZWZpbmUgTUNIUENPUkVQ V01fU1lOQ19VUEQgICAweGU0DQo+ICsNCj4gK3N0cnVjdCBtY2hwX2NvcmVfcHdtX2NoaXAgew0K PiArICAgICAgIHN0cnVjdCBwd21fY2hpcCBjaGlwOw0KPiArICAgICAgIHN0cnVjdCBjbGsgKmNs azsNCj4gKyAgICAgICBzdHJ1Y3QgbXV0ZXggbG9jazsgLyogcHJvdGVjdCB0aGUgc2hhcmVkIHBl cmlvZCAqLw0KPiArICAgICAgIHZvaWQgX19pb21lbSAqYmFzZTsNCj4gKyAgICAgICB1MzIgc3lu Y191cGRhdGVfbWFzazsNCj4gKyAgICAgICB1MTYgY2hhbm5lbF9lbmFibGVkOw0KPiArfTsNCj4g Kw0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbWNocF9jb3JlX3B3bV9jaGlwICp0b19tY2hwX2Nv cmVfcHdtKHN0cnVjdCBwd21fY2hpcCAqY2hpcCkNCj4gK3sNCj4gKyAgICAgICByZXR1cm4gY29u dGFpbmVyX29mKGNoaXAsIHN0cnVjdCBtY2hwX2NvcmVfcHdtX2NoaXAsIGNoaXApOw0KPiArfQ0K PiArDQo+ICtzdGF0aWMgdm9pZCBtY2hwX2NvcmVfcHdtX2VuYWJsZShzdHJ1Y3QgcHdtX2NoaXAg KmNoaXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd20sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgZW5hYmxlLCB1NjQgcGVyaW9kKQ0KPiArew0KPiArICAgICAgIHN0cnVj dCBtY2hwX2NvcmVfcHdtX2NoaXAgKm1jaHBfY29yZV9wd20gPSB0b19tY2hwX2NvcmVfcHdtKGNo aXApOw0KPiArICAgICAgIHU4IGNoYW5uZWxfZW5hYmxlLCByZWdfb2Zmc2V0LCBzaGlmdDsNCj4g Kw0KPiArICAgICAgIC8qDQo+ICsgICAgICAgICogVGhlcmUgYXJlIHR3byBhZGphY2VudCA4IGJp dCBjb250cm9sIHJlZ3MsIHRoZSBsb3dlciByZWcgY29udHJvbHMNCj4gKyAgICAgICAgKiAwLTcg YW5kIHRoZSB1cHBlciByZWcgOC0xNS4gQ2hlY2sgaWYgdGhlIHB3bSBpcyBpbiB0aGUgdXBwZXIg cmVnDQo+ICsgICAgICAgICogYW5kIGlmIHNvLCBvZmZzZXQgYnkgdGhlIGJ1cyB3aWR0aC4NCj4g KyAgICAgICAgKi8NCj4gKyAgICAgICByZWdfb2Zmc2V0ID0gTUNIUENPUkVQV01fRU4ocHdtLT5o d3B3bSA+PiAzKTsNCj4gKyAgICAgICBzaGlmdCA9IHB3bS0+aHdwd20gJiA3Ow0KPiArDQo+ICsg ICAgICAgY2hhbm5lbF9lbmFibGUgPSByZWFkYl9yZWxheGVkKG1jaHBfY29yZV9wd20tPmJhc2Ug KyByZWdfb2Zmc2V0KTsNCj4gKyAgICAgICBjaGFubmVsX2VuYWJsZSAmPSB+KDEgPDwgc2hpZnQp Ow0KPiArICAgICAgIGNoYW5uZWxfZW5hYmxlIHw9IChlbmFibGUgPDwgc2hpZnQpOw0KPiArDQo+ ICsgICAgICAgd3JpdGVsX3JlbGF4ZWQoY2hhbm5lbF9lbmFibGUsIG1jaHBfY29yZV9wd20tPmJh c2UgKyByZWdfb2Zmc2V0KTsNCj4gKyAgICAgICBtY2hwX2NvcmVfcHdtLT5jaGFubmVsX2VuYWJs ZWQgJj0gfkJJVChwd20tPmh3cHdtKTsNCj4gKyAgICAgICBtY2hwX2NvcmVfcHdtLT5jaGFubmVs X2VuYWJsZWQgfD0gZW5hYmxlIDw8IHB3bS0+aHdwd207DQo+ICsNCj4gKyAgICAgICAvKg0KPiAr ICAgICAgICAqIE5vdGlmeSB0aGUgYmxvY2sgdG8gdXBkYXRlIHRoZSB3YXZlZm9ybSBmcm9tIHRo ZSBzaGFkb3cgcmVnaXN0ZXJzLg0KPiArICAgICAgICAqIFRoZSB1cGRhdGVkIHZhbHVlcyB3aWxs IG5vdCBhcHBlYXIgb24gdGhlIGJ1cyB1bnRpbCB0aGV5IGhhdmUgYmVlbg0KPiArICAgICAgICAq IGFwcGxpZWQgdG8gdGhlIHdhdmVmb3JtIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgcGVy aW9kLiBXZSBtdXN0DQo+ICsgICAgICAgICogd3JpdGUgdGhlc2UgcmVnaXN0ZXJzIGFuZCB3YWl0 IGZvciB0aGVtIHRvIGJlIGFwcGxpZWQgYmVmb3JlIGNhbGxpbmcNCj4gKyAgICAgICAgKiBlbmFi bGUoKS4NCj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBpZiAobWNocF9jb3JlX3B3bS0+c3luY191 cGRhdGVfbWFzayAmICgxIDw8IHB3bS0+aHdwd20pKSB7DQo+ICsgICAgICAgICAgICAgICB3cml0 ZWxfcmVsYXhlZCgxVSwgbWNocF9jb3JlX3B3bS0+YmFzZSArIE1DSFBDT1JFUFdNX1NZTkNfVVBE KTsNCj4gKyAgICAgICAgICAgICAgIHVzbGVlcF9yYW5nZShwZXJpb2QsIHBlcmlvZCAqIDIpOw0K PiArICAgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHU2NCBtY2hwX2NvcmVfcHdtX2NhbGNf ZHV0eShzdHJ1Y3QgcHdtX2NoaXAgKmNoaXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd20sDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHB3bV9zdGF0ZSAq c3RhdGUsIHU4IHByZXNjYWxlLCB1OCBwZXJpb2Rfc3RlcHMpDQo+ICt7DQo+ICsgICAgICAgc3Ry dWN0IG1jaHBfY29yZV9wd21fY2hpcCAqbWNocF9jb3JlX3B3bSA9IHRvX21jaHBfY29yZV9wd20o Y2hpcCk7DQo+ICsgICAgICAgdTY0IGR1dHlfc3RlcHMsIHBlcmlvZCwgdG1wOw0KPiArICAgICAg IHUxNiBwcmVzY2FsZV92YWwgPSBQUkVHX1RPX1ZBTChwcmVzY2FsZSk7DQo+ICsgICAgICAgdTgg cGVyaW9kX3N0ZXBzX3ZhbCA9IFBSRUdfVE9fVkFMKHBlcmlvZF9zdGVwcyk7DQo+ICsNCj4gKyAg ICAgICBwZXJpb2QgPSBwZXJpb2Rfc3RlcHNfdmFsICogcHJlc2NhbGVfdmFsICogTlNFQ19QRVJf U0VDOw0KPiArICAgICAgIHBlcmlvZCA9IERJVjY0X1U2NF9ST1VORF9VUChwZXJpb2QsIGNsa19n ZXRfcmF0ZShtY2hwX2NvcmVfcHdtLT5jbGspKTsNCj4gKw0KPiArICAgICAgIC8qDQo+ICsgICAg ICAgICogQ2FsY3VsYXRlIHRoZSBkdXR5IGN5Y2xlIGluIG11bHRpcGxlcyBvZiB0aGUgcHJlc2Nh bGVkIHBlcmlvZDoNCj4gKyAgICAgICAgKiBkdXR5X3N0ZXBzID0gZHV0eV9pbl9ucyAvIHN0ZXBf aW5fbnMNCj4gKyAgICAgICAgKiBzdGVwX2luX25zID0gKHByZXNjYWxlICogTlNFQ19QRVJfU0VD KSAvIGNsa19yYXRlDQo+ICsgICAgICAgICogVGhlIGNvZGUgYmVsb3cgaXMgcmVhcnJhbmdlZCBz bGlnaHRseSB0byBvbmx5IGRpdmlkZSBvbmNlLg0KPiArICAgICAgICAqLw0KPiArICAgICAgIGR1 dHlfc3RlcHMgPSBzdGF0ZS0+ZHV0eV9jeWNsZSAqIGNsa19nZXRfcmF0ZShtY2hwX2NvcmVfcHdt LT5jbGspOw0KPiArICAgICAgIHRtcCA9IHByZXNjYWxlX3ZhbCAqIE5TRUNfUEVSX1NFQzsNCj4g KyAgICAgICByZXR1cm4gZGl2NjRfdTY0KGR1dHlfc3RlcHMsIHRtcCk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyB2b2lkIG1jaHBfY29yZV9wd21fYXBwbHlfZHV0eShzdHJ1Y3QgcHdtX2NoaXAgKmNo aXAsIHN0cnVjdCBwd21fZGV2aWNlICpwd20sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcHdtX3N0YXRlICpzdGF0ZSwgdTY0IGR1dHlfc3RlcHMs IHU4IHBlcmlvZF9zdGVwcykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbWNocF9jb3JlX3B3bV9j aGlwICptY2hwX2NvcmVfcHdtID0gdG9fbWNocF9jb3JlX3B3bShjaGlwKTsNCj4gKyAgICAgICB1 OCBwb3NlZGdlLCBuZWdlZGdlOw0KPiArICAgICAgIHU4IHBlcmlvZF9zdGVwc192YWwgPSBQUkVH X1RPX1ZBTChwZXJpb2Rfc3RlcHMpOw0KPiArDQo+ICsgICAgICAgLyoNCj4gKyAgICAgICAgKiBU dXJuIHRoZSBvdXRwdXQgb24gdW5sZXNzIHBvc2VkZ2UgPT0gbmVnZWRnZSwgaW4gd2hpY2ggY2Fz ZSB0aGUNCj4gKyAgICAgICAgKiBkdXR5IGlzIGludGVuZGVkIHRvIGJlIDAsIGJ1dCBsaW1pdGF0 aW9ucyBvZiB0aGUgSVAgYmxvY2sgZG9uJ3QNCj4gKyAgICAgICAgKiBhbGxvdyBhIHplcm8gbGVu Z3RoIGR1dHkgY3ljbGUgLSBzbyBqdXN0IHNldCB0aGUgbWF4IGhpZ2gvbG93IHRpbWUNCj4gKyAg ICAgICAgKiByZXNwZWN0aXZlbHkuDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaWYgKHN0YXRl LT5wb2xhcml0eSA9PSBQV01fUE9MQVJJVFlfSU5WRVJTRUQpIHsNCj4gKyAgICAgICAgICAgICAg IG5lZ2VkZ2UgPSAhZHV0eV9zdGVwcyA/IHBlcmlvZF9zdGVwc192YWwgOiAwdTsNCj4gKyAgICAg ICAgICAgICAgIHBvc2VkZ2UgPSBkdXR5X3N0ZXBzOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsg ICAgICAgICAgICAgICBwb3NlZGdlID0gIWR1dHlfc3RlcHMgPyBwZXJpb2Rfc3RlcHNfdmFsIDog MHU7DQo+ICsgICAgICAgICAgICAgICBuZWdlZGdlID0gZHV0eV9zdGVwczsNCj4gKyAgICAgICB9 DQo+ICsNCj4gKyAgICAgICB3cml0ZWxfcmVsYXhlZChwb3NlZGdlLCBtY2hwX2NvcmVfcHdtLT5i YXNlICsgTUNIUENPUkVQV01fUE9TRURHRShwd20tPmh3cHdtKSk7DQo+ICsgICAgICAgd3JpdGVs X3JlbGF4ZWQobmVnZWRnZSwgbWNocF9jb3JlX3B3bS0+YmFzZSArIE1DSFBDT1JFUFdNX05FR0VE R0UocHdtLT5od3B3bSkpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1jaHBfY29yZV9wd21f Y2FsY19wZXJpb2Qoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBjb25zdCBzdHJ1Y3QgcHdtX3N0YXRl ICpzdGF0ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4ICpwcmVz Y2FsZSwgdTggKnBlcmlvZF9zdGVwcykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgbWNocF9jb3Jl X3B3bV9jaGlwICptY2hwX2NvcmVfcHdtID0gdG9fbWNocF9jb3JlX3B3bShjaGlwKTsNCj4gKyAg ICAgICB1NjQgdG1wLCBjbGtfcmF0ZTsNCj4gKw0KPiArICAgICAgIC8qDQo+ICsgICAgICAgICog Q2FsY3VsYXRlIHRoZSBwZXJpb2QgY3ljbGVzIGFuZCBwcmVzY2FsZSB2YWx1ZXMuDQo+ICsgICAg ICAgICogVGhlIHJlZ2lzdGVycyBhcmUgZWFjaCA4IGJpdHMgd2lkZSAmIG11bHRpcGxpZWQgdG8g Y29tcHV0ZSB0aGUgcGVyaW9kDQo+ICsgICAgICAgICogdXNpbmcgdGhlIGZvcm11bGE6DQo+ICsg ICAgICAgICogKGNsb2NrX3BlcmlvZCkgKiAocHJlc2NhbGUgKyAxKSAqIChwZXJpb2Rfc3RlcHMg KyAxKQ0KPiArICAgICAgICAqIHNvIHRoZSBtYXhpbXVtIHBlcmlvZCB0aGF0IGNhbiBiZSBnZW5l cmF0ZWQgaXMgMHgxMDAwMCB0aW1lcyB0aGUNCj4gKyAgICAgICAgKiBwZXJpb2Qgb2YgdGhlIGlu cHV0IGNsb2NrLg0KPiArICAgICAgICAqIEhvd2V2ZXIsIGR1ZSB0byB0aGUgZGVzaWduIG9mIHRo ZSAiaGFyZHdhcmUiLCBpdCBpcyBub3QgcG9zc2libGUgdG8NCj4gKyAgICAgICAgKiBhdHRhaW4g YSAxMDAlIGR1dHkgY3ljbGUgaWYgdGhlIGZ1bGwgcmFuZ2Ugb2YgcGVyaW9kX3N0ZXBzIGlzIHVz ZWQuDQo+ICsgICAgICAgICogVGhlcmVmb3JlIHBlcmlvZF9zdGVwcyBpcyByZXN0cmljdGVkIHRv IDB4RkUgYW5kIHRoZSBtYXhpbXVtIG11bHRpcGxlDQo+ICsgICAgICAgICogb2YgdGhlIGNsb2Nr IHBlcmlvZCBhdHRhaW5hYmxlIGlzIDB4RkYwMC4NCj4gKyAgICAgICAgKi8NCj4gKyAgICAgICBj bGtfcmF0ZSA9IGNsa19nZXRfcmF0ZShtY2hwX2NvcmVfcHdtLT5jbGspOw0KPiArDQo+ICsgICAg ICAgLyoNCj4gKyAgICAgICAgKiBJZiBjbGtfcmF0ZSBpcyB0b28gYmlnLCB0aGUgZm9sbG93aW5n IG11bHRpcGxpY2F0aW9uIG1pZ2h0IG92ZXJmbG93Lg0KPiArICAgICAgICAqIEhvd2V2ZXIgdGhp cyBpcyBpbXBsYXVzaWJsZSwgYXMgdGhlIGZhYnJpYyBvZiBjdXJyZW50IEZQR0FzIGNhbm5vdA0K PiArICAgICAgICAqIHByb3ZpZGUgY2xvY2tzIGF0IGEgcmF0ZSBoaWdoIGVub3VnaC4NCj4gKyAg ICAgICAgKi8NCj4gKyAgICAgICBpZiAoY2xrX3JhdGUgPj0gTlNFQ19QRVJfU0VDKQ0KPiArICAg ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgICB0bXAgPSBtdWxfdTY0 X3U2NF9kaXZfdTY0KHN0YXRlLT5wZXJpb2QsIGNsa19yYXRlLCBOU0VDX1BFUl9TRUMpOw0KPiAr DQo+ICsgICAgICAgaWYgKHRtcCA+PSBNQ0hQQ09SRVBXTV9QRVJJT0RfTUFYKSB7DQo+ICsgICAg ICAgICAgICAgICAqcHJlc2NhbGUgPSBNQ0hQQ09SRVBXTV9QUkVTQ0FMRV9NQVggLSAxOw0KPiAr ICAgICAgICAgICAgICAgKnBlcmlvZF9zdGVwcyA9IE1DSFBDT1JFUFdNX1BFUklPRF9TVEVQU19N QVggLSAxOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgKnByZXNjYWxlID0gZGl2X3U2NCh0bXAsIE1DSFBDT1JFUFdNX1BFUklPRF9TVEVQ U19NQVgpOw0KPiArICAgICAgIC8qIFBSRUdfVE9fVkFMKCkgY2FuIHByb2R1Y2UgYSB2YWx1ZSBs YXJnZXIgdGhhbiBVSU5UOF9NQVggKi8NCj4gKyAgICAgICAqcGVyaW9kX3N0ZXBzID0gZGl2X3U2 NCh0bXAsIFBSRUdfVE9fVkFMKCh1MzIpKnByZXNjYWxlKSkgLSAxOw0KPiArDQo+ICsgICAgICAg cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBtY2hwX2NvcmVfcHdt X2FwcGx5X3BlcmlvZChzdHJ1Y3QgbWNocF9jb3JlX3B3bV9jaGlwICptY2hwX2NvcmVfcHdtLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggcHJlc2Nh bGUsIHU4IHBlcmlvZF9zdGVwcykNCj4gK3sNCj4gKyAgICAgICB3cml0ZWxfcmVsYXhlZChwcmVz Y2FsZSwgbWNocF9jb3JlX3B3bS0+YmFzZSArIE1DSFBDT1JFUFdNX1BSRVNDQUxFKTsNCj4gKyAg ICAgICB3cml0ZWxfcmVsYXhlZChwZXJpb2Rfc3RlcHMsIG1jaHBfY29yZV9wd20tPmJhc2UgKyBN Q0hQQ09SRVBXTV9QRVJJT0QpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1jaHBfY29yZV9w d21fYXBwbHkoc3RydWN0IHB3bV9jaGlwICpjaGlwLCBzdHJ1Y3QgcHdtX2RldmljZSAqcHdtLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHB3bV9zdGF0ZSAq c3RhdGUpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IG1jaHBfY29yZV9wd21fY2hpcCAqbWNocF9j b3JlX3B3bSA9IHRvX21jaHBfY29yZV9wd20oY2hpcCk7DQo+ICsgICAgICAgc3RydWN0IHB3bV9z dGF0ZSBjdXJyZW50X3N0YXRlID0gcHdtLT5zdGF0ZTsNCj4gKyAgICAgICBib29sIHBlcmlvZF9s b2NrZWQ7DQo+ICsgICAgICAgdTY0IGR1dHlfc3RlcHM7DQo+ICsgICAgICAgdTE2IGNoYW5uZWxf ZW5hYmxlZDsNCj4gKyAgICAgICB1OCBwcmVzY2FsZSwgcGVyaW9kX3N0ZXBzLCBod19wcmVzY2Fs ZSwgaHdfcGVyaW9kX3N0ZXBzOw0KPiArICAgICAgIGludCByZXQ7DQo+ICsNCj4gKyAgICAgICBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJm1jaHBfY29yZV9wd20tPmxvY2spOw0KPiArDQo+ICsg ICAgICAgaWYgKCFzdGF0ZS0+ZW5hYmxlZCkgew0KPiArICAgICAgICAgICAgICAgbWNocF9jb3Jl X3B3bV9lbmFibGUoY2hpcCwgcHdtLCBmYWxzZSwgY3VycmVudF9zdGF0ZS5wZXJpb2QpOw0KPiAr ICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZtY2hwX2NvcmVfcHdtLT5sb2NrKTsNCj4gKyAg ICAgICAgICAgICAgIHJldHVybiAwOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIC8qDQo+ ICsgICAgICAgICogSWYgdGhlIG9ubHkgdGhpbmcgdGhhdCBoYXMgY2hhbmdlZCBpcyB0aGUgZHV0 eSBjeWNsZSBvciB0aGUgcG9sYXJpdHksDQo+ICsgICAgICAgICogd2UgY2FuIHNob3J0Y3V0IHRo ZSBjYWxjdWxhdGlvbnMgYW5kIGp1c3QgY29tcHV0ZS9hcHBseSB0aGUgbmV3IGR1dHkNCj4gKyAg ICAgICAgKiBjeWNsZSBwb3MgJiBuZWcgZWRnZXMNCj4gKyAgICAgICAgKiBBcyBhbGwgdGhlIGNo YW5uZWxzIHNoYXJlIHRoZSBzYW1lIHBlcmlvZCwgZG8gbm90IGFsbG93IGl0IHRvIGJlDQo+ICsg ICAgICAgICogY2hhbmdlZCBpZiBhbnkgb3RoZXIgY2hhbm5lbHMgYXJlIGVuYWJsZWQuDQo+ICsg ICAgICAgICogSWYgdGhlIHBlcmlvZCBpcyBsb2NrZWQsIGl0IG1heSBub3QgYmUgcG9zc2libGUg dG8gdXNlIGEgcGVyaW9kDQo+ICsgICAgICAgICogbGVzcyB0aGFuIHRoYXQgcmVxdWVzdGVkLiBJ biB0aGF0IGNhc2UsIHdlIGp1c3QgYWJvcnQuDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgcGVy aW9kX2xvY2tlZCA9IG1jaHBfY29yZV9wd20tPmNoYW5uZWxfZW5hYmxlZCAmIH4oMSA8PCBwd20t Pmh3cHdtKTsNCj4gKw0KPiArICAgICAgIGlmIChwZXJpb2RfbG9ja2VkKSB7DQo+ICsgICAgICAg ICAgICAgICBtY2hwX2NvcmVfcHdtX2NhbGNfcGVyaW9kKGNoaXAsIHN0YXRlLCAmcHJlc2NhbGUs ICZwZXJpb2Rfc3RlcHMpOw0KPiArICAgICAgICAgICAgICAgaHdfcHJlc2NhbGUgPSByZWFkYl9y ZWxheGVkKG1jaHBfY29yZV9wd20tPmJhc2UgKyBNQ0hQQ09SRVBXTV9QUkVTQ0FMRSk7DQo+ICsg ICAgICAgICAgICAgICBod19wZXJpb2Rfc3RlcHMgPSByZWFkYl9yZWxheGVkKG1jaHBfY29yZV9w d20tPmJhc2UgKyBNQ0hQQ09SRVBXTV9QRVJJT0QpOw0KPiArDQo+ICsgICAgICAgICAgICAgICBp ZiAoKHBlcmlvZF9zdGVwcyAqIHByZXNjYWxlKSA8IChod19wZXJpb2Rfc3RlcHMgKiBod19wcmVz Y2FsZSkpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbXV0ZXhfdW5sb2NrKCZtY2hwX2Nv cmVfcHdtLT5sb2NrKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHByZXNjYWxlID0g aHdfcHJlc2NhbGU7DQo+ICsgICAgICAgICAgICAgICBwZXJpb2Rfc3RlcHMgPSBod19wZXJpb2Rf c3RlcHM7DQo+ICsgICAgICAgfSBlbHNlIGlmICghY3VycmVudF9zdGF0ZS5lbmFibGVkIHx8IGN1 cnJlbnRfc3RhdGUucGVyaW9kICE9IHN0YXRlLT5wZXJpb2QpIHsNCj4gKyAgICAgICAgICAgICAg IHJldCA9IG1jaHBfY29yZV9wd21fY2FsY19wZXJpb2QoY2hpcCwgc3RhdGUsICZwcmVzY2FsZSwg JnBlcmlvZF9zdGVwcyk7DQo+ICsgICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIG11dGV4X3VubG9jaygmbWNocF9jb3JlX3B3bS0+bG9jayk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgICAgICAgICAgICB9DQo+ ICsgICAgICAgICAgICAgICBtY2hwX2NvcmVfcHdtX2FwcGx5X3BlcmlvZChtY2hwX2NvcmVfcHdt LCBwcmVzY2FsZSwgcGVyaW9kX3N0ZXBzKTsNCj4gKyAgICAgICB9IGVsc2Ugew0KPiArICAgICAg ICAgICAgICAgcHJlc2NhbGUgPSByZWFkYl9yZWxheGVkKG1jaHBfY29yZV9wd20tPmJhc2UgKyBN Q0hQQ09SRVBXTV9QUkVTQ0FMRSk7DQo+ICsgICAgICAgICAgICAgICBwZXJpb2Rfc3RlcHMgPSBy ZWFkYl9yZWxheGVkKG1jaHBfY29yZV9wd20tPmJhc2UgKyBNQ0hQQ09SRVBXTV9QRVJJT0QpOw0K PiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGR1dHlfc3RlcHMgPSBtY2hwX2NvcmVfcHdtX2Nh bGNfZHV0eShjaGlwLCBwd20sIHN0YXRlLCBwcmVzY2FsZSwgcGVyaW9kX3N0ZXBzKTsNCj4gKw0K PiArICAgICAgIC8qDQo+ICsgICAgICAgICogQmVjYXVzZSB0aGUgcGVyaW9kIGlzIHBlciBjaGFu bmVsLCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSByZXF1ZXN0ZWQNCj4gKyAgICAgICAgKiBkdXR5 IGN5Y2xlIGlzIGxvbmdlciB0aGFuIHRoZSBwZXJpb2QsIGluIHdoaWNoIGNhc2UgY2FwIGl0IHRv IHRoZQ0KPiArICAgICAgICAqIHBlcmlvZCwgSU9XIGEgMTAwJSBkdXR5IGN5Y2xlLg0KPiArICAg ICAgICAqLw0KPiArICAgICAgIGlmIChkdXR5X3N0ZXBzID4gcGVyaW9kX3N0ZXBzKQ0KPiArICAg ICAgICAgICAgICAgZHV0eV9zdGVwcyA9IHBlcmlvZF9zdGVwcyArIDE7DQo+ICsNCj4gKyAgICAg ICBtY2hwX2NvcmVfcHdtX2FwcGx5X2R1dHkoY2hpcCwgcHdtLCBzdGF0ZSwgZHV0eV9zdGVwcywg cGVyaW9kX3N0ZXBzKTsNCj4gKw0KPiArICAgICAgIG1jaHBfY29yZV9wd21fZW5hYmxlKGNoaXAs IHB3bSwgdHJ1ZSwgc3RhdGUtPnBlcmlvZCk7DQo+ICsNCj4gKyAgICAgICBtdXRleF91bmxvY2so Jm1jaHBfY29yZV9wd20tPmxvY2spOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyB2b2lkIG1jaHBfY29yZV9wd21fZ2V0X3N0YXRlKHN0cnVjdCBwd21fY2hp cCAqY2hpcCwgc3RydWN0IHB3bV9kZXZpY2UgKnB3bSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHB3bV9zdGF0ZSAqc3RhdGUpDQo+ICt7DQo+ICsgICAgICAg c3RydWN0IG1jaHBfY29yZV9wd21fY2hpcCAqbWNocF9jb3JlX3B3bSA9IHRvX21jaHBfY29yZV9w d20oY2hpcCk7DQo+ICsgICAgICAgdTE2IHByZXNjYWxlOw0KPiArICAgICAgIHU4IHBlcmlvZF9z dGVwcywgZHV0eV9zdGVwcywgcG9zZWRnZSwgbmVnZWRnZTsNCj4gKyAgICAgICB1MTYgY2hhbm5l bF9lbmFibGVkOw0KPiArDQo+ICsgICAgICAgbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZtY2hw X2NvcmVfcHdtLT5sb2NrKTsNCj4gKw0KPiArICAgICAgIGNoYW5uZWxfZW5hYmxlZCA9IG1jaHBf Y29yZV9wd20tPmNoYW5uZWxfZW5hYmxlZDsNCj4gKw0KPiArICAgICAgIGlmIChjaGFubmVsX2Vu YWJsZWQgJiAoMSA8PCBwd20tPmh3cHdtKSkNCj4gKyAgICAgICAgICAgICAgIHN0YXRlLT5lbmFi bGVkID0gdHJ1ZTsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICBzdGF0ZS0+ZW5h YmxlZCA9IGZhbHNlOw0KPiArDQo+ICsgICAgICAgcHJlc2NhbGUgPSBQUkVHX1RPX1ZBTChyZWFk Yl9yZWxheGVkKG1jaHBfY29yZV9wd20tPmJhc2UgKyBNQ0hQQ09SRVBXTV9QUkVTQ0FMRSkpOw0K PiArDQo+ICsgICAgICAgcGVyaW9kX3N0ZXBzID0gUFJFR19UT19WQUwocmVhZGJfcmVsYXhlZCht Y2hwX2NvcmVfcHdtLT5iYXNlICsgTUNIUENPUkVQV01fUEVSSU9EKSk7DQo+ICsgICAgICAgc3Rh dGUtPnBlcmlvZCA9IHBlcmlvZF9zdGVwcyAqIHByZXNjYWxlICogTlNFQ19QRVJfU0VDOw0KPiAr ICAgICAgIHN0YXRlLT5wZXJpb2QgPSBESVY2NF9VNjRfUk9VTkRfVVAoc3RhdGUtPnBlcmlvZCwg Y2xrX2dldF9yYXRlKG1jaHBfY29yZV9wd20tPmNsaykpOw0KPiArDQo+ICsgICAgICAgcG9zZWRn ZSA9IHJlYWRiX3JlbGF4ZWQobWNocF9jb3JlX3B3bS0+YmFzZSArIE1DSFBDT1JFUFdNX1BPU0VE R0UocHdtLT5od3B3bSkpOw0KPiArICAgICAgIG5lZ2VkZ2UgPSByZWFkYl9yZWxheGVkKG1jaHBf Y29yZV9wd20tPmJhc2UgKyBNQ0hQQ09SRVBXTV9ORUdFREdFKHB3bS0+aHdwd20pKTsNCj4gKw0K PiArICAgICAgIGlmIChuZWdlZGdlID09IHBvc2VkZ2UpIHsNCj4gKyAgICAgICAgICAgICAgIHN0 YXRlLT5kdXR5X2N5Y2xlID0gc3RhdGUtPnBlcmlvZCAvIDI7DQo+ICsgICAgICAgfSBlbHNlIHsN Cj4gKyAgICAgICAgICAgICAgIGR1dHlfc3RlcHMgPSBhYnMoKHMxNilwb3NlZGdlIC0gKHMxNilu ZWdlZGdlKTsNCj4gKyAgICAgICAgICAgICAgIHN0YXRlLT5kdXR5X2N5Y2xlID0gZHV0eV9zdGVw cyAqIHByZXNjYWxlICogTlNFQ19QRVJfU0VDOw0KPiArICAgICAgICAgICAgICAgc3RhdGUtPmR1 dHlfY3ljbGUgPSBESVY2NF9VNjRfUk9VTkRfVVAoc3RhdGUtPmR1dHlfY3ljbGUsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGtfZ2V0 X3JhdGUobWNocF9jb3JlX3B3bS0+Y2xrKSk7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAg c3RhdGUtPnBvbGFyaXR5ID0gbmVnZWRnZSA8IHBvc2VkZ2UgPyBQV01fUE9MQVJJVFlfSU5WRVJT RUQgOiBQV01fUE9MQVJJVFlfTk9STUFMOw0KPiArDQo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZt Y2hwX2NvcmVfcHdtLT5sb2NrKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBw d21fb3BzIG1jaHBfY29yZV9wd21fb3BzID0gew0KPiArICAgICAgIC5hcHBseSA9IG1jaHBfY29y ZV9wd21fYXBwbHksDQo+ICsgICAgICAgLmdldF9zdGF0ZSA9IG1jaHBfY29yZV9wd21fZ2V0X3N0 YXRlLA0KPiArICAgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLA0KPiArfTsNCj4gKw0KPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgbWNocF9jb3JlX29mX21hdGNoW10gPSB7DQo+ ICsgICAgICAgew0KPiArICAgICAgICAgICAgICAgLmNvbXBhdGlibGUgPSAibWljcm9jaGlwLGNv cmVwd20tcnRsLXY0IiwNCj4gKyAgICAgICB9LA0KPiArICAgICAgIHsgLyogc2VudGluZWwgKi8g fQ0KPiArfTsNCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1jaHBfY29yZV9vZl9tYXRjaCk7 DQo+ICsNCj4gK3N0YXRpYyBpbnQgbWNocF9jb3JlX3B3bV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBtY2hwX2NvcmVfcHdtX2NoaXAg Km1jaHBfcHdtOw0KPiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAqcmVnczsNCj4gKyAgICAgICBp bnQgcmV0Ow0KPiArDQo+ICsgICAgICAgbWNocF9wd20gPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRl diwgc2l6ZW9mKCptY2hwX3B3bSksIEdGUF9LRVJORUwpOw0KPiArICAgICAgIGlmICghbWNocF9w d20pDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICAgIG1j aHBfcHdtLT5iYXNlID0gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3VyY2UocGRl diwgMCwgJnJlZ3MpOw0KPiArICAgICAgIGlmIChJU19FUlIobWNocF9wd20tPmJhc2UpKQ0KPiAr ICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIobWNocF9wd20tPmJhc2UpOw0KPiArDQo+ICsg ICAgICAgbWNocF9wd20tPmNsayA9IGRldm1fY2xrX2dldF9lbmFibGVkKCZwZGV2LT5kZXYsIE5V TEwpOw0KPiArICAgICAgIGlmIChJU19FUlIobWNocF9wd20tPmNsaykpDQo+ICsgICAgICAgICAg ICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCBQVFJfRVJSKG1jaHBfcHdtLT5j bGspLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBn ZXQgUFdNIGNsb2NrXG4iKTsNCj4gKw0KPiArICAgICAgIGlmIChvZl9wcm9wZXJ0eV9yZWFkX3Uz MihwZGV2LT5kZXYub2Zfbm9kZSwgIm1pY3JvY2hpcCxzeW5jLXVwZGF0ZS1tYXNrIiwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1jaHBfcHdtLT5zeW5jX3VwZGF0ZV9tYXNr KSkNCj4gKyAgICAgICAgICAgICAgIG1jaHBfcHdtLT5zeW5jX3VwZGF0ZV9tYXNrID0gMHU7DQo+ ICsNCj4gKyAgICAgICBtdXRleF9pbml0KCZtY2hwX3B3bS0+bG9jayk7DQo+ICsNCj4gKyAgICAg ICBtY2hwX3B3bS0+Y2hpcC5kZXYgPSAmcGRldi0+ZGV2Ow0KPiArICAgICAgIG1jaHBfcHdtLT5j aGlwLm9wcyA9ICZtY2hwX2NvcmVfcHdtX29wczsNCj4gKyAgICAgICBtY2hwX3B3bS0+Y2hpcC5u cHdtID0gMTY7DQo+ICsNCj4gKyAgICAgICByZXQgPSBkZXZtX3B3bWNoaXBfYWRkKCZwZGV2LT5k ZXYsICZtY2hwX3B3bS0+Y2hpcCk7DQo+ICsgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCByZXQsICJmYWlsZWQgdG8g YWRkIFBXTSBjaGlwXG4iKTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtY2hwX2NvcmVfcHdtX2RyaXZlciA9IHsN Cj4gKyAgICAgICAuZHJpdmVyID0gew0KPiArICAgICAgICAgICAgICAgLm5hbWUgPSAibWNocC1j b3JlLXB3bSIsDQo+ICsgICAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSBtY2hwX2NvcmVf b2ZfbWF0Y2gsDQo+ICsgICAgICAgfSwNCj4gKyAgICAgICAucHJvYmUgPSBtY2hwX2NvcmVfcHdt X3Byb2JlLA0KPiArfTsNCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWNocF9jb3JlX3B3bV9k cml2ZXIpOw0KPiArDQo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIik7DQo+ICtNT0RVTEVfQVVUSE9S KCJDb25vciBEb29sZXkgPGNvbm9yLmRvb2xleUBtaWNyb2NoaXAuY29tPiIpOw0KPiArTU9EVUxF X0RFU0NSSVBUSU9OKCJjb3JlUFdNIGRyaXZlciBmb3IgTWljcm9jaGlwIEZQR0FzIik7DQo+IC0t DQo+IDIuMzYuMQ0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQo+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdA0KPiBsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnDQo+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtcmlzY3YNCg0K