Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp2520729rwl; Mon, 27 Mar 2023 01:05:13 -0700 (PDT) X-Google-Smtp-Source: AKy350b6wx+rskBG0yjKYKE7PgtEpfDE8gQq++oHCcfhE2Hay1euM+P/PB/M3S91GPRzEvBmZ9Rv X-Received: by 2002:a17:90b:1643:b0:23a:5f51:6ee5 with SMTP id il3-20020a17090b164300b0023a5f516ee5mr13002909pjb.12.1679904313212; Mon, 27 Mar 2023 01:05:13 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1679904313; cv=pass; d=google.com; s=arc-20160816; b=0eu+gMdMmYxXqhZB/lSlzn0+iiQFhz/BfLEfqX+C+cui2bUHYrBhWu1J0ozL6iPOV1 RjhqrHofH8wL46ZOtUtRf01/Pl6NoEheWN2r/ACNvrWOvGws2+/IP5gSXVjrX4xppcS1 518qYXC2kZOaO4LI8F6ZApeoXoxzEq/4N6dIkC08j3KjLDas9vaNmEMy4skcXP+9Qycl 0e7CnZT5kSPAE1AT+0vtviCBCRRhVKP/tLSgs69TIHKgbmKgqly7ofEU4/Fv8RSHD0vJ kKvGUcqH3Pd/8yoJgokxKdhAUdCRD67It8fRZnmLLnz342oaWSFjaoYzl4QA3c1hDT+X cq8w== 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:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature:dkim-signature; bh=NrmvuuzBYa4q1qlKHtShEGlseb2hiWWP3WhNFhcH+Kw=; b=kzjpEhfjTZv7hnTZrMGLgKhOR8gFlMZ+xpq7SCQ07VZJpk4RWcuud/wqnx6EHzk61H aOvhiUEWI5onhKvCmocp4rroBk33Og10k+4X0k7jB2mrWYkECK+8bcwNmzAhA08DIPNn rlBR4gowSQzrDcbRKbdSQ6JjvFW6xX+XWrvKTbabf0c4GdQdpSy6xpHVxRU2qA26QcAv IHOXKpvC0KFf/Pb0pCvfZbryzIEmkBnKhvtjo3yHcgC0je6zG9QgmAWeolMDPmJrNA97 TZoTR05DkeXhAs/XjhxpW1fdXEU3TKEGzZsCVgC2SerCUgBJ6yyZ+DBxMwM0iox53XbH AG+Q== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@microchip.com header.s=mchp header.b=JmCReynq; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b="sJR/cp1P"; 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 t3-20020a17090a2f8300b0023f18634864si9927483pjd.132.2023.03.27.01.05.00; Mon, 27 Mar 2023 01:05:13 -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=JmCReynq; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b="sJR/cp1P"; 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 S232865AbjC0Hzg (ORCPT + 99 others); Mon, 27 Mar 2023 03:55:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232392AbjC0Hz2 (ORCPT ); Mon, 27 Mar 2023 03:55:28 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91B1910F1; Mon, 27 Mar 2023 00:55:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1679903724; x=1711439724; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=NrmvuuzBYa4q1qlKHtShEGlseb2hiWWP3WhNFhcH+Kw=; b=JmCReynqh4p/UKHqfLT0EM+Fi5YIHGIjXw4fV3WjDhaHjgBpf8mXO4ku bvompQ7ybNQIdmAzEjm5JXV/2A2v9J3zHGDehroLVzBjibyx07V0elhbD fM+x/XMXwue8pdMW3gztNHkoF6xmU8JIdH9qDHNy8/Pdj7vgNLXhqneiM rI3UzQwOSbymMgjyiiyCVAf4k1ZTsvlqK5U73LvCBHqJ4fvxrYY7P+2dj KR1fSx+peeH6w8GwsV/js8EFPCzzkJ+5vbjbaaprfKiuDoxWRAVpTM99u l2zeCq/KVkVSiKQSsjlYyx0g2Am0dwftoqc35hgKosEIm8sfNAK5QVKQy w==; X-IronPort-AV: E=Sophos;i="5.98,294,1673938800"; d="scan'208";a="203551412" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 27 Mar 2023 00:55:23 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 27 Mar 2023 00:55:22 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21 via Frontend Transport; Mon, 27 Mar 2023 00:55:21 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=foUkmQjW2O2F+g09AZ/+7FJTw+yOVgcAPNVojm50UUyj86zh673g5vzYYccEqNncx9zNUDPv7DaF4/wEwvE4wOQHUVu80cGOV2ivAsszGqeYoIn6s3rurXj0zmrN2sIQvgV9gfvT/4MBlAy+I9Xa3vdadnUM13bSGnAi5EnQ5cIuno7VHITEfRG2lpE6zaYpWc3eHGfUGd0ff/VTvj+FtfPcQpeP7Rn3VXHxVLJUFi02WqXHk/JopxWTzES95We2VfRtkHszuJ4u2pWELAIUwWoEsDvi5XKndCQ8YTnRp/R67WgWozZ/+eI6DUzCCBo7tPe1mYFHfvuiX0e+5CvyLQ== 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=NrmvuuzBYa4q1qlKHtShEGlseb2hiWWP3WhNFhcH+Kw=; b=GJKW1whLw4SX5xRAoDIp4VQmxhD9SR2InEIqEfenI6ySyUSr4L+YpSuzICFezz20VSIXAKs/MuBxNaJW02ClXVOk+PI821a3fgM8VBOx7gxGCd7MiBXz0DKKUQDs6CuVto27rNtA3ZmHMXNgBnPFh0Dri/GGjY2AAbTAoNWuaIIa8Z1Gsd8eZGxlu2SP89fiYtLDCaEixInKXN6vjka1gwXEtYwfw2Cp3d58TrfjhnmSEga4emdUMBKQjDgTSREDcP8W8zEQWNkYahVogNpFoEYhiHVGRC64jwhRyZq+h3Phq4nYGfToZJ0xOKU4C6IA52ivVUSByk8+/VQGnUxsJw== 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=NrmvuuzBYa4q1qlKHtShEGlseb2hiWWP3WhNFhcH+Kw=; b=sJR/cp1PezfACz+bMWn4NorHnZd8qUs0+i+F+56V++e2B4s6cKcN5xCVW6FyKMTCW0PaLIbk1FtbFhY8dlqa5oOoE8/UR4cCSDErs+DZHd5gou2e2AGuGY+Iy3IhL+ENC/EGDPh7TbCEt9/kYkA6ZQr6483DvH+jAcA5YrEijDc= Received: from DM4PR11MB5358.namprd11.prod.outlook.com (2603:10b6:5:395::7) by CH0PR11MB5361.namprd11.prod.outlook.com (2603:10b6:610:b8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.29; Mon, 27 Mar 2023 07:55:17 +0000 Received: from DM4PR11MB5358.namprd11.prod.outlook.com ([fe80::60cd:a09b:d7fe:5b72]) by DM4PR11MB5358.namprd11.prod.outlook.com ([fe80::60cd:a09b:d7fe:5b72%4]) with mapi id 15.20.6222.030; Mon, 27 Mar 2023 07:55:17 +0000 From: To: , , , , , CC: , , , , , , , , Subject: Re: [PATCH V3] can: usb: f81604: add Fintek F81604 support Thread-Topic: [PATCH V3] can: usb: f81604: add Fintek F81604 support Thread-Index: AQHZYGqpLMAm53nftkqQc76N9xY+Ia8OQhiA Date: Mon, 27 Mar 2023 07:55:17 +0000 Message-ID: References: <20230327051048.11589-1-peter_hong@fintek.com.tw> In-Reply-To: <20230327051048.11589-1-peter_hong@fintek.com.tw> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: aerc 0.14.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR11MB5358:EE_|CH0PR11MB5361:EE_ x-ms-office365-filtering-correlation-id: 84f02729-fdf8-45b5-bdd8-08db2e989ae6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 32cp3hqR6Q51dBtulkuR0zx2TRnlApSCv5z0U5hlYJgrypGeLz9BCpfCFMs/3xZ3i0iiocZFVCiJLuh11sFXVx9A1ok3Y6k3Kmbbuen901sfxEaIF9ihrfCsCjDF5C1hTZLzy7EkUbmRfT+EoA2jKh8YJLH1fm91wMzxAj8CPHjkfl0gASwunlU4AYF3iyCBjTIdhGNQR6CibsgN6u69I6aWLQu+VuuX3cFeAW1waAgtYbJ1qn6WE1lVXk+cOnzgmK/CZc3byf5mosQ5eVVH3EtLOlnNJ4EsAVhkX4OLcrMCV8sQdzMmBg6pgmJQIOixC49rjBE5bHkJuhim+8WXzPIBiG62yD/zINb8HOG8aHSDWA39672/xkhJ0kAD+RIyLRGjr/qDv3yfePq4jUVNoIg1JLKIM/kqB5Jxmg/1dhfHM0+uHADp3AMvrs+z/aGuYsoVLc1/+DhnfkNxXFnddpOuXLr8nKVXP+Ohq3Sn5y273eZkliY0b5RQC8+FfexDJEFnFTSg4o8MYVY6D94trOYCUaxz//duHMoy1UANaiBRWh/VONxvZYF4uQCSVgUprDtHS6Z/t/NOdNPDoYz1YKQbCLXXCZUtJ03zrhXstug= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB5358.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(7916004)(136003)(396003)(376002)(366004)(346002)(39860400002)(451199021)(91956017)(83380400001)(76116006)(66556008)(4326008)(66476007)(66446008)(64756008)(8676002)(66946007)(966005)(54906003)(6486002)(71200400001)(478600001)(9686003)(6512007)(26005)(186003)(6506007)(110136005)(316002)(38070700005)(2906002)(7416002)(30864003)(33656002)(33716001)(86362001)(41300700001)(38100700002)(5660300002)(8936002)(122000001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Q0FiUXBSNzY5eVJObHZkVms4RGxJOEt0ZEQrMU8wSzRhVllYeUI5K2xZVG5E?= =?utf-8?B?WW5FUk5taVJ6UFNQSDcwZWpTdDEzWnVpcE1YUHcvcTlMdmF3N2lvV2Y3disy?= =?utf-8?B?S1M5V1d0Q1Nnd3o3bDZKSFRYbVA1VWdMa3MremZNRGF6WStyeEZqZXI1QWtX?= =?utf-8?B?cGplOWJNQkxwcHdTaEQ0cDYxZExBWlpueVpvMUdLNzB4VUg0Z2JtekwzY0Z4?= =?utf-8?B?YnR6NHQ3Z0xzNjQ5NVA1VGdOMjNwZ0NQWlM2NHVQT2QxWjR3NmtOMUgyb3VB?= =?utf-8?B?YWFtWEhQRlpXS2tFZW4vS1BzNTJQQ3phV2VKaVc0SnFFaWtPUXFPTXlmZkh2?= =?utf-8?B?bHVISU82alU0dkpPeExaSlZXYnIxbDdVdjFQcEgwY1l5eTRtSjFuR2lGbVky?= =?utf-8?B?WkZvUzl5T3ppczhRTU4wTDZRNjFNRXl0ZXg1QmMzVHRBTFRHdXdMVkFXK2pD?= =?utf-8?B?Q1h5Q0tmWC9OeTJRemk1NElSQUNPT2NhWFdjcnRlYm1EeFhzOUlocHdBTTVa?= =?utf-8?B?US81UkV6TWplWmUvSkV6aFVyUEVsZGRRREt1emE5NS9Lc3VoUnh6YnZ3KzBn?= =?utf-8?B?N1FoRkpRQlp3ZVpNc2tmYTZBdjdmUUdOKytrWW9nR0ovMEE5ZndCY0k4KzMv?= =?utf-8?B?WHZvazRxdVJTek1NY2hFUU8wcUl1bEZ0bHVjUVNmaVFOajRzM1ZDRUdjZFpF?= =?utf-8?B?ZHZGMzN0Q2QyUWQ2K09oeXQ3QkpmcEJaWGhBai9jQXRpcUtmaXRrRHBTL1NC?= =?utf-8?B?RC82bDMzZzJTRzlMY04wY1FGdFFRWUNhS09IZVlRKzc3WG5MVlZCRXJhSy9l?= =?utf-8?B?dzlEc01obFpMNGV2Y2ttUHgrOTZiSHVJMjl2QUV1YzhvQUFSNlc2TmJ1am9l?= =?utf-8?B?RXVXNXp4anMwc3gzdS9aTVl3MmpEUER2WlVnbFdIenVrTDk3bzUvYUJVRUg5?= =?utf-8?B?dWdmZUdaZ3h4T05EYlpmZlhrWnJYcENNS0E2OUN2ZWF4L3VrcnBNa1E2ZE9S?= =?utf-8?B?dE12WFhLSEJXRTgySStsYkZyS0Uzcjg5NzQxa3Fkb1JaeDljZmFNaDJrSy9v?= =?utf-8?B?UkV2OE1razVNL3h1Y3E1NzdTaUpjWHdlUHRBYTdnSUtZVkNFdlJlYzZKWWZo?= =?utf-8?B?V09JR2VzRGxZRGRSY0oveWZJczNwMlY2SkhlR3Y2V1Y4VFUyUnJ6OENIQS9n?= =?utf-8?B?Yng1YWs0dXYzUlZzK0IraUxBbmhWKysrVDhZRFpnUzlGbUoxc0RVck5GR3FH?= =?utf-8?B?b05yNG1LQ20vSjliTE16bFBWY0ZrSW4rZnFINnF0SU5ucmUveW9KNmlVWmRN?= =?utf-8?B?cmlPZ2dhL29zS21Hb0lPaHZvc0RZQ2VIYWtSK1BIR0dZSWhYYVdweU9DRU4r?= =?utf-8?B?MWxpQmR0RGVrcmRRZkVUL3JKQ2x0a0U3SnI5YmRJV3h3LzVlK1Y1aEFxZEFJ?= =?utf-8?B?cFNKcjZYdmFRZUlIbzJzMzFUMVoxMW5aTXlwVkFaTzFoajVEaEwxNGRxQTB0?= =?utf-8?B?MUhxOTNETnZacDI5c2pvNjVkejBmRzErSFNjMm94T2FUQUF2MEprOHJsbXVQ?= =?utf-8?B?NGRubUJzV3Zwckt4b1NQc21kRXdGTERxVEprUzc5Q0t4RXpta1FpS0hxYXQv?= =?utf-8?B?Q01EUzZCM1ZVdzFibU5KTUVLOWYzSFVvSmUrOG9MTzdxTkFMSDhsVGUxaW5q?= =?utf-8?B?SXVmNlJpQWRrcFJud2RFOWZwOURKQU5wNmo4SWxzNFRiMEh2UjhPVnFJenlH?= =?utf-8?B?ZXBYSXhpTnVSSUJ2Zm4wZ3FsTDFjcHV1ZnRGSE9UQW5tZzRzUldyNlkxa2lt?= =?utf-8?B?S0ZYOGV2d1hmY3JjVTdodk51VVdlV1BOTWtwY0VjZ1F4TXhKeUJJS2ZjY3lo?= =?utf-8?B?azZ0T2gwY1hyWCt6UW9sS1BOZzA1Y3czKzNTdGFVZm1NY2NZZkYrYmVLVkha?= =?utf-8?B?RjNrMUxad3hLd0dRTWJTSGx2aEkva3JCY0g2Wk4yYmcvbFVvdWx6aDdtK1pD?= =?utf-8?B?NGdGK1I1OXVDZXQ0RzFFUVg5VE0xY2I5YWJrVVhDeEdvdG5zTFRlQWVxWmti?= =?utf-8?B?V1BwZk1Bb3cyeXN1ckljbmRiZDV1OHRMNVo5Ly9CeHhXMXF2OEdGQm9GSmtI?= =?utf-8?B?azlySGJHY0JKU1ZJSG81TkdxZGtvcWNPdEJhcmIyZUlWUWorMmtxbWlLcVVH?= =?utf-8?Q?0r/JktOfIXM/u7Um1H6BVAs=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <73C3D416EA1C514B964ADAD6B3EEB958@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR11MB5358.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84f02729-fdf8-45b5-bdd8-08db2e989ae6 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Mar 2023 07:55:17.1336 (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: as5D5JbcBgD12b2F5lm3aIluPME6/1wEaz+ZEdGpigwZjDFa0uIRtEv+yAXppfVe7y/mB05jZ8102yZ5me2nwr3ccvOiN7Q79ypDBpOqzxg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB5361 X-Spam-Status: No, score=-2.5 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2, SPF_HELO_PASS,SPF_PASS autolearn=unavailable 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 SGkgUGV0ZXINCg0KVGhpcyBsb29rcyBnb29kIHRvIG1lLg0KDQpPbiBNb24gTWFyIDI3LCAyMDIz IGF0IDc6MTAgQU0gQ0VTVCwgSmktWmUgSG9uZyAoUGV0ZXIgSG9uZykgd3JvdGU6DQo+IEVYVEVS TkFMIEVNQUlMOiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3Mg eW91IGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZQ0KPg0KPiBUaGlzIHBhdGNoIGFkZCBzdXBwb3J0 IGZvciBGaW50ZWsgVVNCIHRvIDJDQU4gY29udHJvbGxlciBzdXBwb3J0Lg0KPg0KPiBTaWduZWQt b2ZmLWJ5OiBKaS1aZSBIb25nIChQZXRlciBIb25nKSA8cGV0ZXJfaG9uZ0BmaW50ZWsuY29tLnR3 Pg0KPiAtLS0NCj4gQ2hhbmdlbG9nOg0KPiB2MzoNCj4gICAgICAgICAxLiBDaGFuZ2UgQ0FOIGNs b2NrIHRvIHVzaW5nIE1FR0EgdW5pdHMuDQo+ICAgICAgICAgMi4gUmVtb3ZlIFVTQiBzZXQvZ2V0 IHJldHJ5LCBvbmx5IHJlbWFpbiBTSkExMDAwIHJlc2V0L29wZXJhdGlvbiByZXRyeS4NCj4gICAg ICAgICAzLiBGaXggYWxsIG51bWJlcmljIGNvbnN0YW50IHRvIGRlZmluZS4NCj4gICAgICAgICA0 LiBBZGQgdGVybWluYXRvciBjb250cm9sLiAob25seSAwICYgMTIwIG9obSkNCj4gICAgICAgICA1 LiBVc2luZyBzdHJ1Y3QgZGF0YSB0byByZXByZXNlbnQgSU5UL1RYL1JYIGVuZHBvaW50cyBkYXRh IGluc3RlYWQgYnl0ZQ0KPiAgICAgICAgICAgIGFycmF5cy4NCj4gICAgICAgICA2LiBFcnJvciBt ZXNzYWdlIHJlcG9ydHMgY2hhbmdlZCBmcm9tICVkIHRvICVwZSBmb3IgbW5lbW90ZWNobmljIHZh bHVlcy4NCj4gICAgICAgICA3LiBTb21lIGJpdCBvcGVyYXRpb25zIGFyZSBjaGFuZ2VkIHRvIEZJ RUxEX1BSRVAoKS4NCj4gICAgICAgICA4LiBTZXBhcmF0ZSBUWCBmdW5jdGlvbnMgZnJvbSBmODE2 MDRfcmVhZF9pbnRfY2FsbGJhY2soKS4NCj4gICAgICAgICA5LiBjZi0+Y2FuX2lkIHw9IENBTl9F UlJfQ05UIGluIGY4MTYwNF9yZWFkX2ludF9jYWxsYmFjayB0byByZXBvcnQgdmFsaWQNCj4gICAg ICAgICAgICBUWC9SWCBlcnJvciBjb3VudHMuDQo+ICAgICAgICAgMTAuIE1vdmUgZjgxNjA0X3By ZXBhcmVfdXJicy9mODE2MDRfcmVtb3ZlX3VyYnMoKSBmcm9tIENBTiBvcGVuL2Nsb3NlKCkgdG8N Cj4gICAgICAgICAgICAgVVNCIHByb2JlL2Rpc2Nvbm5lY3QoKS4NCj4gICAgICAgICAxMS4gY29k aW5nIHN0eWxlIHJlZmFjdG9yaW5nLg0KPg0KPiB2MjoNCj4gICAgICAgICAxLiBjb2Rpbmcgc3R5 bGUgcmVmYWN0b3JpbmcuDQo+ICAgICAgICAgMi4gc29tZSBjb25zdCBudW1iZXIgYXJlIGRlZmlu ZWQgdG8gZGVzY3JpYmUgaXRzZWxmLg0KPiAgICAgICAgIDMuIGZpeCB3cm9uZyB1c2FnZSBmb3Ig Y2FuX2dldF9lY2hvX3NrYigpIGluIGY4MTYwNF93cml0ZV9idWxrX2NhbGxiYWNrKCkuDQo+DQo+ ICBkcml2ZXJzL25ldC9jYW4vdXNiL0tjb25maWcgIHwgICAxMiArDQo+ICBkcml2ZXJzL25ldC9j YW4vdXNiL01ha2VmaWxlIHwgICAgMSArDQo+ICBkcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5j IHwgMTIzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICAzIGZpbGVzIGNo YW5nZWQsIDEyNDUgaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv bmV0L2Nhbi91c2IvZjgxNjA0LmMNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91 c2IvS2NvbmZpZyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZw0KPiBpbmRleCA0NDU1MDRh YmFiY2UuLjA2YWI5MmNkMmVhNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9L Y29uZmlnDQo+ICsrKyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvS2NvbmZpZw0KPiBAQCAtMTQ3LDQg KzE0NywxNiBAQCBjb25maWcgQ0FOX1VDQU4NCj4gICAgICAgICAgICAgICAgICAgZnJvbSBUaGVv YnJvbWEgU3lzdGVtcyBsaWtlIHRoZSBBMzEtwrVRNyBhbmQgdGhlIFJLMzM5OS1RNw0KPiAgICAg ICAgICAgICAgICAgICAoaHR0cHM6Ly93d3cudGhlb2Jyb21hLXN5c3RlbXMuY29tL3JrMzM5OS1x NykNCj4NCj4gK2NvbmZpZyBDQU5fRjgxNjA0DQo+ICsgICAgICAgdHJpc3RhdGUgIkZpbnRlayBG ODE2MDQgVVNCIHRvIDJDQU4gaW50ZXJmYWNlIg0KPiArICAgICAgIGhlbHANCj4gKyAgICAgICAg IFRoaXMgZHJpdmVyIHN1cHBvcnRzIHRoZSBGaW50ZWsgRjgxNjA0IFVTQiB0byAyQ0FOIGludGVy ZmFjZS4NCj4gKyAgICAgICAgIFRoZSBkZXZpY2UgY2FuIHN1cHBvcnQgQ0FOMi4wQS9CIHByb3Rv Y29sIGFuZCBhbHNvIHN1cHBvcnQNCj4gKyAgICAgICAgIDIgb3V0cHV0IHBpbnMgdG8gY29udHJv bCBleHRlcm5hbCB0ZXJtaW5hdG9yIChvcHRpb25hbCkuDQo+ICsNCj4gKyAgICAgICAgIFRvIGNv bXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUg d2lsbA0KPiArICAgICAgICAgYmUgY2FsbGVkIGY4MTYwNC4NCj4gKw0KPiArICAgICAgICAgKHNl ZSBhbHNvIGh0dHBzOi8vd3d3LmZpbnRlay5jb20udHcpLg0KPiArDQo+ICBlbmRtZW51DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vdXNiL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvY2Fu L3VzYi9NYWtlZmlsZQ0KPiBpbmRleCAxZWExNmJlNTc0M2IuLjlkZTAzMDVhNWNjZSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9uZXQvY2FuL3VzYi9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL25l dC9jYW4vdXNiL01ha2VmaWxlDQo+IEBAIC0xMiwzICsxMiw0IEBAIG9iai0kKENPTkZJR19DQU5f S1ZBU0VSX1VTQikgKz0ga3Zhc2VyX3VzYi8NCj4gIG9iai0kKENPTkZJR19DQU5fTUNCQV9VU0Ip ICs9IG1jYmFfdXNiLm8NCj4gIG9iai0kKENPTkZJR19DQU5fUEVBS19VU0IpICs9IHBlYWtfdXNi Lw0KPiAgb2JqLSQoQ09ORklHX0NBTl9VQ0FOKSArPSB1Y2FuLm8NCj4gK29iai0kKENPTkZJR19D QU5fRjgxNjA0KSArPSBmODE2MDQubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3Vz Yi9mODE2MDQuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi4wNmNkNWQ5NWM0NGQNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jDQo+IEBAIC0wLDAgKzEs MTIzMiBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qIEZp bnRlayBGODE2MDQgVVNCLXRvLTJDQU4gY29udHJvbGxlciBkcml2ZXIuDQo+ICsgKg0KPiArICog Q29weXJpZ2h0IChDKSAyMDIzIEppLVplIEhvbmcgKFBldGVyIEhvbmcpIDxwZXRlcl9ob25nQGZp bnRlay5jb20udHc+DQo+ICsgKi8NCj4gKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4NCj4g KyNpbmNsdWRlIDxsaW51eC91c2IuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3VuaXRzLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9jYW4u aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9jYW4vZGV2Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2Fu L2Vycm9yLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvY2FuL3BsYXRmb3JtL3NqYTEwMDAuaD4NCj4g Kw0KPiArLyogdmVuZG9yIGFuZCBwcm9kdWN0IGlkICovDQo+ICsjZGVmaW5lIEY4MTYwNF9WRU5E T1JfSUQgMHgyYzQyDQo+ICsjZGVmaW5lIEY4MTYwNF9QUk9EVUNUX0lEIDB4MTcwOQ0KPiArI2Rl ZmluZSBGODE2MDRfQ0FOX0NMT0NLICgyNCAqIE1FR0EgLyAyKQ0KPiArI2RlZmluZSBGODE2MDRf TUFYX0RFViAyDQo+ICsjZGVmaW5lIEY4MTYwNF9TRVRfREVWSUNFX1JFVFJZIDEwMA0KPiArDQo+ ICsjZGVmaW5lIEY4MTYwNF9VU0JfVElNRU9VVCAyMDAwDQo+ICsjZGVmaW5lIEY4MTYwNF9TRVRf R0VUX1JFR0lTVEVSIDB4QTANCj4gKyNkZWZpbmUgRjgxNjA0X1BPUlRfT0ZGU0VUIDB4MTAwMA0K PiArDQo+ICsjZGVmaW5lIEY4MTYwNF9CVUxLX1NJWkUgNjQNCj4gKyNkZWZpbmUgRjgxNjA0X0lO VF9TSVpFIDE2DQo+ICsjZGVmaW5lIEY4MTYwNF9EQVRBX1NJWkUgMTQNCj4gKyNkZWZpbmUgRjgx NjA0X01BWF9SWF9VUkJTIDQNCj4gKw0KPiArI2RlZmluZSBGODE2MDRfQ01EX09GRlNFVCAweDAw DQo+ICsjZGVmaW5lIEY4MTYwNF9DTURfREFUQSAweDAwDQo+ICsNCj4gKyNkZWZpbmUgRjgxNjA0 X0RMQ19MRU5fTUFTSyAweDBmDQo+ICsjZGVmaW5lIEY4MTYwNF9ETENfRUZGX0JJVCBCSVQoNykN Cj4gKyNkZWZpbmUgRjgxNjA0X0RMQ19SVFJfQklUIEJJVCg2KQ0KPiArDQo+ICsvKiBkZXZpY2Ug c2V0dGluZyAqLw0KPiArI2RlZmluZSBGODE2MDRfQ1RSTF9NT0RFX1JFRyAweDgwDQo+ICsjZGVm aW5lIEY4MTYwNF9UWF9PTkVTSE9UICgweDAzIDw8IDMpDQo+ICsjZGVmaW5lIEY4MTYwNF9UWF9O T1JNQUwgKDB4MDEgPDwgMykNCj4gKyNkZWZpbmUgRjgxNjA0X1JYX0FVVE9fUkVMRUFTRV9CVUYg QklUKDEpDQo+ICsjZGVmaW5lIEY4MTYwNF9JTlRfV0hFTl9DSEFOR0UgQklUKDApDQo+ICsNCj4g KyNkZWZpbmUgRjgxNjA0X1RFUk1JTkFUT1JfUkVHIDB4MTA1DQo+ICsjZGVmaW5lIEY4MTYwNF9D QU4wX1RFUk0gQklUKDIpDQo+ICsjZGVmaW5lIEY4MTYwNF9DQU4xX1RFUk0gQklUKDMpDQo+ICsN Cj4gKyNkZWZpbmUgRjgxNjA0X1RFUk1JTkFUSU9OX0RJU0FCTEVEIENBTl9URVJNSU5BVElPTl9E SVNBQkxFRA0KPiArI2RlZmluZSBGODE2MDRfVEVSTUlOQVRJT05fRU5BQkxFRCAxMjANCj4gKw0K PiArLyogU0pBMTAwMCByZWdpc3RlcnMgLSBtYW51YWwgc2VjdGlvbiA2LjQgKFBlbGljYW4gTW9k ZSkgKi8NCj4gKyNkZWZpbmUgU0pBMTAwMF9NT0QgMHgwMA0KPiArI2RlZmluZSBTSkExMDAwX0NN UiAweDAxDQo+ICsjZGVmaW5lIFNKQTEwMDBfSVIgMHgwMw0KPiArI2RlZmluZSBTSkExMDAwX0lF UiAweDA0DQo+ICsjZGVmaW5lIFNKQTEwMDBfQUxDIDB4MEINCj4gKyNkZWZpbmUgU0pBMTAwMF9F Q0MgMHgwQw0KPiArI2RlZmluZSBTSkExMDAwX1JYRVJSIDB4MEUNCj4gKyNkZWZpbmUgU0pBMTAw MF9UWEVSUiAweDBGDQo+ICsjZGVmaW5lIFNKQTEwMDBfQUNDQzAgMHgxMA0KPiArI2RlZmluZSBT SkExMDAwX0FDQ0MxIDB4MTENCj4gKyNkZWZpbmUgU0pBMTAwMF9BQ0NDMiAweDEyDQo+ICsjZGVm aW5lIFNKQTEwMDBfQUNDQzMgMHgxMw0KPiArI2RlZmluZSBTSkExMDAwX0FDQ00wIDB4MTQNCj4g KyNkZWZpbmUgU0pBMTAwMF9BQ0NNMSAweDE1DQo+ICsjZGVmaW5lIFNKQTEwMDBfQUNDTTIgMHgx Ng0KPiArI2RlZmluZSBTSkExMDAwX0FDQ00zIDB4MTcNCj4gKyNkZWZpbmUgU0pBMTAwMF9NQVhf RklMVEVSX0NOVCA0DQo+ICsNCj4gKy8qIENvbW1vbiByZWdpc3RlcnMgLSBtYW51YWwgc2VjdGlv biA2LjUgKi8NCj4gKyNkZWZpbmUgU0pBMTAwMF9CVFIwIDB4MDYNCj4gKyNkZWZpbmUgU0pBMTAw MF9CVFIxIDB4MDcNCj4gKyNkZWZpbmUgU0pBMTAwMF9CVFIxX1NBTVBMRV9UUklQTEUgQklUKDcp DQo+ICsjZGVmaW5lIFNKQTEwMDBfT0NSIDB4MDgNCj4gKyNkZWZpbmUgU0pBMTAwMF9DRFIgMHgx Rg0KPiArDQo+ICsvKiBtb2RlIHJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIE1PRF9STSAweDAxDQo+ ICsjZGVmaW5lIE1PRF9MT00gMHgwMg0KPiArI2RlZmluZSBNT0RfU1RNIDB4MDQNCj4gKw0KPiAr LyogY29tbWFuZHMgKi8NCj4gKyNkZWZpbmUgQ01EX0NETyAweDA4DQo+ICsNCj4gKy8qIGludGVy cnVwdCBzb3VyY2VzICovDQo+ICsjZGVmaW5lIElSUV9CRUkgMHg4MA0KPiArI2RlZmluZSBJUlFf QUxJIDB4NDANCj4gKyNkZWZpbmUgSVJRX0VQSSAweDIwDQo+ICsjZGVmaW5lIElSUV9ET0kgMHgw OA0KPiArI2RlZmluZSBJUlFfRUkgMHgwNA0KPiArI2RlZmluZSBJUlFfVEkgMHgwMg0KPiArI2Rl ZmluZSBJUlFfUkkgMHgwMQ0KPiArI2RlZmluZSBJUlFfQUxMIDB4RkYNCj4gKyNkZWZpbmUgSVJR X09GRiAweDAwDQo+ICsNCj4gKy8qIHN0YXR1cyByZWdpc3RlciBjb250ZW50ICovDQo+ICsjZGVm aW5lIFNSX0JTIDB4ODANCj4gKyNkZWZpbmUgU1JfRVMgMHg0MA0KPiArI2RlZmluZSBTUl9UUyAw eDIwDQo+ICsjZGVmaW5lIFNSX1JTIDB4MTANCj4gKyNkZWZpbmUgU1JfVENTIDB4MDgNCj4gKyNk ZWZpbmUgU1JfVEJTIDB4MDQNCj4gKyNkZWZpbmUgU1JfRE9TIDB4MDINCj4gKyNkZWZpbmUgU1Jf UkJTIDB4MDENCj4gKw0KPiArLyogRUNDIHJlZ2lzdGVyICovDQo+ICsjZGVmaW5lIEVDQ19TRUcg MHgxRg0KPiArI2RlZmluZSBFQ0NfRElSIDB4MjANCj4gKyNkZWZpbmUgRUNDX0JJVCAweDAwDQo+ ICsjZGVmaW5lIEVDQ19GT1JNIDB4NDANCj4gKyNkZWZpbmUgRUNDX1NUVUZGIDB4ODANCj4gKyNk ZWZpbmUgRUNDX01BU0sgMHhjMA0KPiArDQo+ICsvKiBBTEMgcmVnaXN0ZXIgKi8NCj4gKyNkZWZp bmUgQUxDX01BU0sgMHgxZg0KPiArDQo+ICsvKiB0YWJsZSBvZiBkZXZpY2VzIHRoYXQgd29yayB3 aXRoIHRoaXMgZHJpdmVyICovDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQg ZjgxNjA0X3RhYmxlW10gPSB7DQo+ICsgICAgICAgeyBVU0JfREVWSUNFKEY4MTYwNF9WRU5ET1Jf SUQsIEY4MTYwNF9QUk9EVUNUX0lEKSB9LA0KPiArICAgICAgIHt9IC8qIFRlcm1pbmF0aW5nIGVu dHJ5ICovDQo+ICt9Ow0KPiArDQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKHVzYiwgZjgxNjA0X3Rh YmxlKTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBmODE2MDRfZXRo dG9vbF9vcHMgPSB7DQo+ICsgICAgICAgLmdldF90c19pbmZvID0gZXRodG9vbF9vcF9nZXRfdHNf aW5mbywNCj4gK307DQo+ICsNCj4gK3N0YXRpYyBjb25zdCB1MTYgZjgxNjA0X3Rlcm1pbmF0aW9u W10gPSB7IEY4MTYwNF9URVJNSU5BVElPTl9ESVNBQkxFRCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRjgxNjA0X1RFUk1JTkFUSU9OX0VOQUJMRUQgfTsNCj4g Kw0KPiArc3RydWN0IGY4MTYwNF9wcml2IHsNCj4gKyAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAq bmV0ZGV2W0Y4MTYwNF9NQVhfREVWXTsNCj4gKyAgICAgICBzdHJ1Y3QgbXV0ZXggbXV0ZXg7IC8q IGZvciB0ZXJtaW5hdG9yIHNldHRpbmcgKi8NCj4gK307DQo+ICsNCj4gK3N0cnVjdCBmODE2MDRf cG9ydF9wcml2IHsNCj4gKyAgICAgICBzdHJ1Y3QgY2FuX3ByaXYgY2FuOw0KPiArICAgICAgIHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7DQo+ICsgICAgICAgc3RydWN0IHNrX2J1ZmYgKmVjaG9f c2tiOw0KPiArDQo+ICsgICAgICAgLyogRm9yIHN5bmNocm9uaXplIG5lZWRfY2xlYXJfYWxjL25l ZWRfY2xlYXJfZWNjIGluIHdvcmtlciAmIGludGVycnVwdA0KPiArICAgICAgICAqIGNhbGxiYWNr Lg0KPiArICAgICAgICAqLw0KPiArICAgICAgIHNwaW5sb2NrX3QgbG9jazsNCj4gKyAgICAgICBi b29sIG5lZWRfY2xlYXJfYWxjOw0KPiArICAgICAgIGJvb2wgbmVlZF9jbGVhcl9lY2M7DQo+ICsN Cj4gKyAgICAgICBzdHJ1Y3Qgd29ya19zdHJ1Y3QgaGFuZGxlX2NsZWFyX3JlZ193b3JrOw0KPiAr ICAgICAgIHN0cnVjdCB3b3JrX3N0cnVjdCBoYW5kbGVfY2xlYXJfb3ZlcnJ1bl93b3JrOw0KPiAr DQo+ICsgICAgICAgc3RydWN0IHVzYl9kZXZpY2UgKmRldjsNCj4gKyAgICAgICBzdHJ1Y3QgdXNi X2ludGVyZmFjZSAqaW50ZjsNCj4gKw0KPiArICAgICAgIHN0cnVjdCB1cmIgKmludF91cmI7DQo+ ICsgICAgICAgdTggaW50X3JlYWRfYnVmZmVyW0Y4MTYwNF9JTlRfU0laRV07DQo+ICsNCj4gKyAg ICAgICBzdHJ1Y3QgdXJiICpyZWFkX3VyYltGODE2MDRfTUFYX1JYX1VSQlNdOw0KPiArICAgICAg IHU4IGJ1bGtfcmVhZF9idWZmZXJbRjgxNjA0X01BWF9SWF9VUkJTXVtGODE2MDRfQlVMS19TSVpF XTsNCj4gKw0KPiArICAgICAgIHN0cnVjdCB1cmIgKndyaXRlX3VyYjsNCj4gKyAgICAgICB1OCBi dWxrX3dyaXRlX2J1ZmZlcltGODE2MDRfREFUQV9TSVpFXTsNCj4gKw0KPiArICAgICAgIHU4IG9j cjsNCj4gKyAgICAgICB1OCBjZHI7DQo+ICt9Ow0KPiArDQo+ICsvKiBJbnRlcnJ1cHQgZW5kcG9p bnQgZGF0YSBmb3JtYXQ6IFNSL0lSL0lFUi9BTEMvRUNDL0VXTFIvUlhFUlIvVFhFUlIvVkFMICov DQo+ICtzdHJ1Y3QgZjgxNjA0X2ludF9kYXRhIHsNCj4gKyAgICAgICB1OCBzcjsNCj4gKyAgICAg ICB1OCBpc3JjOw0KPiArICAgICAgIHU4IGllcjsNCj4gKyAgICAgICB1OCBhbGM7DQo+ICsgICAg ICAgdTggZWNjOw0KPiArICAgICAgIHU4IGV3bHI7DQo+ICsgICAgICAgdTggcnhlcnI7DQo+ICsg ICAgICAgdTggdHhlcnI7DQo+ICsgICAgICAgdTggdmFsOw0KPiArfSBfX3BhY2tlZDsNCj4gKw0K PiArc3RydWN0IGY4MTYwNF9zZmYgew0KPiArICAgICAgIF9fYmUxNiBpZDsNCj4gKyAgICAgICB1 OCBkYXRhW0NBTl9NQVhfRExFTl07DQo+ICt9IF9fcGFja2VkOw0KPiArDQo+ICtzdHJ1Y3QgZjgx NjA0X2VmZiB7DQo+ICsgICAgICAgX19iZTMyIGlkOw0KPiArICAgICAgIHU4IGRhdGFbQ0FOX01B WF9ETEVOXTsNCj4gK30gX19wYWNrZWQ7DQo+ICsNCj4gK3N0cnVjdCBmODE2MDRfYnVsa19kYXRh IHsNCj4gKyAgICAgICB1OCBjbWQ7DQo+ICsNCj4gKyAgICAgICAvKiBBY2NvcmRpbmcgZm9yIEY4 MTYwNCBETEMgZGVmaW5lOg0KPiArICAgICAgICAqICAgICAgI2RlZmluZSBGODE2MDRfRExDX0xF Tl9NQVNLIDB4MGYNCj4gKyAgICAgICAgKiAgICAgICNkZWZpbmUgRjgxNjA0X0RMQ19FRkZfQklU IEJJVCg3KQ0KPiArICAgICAgICAqICAgICAgI2RlZmluZSBGODE2MDRfRExDX1JUUl9CSVQgQklU KDYpDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgdTggZGxjOw0KPiArDQo+ICsgICAgICAgdW5p b24gew0KPiArICAgICAgICAgICAgICAgc3RydWN0IGY4MTYwNF9zZmYgc2ZmOw0KPiArICAgICAg ICAgICAgICAgc3RydWN0IGY4MTYwNF9lZmYgZWZmOw0KPiArICAgICAgIH07DQo+ICt9IF9fcGFj a2VkOw0KPiArDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9zZXRfcmVnaXN0ZXIoc3RydWN0IHVzYl9k ZXZpY2UgKmRldiwgdTE2IHJlZywgdTggZGF0YSkNCj4gK3sNCj4gKyAgICAgICBpbnQgcmV0Ow0K PiArDQo+ICsgICAgICAgcmV0ID0gdXNiX2NvbnRyb2xfbXNnX3NlbmQoZGV2LCAwLCBGODE2MDRf U0VUX0dFVF9SRUdJU1RFUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBV U0JfVFlQRV9WRU5ET1IgfCBVU0JfRElSX09VVCwgMCwgcmVnLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICZkYXRhLCBzaXplb2YoZGF0YSksIEY4MTYwNF9VU0JfVElNRU9V VCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsNCj4g KyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZGV2X2VycigmZGV2LT5kZXYsICIl czogcmVnOiAleCBkYXRhOiAleCBmYWlsZWQ6ICVwZVxuIiwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18sIHJlZywgZGF0YSwgRVJSX1BUUihyZXQpKTsNCj4gKw0KPiArICAgICAg IHJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZjgxNjA0X2dldF9yZWdpc3Rl cihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1MTYgcmVnLCB1OCAqZGF0YSkNCj4gK3sNCj4gKyAg ICAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAgICAgcmV0ID0gdXNiX2NvbnRyb2xfbXNnX3JlY3Yo ZGV2LCAwLCBGODE2MDRfU0VUX0dFVF9SRUdJU1RFUiwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBVU0JfVFlQRV9WRU5ET1IgfCBVU0JfRElSX0lOLCAwLCByZWcsIGRhdGEs DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpkYXRhKSwgRjgx NjA0X1VTQl9USU1FT1VULA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdG UF9LRVJORUwpOw0KPiArDQo+ICsgICAgICAgaWYgKHJldCA8IDApDQo+ICsgICAgICAgICAgICAg ICBkZXZfZXJyKCZkZXYtPmRldiwgIiVzOiByZWc6ICV4IGZhaWxlZDogJXBlXG4iLCBfX2Z1bmNf XywgcmVnLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBFUlJfUFRSKHJldCkpOw0KPiArDQo+ ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBmODE2MDRfbWFz a19zZXRfcmVnaXN0ZXIoc3RydWN0IHVzYl9kZXZpY2UgKmRldiwgdTE2IHJlZywgdTggbWFzaywN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggZGF0YSkNCj4gK3sNCj4g KyAgICAgICBpbnQgc3RhdHVzOw0KPiArICAgICAgIHU4IHRtcDsNCj4gKw0KPiArICAgICAgIHN0 YXR1cyA9IGY4MTYwNF9nZXRfcmVnaXN0ZXIoZGV2LCByZWcsICZ0bXApOw0KPiArICAgICAgIGlm IChzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KPiArDQo+ICsgICAg ICAgdG1wICY9IH5tYXNrOw0KPiArICAgICAgIHRtcCB8PSAobWFzayAmIGRhdGEpOw0KPiArDQo+ ICsgICAgICAgcmV0dXJuIGY4MTYwNF9zZXRfcmVnaXN0ZXIoZGV2LCByZWcsIHRtcCk7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYyBpbnQgZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVyKHN0cnVjdCB1 c2JfZGV2aWNlICpkZXYsIHU4IHBvcnQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHUxNiByZWcsIHU4IGRhdGEpDQo+ICt7DQo+ICsgICAgICAgaW50IHJlYWxfcmVn Ow0KPiArDQo+ICsgICAgICAgcmVhbF9yZWcgPSByZWcgKyBGODE2MDRfUE9SVF9PRkZTRVQgKiBw b3J0ICsgRjgxNjA0X1BPUlRfT0ZGU0VUOw0KPiArICAgICAgIHJldHVybiBmODE2MDRfc2V0X3Jl Z2lzdGVyKGRldiwgcmVhbF9yZWcsIGRhdGEpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGY4 MTYwNF9nZXRfc2phMTAwMF9yZWdpc3RlcihzdHJ1Y3QgdXNiX2RldmljZSAqZGV2LCB1OCBwb3J0 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1MTYgcmVnLCB1OCAq ZGF0YSkNCj4gK3sNCj4gKyAgICAgICBpbnQgcmVhbF9yZWc7DQo+ICsNCj4gKyAgICAgICByZWFs X3JlZyA9IHJlZyArIEY4MTYwNF9QT1JUX09GRlNFVCAqIHBvcnQgKyBGODE2MDRfUE9SVF9PRkZT RVQ7DQo+ICsgICAgICAgcmV0dXJuIGY4MTYwNF9nZXRfcmVnaXN0ZXIoZGV2LCByZWFsX3JlZywg ZGF0YSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgZjgxNjA0X3NldF9yZXNldF9tb2RlKHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGY4MTYwNF9w b3J0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KPiArICAgICAgIGludCBzdGF0 dXMsIGk7DQo+ICsgICAgICAgdTggdG1wOw0KPiArDQo+ICsgICAgICAgLyogZGlzYWJsZSBpbnRl cnJ1cHRzICovDQo+ICsgICAgICAgc3RhdHVzID0gZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVy KHByaXYtPmRldiwgbmV0ZGV2LT5kZXZfaWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFNKQTEwMDBfSUVSLCBJUlFfT0ZGKTsNCj4gKyAgICAgICBpZiAo c3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0KPiArICAgICAg IGZvciAoaSA9IDA7IGkgPCBGODE2MDRfU0VUX0RFVklDRV9SRVRSWTsgaSsrKSB7DQo+ICsgICAg ICAgICAgICAgICBzdGF0dXMgPSBmODE2MDRfZ2V0X3NqYTEwMDBfcmVnaXN0ZXIocHJpdi0+ZGV2 LCBuZXRkZXYtPmRldl9pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTSkExMDAwX01PRCwgJnRtcCk7DQo+ICsgICAgICAgICAgICAgICBp ZiAoc3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KPiAr DQo+ICsgICAgICAgICAgICAgICAvKiBjaGVjayByZXNldCBiaXQgKi8NCj4gKyAgICAgICAgICAg ICAgIGlmICh0bXAgJiBNT0RfUk0pIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+ Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX1NUT1BQRUQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJldHVybiAwOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICAv KiByZXNldCBjaGlwICovDQo+ICsgICAgICAgICAgICAgICBzdGF0dXMgPSBmODE2MDRfc2V0X3Nq YTEwMDBfcmVnaXN0ZXIocHJpdi0+ZGV2LCBuZXRkZXYtPmRldl9pZCwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSkExMDAwX01PRCwgTU9E X1JNKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBzdGF0dXM7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJu IC1FUEVSTTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBmODE2MDRfc2V0X25vcm1hbF9tb2Rl KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGY4MTYw NF9wb3J0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KPiArICAgICAgIHU4IG1v ZF9yZWcgPSAweDAwOw0KPiArICAgICAgIHU4IHRtcCwgaWVyID0gMDsNCj4gKyAgICAgICBpbnQg c3RhdHVzLCBpOw0KPiArDQo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IEY4MTYwNF9TRVRfREVW SUNFX1JFVFJZOyBpKyspIHsNCj4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IGY4MTYwNF9nZXRf c2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNKQTEwMDBfTU9ELCAm dG1wKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIC8qIGNoZWNrIHJl c2V0IGJpdCAqLw0KPiArICAgICAgICAgICAgICAgaWYgKCh0bXAgJiBNT0RfUk0pID09IDApIHsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2FuLnN0YXRlID0gQ0FOX1NUQVRFX0VS Uk9SX0FDVElWRTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogZW5hYmxlIGludGVycnVw dHMsIFJJIGhhbmRsZWQgYnkgYnVsay1pbiAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBp ZXIgPSBJUlFfQUxMICYgfklSUV9SSTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEo cHJpdi0+Y2FuLmN0cmxtb2RlICYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FO X0NUUkxNT0RFX0JFUlJfUkVQT1JUSU5HKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZXIgJj0gfklSUV9CRUk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIGY4MTYwNF9zZXRfc2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2LT5k ZXZfaWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU0pBMTAwMF9JRVIsIGllcik7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIC8qIHNldCBjaGlwIHRvIG5vcm1hbCBtb2RlICovDQo+ICsgICAg ICAgICAgICAgICBpZiAocHJpdi0+Y2FuLmN0cmxtb2RlICYgQ0FOX0NUUkxNT0RFX0xJU1RFTk9O TFkpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1vZF9yZWcgfD0gTU9EX0xPTTsNCj4gKyAg ICAgICAgICAgICAgIGlmIChwcml2LT5jYW4uY3RybG1vZGUgJiBDQU5fQ1RSTE1PREVfUFJFU1VN RV9BQ0spDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG1vZF9yZWcgfD0gTU9EX1NUTTsNCj4g Kw0KPiArICAgICAgICAgICAgICAgc3RhdHVzID0gZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVy KHByaXYtPmRldiwgbmV0ZGV2LT5kZXZfaWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0pBMTAwMF9NT0QsIG1vZF9yZWcpOw0KPiArICAg ICAgICAgICAgICAgaWYgKHN0YXR1cykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHN0YXR1czsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gLUVQRVJNOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9jaGlwc2V0X2luaXQoc3RydWN0IG5ldF9kZXZp Y2UgKm5ldGRldikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3BvcnRfcHJpdiAqcHJp diA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsgICAgICAgaW50IHN0YXR1czsNCj4gKyAgICAg ICBpbnQgaTsNCj4gKw0KPiArICAgICAgIC8qIHNldCBjbG9jayBkaXZpZGVyIGFuZCBvdXRwdXQg Y29udHJvbCByZWdpc3RlciAqLw0KPiArICAgICAgIHN0YXR1cyA9IGY4MTYwNF9zZXRfc2phMTAw MF9yZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSkExMDAwX0NEUiwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y2RyIHwgQ0RSX1BFTElDQU4p Ow0KPiArICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVz Ow0KPiArDQo+ICsgICAgICAgLyogc2V0IGFjY2VwdGFuY2UgZmlsdGVyIChhY2NlcHQgYWxsKSAq Lw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBTSkExMDAwX01BWF9GSUxURVJfQ05UOyArK2kp IHsNCj4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IGY4MTYwNF9zZXRfc2phMTAwMF9yZWdpc3Rl cihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNKQTEwMDBfQUNDQzAgKyBpLCAwKTsNCj4gKyAg ICAgICAgICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBzdGF0dXM7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IFNK QTEwMDBfTUFYX0ZJTFRFUl9DTlQ7ICsraSkgew0KPiArICAgICAgICAgICAgICAgc3RhdHVzID0g ZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVyKHByaXYtPmRldiwgbmV0ZGV2LT5kZXZfaWQsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0pB MTAwMF9BQ0NNMCArIGksIDB4RkYpOw0KPiArICAgICAgICAgICAgICAgaWYgKHN0YXR1cykNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKyAgICAgICB9DQo+ICsN Cj4gKyAgICAgICByZXR1cm4gZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVyKHByaXYtPmRldiwg bmV0ZGV2LT5kZXZfaWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTSkExMDAwX09DUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHByaXYtPm9jciB8IE9DUl9NT0RFX05PUk1BTCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyB2b2lkIGY4MTYwNF91bnJlZ2lzdGVyX3VyYnMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldikN Cj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3BvcnRfcHJpdiAqcHJpdiA9IG5ldGRldl9w cml2KG5ldGRldik7DQo+ICsgICAgICAgaW50IGk7DQo+ICsNCj4gKyAgICAgICBmb3IgKGkgPSAw OyBpIDwgRjgxNjA0X01BWF9SWF9VUkJTOyArK2kpDQo+ICsgICAgICAgICAgICAgICB1c2Jfa2ls bF91cmIocHJpdi0+cmVhZF91cmJbaV0pOw0KPiArDQo+ICsgICAgICAgdXNiX2tpbGxfdXJiKHBy aXYtPndyaXRlX3VyYik7DQo+ICsgICAgICAgdXNiX2tpbGxfdXJiKHByaXYtPmludF91cmIpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9yZWdpc3Rlcl91cmJzKHN0cnVjdCBuZXRf ZGV2aWNlICpuZXRkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGY4MTYwNF9wb3J0X3ByaXYg KnByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KPiArICAgICAgIGludCBzdGF0dXMsIGk7DQo+ ICsNCj4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgRjgxNjA0X01BWF9SWF9VUkJTOyArK2kpIHsN Cj4gKyAgICAgICAgICAgICAgIHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKHByaXYtPnJlYWRfdXJi W2ldLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChzdGF0dXMpIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X3dhcm4obmV0ZGV2LCAiJXM6IHN1Ym1pdCByeCB1 cmIgZmFpbGVkOiAlcGVcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9fZnVuY19fLCBFUlJfUFRSKHN0YXR1cykpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gc3RhdHVzOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArICAgICAgIH0NCj4gKw0KPiAr ICAgICAgIHN0YXR1cyA9IHVzYl9zdWJtaXRfdXJiKHByaXYtPmludF91cmIsIEdGUF9LRVJORUwp Ow0KPiArICAgICAgIGlmIChzdGF0dXMpIHsNCj4gKyAgICAgICAgICAgICAgIG5ldGRldl93YXJu KG5ldGRldiwgIiVzOiBzdWJtaXQgaW50IHVyYiBmYWlsZWQ6ICVwZVxuIiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBFUlJfUFRSKHN0YXR1cykpOw0KPiArICAgICAg ICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBmODE2MDRfc3RhcnQoc3RydWN0IG5ldF9k ZXZpY2UgKm5ldGRldikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3BvcnRfcHJpdiAq cHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsgICAgICAgaW50IHN0YXR1czsNCj4gKyAg ICAgICB1OCBtb2RlOw0KPiArICAgICAgIHU4IHRtcDsNCj4gKw0KPiArICAgICAgIGY4MTYwNF91 bnJlZ2lzdGVyX3VyYnMobmV0ZGV2KTsNCj4gKw0KPiArICAgICAgIG1vZGUgPSBGODE2MDRfUlhf QVVUT19SRUxFQVNFX0JVRiB8IEY4MTYwNF9JTlRfV0hFTl9DSEFOR0U7DQo+ICsNCj4gKyAgICAg ICAvKiBTZXQgVFIvQVQgbW9kZSAqLw0KPiArICAgICAgIGlmIChwcml2LT5jYW4uY3RybG1vZGUg JiBDQU5fQ1RSTE1PREVfT05FX1NIT1QpDQo+ICsgICAgICAgICAgICAgICBtb2RlIHw9IEY4MTYw NF9UWF9PTkVTSE9UOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIG1vZGUgfD0g RjgxNjA0X1RYX05PUk1BTDsNCj4gKw0KPiArICAgICAgIHN0YXR1cyA9IGY4MTYwNF9zZXRfc2ph MTAwMF9yZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGODE2MDRfQ1RSTF9NT0RFX1JFRywgbW9k ZSk7DQo+ICsgICAgICAgaWYgKHN0YXR1cykNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBzdGF0 dXM7DQo+ICsNCj4gKyAgICAgICAvKiBzZXQgcmVzZXQgbW9kZSAqLw0KPiArICAgICAgIHN0YXR1 cyA9IGY4MTYwNF9zZXRfcmVzZXRfbW9kZShuZXRkZXYpOw0KPiArICAgICAgIGlmIChzdGF0dXMp DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KPiArDQo+ICsgICAgICAgc3RhdHVz ID0gZjgxNjA0X2NoaXBzZXRfaW5pdChuZXRkZXYpOw0KPiArICAgICAgIGlmIChzdGF0dXMpDQo+ ICsgICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KPiArDQo+ICsgICAgICAgLyogQ2xlYXIg ZXJyb3IgY291bnRlcnMgYW5kIGVycm9yIGNvZGUgY2FwdHVyZSAqLw0KPiArICAgICAgIHN0YXR1 cyA9IGY4MTYwNF9zZXRfc2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lk LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSkExMDAw X1RYRVJSLCAwKTsNCj4gKyAgICAgICBpZiAoc3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgcmV0 dXJuIHN0YXR1czsNCj4gKw0KPiArICAgICAgIHN0YXR1cyA9IGY4MTYwNF9zZXRfc2phMTAwMF9y ZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTSkExMDAwX1JYRVJSLCAwKTsNCj4gKyAgICAgICBp ZiAoc3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0KPiArICAg ICAgIC8qIFJlYWQgY2xlYXIgZm9yIEVDQy9BTEMvSVIgcmVnaXN0ZXIgKi8NCj4gKyAgICAgICBz dGF0dXMgPSBmODE2MDRfZ2V0X3NqYTEwMDBfcmVnaXN0ZXIocHJpdi0+ZGV2LCBuZXRkZXYtPmRl dl9pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0pB MTAwMF9FQ0MsICZ0bXApOw0KPiArICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gc3RhdHVzOw0KPiArDQo+ICsgICAgICAgc3RhdHVzID0gZjgxNjA0X2dldF9zamEx MDAwX3JlZ2lzdGVyKHByaXYtPmRldiwgbmV0ZGV2LT5kZXZfaWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNKQTEwMDBfQUxDLCAmdG1wKTsNCj4gKyAg ICAgICBpZiAoc3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0K PiArICAgICAgIHN0YXR1cyA9IGY4MTYwNF9nZXRfc2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYs IG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTSkExMDAwX0lSLCAmdG1wKTsNCj4gKyAgICAgICBpZiAoc3RhdHVzKQ0KPiArICAg ICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0KPiArICAgICAgIHN0YXR1cyA9IGY4MTYw NF9yZWdpc3Rlcl91cmJzKG5ldGRldik7DQo+ICsgICAgICAgaWYgKHN0YXR1cykNCj4gKyAgICAg ICAgICAgICAgIHJldHVybiBzdGF0dXM7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gZjgxNjA0X3Nl dF9ub3JtYWxfbW9kZShuZXRkZXYpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9z ZXRfYml0dGltaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpDQo+ICt7DQo+ICsgICAgICAgc3Ry dWN0IGY4MTYwNF9wb3J0X3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOw0KPiArICAgICAg IHN0cnVjdCBjYW5fYml0dGltaW5nICpidCA9ICZwcml2LT5jYW4uYml0dGltaW5nOw0KPiArICAg ICAgIGludCBzdGF0dXMgPSAwOw0KPiArICAgICAgIHU4IGJ0cjAsIGJ0cjE7DQo+ICsNCj4gKyAg ICAgICBidHIwID0gRklFTERfUFJFUChHRU5NQVNLKDUsIDApLCBidC0+YnJwIC0gMSkgfA0KPiAr ICAgICAgICAgICAgICBGSUVMRF9QUkVQKEdFTk1BU0soNywgNiksIGJ0LT5zancgLSAxKTsNCj4g Kw0KPiArICAgICAgIGJ0cjEgPSBGSUVMRF9QUkVQKEdFTk1BU0soMywgMCksIGJ0LT5wcm9wX3Nl ZyArIGJ0LT5waGFzZV9zZWcxIC0gMSkgfA0KPiArICAgICAgICAgICAgICBGSUVMRF9QUkVQKEdF Tk1BU0soNiwgNCksIGJ0LT5waGFzZV9zZWcyIC0gMSk7DQo+ICsNCj4gKyAgICAgICBpZiAocHJp di0+Y2FuLmN0cmxtb2RlICYgQ0FOX0NUUkxNT0RFXzNfU0FNUExFUykNCj4gKyAgICAgICAgICAg ICAgIGJ0cjEgfD0gU0pBMTAwMF9CVFIxX1NBTVBMRV9UUklQTEU7DQo+ICsNCj4gKyAgICAgICBz dGF0dXMgPSBmODE2MDRfc2V0X3NqYTEwMDBfcmVnaXN0ZXIocHJpdi0+ZGV2LCBkZXYtPmRldl9p ZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0pBMTAw MF9CVFIwLCBidHIwKTsNCj4gKyAgICAgICBpZiAoc3RhdHVzKSB7DQo+ICsgICAgICAgICAgICAg ICBuZXRkZXZfd2FybihkZXYsICIlczogU2V0IEJUUjAgZmFpbGVkOiAlcGVcbiIsIF9fZnVuY19f LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgRVJSX1BUUihzdGF0dXMpKTsNCj4gKyAg ICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAg c3RhdHVzID0gZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVyKHByaXYtPmRldiwgZGV2LT5kZXZf aWQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNKQTEw MDBfQlRSMSwgYnRyMSk7DQo+ICsgICAgICAgaWYgKHN0YXR1cykgew0KPiArICAgICAgICAgICAg ICAgbmV0ZGV2X3dhcm4oZGV2LCAiJXM6IFNldCBCVFIxIGZhaWxlZDogJXBlXG4iLCBfX2Z1bmNf XywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSUl9QVFIoc3RhdHVzKSk7DQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAg IHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9zZXRfbW9kZShzdHJ1 Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBlbnVtIGNhbl9tb2RlIG1vZGUpDQo+ICt7DQo+ICsgICAg ICAgaW50IGVycjsNCj4gKw0KPiArICAgICAgIHN3aXRjaCAobW9kZSkgew0KPiArICAgICAgIGNh c2UgQ0FOX01PREVfU1RBUlQ6DQo+ICsgICAgICAgICAgICAgICBlcnIgPSBmODE2MDRfc3RhcnQo bmV0ZGV2KTsNCj4gKyAgICAgICAgICAgICAgIGlmICghZXJyICYmIG5ldGlmX3F1ZXVlX3N0b3Bw ZWQobmV0ZGV2KSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbmV0aWZfd2FrZV9xdWV1ZShu ZXRkZXYpOw0KPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICAgICBkZWZhdWx0 Og0KPiArICAgICAgICAgICAgICAgZXJyID0gLUVPUE5PVFNVUFA7DQo+ICsgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgcmV0dXJuIGVycjsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZjgxNjA0 X3Byb2Nlc3NfcnhfcGFja2V0KHN0cnVjdCB1cmIgKnVyYikNCj4gK3sNCj4gKyAgICAgICBzdHJ1 Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdXJiLT5jb250ZXh0Ow0KPiArICAgICAgIHN0cnVjdCBu ZXRfZGV2aWNlX3N0YXRzICpzdGF0czsNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X2J1bGtfZGF0 YSAqcHRyOw0KPiArICAgICAgIHN0cnVjdCBjYW5fZnJhbWUgKmNmOw0KPiArICAgICAgIHN0cnVj dCBza19idWZmICpza2I7DQo+ICsgICAgICAgaW50IGksIGNvdW50Ow0KPiArICAgICAgIHU4ICpk YXRhOw0KPiArDQo+ICsgICAgICAgV0FSTl9PTihzaXplb2YoKnB0cikgIT0gRjgxNjA0X0RBVEFf U0laRSk7DQo+ICsNCj4gKyAgICAgICBkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7DQo+ICsg ICAgICAgc3RhdHMgPSAmbmV0ZGV2LT5zdGF0czsNCj4gKw0KPiArICAgICAgIGlmICh1cmItPmFj dHVhbF9sZW5ndGggJSBGODE2MDRfREFUQV9TSVpFKQ0KPiArICAgICAgICAgICAgICAgbmV0ZGV2 X3dhcm4obmV0ZGV2LCAiYWN0dWFsX2xlbmd0aCAlJSAlZCAhPSAwICglZClcbiIsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBGODE2MDRfREFUQV9TSVpFLCB1cmItPmFjdHVhbF9sZW5n dGgpOw0KPiArICAgICAgIGVsc2UgaWYgKCF1cmItPmFjdHVhbF9sZW5ndGgpDQo+ICsgICAgICAg ICAgICAgICBuZXRkZXZfd2FybihuZXRkZXYsICJhY3R1YWxfbGVuZ3RoID0gMCAoJWQpXG4iLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJiLT5hY3R1YWxfbGVuZ3RoKTsNCj4gKw0K PiArICAgICAgIGNvdW50ID0gdXJiLT5hY3R1YWxfbGVuZ3RoIC8gRjgxNjA0X0RBVEFfU0laRTsN Cj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7DQo+ICsgICAgICAg ICAgICAgICBwdHIgPSAoc3RydWN0IGY4MTYwNF9idWxrX2RhdGEgKikmZGF0YVtpICogRjgxNjA0 X0RBVEFfU0laRV07DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChwdHItPmNtZCAhPSBGODE2 MDRfQ01EX0RBVEEpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KPiArDQo+ ICsgICAgICAgICAgICAgICBza2IgPSBhbGxvY19jYW5fc2tiKG5ldGRldiwgJmNmKTsNCj4gKyAg ICAgICAgICAgICAgIGlmICghc2tiKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG5ldGRl dl93YXJuKG5ldGRldiwgIiVzOiBub3QgZW5vdWdoIG1lbW9yeSIsIF9fZnVuY19fKTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIGNmLT5sZW4gPSBjYW5fY2NfZGxjMmxlbihwdHItPmRsYyAmIEY4 MTYwNF9ETENfTEVOX01BU0spOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAocHRyLT5kbGMg JiBGODE2MDRfRExDX0VGRl9CSVQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2YtPmNh bl9pZCA9IGJlMzJfdG9fY3B1KHB0ci0+ZWZmLmlkKSA+PiAzOw0KPiArICAgICAgICAgICAgICAg ICAgICAgICBjZi0+Y2FuX2lkIHw9IENBTl9FRkZfRkxBRzsNCj4gKyAgICAgICAgICAgICAgIH0g ZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNmLT5jYW5faWQgPSBiZTE2X3RvX2Nw dShwdHItPnNmZi5pZCkgPj4gNTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAg ICAgICAgICAgaWYgKHB0ci0+ZGxjICYgRjgxNjA0X0RMQ19SVFJfQklUKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICBjZi0+Y2FuX2lkIHw9IENBTl9SVFJfRkxBRzsNCj4gKyAgICAgICAgICAg ICAgIGVsc2UgaWYgKHB0ci0+ZGxjICYgRjgxNjA0X0RMQ19FRkZfQklUKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICBtZW1jcHkoY2YtPmRhdGEsIHB0ci0+ZWZmLmRhdGEsIGNmLT5sZW4pOw0K PiArICAgICAgICAgICAgICAgZWxzZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHko Y2YtPmRhdGEsIHB0ci0+c2ZmLmRhdGEsIGNmLT5sZW4pOw0KPiArDQo+ICsgICAgICAgICAgICAg ICBpZiAoIShjZi0+Y2FuX2lkICYgQ0FOX1JUUl9GTEFHKSkNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgc3RhdHMtPnJ4X2J5dGVzICs9IGNmLT5sZW47DQo+ICsNCj4gKyAgICAgICAgICAgICAg IHN0YXRzLT5yeF9wYWNrZXRzKys7DQo+ICsgICAgICAgICAgICAgICBuZXRpZl9yeChza2IpOw0K PiArICAgICAgIH0NCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZjgxNjA0X3JlYWRfYnVsa19j YWxsYmFjayhzdHJ1Y3QgdXJiICp1cmIpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IG5ldF9kZXZp Y2UgKm5ldGRldiA9IHVyYi0+Y29udGV4dDsNCj4gKyAgICAgICBpbnQgc3RhdHVzOw0KPiArDQo+ ICsgICAgICAgaWYgKCFuZXRpZl9kZXZpY2VfcHJlc2VudChuZXRkZXYpKQ0KPiArICAgICAgICAg ICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgICAgaWYgKHVyYi0+c3RhdHVzKQ0KPiArICAgICAg ICAgICAgICAgbmV0ZGV2X2luZm8obmV0ZGV2LCAiJXM6IFVSQiBhYm9ydGVkICVwZVxuIiwgX19m dW5jX18sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBFUlJfUFRSKHVyYi0+c3RhdHVz KSk7DQo+ICsNCj4gKyAgICAgICBzd2l0Y2ggKHVyYi0+c3RhdHVzKSB7DQo+ICsgICAgICAgY2Fz ZSAwOiAvKiBzdWNjZXNzICovDQo+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAg ICAgIGNhc2UgLUVOT0VOVDoNCj4gKyAgICAgICBjYXNlIC1FUElQRToNCj4gKyAgICAgICBjYXNl IC1FUFJPVE86DQo+ICsgICAgICAgY2FzZSAtRVNIVVRET1dOOg0KPiArICAgICAgICAgICAgICAg cmV0dXJuOw0KPiArDQo+ICsgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgIGdvdG8g cmVzdWJtaXRfdXJiOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGY4MTYwNF9wcm9jZXNz X3J4X3BhY2tldCh1cmIpOw0KPiArDQo+ICtyZXN1Ym1pdF91cmI6DQo+ICsgICAgICAgc3RhdHVz ID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsNCj4gKyAgICAgICBpZiAoc3RhdHVz ID09IC1FTk9ERVYpDQo+ICsgICAgICAgICAgICAgICBuZXRpZl9kZXZpY2VfZGV0YWNoKG5ldGRl dik7DQo+ICsgICAgICAgZWxzZSBpZiAoc3RhdHVzKQ0KPiArICAgICAgICAgICAgICAgbmV0ZGV2 X2VycihuZXRkZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogZmFpbGVkIHRv IHJlc3VibWl0IHJlYWQgYnVsayB1cmI6ICVwZVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgX19mdW5jX18sIEVSUl9QVFIoc3RhdHVzKSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGY4MTYwNF93cml0ZV9idWxrX2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikNCj4gK3sNCj4g KyAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdXJiLT5jb250ZXh0Ow0KPiArDQo+ ICsgICAgICAgaWYgKCFuZXRpZl9kZXZpY2VfcHJlc2VudChuZXRkZXYpKQ0KPiArICAgICAgICAg ICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgICAgaWYgKHVyYi0+c3RhdHVzKQ0KPiArICAgICAg ICAgICAgICAgbmV0ZGV2X2luZm8obmV0ZGV2LCAiJXM6IFR4IFVSQiBlcnJvcjogJXBlXG4iLCBf X2Z1bmNfXywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSUl9QVFIodXJiLT5zdGF0 dXMpKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZjgxNjA0X2hhbmRsZV9jbGVhcl9vdmVy cnVuX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KPiArew0KPiArICAgICAgIHN0cnVj dCBmODE2MDRfcG9ydF9wcml2ICpwcml2Ow0KPiArICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpu ZXRkZXY7DQo+ICsNCj4gKyAgICAgICBwcml2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBm ODE2MDRfcG9ydF9wcml2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX2Ns ZWFyX292ZXJydW5fd29yayk7DQo+ICsgICAgICAgbmV0ZGV2ID0gcHJpdi0+bmV0ZGV2Ow0KPiAr DQo+ICsgICAgICAgZjgxNjA0X3NldF9zamExMDAwX3JlZ2lzdGVyKHByaXYtPmRldiwgbmV0ZGV2 LT5kZXZfaWQsIFNKQTEwMDBfQ01SLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDTURfQ0RPKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZjgxNjA0X2hhbmRsZV9j bGVhcl9yZWdfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICt7DQo+ICsgICAgICAg c3RydWN0IGY4MTYwNF9wb3J0X3ByaXYgKnByaXY7DQo+ICsgICAgICAgc3RydWN0IG5ldF9kZXZp Y2UgKm5ldGRldjsNCj4gKyAgICAgICBib29sIGNsZWFyX2VjYywgY2xlYXJfYWxjOw0KPiArICAg ICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ICsgICAgICAgdTggdG1wOw0KPiArDQo+ICsgICAg ICAgcHJpdiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgZjgxNjA0X3BvcnRfcHJpdiwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9jbGVhcl9yZWdfd29yayk7DQo+ICsg ICAgICAgbmV0ZGV2ID0gcHJpdi0+bmV0ZGV2Ow0KPiArDQo+ICsgICAgICAgc3Bpbl9sb2NrX2ly cXNhdmUoJnByaXYtPmxvY2ssIGZsYWdzKTsNCj4gKyAgICAgICBjbGVhcl9hbGMgPSBwcml2LT5u ZWVkX2NsZWFyX2FsYzsNCj4gKyAgICAgICBjbGVhcl9lY2MgPSBwcml2LT5uZWVkX2NsZWFyX2Vj YzsNCj4gKyAgICAgICBwcml2LT5uZWVkX2NsZWFyX2FsYyA9IGZhbHNlOw0KPiArICAgICAgIHBy aXYtPm5lZWRfY2xlYXJfZWNjID0gZmFsc2U7DQo+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVz dG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsgICAgICAgaWYgKGNsZWFyX2FsYykN Cj4gKyAgICAgICAgICAgICAgIGY4MTYwNF9nZXRfc2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYs IG5ldGRldi0+ZGV2X2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNKQTEwMDBfQUxDLCAmdG1wKTsNCj4gKw0KPiArICAgICAgIGlmIChjbGVhcl9lY2Mp DQo+ICsgICAgICAgICAgICAgICBmODE2MDRfZ2V0X3NqYTEwMDBfcmVnaXN0ZXIocHJpdi0+ZGV2 LCBuZXRkZXYtPmRldl9pZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTSkExMDAwX0VDQywgJnRtcCk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGY4 MTYwNF9oYW5kbGVfdHgoc3RydWN0IHVyYiAqdXJiKQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBm ODE2MDRfaW50X2RhdGEgKmRhdGEgPSB1cmItPnRyYW5zZmVyX2J1ZmZlcjsNCj4gKyAgICAgICBz dHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2ID0gdXJiLT5jb250ZXh0Ow0KPiArICAgICAgIHN0cnVj dCBuZXRfZGV2aWNlX3N0YXRzICpzdGF0czsNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3BvcnRf cHJpdiAqcHJpdjsNCj4gKw0KPiArICAgICAgIHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0K PiArICAgICAgIHN0YXRzID0gJm5ldGRldi0+c3RhdHM7DQo+ICsNCj4gKyAgICAgICBpZiAoIShk YXRhLT5pc3JjICYgSVJRX1RJKSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gKw0KPiAr ICAgICAgIC8qIHRyYW5zbWlzc2lvbiBidWZmZXIgcmVsZWFzZWQgKi8NCj4gKyAgICAgICBpZiAo cHJpdi0+Y2FuLmN0cmxtb2RlICYgQ0FOX0NUUkxNT0RFX09ORV9TSE9UICYmDQo+ICsgICAgICAg ICAgICEoZGF0YS0+c3IgJiBTUl9UQ1MpKSB7DQo+ICsgICAgICAgICAgICAgICBzdGF0cy0+dHhf ZXJyb3JzKys7DQo+ICsgICAgICAgICAgICAgICBjYW5fZnJlZV9lY2hvX3NrYihuZXRkZXYsIDAs IE5VTEwpOw0KPiArICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAgICAgICAvKiB0cmFuc21p c3Npb24gY29tcGxldGUgKi8NCj4gKyAgICAgICAgICAgICAgIHN0YXRzLT50eF9ieXRlcyArPSBj YW5fZ2V0X2VjaG9fc2tiKG5ldGRldiwgMCwgTlVMTCk7DQo+ICsgICAgICAgICAgICAgICBzdGF0 cy0+dHhfcGFja2V0cysrOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIG5ldGlmX3dha2Vf cXVldWUobmV0ZGV2KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZjgxNjA0X3JlYWRfaW50 X2NhbGxiYWNrKHN0cnVjdCB1cmIgKnVyYikNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0 X2ludF9kYXRhICpkYXRhID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7DQo+ICsgICAgICAgc3RydWN0 IG5ldF9kZXZpY2UgKm5ldGRldiA9IHVyYi0+Y29udGV4dDsNCj4gKyAgICAgICBzdHJ1Y3QgbmV0 X2RldmljZV9zdGF0cyAqc3RhdHM7DQo+ICsgICAgICAgc3RydWN0IGY4MTYwNF9wb3J0X3ByaXYg KnByaXY7DQo+ICsgICAgICAgZW51bSBjYW5fc3RhdGUgY2FuX3N0YXRlOw0KPiArICAgICAgIGVu dW0gY2FuX3N0YXRlIHJ4X3N0YXRlOw0KPiArICAgICAgIGVudW0gY2FuX3N0YXRlIHR4X3N0YXRl Ow0KPiArICAgICAgIHN0cnVjdCBjYW5fZnJhbWUgKmNmOw0KPiArICAgICAgIHN0cnVjdCBza19i dWZmICpza2I7DQo+ICsgICAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gKyAgICAgICBpbnQg cjsNCj4gKw0KPiArICAgICAgIHByaXYgPSBuZXRkZXZfcHJpdihuZXRkZXYpOw0KPiArICAgICAg IGNhbl9zdGF0ZSA9IHByaXYtPmNhbi5zdGF0ZTsNCj4gKyAgICAgICBzdGF0cyA9ICZuZXRkZXYt PnN0YXRzOw0KPiArDQo+ICsgICAgICAgaWYgKCFuZXRpZl9kZXZpY2VfcHJlc2VudChuZXRkZXYp KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgICAgaWYgKHVyYi0+c3Rh dHVzKQ0KPiArICAgICAgICAgICAgICAgbmV0ZGV2X2luZm8obmV0ZGV2LCAiJXM6IEludCBVUkIg YWJvcnRlZDogJXBlXG4iLCBfX2Z1bmNfXywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IEVSUl9QVFIodXJiLT5zdGF0dXMpKTsNCj4gKw0KPiArICAgICAgIHN3aXRjaCAodXJiLT5zdGF0 dXMpIHsNCj4gKyAgICAgICBjYXNlIDA6IC8qIHN1Y2Nlc3MgKi8NCj4gKyAgICAgICAgICAgICAg IGJyZWFrOw0KPiArDQo+ICsgICAgICAgY2FzZSAtRU5PRU5UOg0KPiArICAgICAgIGNhc2UgLUVQ SVBFOg0KPiArICAgICAgIGNhc2UgLUVQUk9UTzoNCj4gKyAgICAgICBjYXNlIC1FU0hVVERPV046 DQo+ICsgICAgICAgICAgICAgICByZXR1cm47DQo+ICsNCj4gKyAgICAgICBkZWZhdWx0Og0KPiAr ICAgICAgICAgICAgICAgZ290byByZXN1Ym1pdF91cmI7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgLyogTm90ZTogQUxDL0VDQyB3aWxsIG5vdCBhdXRvIGNsZWFyIGJ5IHJlYWQgaGVyZSwg bXVzdCB0byBjbGVhciBieQ0KPiArICAgICAgICAqIHJlYWQgcmVnaXN0ZXIgKHZpYSBoYW5kbGVf Y2xlYXJfcmVnX3dvcmspLg0KPiArICAgICAgICAqLw0KPiArDQo+ICsgICAgICAgLyogaGFuZGxl IGNhbiBidXMgZXJyb3JzICovDQo+ICsgICAgICAgaWYgKGRhdGEtPmlzcmMgJiAoSVJRX0RPSSB8 IElSUV9FSSB8IElSUV9CRUkgfCBJUlFfRVBJIHwgSVJRX0FMSSkpIHsNCj4gKyAgICAgICAgICAg ICAgIHNrYiA9IGFsbG9jX2Nhbl9lcnJfc2tiKG5ldGRldiwgJmNmKTsNCj4gKyAgICAgICAgICAg ICAgIGlmICghc2tiKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl93YXJuKG5l dGRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSB0 byBhbGxvY19jYW5fZXJyX3NrYlxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8g cmVzdWJtaXRfdXJiOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAg ICBjZi0+Y2FuX2lkIHw9IENBTl9FUlJfQ05UOw0KPiArICAgICAgICAgICAgICAgY2YtPmRhdGFb Nl0gPSBkYXRhLT50eGVycjsNCj4gKyAgICAgICAgICAgICAgIGNmLT5kYXRhWzddID0gZGF0YS0+ cnhlcnI7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChkYXRhLT5pc3JjICYgSVJRX0RPSSkg ew0KPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBkYXRhIG92ZXJydW4gaW50ZXJydXB0ICov DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIG5ldGRldl9kYmcobmV0ZGV2LCAiZGF0YSBvdmVy cnVuIGludGVycnVwdFxuIik7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNmLT5jYW5faWQg fD0gQ0FOX0VSUl9DUlRMOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBjZi0+ZGF0YVsxXSA9 IENBTl9FUlJfQ1JUTF9SWF9PVkVSRkxPVzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3Rh dHMtPnJ4X292ZXJfZXJyb3JzKys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLT5y eF9lcnJvcnMrKzsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZV93b3Jr KCZwcml2LT5oYW5kbGVfY2xlYXJfb3ZlcnJ1bl93b3JrKTsNCj4gKyAgICAgICAgICAgICAgIH0N Cj4gKw0KPiArICAgICAgICAgICAgICAgaWYgKGRhdGEtPmlzcmMgJiBJUlFfRUkpIHsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgLyogZXJyb3Igd2FybmluZyBpbnRlcnJ1cHQgKi8NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhuZXRkZXYsICJlcnJvciB3YXJuaW5nIGlu dGVycnVwdFxuIik7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEtPnNy ICYgU1JfQlMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N0YXRlID0g Q0FOX1NUQVRFX0JVU19PRkY7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh dGEtPnNyICYgU1JfRVMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N0 YXRlID0gQ0FOX1NUQVRFX0VSUk9SX1dBUk5JTkc7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IGVsc2UNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3RhdGUgPSBDQU5f U1RBVEVfRVJST1JfQUNUSVZFOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAg ICAgICAgICBpZiAoZGF0YS0+aXNyYyAmIElSUV9CRUkpIHsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgLyogYnVzIGVycm9yIGludGVycnVwdCAqLw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBuZXRkZXZfZGJnKG5ldGRldiwgImJ1cyBlcnJvciBpbnRlcnJ1cHRcbiIpOw0KPiArDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNhbi5jYW5fc3RhdHMuYnVzX2Vycm9yKys7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLT5yeF9lcnJvcnMrKzsNCj4gKw0KPiArICAg ICAgICAgICAgICAgICAgICAgICBjZi0+Y2FuX2lkIHw9IENBTl9FUlJfUFJPVCB8IENBTl9FUlJf QlVTRVJST1I7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IGVycm9yIHR5 cGUgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChkYXRhLT5lY2MgJiBFQ0Nf TUFTSykgew0KPiArICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVDQ19CSVQ6DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX0JJ VDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY2FzZSBFQ0NfRk9STToNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjZi0+ZGF0YVsyXSB8PSBDQU5fRVJSX1BST1RfRk9STTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY2Fz ZSBFQ0NfU1RVRkY6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2YtPmRhdGFb Ml0gfD0gQ0FOX0VSUl9QUk9UX1NUVUZGOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Og0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IGVycm9yIGxvY2F0aW9u ICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNmLT5kYXRhWzNdID0gZGF0YS0+ZWNjICYg RUNDX1NFRzsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBFcnJvciBvY2N1cnJl ZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAo KGRhdGEtPmVjYyAmIEVDQ19ESVIpID09IDApDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX1RYOw0KPiArDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPm5lZWRfY2xlYXJfZWNjID0gdHJ1ZTsNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywg ZmxhZ3MpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlX3dvcmsoJnBy aXYtPmhhbmRsZV9jbGVhcl9yZWdfd29yayk7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsNCj4g KyAgICAgICAgICAgICAgIGlmIChkYXRhLT5pc3JjICYgSVJRX0VQSSkgew0KPiArICAgICAgICAg ICAgICAgICAgICAgICBpZiAoY2FuX3N0YXRlID09IENBTl9TVEFURV9FUlJPUl9QQVNTSVZFKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zdGF0ZSA9IENBTl9TVEFURV9F UlJPUl9XQVJOSU5HOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FuX3N0YXRlID0gQ0FOX1NUQVRFX0VSUk9SX1BBU1NJ VkU7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgLyogZXJyb3IgcGFzc2l2ZSBpbnRl cnJ1cHQgKi8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgbmV0ZGV2X2RiZyhuZXRkZXYsICJl cnJvciBwYXNzaXZlIGludGVycnVwdDogJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2FuX3N0YXRlKTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAg ICAgICAgICAgICAgaWYgKGRhdGEtPmlzcmMgJiBJUlFfQUxJKSB7DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgIC8qIGFyYml0cmF0aW9uIGxvc3QgaW50ZXJydXB0ICovDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG5ldGRldl9kYmcobmV0ZGV2LCAiYXJiaXRyYXRpb24gbG9zdCBpbnRlcnJ1 cHRcbiIpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNhbi5jYW5fc3Rh dHMuYXJiaXRyYXRpb25fbG9zdCsrOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy0+ dHhfZXJyb3JzKys7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGNmLT5jYW5faWQgfD0gQ0FO X0VSUl9MT1NUQVJCOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBjZi0+ZGF0YVswXSA9IGRh dGEtPmFsYyAmIEFMQ19NQVNLOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNwaW5f bG9ja19pcnFzYXZlKCZwcml2LT5sb2NrLCBmbGFncyk7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHByaXYtPm5lZWRfY2xlYXJfYWxjID0gdHJ1ZTsNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcHJpdi0+bG9jaywgZmxhZ3MpOw0KPiArDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlX3dvcmsoJnByaXYtPmhhbmRsZV9jbGVhcl9y ZWdfd29yayk7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlm IChjYW5fc3RhdGUgIT0gcHJpdi0+Y2FuLnN0YXRlKSB7DQo+ICsgICAgICAgICAgICAgICAgICAg ICAgIHR4X3N0YXRlID0gZGF0YS0+dHhlcnIgPj0gZGF0YS0+cnhlcnIgPyBjYW5fc3RhdGUgOiAw Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICByeF9zdGF0ZSA9IGRhdGEtPnR4ZXJyIDw9IGRh dGEtPnJ4ZXJyID8gY2FuX3N0YXRlIDogMDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBjYW5fY2hhbmdlX3N0YXRlKG5ldGRldiwgY2YsIHR4X3N0YXRlLCByeF9zdGF0ZSk7DQo+ICsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbl9zdGF0ZSA9PSBDQU5fU1RBVEVfQlVT X09GRikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fYnVzX29mZihuZXRk ZXYpOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBuZXRpZl9y eChza2IpOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIC8qIGhhbmRsZSBUWCAqLw0KPiAr ICAgICAgIGlmIChjYW5fc3RhdGUgIT0gQ0FOX1NUQVRFX0JVU19PRkYpDQo+ICsgICAgICAgICAg ICAgICBmODE2MDRfaGFuZGxlX3R4KHVyYik7DQo+ICsNCj4gK3Jlc3VibWl0X3VyYjoNCj4gKyAg ICAgICByID0gdXNiX3N1Ym1pdF91cmIodXJiLCBHRlBfQVRPTUlDKTsNCj4gKyAgICAgICBpZiAo cikgew0KPiArICAgICAgICAgICAgICAgbmV0ZGV2X2VycihuZXRkZXYsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICIlczogZmFpbGVkIHJlc3VibWl0dGluZyBpbnQgYnVsayB1cmI6ICVw ZVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIEVSUl9QVFIocikp Ow0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PREVWKQ0KPiArICAgICAgICAg ICAgICAgICAgICAgICBuZXRpZl9kZXZpY2VfZGV0YWNoKG5ldGRldik7DQo+ICsgICAgICAgfQ0K PiArfQ0KPiArDQo+ICtzdGF0aWMgbmV0ZGV2X3R4X3QgZjgxNjA0X3N0YXJ0X3htaXQoc3RydWN0 IHNrX2J1ZmYgKnNrYiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGNhbl9mcmFt ZSAqY2YgPSAoc3RydWN0IGNhbl9mcmFtZSAqKXNrYi0+ZGF0YTsNCj4gKyAgICAgICBzdHJ1Y3Qg ZjgxNjA0X3BvcnRfcHJpdiAqcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsgICAgICAg c3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzID0gJm5ldGRldi0+c3RhdHM7DQo+ICsgICAg ICAgc3RydWN0IGY4MTYwNF9idWxrX2RhdGEgKnB0cjsNCj4gKyAgICAgICBpbnQgc3RhdHVzLCBs ZW47DQo+ICsNCj4gKyAgICAgICBpZiAoY2FuX2Ryb3BwZWRfaW52YWxpZF9za2IobmV0ZGV2LCBz a2IpKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIE5FVERFVl9UWF9PSzsNCj4gKw0KPiArICAg ICAgIG5ldGlmX3N0b3BfcXVldWUobmV0ZGV2KTsNCj4gKw0KPiArICAgICAgIFdBUk5fT04oc2l6 ZW9mKCpwdHIpICE9IEY4MTYwNF9EQVRBX1NJWkUpOw0KPiArDQo+ICsgICAgICAgcHRyID0gKHN0 cnVjdCBmODE2MDRfYnVsa19kYXRhICopcHJpdi0+YnVsa193cml0ZV9idWZmZXI7DQo+ICsgICAg ICAgbWVtc2V0KHB0ciwgMCwgRjgxNjA0X0RBVEFfU0laRSk7DQo+ICsNCj4gKyAgICAgICBsZW4g PSBjYW5fZ2V0X2NjX2RsYyhjZiwgcHJpdi0+Y2FuLmN0cmxtb2RlKTsNCj4gKyAgICAgICBwdHIt PmNtZCA9IEY4MTYwNF9DTURfREFUQTsNCj4gKyAgICAgICBwdHItPmRsYyA9IGxlbjsNCj4gKw0K PiArICAgICAgIGlmIChjZi0+Y2FuX2lkICYgQ0FOX1JUUl9GTEFHKQ0KPiArICAgICAgICAgICAg ICAgcHRyLT5kbGMgfD0gRjgxNjA0X0RMQ19SVFJfQklUOw0KPiArDQo+ICsgICAgICAgaWYgKGNm LT5jYW5faWQgJiBDQU5fRUZGX0ZMQUcpIHsNCj4gKyAgICAgICAgICAgICAgIHB0ci0+ZWZmLmlk ID0gY3B1X3RvX2JlMzIoKGNmLT5jYW5faWQgJiBDQU5fRUZGX01BU0spIDw8IDMpOw0KPiArICAg ICAgICAgICAgICAgcHRyLT5kbGMgfD0gRjgxNjA0X0RMQ19FRkZfQklUOw0KPiArDQo+ICsgICAg ICAgICAgICAgICBpZiAoIShjZi0+Y2FuX2lkICYgQ0FOX1JUUl9GTEFHKSkNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgbWVtY3B5KCZwdHItPmVmZi5kYXRhLCBjZi0+ZGF0YSwgbGVuKTsNCj4g KyAgICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgcHRyLT5zZmYuaWQgPSBjcHVfdG9f YmUxNigoY2YtPmNhbl9pZCAmIENBTl9TRkZfTUFTSykgPDwgNSk7DQo+ICsNCj4gKyAgICAgICAg ICAgICAgIGlmICghKGNmLT5jYW5faWQgJiBDQU5fUlRSX0ZMQUcpKQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICBtZW1jcHkoJnB0ci0+c2ZmLmRhdGEsIGNmLT5kYXRhLCBsZW4pOw0KPiArICAg ICAgIH0NCj4gKw0KPiArICAgICAgIGNhbl9wdXRfZWNob19za2Ioc2tiLCBuZXRkZXYsIDAsIDAp Ow0KPiArDQo+ICsgICAgICAgc3RhdHVzID0gdXNiX3N1Ym1pdF91cmIocHJpdi0+d3JpdGVfdXJi LCBHRlBfQVRPTUlDKTsNCj4gKyAgICAgICBpZiAoc3RhdHVzKSB7DQo+ICsgICAgICAgICAgICAg ICBuZXRkZXZfZXJyKG5ldGRldiwgIiVzOiBmYWlsZWQgdG8gcmVzdWJtaXQgdHggYnVsayB1cmI6 ICVwZVxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIEVSUl9QVFIo c3RhdHVzKSk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGNhbl9mcmVlX2VjaG9fc2tiKG5ldGRl diwgMCwgTlVMTCk7DQo+ICsgICAgICAgICAgICAgICBzdGF0cy0+dHhfZHJvcHBlZCsrOw0KPiAr DQo+ICsgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IC1FTk9ERVYpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIG5ldGlmX2RldmljZV9kZXRhY2gobmV0ZGV2KTsNCj4gKyAgICAgICB9DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gTkVUREVWX1RYX09LOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IGY4MTYwNF9nZXRfYmVycl9jb3VudGVyKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpuZXRk ZXYsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNhbl9iZXJy X2NvdW50ZXIgKmJlYykNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3BvcnRfcHJpdiAq cHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsgICAgICAgaW50IHN0YXR1czsNCj4gKyAg ICAgICB1OCB0eGVycjsNCj4gKyAgICAgICB1OCByeGVycjsNCj4gKw0KPiArICAgICAgIHN0YXR1 cyA9IGY4MTYwNF9nZXRfc2phMTAwMF9yZWdpc3Rlcihwcml2LT5kZXYsIG5ldGRldi0+ZGV2X2lk LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSkExMDAw X1RYRVJSLCAmdHhlcnIpOw0KPiArICAgICAgIGlmIChzdGF0dXMpDQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gc3RhdHVzOw0KPiArDQo+ICsgICAgICAgc3RhdHVzID0gZjgxNjA0X2dldF9zamEx MDAwX3JlZ2lzdGVyKHByaXYtPmRldiwgbmV0ZGV2LT5kZXZfaWQsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNKQTEwMDBfUlhFUlIsICZyeGVycik7DQo+ ICsgICAgICAgaWYgKHN0YXR1cykNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7DQo+ ICsNCj4gKyAgICAgICBiZWMtPnR4ZXJyID0gdHhlcnI7DQo+ICsgICAgICAgYmVjLT5yeGVyciA9 IHJ4ZXJyOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2 b2lkIGY4MTYwNF9yZW1vdmVfdXJicyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQ0KPiArew0K PiArICAgICAgIHN0cnVjdCBmODE2MDRfcG9ydF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0 ZGV2KTsNCj4gKyAgICAgICBpbnQgaTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBG ODE2MDRfTUFYX1JYX1VSQlM7ICsraSkNCj4gKyAgICAgICAgICAgICAgIHVzYl9mcmVlX3VyYihw cml2LT5yZWFkX3VyYltpXSk7DQo+ICsNCj4gKyAgICAgICB1c2JfZnJlZV91cmIocHJpdi0+d3Jp dGVfdXJiKTsNCj4gKyAgICAgICB1c2JfZnJlZV91cmIocHJpdi0+aW50X3VyYik7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgZjgxNjA0X3ByZXBhcmVfdXJicyhzdHJ1Y3QgbmV0X2RldmljZSAq bmV0ZGV2KQ0KPiArew0KPiArICAgICAgIHN0YXRpYyBjb25zdCB1OCBidWxrX2luX2FkZHJbRjgx NjA0X01BWF9ERVZdID0geyAweDgyLCAweDg0IH07DQo+ICsgICAgICAgc3RhdGljIGNvbnN0IHU4 IGJ1bGtfb3V0X2FkZHJbRjgxNjA0X01BWF9ERVZdID0geyAweDAxLCAweDAzIH07DQo+ICsgICAg ICAgc3RhdGljIGNvbnN0IHU4IGludF9pbl9hZGRyW0Y4MTYwNF9NQVhfREVWXSA9IHsgMHg4MSwg MHg4MyB9Ow0KPiArICAgICAgIHN0cnVjdCBmODE2MDRfcG9ydF9wcml2ICpwcml2ID0gbmV0ZGV2 X3ByaXYobmV0ZGV2KTsNCj4gKyAgICAgICBpbnQgaWQgPSBuZXRkZXYtPmRldl9pZDsNCj4gKyAg ICAgICBpbnQgaTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBGODE2MDRfTUFYX1JY X1VSQlM7ICsraSkgew0KPiArICAgICAgICAgICAgICAgcHJpdi0+cmVhZF91cmJbaV0gPSB1c2Jf YWxsb2NfdXJiKDAsIEdGUF9LRVJORUwpOw0KPiArICAgICAgICAgICAgICAgaWYgKCFwcml2LT5y ZWFkX3VyYltpXSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsNCj4gKw0K PiArICAgICAgICAgICAgICAgdXNiX2ZpbGxfYnVsa191cmIocHJpdi0+cmVhZF91cmJbaV0sIHBy aXYtPmRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYl9yY3ZidWxr cGlwZShwcml2LT5kZXYsIGJ1bGtfaW5fYWRkcltpZF0pLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJpdi0+YnVsa19yZWFkX2J1ZmZlcltpXSwgRjgxNjA0X0JVTEtfU0la RSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY4MTYwNF9yZWFkX2J1bGtf Y2FsbGJhY2ssIG5ldGRldik7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcHJpdi0+d3Jp dGVfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIXBy aXYtPndyaXRlX3VyYikNCj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7DQo+ICsNCj4gKyAg ICAgICB1c2JfZmlsbF9idWxrX3VyYihwcml2LT53cml0ZV91cmIsIHByaXYtPmRldiwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICB1c2Jfc25kYnVsa3BpcGUocHJpdi0+ZGV2LCBidWxrX291 dF9hZGRyW2lkXSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+YnVsa193cml0 ZV9idWZmZXIsIEY4MTYwNF9EQVRBX1NJWkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ZjgxNjA0X3dyaXRlX2J1bGtfY2FsbGJhY2ssIG5ldGRldik7DQo+ICsNCj4gKyAgICAgICBwcml2 LT5pbnRfdXJiID0gdXNiX2FsbG9jX3VyYigwLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAo IXByaXYtPmludF91cmIpDQo+ICsgICAgICAgICAgICAgICBnb3RvIGVycm9yOw0KPiArDQo+ICsg ICAgICAgdXNiX2ZpbGxfaW50X3VyYihwcml2LT5pbnRfdXJiLCBwcml2LT5kZXYsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICB1c2JfcmN2aW50cGlwZShwcml2LT5kZXYsIGludF9pbl9hZGRy W2lkXSksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5pbnRfcmVhZF9idWZmZXIs IEY4MTYwNF9JTlRfU0laRSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGY4MTYwNF9yZWFk X2ludF9jYWxsYmFjaywgbmV0ZGV2LCAxKTsNCj4gKw0KPiArICAgICAgIHJldHVybiAwOw0KPiAr DQo+ICtlcnJvcjoNCj4gKyAgICAgICBmODE2MDRfcmVtb3ZlX3VyYnMobmV0ZGV2KTsNCj4gKyAg ICAgICByZXR1cm4gLUVOT01FTTsNCj4gK30NCj4gKw0KPiArLyogT3BlbiBVU0IgZGV2aWNlICov DQo+ICtzdGF0aWMgaW50IGY4MTYwNF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpDQo+ ICt7DQo+ICsgICAgICAgaW50IGVycjsNCj4gKw0KPiArICAgICAgIGVyciA9IG9wZW5fY2FuZGV2 KG5ldGRldik7DQo+ICsgICAgICAgaWYgKGVycikNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBl cnI7DQo+ICsNCj4gKyAgICAgICBlcnIgPSBmODE2MDRfc3RhcnQobmV0ZGV2KTsNCj4gKyAgICAg ICBpZiAoZXJyKQ0KPiArICAgICAgICAgICAgICAgZ290byBzdGFydF9mYWlsZWQ7DQo+ICsNCj4g KyAgICAgICBuZXRpZl9zdGFydF9xdWV1ZShuZXRkZXYpOw0KPiArICAgICAgIHJldHVybiAwOw0K PiArDQo+ICtzdGFydF9mYWlsZWQ6DQo+ICsgICAgICAgaWYgKGVyciA9PSAtRU5PREVWKQ0KPiAr ICAgICAgICAgICAgICAgbmV0aWZfZGV2aWNlX2RldGFjaChuZXRkZXYpOw0KPiArDQo+ICsgICAg ICAgY2xvc2VfY2FuZGV2KG5ldGRldik7DQo+ICsNCj4gKyAgICAgICByZXR1cm4gZXJyOw0KPiAr fQ0KPiArDQo+ICsvKiBDbG9zZSBVU0IgZGV2aWNlICovDQo+ICtzdGF0aWMgaW50IGY4MTYwNF9j bG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KQ0KPiArew0KPiArICAgICAgIHN0cnVjdCBm ODE2MDRfcG9ydF9wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYobmV0ZGV2KTsNCj4gKw0KPiArICAg ICAgIGY4MTYwNF9zZXRfcmVzZXRfbW9kZShuZXRkZXYpOw0KPiArDQo+ICsgICAgICAgbmV0aWZf c3RvcF9xdWV1ZShuZXRkZXYpOw0KPiArICAgICAgIGNhbmNlbF93b3JrX3N5bmMoJnByaXYtPmhh bmRsZV9jbGVhcl9vdmVycnVuX3dvcmspOw0KPiArICAgICAgIGNhbmNlbF93b3JrX3N5bmMoJnBy aXYtPmhhbmRsZV9jbGVhcl9yZWdfd29yayk7DQo+ICsgICAgICAgY2xvc2VfY2FuZGV2KG5ldGRl dik7DQo+ICsNCj4gKyAgICAgICBmODE2MDRfdW5yZWdpc3Rlcl91cmJzKG5ldGRldik7DQo+ICsN Cj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBu ZXRfZGV2aWNlX29wcyBmODE2MDRfbmV0ZGV2X29wcyA9IHsNCj4gKyAgICAgICAubmRvX29wZW4g PSBmODE2MDRfb3BlbiwNCj4gKyAgICAgICAubmRvX3N0b3AgPSBmODE2MDRfY2xvc2UsDQo+ICsg ICAgICAgLm5kb19zdGFydF94bWl0ID0gZjgxNjA0X3N0YXJ0X3htaXQsDQo+ICsgICAgICAgLm5k b19jaGFuZ2VfbXR1ID0gY2FuX2NoYW5nZV9tdHUsDQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgZjgxNjA0X2JpdHRpbWluZ19jb25zdCA9IHsN Cj4gKyAgICAgICAubmFtZSA9ICJmODE2MDQiLA0KPiArICAgICAgIC50c2VnMV9taW4gPSAxLA0K PiArICAgICAgIC50c2VnMV9tYXggPSAxNiwNCj4gKyAgICAgICAudHNlZzJfbWluID0gMSwNCj4g KyAgICAgICAudHNlZzJfbWF4ID0gOCwNCj4gKyAgICAgICAuc2p3X21heCA9IDQsDQo+ICsgICAg ICAgLmJycF9taW4gPSAxLA0KPiArICAgICAgIC5icnBfbWF4ID0gNjQsDQo+ICsgICAgICAgLmJy cF9pbmMgPSAxLA0KPiArfTsNCj4gKw0KPiArLyogQ2FsbGVkIGJ5IHRoZSB1c2IgY29yZSB3aGVu IGRyaXZlciBpcyB1bmxvYWRlZCBvciBkZXZpY2UgaXMgcmVtb3ZlZCAqLw0KPiArc3RhdGljIHZv aWQgZjgxNjA0X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpDQo+ICt7DQo+ ICsgICAgICAgc3RydWN0IGY4MTYwNF9wcml2ICpwcml2ID0gdXNiX2dldF9pbnRmZGF0YShpbnRm KTsNCj4gKyAgICAgICBpbnQgaTsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBGODE2 MDRfTUFYX0RFVjsgKytpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAoIXByaXYtPm5ldGRldltp XSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQo+ICsNCj4gKyAgICAgICAg ICAgICAgIHVucmVnaXN0ZXJfbmV0ZGV2KHByaXYtPm5ldGRldltpXSk7DQo+ICsgICAgICAgICAg ICAgICBmODE2MDRfcmVtb3ZlX3VyYnMocHJpdi0+bmV0ZGV2W2ldKTsNCj4gKyAgICAgICAgICAg ICAgIGZyZWVfY2FuZGV2KHByaXYtPm5ldGRldltpXSk7DQo+ICsgICAgICAgfQ0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IGY4MTYwNF9zZXRfdGVybWluYXRpb24oc3RydWN0IG5ldF9kZXZpY2Ug Km5ldGRldiwgdTE2IHRlcm0pDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IGY4MTYwNF9wb3J0X3By aXYgKnBvcnRfcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsgICAgICAgc3RydWN0IGY4 MTYwNF9wcml2ICpwcml2Ow0KPiArICAgICAgIHU4IG1hc2ssIGRhdGEgPSAwOw0KPiArICAgICAg IGludCByOw0KPiArDQo+ICsgICAgICAgcHJpdiA9IHVzYl9nZXRfaW50ZmRhdGEocG9ydF9wcml2 LT5pbnRmKTsNCj4gKw0KPiArICAgICAgIGlmIChuZXRkZXYtPmRldl9pZCA9PSAwKQ0KPiArICAg ICAgICAgICAgICAgbWFzayA9IEY4MTYwNF9DQU4wX1RFUk07DQo+ICsgICAgICAgZWxzZQ0KPiAr ICAgICAgICAgICAgICAgbWFzayA9IEY4MTYwNF9DQU4xX1RFUk07DQo+ICsNCj4gKyAgICAgICBp ZiAodGVybSA9PSBGODE2MDRfVEVSTUlOQVRJT05fRU5BQkxFRCkNCj4gKyAgICAgICAgICAgICAg IGRhdGEgPSBtYXNrOw0KPiArDQo+ICsgICAgICAgbXV0ZXhfbG9jaygmcHJpdi0+bXV0ZXgpOw0K PiArDQo+ICsgICAgICAgciA9IGY4MTYwNF9tYXNrX3NldF9yZWdpc3Rlcihwb3J0X3ByaXYtPmRl diwgRjgxNjA0X1RFUk1JTkFUT1JfUkVHLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWFzaywgZGF0YSk7DQo+ICsNCj4gKyAgICAgICBtdXRleF91bmxvY2soJnByaXYt Pm11dGV4KTsNCj4gKw0KPiArICAgICAgIHJldHVybiByOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IGY4MTYwNF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHVzYl9kZXZpY2VfaWQgKmlkKQ0KPiArew0KPiAr ICAgICAgIHN0cnVjdCB1c2JfZGV2aWNlICpkZXYgPSBpbnRlcmZhY2VfdG9fdXNiZGV2KGludGYp Ow0KPiArICAgICAgIHN0cnVjdCBmODE2MDRfcG9ydF9wcml2ICpwb3J0X3ByaXY7DQo+ICsgICAg ICAgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjsNCj4gKyAgICAgICBzdHJ1Y3QgZjgxNjA0X3By aXYgKnByaXY7DQo+ICsgICAgICAgaW50IGksIGVycjsNCj4gKw0KPiArICAgICAgIHByaXYgPSBk ZXZtX2t6YWxsb2MoJmludGYtPmRldiwgc2l6ZW9mKCpwcml2KSwgR0ZQX0tFUk5FTCk7DQo+ICsg ICAgICAgaWYgKCFwcml2KQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsN Cj4gKyAgICAgICB1c2Jfc2V0X2ludGZkYXRhKGludGYsIHByaXYpOw0KPiArDQo+ICsgICAgICAg Zm9yIChpID0gMDsgaSA8IEY4MTYwNF9NQVhfREVWOyArK2kpIHsNCj4gKyAgICAgICAgICAgICAg IG5ldGRldiA9IGFsbG9jX2NhbmRldihzaXplb2YoKnBvcnRfcHJpdiksIDEpOw0KPiArICAgICAg ICAgICAgICAgaWYgKCFuZXRkZXYpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vy cigmaW50Zi0+ZGV2LCAiQ291bGRuJ3QgYWxsb2MgY2FuZGV2OiAlZFxuIiwgaSk7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIGVyciA9IC1FTk9NRU07DQo+ICsNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgZ290byBmYWlsdXJlX2NsZWFudXA7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIHBvcnRfcHJpdiA9IG5ldGRldl9wcml2KG5ldGRldik7DQo+ICsg ICAgICAgICAgICAgICBuZXRkZXYtPmRldl9pZCA9IGk7DQo+ICsNCj4gKyAgICAgICAgICAgICAg IG11dGV4X2luaXQoJnByaXYtPm11dGV4KTsNCj4gKyAgICAgICAgICAgICAgIHNwaW5fbG9ja19p bml0KCZwb3J0X3ByaXYtPmxvY2spOw0KPiArDQo+ICsgICAgICAgICAgICAgICBJTklUX1dPUkso JnBvcnRfcHJpdi0+aGFuZGxlX2NsZWFyX292ZXJydW5fd29yaywNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICBmODE2MDRfaGFuZGxlX2NsZWFyX292ZXJydW5fd29yayk7DQo+ICsgICAgICAg ICAgICAgICBJTklUX1dPUksoJnBvcnRfcHJpdi0+aGFuZGxlX2NsZWFyX3JlZ193b3JrLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIGY4MTYwNF9oYW5kbGVfY2xlYXJfcmVnX3dvcmspOw0K PiArDQo+ICsgICAgICAgICAgICAgICBwb3J0X3ByaXYtPmludGYgPSBpbnRmOw0KPiArICAgICAg ICAgICAgICAgcG9ydF9wcml2LT5kZXYgPSBkZXY7DQo+ICsgICAgICAgICAgICAgICBwb3J0X3By aXYtPm9jciA9IE9DUl9UWDBfUFVTSFBVTEwgfCBPQ1JfVFgxX1BVU0hQVUxMOw0KPiArICAgICAg ICAgICAgICAgcG9ydF9wcml2LT5jZHIgPSBDRFJfQ0JQOw0KPiArICAgICAgICAgICAgICAgcG9y dF9wcml2LT5jYW4uc3RhdGUgPSBDQU5fU1RBVEVfU1RPUFBFRDsNCj4gKyAgICAgICAgICAgICAg IHBvcnRfcHJpdi0+Y2FuLmNsb2NrLmZyZXEgPSBGODE2MDRfQ0FOX0NMT0NLOw0KPiArDQo+ICsg ICAgICAgICAgICAgICBwb3J0X3ByaXYtPmNhbi50ZXJtaW5hdGlvbl9jb25zdCA9IGY4MTYwNF90 ZXJtaW5hdGlvbjsNCj4gKyAgICAgICAgICAgICAgIHBvcnRfcHJpdi0+Y2FuLnRlcm1pbmF0aW9u X2NvbnN0X2NudCA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoZjgxNjA0 X3Rlcm1pbmF0aW9uKTsNCj4gKyAgICAgICAgICAgICAgIHBvcnRfcHJpdi0+Y2FuLmJpdHRpbWlu Z19jb25zdCA9ICZmODE2MDRfYml0dGltaW5nX2NvbnN0Ow0KPiArICAgICAgICAgICAgICAgcG9y dF9wcml2LT5jYW4uZG9fc2V0X2JpdHRpbWluZyA9IGY4MTYwNF9zZXRfYml0dGltaW5nOw0KPiAr ICAgICAgICAgICAgICAgcG9ydF9wcml2LT5jYW4uZG9fc2V0X21vZGUgPSBmODE2MDRfc2V0X21v ZGU7DQo+ICsgICAgICAgICAgICAgICBwb3J0X3ByaXYtPmNhbi5kb19zZXRfdGVybWluYXRpb24g PSBmODE2MDRfc2V0X3Rlcm1pbmF0aW9uOw0KPiArICAgICAgICAgICAgICAgcG9ydF9wcml2LT5j YW4uZG9fZ2V0X2JlcnJfY291bnRlciA9IGY4MTYwNF9nZXRfYmVycl9jb3VudGVyOw0KPiArICAg ICAgICAgICAgICAgcG9ydF9wcml2LT5jYW4uY3RybG1vZGVfc3VwcG9ydGVkID0NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgQ0FOX0NUUkxNT0RFX0xJU1RFTk9OTFkgfCBDQU5fQ1RSTE1PREVf M19TQU1QTEVTIHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgQ0FOX0NUUkxNT0RFX09ORV9T SE9UIHwgQ0FOX0NUUkxNT0RFX0JFUlJfUkVQT1JUSU5HIHwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgQ0FOX0NUUkxNT0RFX0NDX0xFTjhfRExDIHwgQ0FOX0NUUkxNT0RFX1BSRVNVTUVfQUNL Ow0KPiArDQo+ICsgICAgICAgICAgICAgICBuZXRkZXYtPmV0aHRvb2xfb3BzID0gJmY4MTYwNF9l dGh0b29sX29wczsNCj4gKyAgICAgICAgICAgICAgIG5ldGRldi0+bmV0ZGV2X29wcyA9ICZmODE2 MDRfbmV0ZGV2X29wczsNCj4gKyAgICAgICAgICAgICAgIG5ldGRldi0+ZmxhZ3MgfD0gSUZGX0VD SE87DQo+ICsNCj4gKyAgICAgICAgICAgICAgIFNFVF9ORVRERVZfREVWKG5ldGRldiwgJmludGYt PmRldik7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGVyciA9IGY4MTYwNF9zZXRfdGVybWluYXRp b24obmV0ZGV2LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBGODE2MDRfVEVSTUlOQVRJT05fRElTQUJMRUQpOw0KPiArICAgICAgICAgICAgICAgaWYgKGVy cikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZ290byBjbGVhbl9jYW5kZXY7DQo+ICsNCj4g KyAgICAgICAgICAgICAgIGVyciA9IGY4MTYwNF9wcmVwYXJlX3VyYnMobmV0ZGV2KTsNCj4gKyAg ICAgICAgICAgICAgIGlmIChlcnIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gY2xl YW5fY2FuZGV2Ow0KPiArDQo+ICsgICAgICAgICAgICAgICBlcnIgPSByZWdpc3Rlcl9jYW5kZXYo bmV0ZGV2KTsNCj4gKyAgICAgICAgICAgICAgIGlmIChlcnIpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgIGdvdG8gY2xlYW5fY2FuZGV2Ow0KPiArDQo+ICsgICAgICAgICAgICAgICBwb3J0X3By aXYtPm5ldGRldiA9IG5ldGRldjsNCj4gKyAgICAgICAgICAgICAgIHByaXYtPm5ldGRldltpXSA9 IG5ldGRldjsNCj4gKw0KPiArICAgICAgICAgICAgICAgZGV2X2luZm8oJmludGYtPmRldiwgIkNo YW5uZWwgIyVkIHJlZ2lzdGVyZWQgYXMgJXNcbiIsIGksDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICBuZXRkZXYtPm5hbWUpOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybiAw Ow0KPiArDQo+ICtjbGVhbl9jYW5kZXY6DQo+ICsgICAgICAgbmV0ZGV2X2VycihuZXRkZXYsICJj b3VsZG4ndCBlbmFibGUgQ0FOIGRldmljZTogJXBlXG4iLCBFUlJfUFRSKGVycikpOw0KPiArICAg ICAgIGZyZWVfY2FuZGV2KG5ldGRldik7DQo+ICsNCj4gK2ZhaWx1cmVfY2xlYW51cDoNCj4gKyAg ICAgICBmODE2MDRfZGlzY29ubmVjdChpbnRmKTsNCj4gKyAgICAgICByZXR1cm4gZXJyOw0KPiAr fQ0KPiArDQo+ICtzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgZjgxNjA0X2RyaXZlciA9IHsNCj4g KyAgICAgICAubmFtZSA9ICJmODE2MDQiLA0KPiArICAgICAgIC5wcm9iZSA9IGY4MTYwNF9wcm9i ZSwNCj4gKyAgICAgICAuZGlzY29ubmVjdCA9IGY4MTYwNF9kaXNjb25uZWN0LA0KPiArICAgICAg IC5pZF90YWJsZSA9IGY4MTYwNF90YWJsZSwNCj4gK307DQo+ICsNCj4gK21vZHVsZV91c2JfZHJp dmVyKGY4MTYwNF9kcml2ZXIpOw0KPiArDQo+ICtNT0RVTEVfQVVUSE9SKCJKaS1aZSBIb25nIChQ ZXRlciBIb25nKSA8cGV0ZXJfaG9uZ0BmaW50ZWsuY29tLnR3PiIpOw0KPiArTU9EVUxFX0RFU0NS SVBUSU9OKCJGaW50ZWsgRjgxNjA0IFVTQiB0byAyeENBTkJVUyIpOw0KPiArTU9EVUxFX0xJQ0VO U0UoIkdQTCIpOw0KPiAtLQ0KPiAyLjE3LjENCg0KDQpSZXZpZXdlZC1ieTogU3RlZW4gSGVnZWx1 bmQgPFN0ZWVuLkhlZ2VsdW5kQG1pY3JvY2hpcC5jb20+DQoNCkJSDQpTdGVlbg==