From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6DD50C36010 for ; Wed, 9 Apr 2025 01:54:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From:References:Cc:To: Subject:Date:Message-ID:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Ud67T3ctAWUH6143nIpsG+n9PEHKBG/rD6dCwOkKZ8g=; b=lmP+AFaZEjsfuOjt89MxyIZDT9 uZ3x2sXsJf/jhqPwISB/T5z1zga8laSHPd2DSlfRRH0bo4upVmIvl/N4+juwarLwckXnnMd66lDGs Y1lihpa9gZm9Xo17NcEVGlOES30MRwrULsgYBwmrF7JEs1xb6fAg6sFbYUv6H0+VdOtQB1+YFEHid lBElyu0lVhjhHLn1OohDK1iSiR014FNB7ERJdFZF3I2SBgW1tJ0FD0KrpaHfBnpbd6i1ikGgBHOC7 zHXWZj06ygMK3Iv0h1fYOJbr0pwIN2gJhqK9VXY235G18VlGmbr+SthYjJKlB9V8CyP2U6rW9DdAk s8N1VBOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2Kdx-00000005t8c-37Te; Wed, 09 Apr 2025 01:54:21 +0000 Received: from mail-sg2apc01on2071f.outbound.protection.outlook.com ([2a01:111:f403:200f::71f] helo=APC01-SG2-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u2KZb-00000005saG-0kpE; Wed, 09 Apr 2025 01:49:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bToF7DEN52nkIgZ5pRe3add60Zg2HFp5jtYWctImwOAreO8+GPbz6Yy+rQUmQqTocG9ZMEM6AQsURVqcgnVj95q9rJoxGFuIqyzeqlSGvI2hcYyFEVnaREWmUqorg5nkm0BX7w0ZZiPcFH5pwrcGhYM7l5v+Y1dRZKc996y3eAwzzoVsIY1p78FI+3Klpapr8geEkE+EtVT7yctSN0Muljn1e1Qa6NeRNAH2Bz/nGXmRLMhk44rQ11689LkpxFkhSnRN/TPvkQHhnuQrmM0ERDB3OZcS5p3kjFh4r04geu5lFl1Y9m0DuIAvmdvv2wQxEf3pawo3vXWmg7/UjBiLlw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=xibo7uBmFnL2stbLsqepvmGIZZxmhXkFCRr/VW7YIrM=; b=u216oVoSEtFV95tMEu39wsqzqWKSIoRgmBk3gvaZCiZLuBy6cwhc//5xhJD8RHbdHfmzjbH+U74NxuivqGpMBDJxP/GWaDroRt+TeWc0SUR+lhSWPBB47RG/gTnHx3TQtVeStg/9GvjtgmP9UJfCK/0PE5b17TO1FOuob4KV7JB2IO5oVzB4QHfs60yzD+BcEyDMYQVIGNnsiWmPAt+6hgd/InO1a5SWOAimA7nf27SsyCsVUaMRi1CwIBpr3I6FJu5PT3HRhZezYS+eBjWuy0gmX+1LlB9Ic+aQqtoNdcpmnU94WAB9K21I+wHl0uhJx5VATVlGb+WQoupk7NJMXw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amlogic.com; dmarc=pass action=none header.from=amlogic.com; dkim=pass header.d=amlogic.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amlogic.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xibo7uBmFnL2stbLsqepvmGIZZxmhXkFCRr/VW7YIrM=; b=vwl3tn2QzwYiCQABCMu32W6ab5vM4/3OMy/wsyjZM2+RdDUqxV0CJQ6vOh5afgH1pr2qnMougXHGihgRzfQ72JW8a3TkBnHB/3es8ZCgRSjKenx36ayPyzdaerXJEh3dRkZhIZV2ieeg2jYvmLpoEmGb5a8RFSmy++xH+0KvNDUF9bkV3ZbbR9bj5OySuvMTWeg/Zn8HVMwyaeBS2BEgRTgOoc4MVLUT8rtgnfdGEBxvoC1NcqbNrf89bT2VmekDOropZCUOmgwcNiUbqU+I5OxCB7Hv1o0XJ5s+Xfe8SukOaItd51y6vwwEwCEBCqIy0uKYbLpxcjLIq139rGo5ag== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amlogic.com; Received: from TYZPR03MB6896.apcprd03.prod.outlook.com (2603:1096:400:289::14) by KL1PR03MB7019.apcprd03.prod.outlook.com (2603:1096:820:b4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8632.21; Wed, 9 Apr 2025 01:49:37 +0000 Received: from TYZPR03MB6896.apcprd03.prod.outlook.com ([fe80::ac4e:718:3b03:3123]) by TYZPR03MB6896.apcprd03.prod.outlook.com ([fe80::ac4e:718:3b03:3123%5]) with mapi id 15.20.8606.027; Wed, 9 Apr 2025 01:49:37 +0000 Message-ID: Date: Wed, 9 Apr 2025 09:49:34 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] spi: meson-spicc: add DMA support Content-Language: en-US To: neil.armstrong@linaro.org, Mark Brown , Kevin Hilman , Jerome Brunet , Martin Blumenstingl Cc: linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Sunny Luo References: <20250408-spi-dma-v1-1-3c38be62c09c@amlogic.com> From: Xianwei Zhao In-Reply-To: X-ClientProxiedBy: TY2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:404:56::31) To TYZPR03MB6896.apcprd03.prod.outlook.com (2603:1096:400:289::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYZPR03MB6896:EE_|KL1PR03MB7019:EE_ X-MS-Office365-Filtering-Correlation-Id: db1a0b21-39cb-4ef5-ac34-08dd7708c912 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?OEo4VjFWazluT2VHMHRlREFsMThnQjM3cVBQTjgyd3lwaFpHZWcwYnRTUE94?= =?utf-8?B?c2JEK0xmSHRYcURMU1pHSTZtQ3BiOWFhanBNUDNqZmZVWTg5Q0VXbE5JS3NM?= =?utf-8?B?eTVyR1h2bW8rYWhPSjh2SGdwSkRVZHF3K2xxTnJOMEZoWHlkZHZrZUl4ZlRs?= =?utf-8?B?bWdLM3RlRkpHR0ZtUk9JOWdrT3FZL2JUdUdJeGpZLytQT09qVGUweGRWNzhJ?= =?utf-8?B?cFJYMFdZcHZya3pZbTVCMDUyNzQxOUZuRHlQZ3AzVnVPZEMxa1NjdXFTOGpE?= =?utf-8?B?Y1ZjM05DdXM3cFBqN2l3RG5iem5maXNwbjNIV3ZndUZVQ0xObk9KVllwU3BJ?= =?utf-8?B?TUpDSy9NWUVlM0xZWjBjOHo1aVdwcmRzNTZHazBqeWlaZnNtTGVGNTVrYlE1?= =?utf-8?B?aUtXR3B2VDdoTkt6b2h6bHFXUGtZOWJXUFg5L0JaNDV6S1lKaWR1WUJIUEpV?= =?utf-8?B?UW03MDBjRWQ5TWtRclhaZGJpdy9vcFR4QWZSd2V1L0JpU0ZPMGFLMUNHSC9B?= =?utf-8?B?M2V2S1FUSVpkSDA4eVpCTDRUUXdidjl5TCs1NG83bmhpTGFPWjNjYVB3TmRR?= =?utf-8?B?U3hZQjg1T0ZIUFFyOUVzc1YyckpVckdweXpXZDBBbks0d1UxVHNVL3E5U3RS?= =?utf-8?B?VVF6cndxUjFJQzlSVTJGYXdKaDB4amJrUGFGQjNxcjlQUmN3ZEIrUmFiQTlB?= =?utf-8?B?dHoxc3o4RThQaSt6YmFlZzg3cFB1dk1TZS9aR21MZkU3ZWRkQm9WQ3d2cWpv?= =?utf-8?B?VmpvN1J5Ukg0L3Q4TUthRDVhejVVQ2lHMHp0c20zL2puYm1UaEZVNXZXdUdG?= =?utf-8?B?RUJzYUVscHFsU1FBU0lKaDVsa2I4NXhDY2ZkUnJrd0psRmw1dVh6YkhFVFJs?= =?utf-8?B?aFRJVk5mTkYvWFdwWnJTY1lXeTZYY3lwb0NadzZaRXh6Zm1zTDFESGlwQ08x?= =?utf-8?B?N2kvcEptSlhYU1R2VDdmR1ZCdXRqaFdNR3VPRHk4K1hqVVd1WmdmbEJNMHFh?= =?utf-8?B?cDhxNlJUMEU0ejA4QXNacHg1RThLZXJzWFBDby9yRUFZaTlPcE42UVplS2tP?= =?utf-8?B?Y0QxbWt4SmRYVk93N3ZHdmROUUtrditidGN3Zk9ZZnhVcmhHQVBsd2R1aVds?= =?utf-8?B?N1dPeWZGQU1hQjdabXFTRHVlK3dBcjhaUFhZUzk1L3dXOTFkSlhTU29Xa3hM?= =?utf-8?B?T3V5MEljblh6UXVHTnFZZ3JEOUxZODdsZ1ZQdlFJREczOHgwRE5NVThiR04x?= =?utf-8?B?UGI0N1JpejZLdGtHazRTYUZ1VEZkdGl4TzdLd0ZSRFVZRHFrbEQ1cHg1VzJw?= =?utf-8?B?Q0FOV1F2TGIxSlptcEZNMVd4cnQ4MGhJZm5vaUJIL2tTWEU4WlN5VTV6SWRW?= =?utf-8?B?dTZSTW8wcTZDemxZcys2ZkJpSCs0NUQrR1NyZEYrcXFnRW9UT09VUkRkbE4z?= =?utf-8?B?KzExVVFBbnBMVGpKb3d1UEFVRlZnZEJXRFNRalA3djY1QkYrcE0yelk4U1pU?= =?utf-8?B?a1VDd1plZHdYaTQvaHpOS1l6WDdGcVZTV1dDM2d4dE8zbGp4aWZXMlIvd2dZ?= =?utf-8?B?MFpMendmaGh2b08xMXM4clFrMmwzemVMMTAwNGFVRXVqUG9uZ1JEaXJQM1R0?= =?utf-8?B?NDZiRXljcHpneVVVN0pUVkdGMUxxYlZQQndqeVZ4OU5lOTVGTG5ZWTVvbGFl?= =?utf-8?B?dlNnUkttekVsNERjR0xPTmRacWxNZkxvc1gxd1cxOHplNGFkZDVybHQ4dTBC?= =?utf-8?B?Ym9xdTRtRVI5UDM3NFU4TGszbjBSWStHWXd5MWZHZ2VMQ1V4WHpjWG1BNm93?= =?utf-8?B?T0NaWGpUUEJ2ZGd3RUdCclVlaXRoTCtUUnpmcHZhQ1BhRGNPUUdJYXRwdjdk?= =?utf-8?B?WG84OVJLaC9zV2g5dXFpcExhRU4rVmZKNThST29VQ0ZEV05VdXQvb0MwSTll?= =?utf-8?Q?OGxaF8F/0Ks=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR03MB6896.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?S043OHZNZE1IRU5rRDF6NzJtV0Nxb291YnFYd2RLeU9RMGcybHBPL3hhc1Y3?= =?utf-8?B?UXlualF6cWk0ZWtpSlZ4T0pVbm5zTUwrZEZwaU1JZ2FKc1R5RUN3aGV2M0Y2?= =?utf-8?B?M0swa1VQRC9Jc2N4UU1lcFdvKytUejRjSGQ1anlmTXZ5eG1mVHZVcUloMVdj?= =?utf-8?B?NFc2NDk2dDQ4TzJUWEhYeksyQ3RIWnBVc1ZiMUI2TWlFelNpWWRHWGlqU3FQ?= =?utf-8?B?V3p5NmZwdk5tc1l5Zk42Tlh5bUFwWEdibGZMY0dHSXBXVUtYZmUvSzlGWGlv?= =?utf-8?B?c2wzOG5wc2ZWRVdMK3JmVzVIWi9OV3dYWXFWU1pic3B4RUtEQkpBcldTTHl2?= =?utf-8?B?T2MvS1JZN2lnNlVJem0rY0c5WWJFRmJ5Q2RLd2FlS3dacXBkci9TVFkzdGhU?= =?utf-8?B?VktFUEQzUWdGYXU2TG1vb2hGTzhaK0RMSVhMcWR1VnVUY2VLRDBuaGhkNkZY?= =?utf-8?B?YXRTeGFqK0NWUmdZL1JBam9JeEhnanJQNXJWQ2dHR0ZENVNzVm1PU2hSQThp?= =?utf-8?B?NVRFcEN5TWxWYzg4R2NyUWkrSVU3TVZjYkZ2MHN6dzQ1cHR3TnIzRU0zVW5n?= =?utf-8?B?N05yOXhNL3Ftc25nd1ZnN3llYkNNUXVhRXhLWDU5YWVEUkJkZlcyeE1JdEhF?= =?utf-8?B?aFE2c3lXZVRKdU1YTmtNdTFlSzAxZnR5YUdVUDRobE5wS3VqZzNUdzQ4TC9y?= =?utf-8?B?ZUVUK3NTVzByZTFhOWtXOGI2ZDduK0NaSHJaTCt1Z3Znc0dFOVZjUTFqZkhT?= =?utf-8?B?dDZsSGF4MkI2Sk1OL2VZUml3L3lxcU1NSEZFVzhxR0VNTml6dE56NGd2STdD?= =?utf-8?B?bDhMOGttaHJnQm9RS1RTQmNNRTFTNmRLNlpUTkxtZ3J6bFZWejFHVDRVc2Vn?= =?utf-8?B?NFpDYUE5aThEQ1NHeWtZbEIxL3ROb2cwQjZNMmVTenhEWEdHYnpLMkVkdElT?= =?utf-8?B?T05nMy8zWHFoS1lkUzFrKzU5bUY1clFSN2tEVmtSaEJocUhKL0tyeUJzbzVF?= =?utf-8?B?VVQ5RXgwZmxzYzR4RllwUlI4dlVRbHV6Q2ExSzJJUlNQUnhiVGEyT1piUnAw?= =?utf-8?B?eFFnMHZhOGhjUytCQW5hS1BmR016R0hMcHNaTlp2b3dpY2NBanpnVzJ6bGk3?= =?utf-8?B?aWlOSEljVHREcUZHb1dybmljMkRzSTJyUnRwcWRhV3BmRWUveUxxYUZ4ZW5L?= =?utf-8?B?bUlkaVZNbWMzMzdRQlZvN01raHR5dXlSSCsvMHQzN2txcnFUS003cks5eTVG?= =?utf-8?B?cmZYaEdQdmlwVDB0dGdkUjhMa0xpZmRpL3NabGFMZWVQOEJjVHUrcFpQblpK?= =?utf-8?B?eUxkcUJ1NU54TjhNZlh1ajV1L0pGYTh5bkt6Z0lhMzV4WGh6cE9JNlNQYkFm?= =?utf-8?B?dU15QVRXazRLRUZRS09EdjdIb1lCYW84V2JMaXNzbUZhQ0FwQVQvd3prYndv?= =?utf-8?B?emFNUkE2ZmdvUnRvNzh6cE5MMjVSL1JmWFRJMFJSZDJmTTdFWUVaVWVDcU92?= =?utf-8?B?RlNVMHg4QmlVTXhhSE1aaU5tRXVkL1pDSXFIakp6cGppak5PbzMvTGNQNk1N?= =?utf-8?B?aHVtcW54bG8yaE56UmRaRUgxVGhzMVRlNTA2QmYwRTRRT01SS2RCWEwxZ0R4?= =?utf-8?B?dWJ0Rks3VXVuL1lweUZjSUpBNkh4L21pajc2LzU2SWc0YnRMTGdtcmEvSnY1?= =?utf-8?B?SDNKU3hPczFyOGFkNEw4c1A4VDB4VnRMbkRDM1loYTBWbE9JK3djUFVGa01o?= =?utf-8?B?UjhJK3hYMVRtUndnTGpnQzU5dGNETkxIV1FuMWh4clg5TkRxWTRBd1plMk9q?= =?utf-8?B?SFJXWkRLdTFrb0xUUElYL1pYNnhyYURJY3RId2UvbVlndVBNSlFBTEZEc2Ny?= =?utf-8?B?S0U0ckUySndaTlBqN2d1VCsxMFZ1cmtFTm8xdEFndnV2b2lxUm9UTm82aVA5?= =?utf-8?B?aEVCcTNVcy8wSS9XSVRUcXpKZzlSaEpoRnpQMXY1Ym9JQ2EwV3hvRS9jSnB4?= =?utf-8?B?dEFPOHpmQ0lJQWZwa2R0a29mQVg5MTdkaUducWVqZmFGWjdJL2l3MTZSeHMv?= =?utf-8?B?YTh6OTE1UEZVRmlOMHc4Ty9lVDNUaHpYYWtmVVRYUWgyeStNVFFRRXBLQkVO?= =?utf-8?B?czUzczNHaXA0VFU1S0gvSVdVM3BROWlWRW5uOEJlUThZazkwYlpkdmUxdzVk?= =?utf-8?B?Y1E9PQ==?= X-OriginatorOrg: amlogic.com X-MS-Exchange-CrossTenant-Network-Message-Id: db1a0b21-39cb-4ef5-ac34-08dd7708c912 X-MS-Exchange-CrossTenant-AuthSource: TYZPR03MB6896.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2025 01:49:37.7034 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0df2add9-25ca-4b3a-acb4-c99ddf0b1114 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: N4bQL3ZtVfTcb1ELY0LJtxiR6kLS2xEEUyDtO0FUan/FkI5oJ/+e91aGfotkvhj+Ct6GAKoLwT3PoiPeEVPtuiydeMFLokmTzAiI09yRdfY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: KL1PR03MB7019 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250408_184951_406155_9D3747E7 X-CRM114-Status: GOOD ( 25.07 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org SGkgTmVpbCwKICAgIFRoYW5rcyBmb3IgeW91ciByZXBseS4KCk9uIDIwMjUvNC84IDE1OjQxLCBO ZWlsIEFybXN0cm9uZyB3cm90ZToKPiBbIEVYVEVSTkFMIEVNQUlMIF0KPiAKPiBIaSwKPiAKPiBP biAwOC8wNC8yMDI1IDA5OjA0LCBYaWFud2VpIFpoYW8gdmlhIEI0IFJlbGF5IHdyb3RlOgo+PiBG cm9tOiBYaWFud2VpIFpoYW8gPHhpYW53ZWkuemhhb0BhbWxvZ2ljLmNvbT4KPj4KPj4gQWRkIERN QSBzdXBwb3J0IGZvciBzcGljYyBkcml2ZXIuCj4+Cj4+IERNQSB3b3JrcyBpZiB0aGUgdHJhbnNm ZXIgbWVldHMgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+PiAxLiA2NCBiaXRzIHBlciB3b3Jk Owo+PiAyLiBUaGUgdHJhbnNmZXIgbGVuZ3RoIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoZSBkbWFf YnVyc3RfbGVuLAo+PiDCoMKgwqAgYW5kIHRoZSBkbWFfYnVyc3RfbGVuIHNob3VsZCBiZSBvbmUg b2YgOCw3Li4uMiwKPj4gwqDCoMKgIG90aGVyd2lzZSwgaXQgd2lsbCBiZSBzcGxpdCBpbnRvIHNl dmVyYWwgU1BJIGJ1cnN0cy4KPj4KPj4gU2lnbmVkLW9mZi1ieTogU3VubnkgTHVvIDxzdW5ueS5s dW9AYW1sb2dpYy5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFhpYW53ZWkgWmhhbyA8eGlhbndlaS56 aGFvQGFtbG9naWMuY29tPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWNj LmMgfCAyNDMgCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ PiDCoCAxIGZpbGUgY2hhbmdlZCwgMjMyIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQo+ Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLW1lc29uLXNwaWNjLmMgCj4+IGIvZHJp dmVycy9zcGkvc3BpLW1lc29uLXNwaWNjLmMKPj4gaW5kZXggZGY3NGFkNTA2MGY4Li44MWUyNjNi Y2ViYTkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jCj4+ICsr KyBiL2RyaXZlcnMvc3BpL3NwaS1tZXNvbi1zcGljYy5jCj4+IEBAIC0yMSw2ICsyMSw3IEBACj4+ IMKgICNpbmNsdWRlIDxsaW51eC9pbnRlcnJ1cHQuaD4KPj4gwqAgI2luY2x1ZGUgPGxpbnV4L3Jl c2V0Lmg+Cj4+IMKgICNpbmNsdWRlIDxsaW51eC9waW5jdHJsL2NvbnN1bWVyLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4KPj4KPj4gwqAgLyoKPj4gwqDCoCAqIFRoZSBNZXNv biBTUElDQyBjb250cm9sbGVyIGNvdWxkIHN1cHBvcnQgRE1BIGJhc2VkIHRyYW5zZmVycywgYnV0 IAo+PiBpcyBub3QKPj4gQEAgLTMzLDYgKzM0LDIwIEBACj4+IMKgwqAgKiAtIENTIG1hbmFnZW1l bnQgaXMgZHVtYiwgYW5kIGdvZXMgVVAgYmV0d2VlbiBldmVyeSBidXJzdCwgc28gaXMgCj4+IHJl YWxseSBhCj4+IMKgwqAgKsKgwqAgIkRhdGEgVmFsaWQiIHNpZ25hbCB0aGFuIGEgQ2hpcCBTZWxl Y3QsIEdQSU8gbGluayBzaG91bGQgYmUgCj4+IHVzZWQgaW5zdGVhZAo+PiDCoMKgICrCoMKgIHRv IGhhdmUgYSBDUyBnbyBkb3duIG92ZXIgdGhlIGZ1bGwgdHJhbnNmZXIKPj4gKyAqCj4+ICsgKiBE TUEgYWNoaWV2ZXMgYSB0cmFuc2ZlciB3aXRoIG9uZSBvciBtb3JlIFNQSSBidXJzdHMsIGVhY2gg U1BJIAo+PiBidXJzdCBpcyBtYWRlCj4+ICsgKiB1cCBvZiBvbmUgb3IgbW9yZSBETUEgYnVyc3Rz LiBUaGUgRE1BIGJ1cnN0IGltcGxlbWVudGF0aW9uIAo+PiBtZWNoYW5pc20gaXMsCj4+ICsgKiBG b3IgVFgsIHdoZW4gdGhlIG51bWJlciBvZiB3b3JkcyBpbiBUWEZJRk8gaXMgbGVzcyB0aGFuIHRo ZSBwcmVzZXQKPj4gKyAqIHJlYWRpbmcgdGhyZXNob2xkLCBTUElDQyBzdGFydHMgYSByZWFkaW5n IERNQSBidXJzdCwgd2hpY2ggcmVhZHMgCj4+IHRoZSBwcmVzZXQKPj4gKyAqIG51bWJlciBvZiB3 b3JkcyBmcm9tIFRYIGJ1ZmZlciwgdGhlbiB3cml0ZXMgdGhlbSBpbnRvIFRYRklGTy4KPj4gKyAq IEZvciBSWCwgd2hlbiB0aGUgbnVtYmVyIG9mIHdvcmRzIGluIFJYRklGTyBpcyBncmVhdGVyIHRo YW4gdGhlIHByZXNldAo+PiArICogd3JpdGluZyB0aHJlc2hvbGQsIFNQSUNDIHN0YXJ0cyBhIHdy aXRpbmcgcmVxdWVzdCBidXJzdCwgd2hpY2ggCj4+IHJlYWRzIHRoZQo+PiArICogcHJlc2V0IG51 bWJlciBvZiB3b3JkcyBmcm9tIFJYRklGTywgdGhlbiB3cml0ZSB0aGVtIGludG8gUlggYnVmZmVy Lgo+PiArICogRE1BIHdvcmtzIGlmIHRoZSB0cmFuc2ZlciBtZWV0cyB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnMsCj4+ICsgKiAtIDY0IGJpdHMgcGVyIHdvcmQKPj4gKyAqIC0gVGhlIHRyYW5zZmVy IGxlbmd0aCBpbiB3b3JkIG11c3QgYmUgbXVsdGlwbGVzIG9mIHRoZSAKPj4gZG1hX2J1cnN0X2xl biwgYW5kCj4+ICsgKsKgwqAgdGhlIGRtYV9idXJzdF9sZW4gc2hvdWxkIGJlIG9uZSBvZiA4LDcu Li4yLCBvdGhlcndpc2UsIGl0IHdpbGwgCj4+IGJlIHNwbGl0Cj4+ICsgKsKgwqAgaW50byBzZXZl cmFsIFNQSSBidXJzdHMgYnkgdGhpcyBkcml2ZXIKPiAKPiBGaW5lLCBidXQgdGhlbiBhbHNvIHJl cGhyYXNlIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGggc2luY2UgeW91J3JlIGFkZGluZyAKPiBETUEu Cj4gCldpbGwgZG8uCgo+IENvdWxkIHlvdSBwcmVjaXNlIG9uIHdoaWNoIHBsYXRmb3JtIHlvdSB0 ZXN0ZWQgdGhlIERNQSA/Cj4gCgphcTIyMihTNCkKCj4+IMKgwqAgKi8KPj4KPj4gwqAgI2RlZmlu ZSBTUElDQ19NQVhfQlVSU1TCoMKgwqDCoCAxMjgKPj4gQEAgLTEyOCw2ICsxNDMsMjkgQEAKPj4K Pj4gwqAgI2RlZmluZSBTUElDQ19EV0FERFLCoMKgwqDCoMKgwqDCoCAweDI0wqDCoMKgIC8qIFdy aXRlIEFkZHJlc3Mgb2YgRE1BICovCj4+Cj4+ICsjZGVmaW5lIFNQSUNDX0xEX0NOVEwwwqDCoMKg wqDCoMKgIDB4MjgKPj4gKyNkZWZpbmUgVlNZTkNfSVJRX1NSQ19TRUxFQ1TCoMKgwqDCoMKgwqDC oMKgIEJJVCgwKQo+PiArI2RlZmluZSBETUFfRU5fU0VUX0JZX1ZTWU5DwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCgyKQo+PiArI2RlZmluZSBYQ0hfRU5fU0VUX0JZX1ZTWU5DwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCgzKQo+PiArI2RlZmluZSBETUFfUkVBRF9DT1VOVEVSX0VOwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCg0KQo+PiArI2RlZmluZSBETUFfV1JJVEVfQ09VTlRFUl9FTsKgwqDCoMKgwqDCoMKg wqAgQklUKDUpCj4+ICsjZGVmaW5lIERNQV9SQUREUl9MT0FEX0JZX1ZTWU5DwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQklUKDYpCj4+ICsjZGVmaW5lIERNQV9XQUREUl9MT0FEX0JZX1ZTWU5D wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDcpCj4+ICsjZGVmaW5lIERNQV9BRERSX0xP QURfRlJPTV9MRF9BRERSwqDCoCBCSVQoOCkKPj4gKwo+PiArI2RlZmluZSBTUElDQ19MRF9DTlRM McKgwqDCoMKgwqDCoCAweDJjCj4+ICsjZGVmaW5lIERNQV9SRUFEX0NPVU5URVLCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgR0VOTUFTSygxNSwgMCkKPj4gKyNkZWZpbmUgRE1BX1dSSVRFX0NPVU5U RVLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMzEsIDE2KQo+PiArI2RlZmluZSBETUFf QlVSU1RfTEVOX0RFRkFVTFTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOAo+PiArI2Rl ZmluZSBETUFfQlVSU1RfQ09VTlRfTUFYwqDCoMKgwqDCoMKgwqDCoMKgIDB4ZmZmZgo+PiArI2Rl ZmluZSBTUElfQlVSU1RfTEVOX01BWMKgwqDCoCAoRE1BX0JVUlNUX0xFTl9ERUZBVUxUICogCj4+ IERNQV9CVVJTVF9DT1VOVF9NQVgpCj4+ICsKPj4gK2VudW0gewo+PiArwqDCoMKgwqAgRE1BX1RS SUdfTk9STUFMID0gMCwKPj4gK8KgwqDCoMKgIERNQV9UUklHX1ZTWU5DLAo+PiArwqDCoMKgwqAg RE1BX1RSSUdfTElORV9OLAo+IAo+IFlvdSdyZSBvbmx5IHVzaW5nIERNQV9UUklHX05PUk1BTCwg d2hhdCB0aGUgb3RoZXIgMiB2YWx1ZXMgZm9yID8KPiAKCkRNQV9UUklHX1ZTWU5DIGFuZCBETUFf VFJJR19MSU5FX04gYXJlIHVzZWQgYnkgVk9VVCBtb2R1bGVzIGluIGNlcnRhaW4gCnBhcnRpYWwg VFYgU29Dcy4gVGhlc2UgRE1BIHRyaWdnZXJpbmcgbWV0aG9kcyByZWx5IG9uIHNwZWNpYWwgc2ln bmFsIApsaW5lcywgYW5kIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dC4gSSB3aWxs IGRlbGV0ZSB0aGUgCmNvcnJlc3BvbmRpbmcgaW5mb3JtYXRpb24uCgo+Cj4+ICsKPj4gwqAgI2Rl ZmluZSBTUElDQ19FTkhfQ1RMMMKgwqDCoMKgwqAgMHgzOMKgwqDCoCAvKiBFbmhhbmNlZCBGZWF0 dXJlICovCj4+IMKgICNkZWZpbmUgU1BJQ0NfRU5IX0NMS19DU19ERUxBWV9NQVNLIEdFTk1BU0so MTUsIDApCj4+IMKgICNkZWZpbmUgU1BJQ0NfRU5IX0RBVEFSQVRFX01BU0vCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgR0VOTUFTSygyMywgMTYpCj4+IEBAIC0xNzEsNiArMjA5LDkgQEAgc3RydWN0 IG1lc29uX3NwaWNjX2RldmljZSB7Cj4+IMKgwqDCoMKgwqAgc3RydWN0IHBpbmN0cmzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpwaW5jdHJsOwo+PiDCoMKgwqDCoMKgIHN0cnVj dCBwaW5jdHJsX3N0YXRlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqcGluc19pZGxlX2hpZ2g7Cj4+ IMKgwqDCoMKgwqAgc3RydWN0IHBpbmN0cmxfc3RhdGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpw aW5zX2lkbGVfbG93Owo+PiArwqDCoMKgwqAgZG1hX2FkZHJfdMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0eF9kbWE7Cj4+ICvCoMKgwqDCoCBkbWFfYWRkcl90wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ4X2RtYTsKPj4gK8KgwqDC oMKgIGJvb2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdXNpbmdfZG1hOwo+PiDCoCB9Owo+Pgo+PiDCoCAjZGVmaW5lIHBvdzJfY2xrX3RvX3Nw aWNjKF9kaXYpIGNvbnRhaW5lcl9vZihfZGl2LCBzdHJ1Y3QgCj4+IG1lc29uX3NwaWNjX2Rldmlj ZSwgcG93Ml9kaXYpCj4+IEBAIC0yMDIsNiArMjQzLDE1NSBAQCBzdGF0aWMgdm9pZCBtZXNvbl9z cGljY19vZW5fZW5hYmxlKHN0cnVjdCAKPj4gbWVzb25fc3BpY2NfZGV2aWNlICpzcGljYykKPj4g wqDCoMKgwqDCoCB3cml0ZWxfcmVsYXhlZChjb25mLCBzcGljYy0+YmFzZSArIFNQSUNDX0VOSF9D VEwwKTsKPj4gwqAgfQo+Pgo+PiArc3RhdGljIGludCBtZXNvbl9zcGljY19kbWFfbWFwKHN0cnVj dCBtZXNvbl9zcGljY19kZXZpY2UgKnNwaWNjLAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBzcGlfdHJhbnNmZXIgKnQpCj4+ ICt7Cj4+ICvCoMKgwqDCoCBzdHJ1Y3QgZGV2aWNlICpkZXYgPSBzcGljYy0+aG9zdC0+ZGV2LnBh cmVudDsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKCEodC0+dHhfYnVmICYmIHQtPnJ4X2J1ZikpCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDC oMKgIHQtPnR4X2RtYSA9IGRtYV9tYXBfc2luZ2xlKGRldiwgKHZvaWQgKil0LT50eF9idWYsIHQt PmxlbiwgCj4+IERNQV9UT19ERVZJQ0UpOwo+PiArwqDCoMKgwqAgaWYgKGRtYV9tYXBwaW5nX2Vy cm9yKGRldiwgdC0+dHhfZG1hKSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVOT01FTTsKPj4gKwo+PiArwqDCoMKgwqAgdC0+cnhfZG1hID0gZG1hX21hcF9zaW5nbGUoZGV2 LCB0LT5yeF9idWYsIHQtPmxlbiwgCj4+IERNQV9GUk9NX0RFVklDRSk7Cj4+ICvCoMKgwqDCoCBp ZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCB0LT5yeF9kbWEpKQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICvCoMKgwqDCoCBzcGljYy0+dHhfZG1h ID0gdC0+dHhfZG1hOwo+PiArwqDCoMKgwqAgc3BpY2MtPnJ4X2RtYSA9IHQtPnJ4X2RtYTsKPj4g Kwo+PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIG1lc29u X3NwaWNjX2RtYV91bm1hcChzdHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlICpzcGljYywKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3Qgc3BpX3RyYW5zZmVyICp0KQo+PiArewo+PiArwqDCoMKgwqAgc3RydWN0IGRldmlj ZSAqZGV2ID0gc3BpY2MtPmhvc3QtPmRldi5wYXJlbnQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmICh0 LT50eF9kbWEpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3VubWFwX3NpbmdsZShk ZXYsIHQtPnR4X2RtYSwgdC0+bGVuLCBETUFfVE9fREVWSUNFKTsKPj4gK8KgwqDCoMKgIGlmICh0 LT5yeF9kbWEpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZG1hX3VubWFwX3NpbmdsZShk ZXYsIHQtPnJ4X2RtYSwgdC0+bGVuLCBETUFfRlJPTV9ERVZJQ0UpOwo+PiArfQo+PiArCj4+ICsv Kgo+PiArICogQWNjb3JkaW5nIHRvIHRoZSByZW1haW4gd29yZHMgbGVuZ3RoLCBjYWxjdWxhdGUg YSBzdWl0YWJsZSBzcGkgCj4+IGJ1cnN0IGxlbmd0aAo+PiArICogYW5kIGEgZG1hIGJ1cnN0IGxl bmd0aCBmb3IgY3VycmVudCBzcGkgYnVyc3QKPj4gKyAqLwo+PiArc3RhdGljIHUzMiBtZXNvbl9z cGljY19jYWxjX2RtYV9sZW4oc3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHUzMiBsZW4sIHUzMiAqZG1hX2J1cnN0X2xlbikKPj4gK3sKPj4gK8KgwqDCoMKgIHUz MiBpOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAobGVuIDw9IHNwaWNjLT5kYXRhLT5maWZvX3NpemUp IHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqZG1hX2J1cnN0X2xlbiA9IGxlbjsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gbGVuOwo+PiArwqDCoMKgwqAgfQo+PiAr Cj4+ICvCoMKgwqDCoCAqZG1hX2J1cnN0X2xlbiA9IERNQV9CVVJTVF9MRU5fREVGQVVMVDsKPj4g Kwo+PiArwqDCoMKgwqAgaWYgKGxlbiA9PSAoU1BJX0JVUlNUX0xFTl9NQVggKyAxKSkKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gU1BJX0JVUlNUX0xFTl9NQVggLSBETUFfQlVS U1RfTEVOX0RFRkFVTFQ7Cj4+ICsKPj4gK8KgwqDCoMKgIGlmIChsZW4gPj0gU1BJX0JVUlNUX0xF Tl9NQVgpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFNQSV9CVVJTVF9MRU5f TUFYOwo+PiArCj4+ICvCoMKgwqDCoCBmb3IgKGkgPSBETUFfQlVSU1RfTEVOX0RFRkFVTFQ7IGkg PiAxOyBpLS0pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChsZW4gJSBpKSA9PSAw KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICpkbWFfYnVy c3RfbGVuID0gaTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmV0dXJuIGxlbjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4gK8KgwqDC oMKgIGkgPSBsZW4gJSBETUFfQlVSU1RfTEVOX0RFRkFVTFQ7Cj4+ICvCoMKgwqDCoCBsZW4gLT0g aTsKPj4gKwo+PiArwqDCoMKgwqAgaWYgKGkgPT0gMSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBsZW4gLT0gRE1BX0JVUlNUX0xFTl9ERUZBVUxUOwo+PiArCj4+ICvCoMKgwqDCoCByZXR1 cm4gbGVuOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBtZXNvbl9zcGljY19zZXR1cF9kbWEo c3RydWN0IG1lc29uX3NwaWNjX2RldmljZSAqc3BpY2MsIAo+PiB1OCB0cmlnKQo+PiArewo+PiAr wqDCoMKgwqAgdW5zaWduZWQgaW50IGxlbjsKPj4gK8KgwqDCoMKgIHVuc2lnbmVkIGludCBkbWFf YnVyc3RfbGVuLCBkbWFfYnVyc3RfY291bnQ7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgY291 bnRfZW4gPSAwOwo+PiArwqDCoMKgwqAgdW5zaWduZWQgaW50IHR4Zmlmb190aHJlcyA9IDA7Cj4+ ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcmVhZF9yZXEgPSAwOwo+PiArwqDCoMKgwqAgdW5zaWdu ZWQgaW50IHJ4Zmlmb190aHJlcyA9IDMxOwo+PiArwqDCoMKgwqAgdW5zaWduZWQgaW50IHdyaXRl X3JlcSA9IDA7Cj4+ICvCoMKgwqDCoCB1bnNpZ25lZCBpbnQgbGRfY3RyMSA9IDA7Cj4+ICsKPj4g K8KgwqDCoMKgIHdyaXRlbF9yZWxheGVkKHNwaWNjLT50eF9kbWEsIHNwaWNjLT5iYXNlICsgU1BJ Q0NfRFJBRERSKTsKPj4gK8KgwqDCoMKgIHdyaXRlbF9yZWxheGVkKHNwaWNjLT5yeF9kbWEsIHNw aWNjLT5iYXNlICsgU1BJQ0NfRFdBRERSKTsKPj4gKwo+PiArwqDCoMKgwqAgLyogU2V0IHRoZSBt YXggYnVyc3QgbGVuZ3RoIHRvIHN1cHBvcnQgYSB0cmFuc21pc3Npb24gd2l0aCAKPj4gbGVuZ3Ro IG9mCj4+ICvCoMKgwqDCoMKgICogbm8gbW9yZSB0aGFuIDEwMjQgYnl0ZXMoMTI4IHdvcmRzKSwg d2hpY2ggbXVzdCB1c2UgdGhlIENTIAo+PiBtYW5hZ2VtZW50Cj4+ICvCoMKgwqDCoMKgICogYmVj YXVzZSBvZiBzb21lIHN0cmljdCB0aW1pbmcgcmVxdWlyZW1lbnRzCj4+ICvCoMKgwqDCoMKgICov Cj4+ICvCoMKgwqDCoCB3cml0ZWxfYml0c19yZWxheGVkKFNQSUNDX0JVUlNUTEVOR1RIX01BU0ss IFNQSUNDX0JVUlNUTEVOR1RIX01BU0ssCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3BpY2MtPmJhc2UgKyBTUElDQ19DT05SRUcpOwo+PiArCj4+ ICvCoMKgwqDCoCBsZW4gPSBtZXNvbl9zcGljY19jYWxjX2RtYV9sZW4oc3BpY2MsIHNwaWNjLT54 ZmVyX3JlbWFpbiwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmRtYV9idXJzdF9sZW4pOwo+PiArwqDCoMKg wqAgc3BpY2MtPnhmZXJfcmVtYWluIC09IGxlbjsKPj4gK8KgwqDCoMKgIGRtYV9idXJzdF9jb3Vu dCA9IERJVl9ST1VORF9VUChsZW4sIGRtYV9idXJzdF9sZW4pOwo+PiArwqDCoMKgwqAgZG1hX2J1 cnN0X2xlbi0tOwo+PiArCj4+ICvCoMKgwqDCoCBpZiAodHJpZyA9PSBETUFfVFJJR19MSU5FX04p Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY291bnRfZW4gfD0gVlNZTkNfSVJRX1NSQ19T RUxFQ1Q7Cj4gCj4gSXMgdGhpcyB0aGUgVlBVIFZTWU5DIGlycSA/IGlzIHRoaXMgYSB0ZXN0ZWQg YW5kIHZhbGlkIHVzZWNhc2UgPwo+IAoKWWVzLCBpdCBpcyBWUFUgVlNZTkMgaXJxLCBUaGlzIHBh cnQgb2YgdGhlIGNvZGUgaXMgbm90IGNvbXBsZXRlbHkuIE5PIAp0ZXN0ZWQgYWJvdXQgaXQuIEkg d2lsbCBkZWxldGUgaXQuCgo+PiArCj4+ICvCoMKgwqDCoCBpZiAoc3BpY2MtPnR4X2RtYSkgewo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaWNjLT50eF9kbWEgKz0gbGVuOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvdW50X2VuIHw9IERNQV9SRUFEX0NPVU5URVJfRU47Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHRyaWcgPT0gRE1BX1RSSUdfVlNZTkMgfHwg dHJpZyA9PSBETUFfVFJJR19MSU5FX04pCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGNvdW50X2VuIHw9IERNQV9SQUREUl9MT0FEX0JZX1ZTWU5DCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHwgRE1BX0FERFJfTE9BRF9GUk9NX0xEX0FERFI7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdHhmaWZvX3RocmVzID0gc3BpY2MtPmRhdGEtPmZpZm9fc2l6ZSAtIGRtYV9idXJzdF9s ZW47Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZF9yZXEgPSBkbWFfYnVyc3RfbGVu Owo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxkX2N0cjEgfD0gRklFTERfUFJFUChETUFf UkVBRF9DT1VOVEVSLCBkbWFfYnVyc3RfY291bnQpOwo+PiArwqDCoMKgwqAgfQo+PiArCj4+ICvC oMKgwqDCoCBpZiAoc3BpY2MtPnJ4X2RtYSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNwaWNjLT5yeF9kbWEgKz0gbGVuOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvdW50 X2VuIHw9IERNQV9XUklURV9DT1VOVEVSX0VOOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmICh0cmlnID09IERNQV9UUklHX1ZTWU5DIHx8IHRyaWcgPT0gRE1BX1RSSUdfTElORV9OKQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb3VudF9lbiB8PSBE TUFfV0FERFJfTE9BRF9CWV9WU1lOQwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IERNQV9BRERSX0xPQURfRlJPTV9M RF9BRERSOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ4Zmlmb190aHJlcyA9IGRtYV9i dXJzdF9sZW47Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVfcmVxID0gZG1hX2J1 cnN0X2xlbjsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZF9jdHIxIHw9IEZJRUxEX1BS RVAoRE1BX1dSSVRFX0NPVU5URVIsIGRtYV9idXJzdF9jb3VudCk7Cj4+ICvCoMKgwqDCoCB9Cj4+ ICsKPj4gK8KgwqDCoMKgIHdyaXRlbF9yZWxheGVkKGNvdW50X2VuLCBzcGljYy0+YmFzZSArIFNQ SUNDX0xEX0NOVEwwKTsKPj4gK8KgwqDCoMKgIHdyaXRlbF9yZWxheGVkKGxkX2N0cjEsIHNwaWNj LT5iYXNlICsgU1BJQ0NfTERfQ05UTDEpOwo+PiArwqDCoMKgwqAgd3JpdGVsX3JlbGF4ZWQoKCh0 cmlnID09IERNQV9UUklHX05PUk1BTCkgPyBTUElDQ19ETUFfRU5BQkxFIDogMCkKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgU1BJQ0NfRE1BX1VSR0VOVAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBGSUVMRF9QUkVQKFNQSUNDX1RYRklGT19USFJF U0hPTERfTUFTSywgdHhmaWZvX3RocmVzKQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfCBGSUVMRF9QUkVQKFNQSUNDX1JFQURfQlVSU1RfTUFTSywgcmVhZF9yZXEpCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IEZJRUxEX1BSRVAoU1BJQ0NfUlhGSUZP X1RIUkVTSE9MRF9NQVNLLCByeGZpZm9fdGhyZXMpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8IEZJRUxEX1BSRVAoU1BJQ0NfV1JJVEVfQlVSU1RfTUFTSywgd3JpdGVfcmVx KSwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaWNjLT5iYXNlICsgU1BJ Q0NfRE1BUkVHKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgbWVzb25fc3BpY2NfZG1hX2ly cShzdHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlICpzcGljYykKPj4gK3sKPj4gK8KgwqDCoMKgIGlm IChyZWFkbF9yZWxheGVkKHNwaWNjLT5iYXNlICsgU1BJQ0NfRE1BUkVHKSAmIFNQSUNDX0RNQV9F TkFCTEUpCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArCj4+ICvCoMKg wqDCoCBpZiAoc3BpY2MtPnhmZXJfcmVtYWluKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgbWVzb25fc3BpY2Nfc2V0dXBfZG1hKHNwaWNjLCBETUFfVFJJR19OT1JNQUwpOwo+PiArwqDC oMKgwqAgfSBlbHNlIHsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZWxfYml0c19y ZWxheGVkKFNQSUNDX1NNQywgMCwgc3BpY2MtPmJhc2UgKyAKPj4gU1BJQ0NfQ09OUkVHKTsKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZWxfcmVsYXhlZCgwLCBzcGljYy0+YmFzZSAr IFNQSUNDX0lOVFJFRyk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsX3JlbGF4 ZWQoMCwgc3BpY2MtPmJhc2UgKyBTUElDQ19ETUFSRUcpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG1lc29uX3NwaWNjX2RtYV91bm1hcChzcGljYywgc3BpY2MtPnhmZXIpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbXBsZXRlKCZzcGljYy0+ZG9uZSk7Cj4+ICvCoMKgwqDC oCB9Cj4+ICt9Cj4+ICsKPj4gwqAgc3RhdGljIGlubGluZSBib29sIG1lc29uX3NwaWNjX3R4ZnVs bChzdHJ1Y3QgbWVzb25fc3BpY2NfZGV2aWNlICpzcGljYykKPj4gwqAgewo+PiDCoMKgwqDCoMKg IHJldHVybiAhIUZJRUxEX0dFVChTUElDQ19URiwKPj4gQEAgLTI5Myw2ICs0ODMsMTEgQEAgc3Rh dGljIGlycXJldHVybl90IG1lc29uX3NwaWNjX2lycShpbnQgaXJxLCB2b2lkIAo+PiAqZGF0YSkK Pj4KPj4gwqDCoMKgwqDCoCB3cml0ZWxfYml0c19yZWxheGVkKFNQSUNDX1RDLCBTUElDQ19UQywg c3BpY2MtPmJhc2UgKyAKPj4gU1BJQ0NfU1RBVFJFRyk7Cj4+Cj4+ICvCoMKgwqDCoCBpZiAoc3Bp Y2MtPnVzaW5nX2RtYSkgewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lc29uX3NwaWNj X2RtYV9pcnEoc3BpY2MpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBJUlFf SEFORExFRDsKPj4gK8KgwqDCoMKgIH0KPiAKPiBNYWtlIG1lc29uX3NwaWNjX2RtYV9pcnEoKSBy ZXR1cm4gaXJxcmV0dXJuX3QgYW5kIHJldHVybiBJUlFfSEFORExFRC4KPiAKCldpbGwgZG8uCgo+ PiArCj4+IMKgwqDCoMKgwqAgLyogRW1wdHkgUlggRklGTyAqLwo+PiDCoMKgwqDCoMKgIG1lc29u X3NwaWNjX3J4KHNwaWNjKTsKPj4KPj4gQEAgLTQyNiw5ICs2MjEsNiBAQCBzdGF0aWMgaW50IG1l c29uX3NwaWNjX3RyYW5zZmVyX29uZShzdHJ1Y3QgCj4+IHNwaV9jb250cm9sbGVyICpob3N0LAo+ Pgo+PiDCoMKgwqDCoMKgIG1lc29uX3NwaWNjX3Jlc2V0X2ZpZm8oc3BpY2MpOwo+Pgo+PiAtwqDC oMKgwqAgLyogU2V0dXAgYnVyc3QgKi8KPj4gLcKgwqDCoMKgIG1lc29uX3NwaWNjX3NldHVwX2J1 cnN0KHNwaWNjKTsKPj4gLQo+PiDCoMKgwqDCoMKgIC8qIFNldHVwIHdhaXQgZm9yIGNvbXBsZXRp b24gKi8KPj4gwqDCoMKgwqDCoCByZWluaXRfY29tcGxldGlvbigmc3BpY2MtPmRvbmUpOwo+Pgo+ PiBAQCAtNDQyLDExICs2MzQsNDAgQEAgc3RhdGljIGludCBtZXNvbl9zcGljY190cmFuc2Zlcl9v bmUoc3RydWN0IAo+PiBzcGlfY29udHJvbGxlciAqaG9zdCwKPj4gwqDCoMKgwqDCoCAvKiBJbmNy ZWFzZSBpdCB0d2ljZSBhbmQgYWRkIDIwMCBtcyB0b2xlcmFuY2UgKi8KPj4gwqDCoMKgwqDCoCB0 aW1lb3V0ICs9IHRpbWVvdXQgKyAyMDA7Cj4+Cj4+IC3CoMKgwqDCoCAvKiBTdGFydCBidXJzdCAq Lwo+PiAtwqDCoMKgwqAgd3JpdGVsX2JpdHNfcmVsYXhlZChTUElDQ19YQ0gsIFNQSUNDX1hDSCwg c3BpY2MtPmJhc2UgKyAKPj4gU1BJQ0NfQ09OUkVHKTsKPj4gK8KgwqDCoMKgIGlmICh4ZmVyLT5i aXRzX3Blcl93b3JkID09IDY0KSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaW50IHJl dDsKPj4KPj4gLcKgwqDCoMKgIC8qIEVuYWJsZSBpbnRlcnJ1cHRzICovCj4+IC3CoMKgwqDCoCB3 cml0ZWxfcmVsYXhlZChTUElDQ19UQ19FTiwgc3BpY2MtPmJhc2UgKyBTUElDQ19JTlRSRUcpOwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIG11c3QgdHggKi8KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoIXhmZXItPnR4X2J1ZikKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAvKiBkbWFfYnVyc3RfbGVuIDEgY2FuJ3QgdHJpZ2dlciBhIGRtYSBidXJz dCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICh4ZmVyLT5sZW4gPCAxNikKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7 Cj4gCj4gVGhvc2UgMiBjaGVja3Mgc2hvdWxkIGJlIGRvbmUgdG8gZW5hYmxlIHRoZSBETUEgbW9k ZSwgeW91IHNob3VsZCAKPiBmYWxsYmFjayB0byBGSUZPIG1vZGUKPiBpbnN0ZWFkIG9mIHJldHVy bmluZyBFSU5WQUwsIGV4Y2VwdCBpZiA2NCBiaXRzX3Blcl93b3JkIGlzIG9ubHkgdmFsaWQgaW4g Cj4gRE1BIG1vZGUgPwo+CgpJIG9ubHkgc3VwcG9ydCBETUEgd2hlbiBiaXRzX3Blcl93b3JkIGVx dWFscyA2NCwgYmVjYXVzZSB0aGUgcmVnaXN0ZXIgCm9wZXJhdGlvbiBpcyBtb3JlIGNvbXBsaWNh dGVkIGlmIHVzZSBQSU8gbW9kdWxlLiBUaGUgcmVnaXN0ZXIgaXMgMzIgYml0cyAKd2lkZSwgYSB3 b3JkIG5lZWRzIHRvIGJlIHdyaXR0ZW4gdHdpY2UgdG8gdGhlIHJlZ2lzdGVyLgoKPj4gKwo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IG1lc29uX3NwaWNjX2RtYV9tYXAoc3BpY2Ms IHhmZXIpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChyZXQpIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWVzb25fc3BpY2NfZG1hX3VubWFw KHNwaWNjLCB4ZmVyKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZGV2X2Vycihob3N0LT5kZXYucGFyZW50LCAiZG1hIG1hcCBmYWlsZWRcbiIpOwo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Owo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNwaWNjLT51c2luZ19kbWEgPSB0cnVlOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNw aWNjLT54ZmVyX3JlbWFpbiA9IERJVl9ST1VORF9VUCh4ZmVyLT5sZW4sIAo+PiBzcGljYy0+Ynl0 ZXNfcGVyX3dvcmQpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lc29uX3NwaWNjX3Nl dHVwX2RtYShzcGljYywgRE1BX1RSSUdfTk9STUFMKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB3cml0ZWxfcmVsYXhlZChTUElDQ19URV9FTiwgc3BpY2MtPmJhc2UgKyBTUElDQ19JTlRS RUcpOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdyaXRlbF9iaXRzX3JlbGF4ZWQoU1BJ Q0NfU01DLCBTUElDQ19TTUMsIHNwaWNjLT5iYXNlICsgCj4+IFNQSUNDX0NPTlJFRyk7Cj4+ICvC oMKgwqDCoCB9IGVsc2Ugewo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwaWNjLT51c2lu Z19kbWEgPSBmYWxzZTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBTZXR1cCBidXJz dCAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1lc29uX3NwaWNjX3NldHVwX2J1cnN0 KHNwaWNjKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFN0YXJ0IGJ1cnN0 ICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsX2JpdHNfcmVsYXhlZChTUElD Q19YQ0gsIFNQSUNDX1hDSCwgc3BpY2MtPmJhc2UgKyAKPj4gU1BJQ0NfQ09OUkVHKTsKPj4gKwo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEVuYWJsZSBpbnRlcnJ1cHRzICovCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd3JpdGVsX3JlbGF4ZWQoU1BJQ0NfVENfRU4sIHNwaWNj LT5iYXNlICsgU1BJQ0NfSU5UUkVHKTsKPj4gK8KgwqDCoMKgIH0KPj4KPj4gwqDCoMKgwqDCoCBp ZiAoIXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmc3BpY2MtPmRvbmUsIAo+PiBtc2Vjc190 b19qaWZmaWVzKHRpbWVvdXQpKSkKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FVElNRURPVVQ7Cj4+IEBAIC04NTMsMTAgKzEwNzQsMTAgQEAgc3RhdGljIGludCBtZXNvbl9z cGljY19wcm9iZShzdHJ1Y3QgCj4+IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gwqDCoMKgwqDC oCBob3N0LT5udW1fY2hpcHNlbGVjdCA9IDQ7Cj4+IMKgwqDCoMKgwqAgaG9zdC0+ZGV2Lm9mX25v ZGUgPSBwZGV2LT5kZXYub2Zfbm9kZTsKPj4gwqDCoMKgwqDCoCBob3N0LT5tb2RlX2JpdHMgPSBT UElfQ1BIQSB8IFNQSV9DUE9MIHwgU1BJX0NTX0hJR0ggfCBTUElfTE9PUDsKPj4gLcKgwqDCoMKg IGhvc3QtPmJpdHNfcGVyX3dvcmRfbWFzayA9IFNQSV9CUFdfTUFTSygzMikgfAo+PiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg U1BJX0JQV19NQVNLKDI0KSB8Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTUElfQlBXX01BU0soMTYpIHwKPj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFNQSV9CUFdfTUFTSyg4KTsKPj4gK8KgwqDCoMKgIC8qIERNQSB3b3JrcyBhdCA2NCBiaXRzLCBi dXQgaXQgaXMgaW52YWxpZGF0ZWQgYnkgdGhlIHNwaSBjb3JlLAo+PiArwqDCoMKgwqDCoCAqIGNs ciB0aGUgbWFzayB0byBhdm9pZCB0aGUgc3BpIGNvcmUgdmFsaWRhdGlvbiBjaGVjawo+PiArwqDC oMKgwqDCoCAqLwo+PiArwqDCoMKgwqAgaG9zdC0+Yml0c19wZXJfd29yZF9tYXNrID0gMDsKPiAK PiBGaW5lLCBpbnN0ZWFkIHBsZWFzZSBhZGQgYSBjaGVjayBpbiBtZXNvbl9zcGljY19zZXR1cCgp IHRvIG1ha2Ugc3VyZQo+IHdlIG9wZXJhdGUgb25seSBpbiA4LCAxNiwgMjQsIDMyICYgNjQgYml0 c19wZXJfd29yZC4KPiAKPiBTbyBub3QgbmVlZCB0byBjbGVhciBpdCwgdGhlIGhvc3QgYnVmZmVy IHdhcyBhbGxvY2F0ZWQgd2l0aCAKPiBzcGlfYWxsb2NfaG9zdCgpIHdoaWNoCj4gYWxsb2NhdGVz IHdpdGgga3phbGxvYygpLCBhbHJlYWR5IHplcm9pbmcgdGhlIGFsbG9jYXRlZCBtZW1vcnkuCj4g CgpXaWxsIGRyb3AgdGhpcyBsaW5lLCBhbmQgY2hlY2sgYml0c19wZXJfd29yZCBpbiBtZXNvbl9z cGljY19zZXR1cC4KCj4gTmVpbAo+IAo+PiDCoMKgwqDCoMKgIGhvc3QtPmZsYWdzID0gKFNQSV9D T05UUk9MTEVSX01VU1RfUlggfCBTUElfQ09OVFJPTExFUl9NVVNUX1RYKTsKPj4gwqDCoMKgwqDC oCBob3N0LT5taW5fc3BlZWRfaHogPSBzcGljYy0+ZGF0YS0+bWluX3NwZWVkX2h6Owo+PiDCoMKg wqDCoMKgIGhvc3QtPm1heF9zcGVlZF9oeiA9IHNwaWNjLT5kYXRhLT5tYXhfc3BlZWRfaHo7Cj4+ Cj4+IC0tLQo+PiBiYXNlLWNvbW1pdDogNDk4MDdlZDg3ODUxOTE2ZWY2NTVmNzJlOTU2MmY5NjM1 NTE4MzA5MAo+PiBjaGFuZ2UtaWQ6IDIwMjUwNDA4LXNwaS1kbWEtYzQ5OWY1NjBkMjk1Cj4+Cj4+ IEJlc3QgcmVnYXJkcywKPiAKPiBXaXRoIHRob3NlIGZpeGVkLCB0aGUgcGF0aCBpcyBjbGVhciAm IGNsZWFuLCB0aGFua3MgIQo+IAo+IE5laWwKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFpbGluZyBsaXN0CmxpbnV4LWFtbG9n aWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK