Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3086280pxf; Mon, 15 Mar 2021 00:32:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy+e0kFgi5301H0vucAurVMGkww9EklIirOS9cKHqVEDirkVrwZi820fMkePudYtySMy99Z X-Received: by 2002:aa7:dd99:: with SMTP id g25mr27975194edv.230.1615793547080; Mon, 15 Mar 2021 00:32:27 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1615793547; cv=pass; d=google.com; s=arc-20160816; b=ZU2x72rKFFTatwPYuN1nUSHoWQB31XiWL2pJCsO8AN0WWMBIFlHGj98ZKNhB3d2XTy OLHoVc0GAW7dYIYgksUZV0hLf9n6aQFcDVMs2wHpUxK68cgwuRgvI3l5iCmQvWmkDc7e XkAQZyceqHKaV9FeoLIjWeymRlHR8heJ5AlGF3CZoIB17ivGvRx+8e7+fMkjToqqF6Af dyS7PfLOweau1MqvAWh9CTVItH4FNThG9bUVI0/VFq5swSR+e3UsXPCS/59//1/f4Chc KifBBT1iVDNwm7rAqjWC7qoJArc7ojt8GPYVAjr7a6f544Eyub4gvVFoPXPoqTmMSnGZ 2Hhg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:dkim-signature; bh=VZm0YZp5zeeQ1jsSJCwqooSeZXukZyV2gDR5SgtvrKI=; b=iksrgo9AF2jH7K5BMlIQkqNT87xwogalLJBZZiMhIXk+brspIboClI1MUeoIDcLCw4 Tv18ROtqfyrNaxrWffn2+8A9v7+1q8SUCdWT8tygbePLW3fd2WnMfn2UykhgDiP49p9c OepF/TZEAp+1q5Pd1wJg8e96988L1iJ/ijcYylunVAuOPyXdhCGrqKg6WfjXEj28bU0a XhksPAc58NKzhb3VAx6FdrB+b47IGJtU3Ab5zAfRkPOY9OzRf+Vh00v9RMfLRN5BJBMn EAju1zRPtMBywlecXcuTdtMUyOCpoWWTkqPzYBh/cSuRGdhWQmLhNzhNeoipiTxJ78EI nuvQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=QiXKx9oJ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=FFfWe7fm; 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 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y1si10421048ejm.229.2021.03.15.00.32.04; Mon, 15 Mar 2021 00:32:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=QiXKx9oJ; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=FFfWe7fm; 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 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229939AbhCOH3P (ORCPT + 99 others); Mon, 15 Mar 2021 03:29:15 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:33340 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230092AbhCOH2w (ORCPT ); Mon, 15 Mar 2021 03:28:52 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1615793332; x=1647329332; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=VZm0YZp5zeeQ1jsSJCwqooSeZXukZyV2gDR5SgtvrKI=; b=QiXKx9oJ/FxpBNcQ+P79mFIttSGSP5PBipb7CmCPGqTR5lFhGIHOpSBM Hk+x0NRL8aa0nq6Oj2GkCwQU00mwp0+rvIqei9kWu1DGvwqnFk7ZxlvoX fpTlBUgq0SD6CeJ0mMVF9GpAajFPJ4mRhWYXh7n2pI/5W+QqnX9MmhqO+ 8QoeJFYFb4RGFdeIMRUEBP98Nv2O7ko0S9DJFaFHs6suznnbKE26D5FM3 NLKIrDqTm0pMMNEqtVwycPR8Uh0Ks1KHIwT1VfTyIq0v/pjcxeP8nRB0z QaFQxedr9kafN1abnXM/pwCjNBdlBWXfw7g0sgOHymjV9aEeLXzjIRBE0 Q==; IronPort-SDR: mcxsKXkyocYJMFua5marZqKIGySPOiOONaOBl9VIP8ctxOSCO3zTj5ondWOPR5NhnpUHSvOB5i iRLw9IqqVtQbrD4ipcjqLq6kaPe1P1LYlyl6v++8Do4xRqkOaDGdfWAJFOH3lj21+fEm31nA4g eBVPdSVg+tD/godHJ1TfjQTgvQF1c5rSGWDBz7gXGMR449f3BP1Pxt67NRfvEzfHXrEIbTCJJZ cjUy9V9/fsFJ1ZTsSRAH3l49HuRYulHfzDpqwKvmc1sz6Frzg7d3lx0OWk11p86zkexiiRL8St O9s= X-IronPort-AV: E=Sophos;i="5.81,249,1610434800"; d="scan'208";a="107187495" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 15 Mar 2021 00:28:48 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Mon, 15 Mar 2021 00:28:48 -0700 Received: from NAM04-SN1-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2 via Frontend Transport; Mon, 15 Mar 2021 00:28:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Dc5MpFelq3QHReO37NpNWEV3zg6U5jZu+JxK2g3L/FqPTjC5Xsrfkq3IvETSNBeItdDAW0yCP7cPqz9BnQ6UsVcntTelT7uYCxMjhW0OfV0SjHiKRTKSf9Sv2S8Z8kN7Luso5ljXkAf8cv1Pyz2KQjXo/djh2rD0CNZ8yAYL8VchIn/XRbSvSfr73bmSWHBgVpG0mLTkjbV49kRuVGuEtLLXPZbzvsjsPZmwX9HDR5+daBsNqfw9lk4PktFcTQemwMn+um8mM4prmiS1j18A9MxP970132X3QZBPGvhIyEsy0Te/o8A8QhtBlrhvvdtPucRbTkwQE+KAWiCyn6cF2g== 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-SenderADCheck; bh=VZm0YZp5zeeQ1jsSJCwqooSeZXukZyV2gDR5SgtvrKI=; b=nN4ILem6IQ529FmtOroxBt842113UrV5Niw3FonPwH7WnMfHT+mlIXA2X/JafV/wuUXRth5w4RSMA13aPauqPOvR257WSCvj6Pcxr+0wH1a7JWurN6AISJJEqCZuTyqjvvCKhM5UpdYn2OaRqXRV5CdAB1bmrxlQzFkmSW8AknFnKJDgw0TOTpLzSbtuzoMpqB9L4WbbSmg+1NI0qvM/DdXzXvF8nxq9IfP9HjAykfGDHf9sQ5/XAJSR8KxZphVaAGbZ6ATBVnORJbGwJ2ZouOSd8nryPV+38lJOTKld2/v+x3DC18r5ugBYEFJzyVnCoUAC5LisrpVqphKy99Z+eA== 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=VZm0YZp5zeeQ1jsSJCwqooSeZXukZyV2gDR5SgtvrKI=; b=FFfWe7fmXHqf1SAR6TDpYwaXo2W9m/BHLNf6wJo1qO7QPYKZuwzJeB61KmTkQSzNgflhqAaV1J7CSs8dXnW/K8kfeHNh9/nvJ7YRMtIF6szPK1v01Px5uqTP5RBMH436j4PRH+MyObRIf90kKo7q6CyN3lV1TdR7N4kdjSq8pPw= Received: from SA2PR11MB4874.namprd11.prod.outlook.com (2603:10b6:806:f9::23) by SA0PR11MB4639.namprd11.prod.outlook.com (2603:10b6:806:70::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.31; Mon, 15 Mar 2021 07:28:47 +0000 Received: from SA2PR11MB4874.namprd11.prod.outlook.com ([fe80::c9e8:9bf4:b08c:c30f]) by SA2PR11MB4874.namprd11.prod.outlook.com ([fe80::c9e8:9bf4:b08c:c30f%7]) with mapi id 15.20.3933.032; Mon, 15 Mar 2021 07:28:47 +0000 From: To: , , CC: , , Subject: Re: [PATCH v4 1/4] mtd: spi-nor: add OTP support Thread-Topic: [PATCH v4 1/4] mtd: spi-nor: add OTP support Thread-Index: AQHXGWzVX5jrWvQlhkiOlI7agfm/7w== Date: Mon, 15 Mar 2021 07:28:47 +0000 Message-ID: <7dd4bfb0-bb38-20c8-68e1-ece836c847fa@microchip.com> References: <20210306000535.9890-1-michael@walle.cc> <20210306000535.9890-2-michael@walle.cc> In-Reply-To: <20210306000535.9890-2-michael@walle.cc> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 authentication-results: walle.cc; dkim=none (message not signed) header.d=none;walle.cc; dmarc=none action=none header.from=microchip.com; x-originating-ip: [79.115.63.111] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: e9080fb7-177c-4e94-53e8-08d8e783f8a3 x-ms-traffictypediagnostic: SA0PR11MB4639: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3826; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: zLgEtv6AK3iLGNstkZqVnEIS7PCZFyylNFi6gzrzbXxv+eKTaaIbqyZTEdyvswarIX6jj8v3tcm/EzhD1kN6jr5wEDBme5bWgT+9JVUXFwcZi71IUlispHHYaXN7JqHyGzRsSkU6kfan0o458LFS4mclfcOJjm4Gd+2s1N/BZphCkvoB4VQnCGq4RGYoG5rfN0SFcUsjhJq2oN9/5LaND9YfxXLeim/NDVGh9aQzPwoxo2gkJayoWFMaBQUhng5jMTG57fjBItQEZdJaeMo3YCrNeMfWGyENarmwo6EsMtkdA3fr/jtke0SZogT/feWrm/c9bfosUbLfNFfUAXlEvvWto5IN3UmKdcRjo8yA3/Yb6r36Z2JVxhAX8uUopaMojVbN7Yp+ZBmKvjWDuLOr5i2DTdSSVDauJbu+0zS8Pw77eLv1401XjfM9nRSuoUbUlQECIHFJvOSpWKi51OLIy07UaZi8T/1zZfAJLLPrBoObq3U6LX++CdacGyq/0eZsTmBeox2Q9puYBNy6a4jMS19vzZWWTfTuJxZCDyjAWkrQSxu17173E4KSxoVT27RddRdm+Qf1/NfideiIvYSBvyKw6ZwEgAi+eH/P3j7KpNeYgxZO0shx1W7/9HxgBSW6e7MLyCwpLlZvhRiVKxv18XcB8itSUStiEnqY5zJPSqI= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA2PR11MB4874.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(346002)(376002)(366004)(396003)(39860400002)(31686004)(6486002)(186003)(2616005)(91956017)(66476007)(6506007)(53546011)(26005)(66446008)(64756008)(66556008)(478600001)(36756003)(8936002)(8676002)(2906002)(54906003)(110136005)(6512007)(31696002)(4326008)(30864003)(5660300002)(83380400001)(71200400001)(66946007)(86362001)(316002)(76116006)(45980500001)(43740500002)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?ck4zOVIrZkpGbHFUekpFcmRPNVB2OHlxb0VjdTI5UVlDS1BqT1BFdTB6Z1lC?= =?utf-8?B?cEQ5MkYzdjdJTFdqMU5ySlV4a0xDeUszWFpibit2L1U5ajRrR1UrNzZBWjNv?= =?utf-8?B?bU0rL2ExL0hjTWtUL2YvbTh4bjVmRWppOHgvai9hazc3Wk5xbnplVWYrZnRJ?= =?utf-8?B?OTlhMllqc3ZrYTQxaldHcGU3WTZsdW5QcHNubGhjYnlMenZveVk4bmVsSjUx?= =?utf-8?B?djFHVFhsU0RjSG9YU0NEWXVSOFdJSlFadElWSzcrazltLzBnOXZQK0ZpN3cy?= =?utf-8?B?THdDbyt3LzNLbTN2N3VGUnBkZWJwQlV3NHRad2ZMWGdLVFJsTzJOZ0xDWEhO?= =?utf-8?B?Uk5zbnViYUtKbDZUSzRMcVhhUzBQNWpkdmlIcWVIajVhV3dZOUErWW9YMnF6?= =?utf-8?B?WU9PcmdFdWtVQmJsZVd2U0p1VWFyUW1taGd4SUdGZzh5c09ia0lWSjltaGdK?= =?utf-8?B?YmtiYU96QVdlalNiNFRUSEtmeFUrZ1hBVlpNY2xZS3pIT213UjlPS2hybDV5?= =?utf-8?B?cWNWY3dpdzl4VnVXWmJqN2UwVmxZYll2NHhpMVBMMWZsUzZCOGNFZnczOG9J?= =?utf-8?B?U1pZSzVCMkF0anh4Qmk4TzZiNjlxM3hBa3d3T3hqZjc2M0s1WE9xUmIwYXRW?= =?utf-8?B?MzJRSGZwOXAyQXlMUGROMXZ2bHhVRFZnWWJVRnhoTXMyRDF3QXB6Mm9FZmNM?= =?utf-8?B?OVdYaEMxNTlBWEFQeUhGRGxvRGZ4cStRTmdrOFVqamFVVmhKa3gxOVJ3OWZO?= =?utf-8?B?QWdPU2pCWDlna1NUOFkxSTdNY09LSnRNdDdteXhTOFhyMkhMUFpuOXRObWdV?= =?utf-8?B?ZFo1KzZWL0xjdGlvcXM4MmxsY3UrN1FodkMrajRFUG9qTXY3enl0cEIyQ3NX?= =?utf-8?B?ZWNVNnlUNjNGTDZkeXo0cmJ2VlY5OW9DSnRpMlY2bzFpQVlMR04rVlJvMng1?= =?utf-8?B?R0NVRzRGWVNEek42M0F1VkFPMS8xdGMzU1h3ZTJMai9XLzZGMDFWakZMQjht?= =?utf-8?B?WWxHM1c1b25pNTZsSlRBTTl2SnhVMXNaTVNrUnZRRk5IM01vS29LMVF5azhM?= =?utf-8?B?citZSXpoY2t2T1kvUW8ySlpNUnNOdDNwYUI3eXk4Y09PWGRNM3hjUjNrYUR1?= =?utf-8?B?MGhlcSsrWHpSS21oQ2NJY0wycU5acEh0cVozV0Iyc09ZR1lQaVN2NVZYT3hM?= =?utf-8?B?MUNKRm5NZkhBUGRwM1BucnJCenBZckRtVFliK1k2Y3QwMHZPNm43d09Ubk9n?= =?utf-8?B?eDZsTGZzQXFMd25CT2s2bjlTeXdYZjlFdDNCTG01Q2IwVkRYYkFxdWNleVZa?= =?utf-8?B?QmZrbGJHNGVDazQ5ZGErd3Q1ODdTSnhhWDNkOUgzUEQ2c0RGaDY0VHRvUUcz?= =?utf-8?B?ajVibDlrc3d2cmNUZDArNldWS09PTkx1RXNJTzZRVVJ1QkxadU8vRDRkajZQ?= =?utf-8?B?akxNa0EzVUpIYjVvL0ovMWNqRG0vSGh6WDdEN0JVMlZhRThWejNsZXNsK0xE?= =?utf-8?B?VHR0Zi9oS3Avc01CS2g0ZkRqMU93d0lDUTczZVdqTCtRb21ZQ0tQbUZrNFlQ?= =?utf-8?B?THhpc1MrazNqQzE0MHFIeUd1aXd0bnVkeCtnN1NRbi8rN3pkbG5MdzNqK2ov?= =?utf-8?B?bVQ1RXZqRzU3REZaTGx3N1pkbm5wenNMek9BSVBPRkhHeU9Nc0s3aHMrRXpt?= =?utf-8?B?cGNic2p1ckIvVk0zck80QUNYL0Z0Y0tWMWw1NDFLeEwvWGpQa0NZQnRPV21M?= =?utf-8?Q?P6Z2BjpXHc9EMrp5Gs=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA2PR11MB4874.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e9080fb7-177c-4e94-53e8-08d8e783f8a3 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2021 07:28:47.0174 (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: mQf3TRroJCFMEOYiWFlZAGATnd/PFQ09miSZVmcqH2anZjTcHpAcUZx1EelQW8lyNYxktKI+ZtyLlszFL4k2nPDJmo0ra46l6UE1Giagqoc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4639 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org TWljaGFlbCwNCg0KSnVzdCBjb3NtZXRpYyBzdWdnZXN0aW9ucyB0aGlzIHRpbWUuDQoNCk9uIDMv Ni8yMSAyOjA1IEFNLCBNaWNoYWVsIFdhbGxlIHdyb3RlOg0KPiBFWFRFUk5BTCBFTUFJTDogRG8g bm90IGNsaWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBrbm93IHRoZSBj b250ZW50IGlzIHNhZmUNCj4gDQo+IFNQSSBmbGFzaGVzIHNvbWV0aW1lcyBoYXZlIGEgc3BlY2lh bCBPVFAgYXJlYSwgd2hpY2ggY2FuIChhbmQgaXMpIHVzZWQgdG8NCj4gc3RvcmUgaW1tdXRhYmxl IHByb3BlcnRpZXMgbGlrZSBib2FyZCBzZXJpYWwgbnVtYmVyIG9yIHZlbmRvciBhc3NpZ25lZA0K PiBuZXR3b3JrIGhhcmR3YXJlIGFkZHJlc3Nlcy4NCj4gDQo+IFRoZSBNVEQgc3Vic3lzdGVtIGFs cmVhZHkgc3VwcG9ydHMgYWNjZXNzaW5nIHN1Y2ggYXJlYXMgYW5kIHNvbWUgKG5vbg0KPiBTUEkg Tk9SKSBmbGFzaGVzIGFscmVhZHkgaW1wbGVtZW50IHN1cHBvcnQgZm9yIGl0LiBJdCBkaWZmZXJl bnRpYXRlcw0KPiBiZXR3ZWVuIHVzZXIgYW5kIGZhY3RvcnkgYXJlYXMuIFVzZXIgYXJlYXMgY2Fu IGJlIHdyaXR0ZW4gYnkgdGhlIHVzZXIgYW5kDQo+IGZhY3Rvcnkgb25lcyBhcmUgcHJlLXByb2dy YW1tZWQgYW5kIGxvY2tlZCBkb3duIGJ5IHRoZSB2ZW5kb3IsIHVzdWFsbHkNCj4gY29udGFpbmlu ZyBhbiAiZWxlY3RyaWNhbCBzZXJpYWwgbnVtYmVyIi4gVGhpcyBwYXRjaCB3aWxsIG9ubHkgYWRk IHN1cHBvcnQNCj4gZm9yIHRoZSB1c2VyIGFyZWFzLg0KPiANCj4gTGF5IHRoZSBmb3VuZGF0aW9u IGFuZCBpbXBsZW1lbnQgdGhlIE1URCBjYWxsYmFja3MgZm9yIHRoZSBTUEkgTk9SIGFuZCBhZGQN Cj4gbmVjZXNzYXJ5IHBhcmFtZXRlcnMgdG8gdGhlIGZsYXNoX2luZm8gc3RydWN0dXJlLiBJZiBh IGZsYXNoIHN1cHBvcnRzIE9UUA0KPiBpdCBjYW4gYmUgYWRkZWQgYnkgdGhlIGNvbnZlbmllbmNl IG1hY3JvIE9UUF9JTkZPKCkuIFNvbWV0aW1lcyB0aGVyZSBhcmUNCj4gaW5kaXZpZHVhbCByZWdp b25zLCB3aGljaCBtaWdodCBoYXZlIGluZGl2aWR1YWwgb2Zmc2V0cy4gVGhlcmVmb3JlLCBpdCBp cw0KPiBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBzdGFydGluZyBhZGRyZXNzIG9mIHRoZSBmaXJz dCByZWdpb25zIGFzIHdlbGwgYXMNCj4gdGhlIGRpc3RhbmNlIGJldHdlZW4gdHdvIHJlZ2lvbnMg KGUuZy4gV2luYm9uZCBkZXZpY2VzIHVzZXMgdGhpcyBtZXRob2QpLg0KPiANCj4gQWRkaXRpb25h bGx5LCB0aGUgcmVnaW9ucyBtaWdodCBiZSBsb2NrZWQgZG93bi4gT25jZSBsb2NrZWQsIG5vIGZ1 cnRoZXINCj4gd3JpdGUgYWNjZXNzIGlzIHBvc3NpYmxlLg0KPiANCj4gRm9yIFNQSSBOT1IgZmxh c2hlcyB0aGUgT1RQIGFyZWEgaXMgYWNjZXNzZWQgbGlrZSB0aGUgbm9ybWFsIG1lbW9yeSwgZS5n Lg0KPiBieSBvZmZzZXQgYWRkcmVzc2luZzsgZXhjZXB0IHRoYXQgeW91IGVpdGhlciBoYXZlIHRv IHVzZSBzcGVjaWFsIHJlYWQvd3JpdGUNCj4gY29tbWFuZHMgKFdpbmJvbmQpIG9yIHlvdSBoYXZl IHRvIGVudGVyIChhbmQgZXhpdCkgYSBzcGVjaWZpYyBPVFAgbW9kZQ0KPiAoTWFjcm9uaXgsIE1p Y3JvbikuDQo+IA0KPiBUaHVzIHdlIGludHJvZHVjZSBmb3VyIG9wZXJhdGlvbnMgdG8gd2hpY2gg dGhlIE1URCBjYWxsYmFja3Mgd2lsbCBiZQ0KPiBtYXBwZWQ6IC5yZWFkKCksIC53cml0ZSgpLCAu bG9jaygpIGFuZCAuaXNfbG9ja2VkKCkuIFRoZSByZWFkIGFuZCB0aGUgd3JpdGUNCj4gb3BzIHdp bGwgYmUgZ2l2ZW4gYW4gYWRkcmVzcyBvZmZzZXQgdG8gb3BlcmF0ZSBvbiB3aGlsZSB0aGUgbG9j a2luZyBvcHMgdXNlDQo+IHJlZ2lvbnMgYmVjYXVzZSBsb2NraW5nIGFsd2F5cyBhZmZlY3RzIGEg d2hvbGUgcmVnaW9uLiBJdCBpcyB1cCB0byB0aGUNCj4gZmxhc2ggZHJpdmVyIHRvIGltcGxlbWVu dCB0aGVzZSBvcHMuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFdhbGxlIDxtaWNoYWVs QHdhbGxlLmNjPg0KPiAtLS0NCj4gIGRyaXZlcnMvbXRkL3NwaS1ub3IvTWFrZWZpbGUgfCAgIDEg Kw0KPiAgZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMgICB8ICAgNSArDQo+ICBkcml2ZXJzL210 ZC9zcGktbm9yL2NvcmUuaCAgIHwgIDU0ICsrKysrKysrKw0KPiAgZHJpdmVycy9tdGQvc3BpLW5v ci9vdHAuYyAgICB8IDIxOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiAg NCBmaWxlcyBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvbXRkL3NwaS1ub3Ivb3RwLmMNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL210 ZC9zcGktbm9yL01ha2VmaWxlIGIvZHJpdmVycy9tdGQvc3BpLW5vci9NYWtlZmlsZQ0KPiBpbmRl eCA2NTM5MjM4OTYyMDUuLjJlZDJlNzZjZTRmMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tdGQv c3BpLW5vci9NYWtlZmlsZQ0KPiArKysgYi9kcml2ZXJzL210ZC9zcGktbm9yL01ha2VmaWxlDQo+ IEBAIC0xMiw2ICsxMiw3IEBAIHNwaS1ub3Itb2JqcyAgICAgICAgICAgICAgICAgICs9IGludGVs Lm8NCj4gIHNwaS1ub3Itb2JqcyAgICAgICAgICAgICAgICAgICArPSBpc3NpLm8NCj4gIHNwaS1u b3Itb2JqcyAgICAgICAgICAgICAgICAgICArPSBtYWNyb25peC5vDQo+ICBzcGktbm9yLW9ianMg ICAgICAgICAgICAgICAgICAgKz0gbWljcm9uLXN0Lm8NCj4gK3NwaS1ub3Itb2JqcyAgICAgICAg ICAgICAgICAgICArPSBvdHAubw0KDQpzcGktbm9yLW9ianMgICAgICAgICAgICAgICAgICAgIDo9 IGNvcmUubyBzZmRwLm8gb3RwLm8NCg0KVGhpcyBiZXR0ZXIgaW5kaWNhdGVzIHRoYXQgb3RwIGlz IHBhcnQgb2YgdGhlICJjb3JlIiBkcml2ZXIsIHdoaWxlDQp0aGUgcmVzdCBhcmUgbWFudWZhY3R1 cmVyIGRyaXZlcnMgKHRoYXQgYXJlIHRvbyBwYXJ0IG9mIHRoZSBjb3JlKS4NCg0KPiAgc3BpLW5v ci1vYmpzICAgICAgICAgICAgICAgICAgICs9IHNwYW5zaW9uLm8NCj4gIHNwaS1ub3Itb2JqcyAg ICAgICAgICAgICAgICAgICArPSBzc3Qubw0KPiAgc3BpLW5vci1vYmpzICAgICAgICAgICAgICAg ICAgICs9IHdpbmJvbmQubw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3Jl LmMgYi9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuYw0KPiBpbmRleCA0YTMxNWNiMWM0ZGIuLjBj NWM3NTdmYTk1YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMNCj4g KysrIGIvZHJpdmVycy9tdGQvc3BpLW5vci9jb3JlLmMNCj4gQEAgLTMwMDksNiArMzAwOSw4IEBA IHN0YXRpYyB2b2lkIHNwaV9ub3JfaW5mb19pbml0X3BhcmFtcyhzdHJ1Y3Qgc3BpX25vciAqbm9y KQ0KPiAgICAgICAgIHNwaV9ub3Jfc2V0X2VyYXNlX3R5cGUoJm1hcC0+ZXJhc2VfdHlwZVtpXSwg aW5mby0+c2VjdG9yX3NpemUsDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTUElO T1JfT1BfU0UpOw0KPiAgICAgICAgIHNwaV9ub3JfaW5pdF91bmlmb3JtX2VyYXNlX21hcChtYXAs IGVyYXNlX21hc2ssIHBhcmFtcy0+c2l6ZSk7DQo+ICsNCj4gKyAgICAgICBub3ItPnBhcmFtcy0+ b3RwLm9yZyA9ICZpbmZvLT5vdHBfb3JnOw0KDQpJbml0IHRoaXMgaW1tZWRpYXRlbHkgYWZ0ZXIg dGhlIHNldHVwIGluaXQsIHNvbWV0aGluZyBsaWtlOg0KCXBhcmFtcy0+c2V0dXAgPSBzcGlfbm9y X2RlZmF1bHRfc2V0dXA7DQoJcGFyYW1zLT5vdHAub3JnID0gJmluZm8tPm90cF9vcmc7DQoNCj4g IH0NCj4gDQo+ICAvKioNCj4gQEAgLTM1NTAsNiArMzU1Miw5IEBAIGludCBzcGlfbm9yX3NjYW4o c3RydWN0IHNwaV9ub3IgKm5vciwgY29uc3QgY2hhciAqbmFtZSwNCj4gICAgICAgICBpZiAocmV0 KQ0KPiAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gDQo+ICsgICAgICAgLyogQ29uZmln dXJlIE9UUCBwYXJhbWV0ZXJzIGFuZCBvcHMgKi8NCj4gKyAgICAgICBzcGlfbm9yX290cF9pbml0 KG5vcik7DQoNClBsZWFzZSBtb3ZlIHRoaXMgYXMgdGhlIGxhc3QgaW5pdCB0aGluZyBpbiBzcGlf bm9yX3NjYW4sIGltbWVkaWF0ZWx5IGFmdGVyDQpzcGlfbm9yX2luaXQobm9yKTsNCg0KTVREIE9U UCBvcHMgYXJlIG5vdCB1c2VkIGFjY3Jvc3Mgc3BpX25vcl9zY2FuKCksIHRoZXJlJ3Mgbm8gbmVl ZCB0byBpbml0DQp0aGVzZSBlYXJsaWVyLg0KIA0KPiArDQo+ICAgICAgICAgLyogU2VuZCBhbGwg dGhlIHJlcXVpcmVkIFNQSSBmbGFzaCBjb21tYW5kcyB0byBpbml0aWFsaXplIGRldmljZSAqLw0K PiAgICAgICAgIHJldCA9IHNwaV9ub3JfaW5pdChub3IpOw0KPiAgICAgICAgIGlmIChyZXQpDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuaCBiL2RyaXZlcnMvbXRkL3Nw aS1ub3IvY29yZS5oDQo+IGluZGV4IDRhM2Y3ZjE1MGI1ZC4uZWM4ZGExMjQzODQ2IDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL210ZC9zcGktbm9yL2NvcmUuaA0KPiArKysgYi9kcml2ZXJzL210ZC9z cGktbm9yL2NvcmUuaA0KPiBAQCAtMTg3LDYgKzE4Nyw0NSBAQCBzdHJ1Y3Qgc3BpX25vcl9sb2Nr aW5nX29wcyB7DQo+ICAgICAgICAgaW50ICgqaXNfbG9ja2VkKShzdHJ1Y3Qgc3BpX25vciAqbm9y LCBsb2ZmX3Qgb2ZzLCB1aW50NjRfdCBsZW4pOw0KPiAgfTsNCj4gDQo+ICsvKioNCj4gKyAqIHN0 cnVjdCBzcGlfbm9yX290cF9vcmdhbml6YXRpb24gLSBTdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgdGhl IFNQSSBOT1IgT1RQIHJlZ2lvbnMNCj4gKyAqIEBsZW46ICAgICAgIHNpemUgb2Ygb25lIE9UUCBy ZWdpb24gaW4gYnl0ZXMuDQo+ICsgKiBAYmFzZTogICAgICBzdGFydCBhZGRyZXNzIG9mIHRoZSBP VFAgYXJlYS4NCj4gKyAqIEBvZmZzZXQ6ICAgIG9mZnNldCBiZXR3ZWVuIGNvbnNlY3V0aXZlIE9U UCByZWdpb25zIGlmIHRoZXJlIGFyZSBtb3JlDQo+ICsgKiAgICAgICAgICAgICAgdGhhbiBvbmUu DQo+ICsgKiBAbl9yZWdpb25zOiBudW1iZXIgb2YgaW5kaXZpZHVhbCBPVFAgcmVnaW9ucy4NCj4g KyAqLw0KPiArc3RydWN0IHNwaV9ub3Jfb3RwX29yZ2FuaXphdGlvbiB7DQo+ICsgICAgICAgc2l6 ZV90IGxlbjsNCj4gKyAgICAgICBsb2ZmX3QgYmFzZTsNCj4gKyAgICAgICBsb2ZmX3Qgb2Zmc2V0 Ow0KPiArICAgICAgIHVuc2lnbmVkIGludCBuX3JlZ2lvbnM7DQo+ICt9Ow0KPiArDQo+ICsvKioN Cj4gKyAqIHN0cnVjdCBzcGlfbm9yX290cF9vcHMgLSBTUEkgTk9SIE9UUCBtZXRob2RzDQo+ICsg KiBAcmVhZDogICAgICByZWFkIGZyb20gdGhlIFNQSSBOT1IgT1RQIGFyZWEuDQo+ICsgKiBAd3Jp dGU6ICAgICB3cml0ZSB0byB0aGUgU1BJIE5PUiBPVFAgYXJlYS4NCj4gKyAqIEBsb2NrOiAgICAg IGxvY2sgYW4gT1RQIHJlZ2lvbi4NCj4gKyAqIEBpc19sb2NrZWQ6IGNoZWNrIGlmIGFuIE9UUCBy ZWdpb24gb2YgdGhlIFNQSSBOT1IgaXMgbG9ja2VkLg0KPiArICovDQo+ICtzdHJ1Y3Qgc3BpX25v cl9vdHBfb3BzIHsNCj4gKyAgICAgICBpbnQgKCpyZWFkKShzdHJ1Y3Qgc3BpX25vciAqbm9yLCBs b2ZmX3QgYWRkciwgc2l6ZV90IGxlbiwgdTggKmJ1Zik7DQo+ICsgICAgICAgaW50ICgqd3JpdGUp KHN0cnVjdCBzcGlfbm9yICpub3IsIGxvZmZfdCBhZGRyLCBzaXplX3QgbGVuLCB1OCAqYnVmKTsN Cj4gKyAgICAgICBpbnQgKCpsb2NrKShzdHJ1Y3Qgc3BpX25vciAqbm9yLCB1bnNpZ25lZCBpbnQg cmVnaW9uKTsNCj4gKyAgICAgICBpbnQgKCppc19sb2NrZWQpKHN0cnVjdCBzcGlfbm9yICpub3Is IHVuc2lnbmVkIGludCByZWdpb24pOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3Qg c3BpX25vcl9vdHAgLSBTUEkgTk9SIE9UUCBncm91cGluZyBzdHJ1Y3R1cmUNCj4gKyAqIEBvcmc6 ICAgICAgIE9UUCByZWdpb24gb3JnYW5pemF0aW9uDQo+ICsgKiBAb3BzOiAgICAgICBPVFAgYWNj ZXNzIG9wcw0KPiArICovDQo+ICtzdHJ1Y3Qgc3BpX25vcl9vdHAgew0KPiArICAgICAgIGNvbnN0 IHN0cnVjdCBzcGlfbm9yX290cF9vcmdhbml6YXRpb24gKm9yZzsNCj4gKyAgICAgICBjb25zdCBz dHJ1Y3Qgc3BpX25vcl9vdHBfb3BzICpvcHM7DQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAqIHN0 cnVjdCBzcGlfbm9yX2ZsYXNoX3BhcmFtZXRlciAtIFNQSSBOT1IgZmxhc2ggcGFyYW1ldGVycyBh bmQgc2V0dGluZ3MuDQo+ICAgKiBJbmNsdWRlcyBsZWdhY3kgZmxhc2ggcGFyYW1ldGVycyBhbmQg c2V0dGluZ3MgdGhhdCBjYW4gYmUgb3ZlcndyaXR0ZW4NCj4gQEAgLTIwOCw2ICsyNDcsNyBAQCBz dHJ1Y3Qgc3BpX25vcl9sb2NraW5nX29wcyB7DQo+ICAgKiAgICAgICAgICAgICAgICAgICAgICBo aWdoZXIgaW5kZXggaW4gdGhlIGFycmF5LCB0aGUgaGlnaGVyIHByaW9yaXR5Lg0KPiAgICogQGVy YXNlX21hcDogICAgICAgICB0aGUgZXJhc2UgbWFwIHBhcnNlZCBmcm9tIHRoZSBTRkRQIFNlY3Rv ciBNYXAgUGFyYW1ldGVyDQo+ICAgKiAgICAgICAgICAgICAgICAgICAgICBUYWJsZS4NCj4gKyAq IEBvdHBfaW5mbzogICAgICAgICAgZGVzY3JpYmVzIHRoZSBPVFAgcmVnaW9ucy4NCj4gICAqIEBv Y3RhbF9kdHJfZW5hYmxlOiAgZW5hYmxlcyBTUEkgTk9SIG9jdGFsIERUUiBtb2RlLg0KPiAgICog QHF1YWRfZW5hYmxlOiAgICAgICBlbmFibGVzIFNQSSBOT1IgcXVhZCBtb2RlLg0KPiAgICogQHNl dF80Ynl0ZV9hZGRyX21vZGU6IHB1dHMgdGhlIFNQSSBOT1IgaW4gNCBieXRlIGFkZHJlc3Npbmcg bW9kZS4NCj4gQEAgLTIxOSw2ICsyNTksNyBAQCBzdHJ1Y3Qgc3BpX25vcl9sb2NraW5nX29wcyB7 DQo+ICAgKiAgICAgICAgICAgICAgICAgICAgICBlLmcuIGRpZmZlcmVudCBvcGNvZGVzLCBzcGVj aWZpYyBhZGRyZXNzIGNhbGN1bGF0aW9uLA0KPiAgICogICAgICAgICAgICAgICAgICAgICAgcGFn ZSBzaXplLCBldGMuDQo+ICAgKiBAbG9ja2luZ19vcHM6ICAgICAgIFNQSSBOT1IgbG9ja2luZyBt ZXRob2RzLg0KPiArICogQG90cDogICAgICAgICAgICAgICBTUEkgTk9SIE9UUCBtZXRob2RzLg0K PiAgICovDQo+ICBzdHJ1Y3Qgc3BpX25vcl9mbGFzaF9wYXJhbWV0ZXIgew0KPiAgICAgICAgIHU2 NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTsNCj4gQEAgLTIzMiw2ICsyNzMsNyBA QCBzdHJ1Y3Qgc3BpX25vcl9mbGFzaF9wYXJhbWV0ZXIgew0KPiAgICAgICAgIHN0cnVjdCBzcGlf bm9yX3BwX2NvbW1hbmQgICAgICAgcGFnZV9wcm9ncmFtc1tTTk9SX0NNRF9QUF9NQVhdOw0KPiAN Cj4gICAgICAgICBzdHJ1Y3Qgc3BpX25vcl9lcmFzZV9tYXAgICAgICAgIGVyYXNlX21hcDsNCj4g KyAgICAgICBzdHJ1Y3Qgc3BpX25vcl9vdHAgICAgICAgICAgICAgIG90cDsNCj4gDQo+ICAgICAg ICAgaW50ICgqb2N0YWxfZHRyX2VuYWJsZSkoc3RydWN0IHNwaV9ub3IgKm5vciwgYm9vbCBlbmFi bGUpOw0KPiAgICAgICAgIGludCAoKnF1YWRfZW5hYmxlKShzdHJ1Y3Qgc3BpX25vciAqbm9yKTsN Cj4gQEAgLTM0MSw2ICszODMsOCBAQCBzdHJ1Y3QgZmxhc2hfaW5mbyB7DQo+IA0KPiAgICAgICAg IC8qIFBhcnQgc3BlY2lmaWMgZml4dXAgaG9va3MuICovDQo+ICAgICAgICAgY29uc3Qgc3RydWN0 IHNwaV9ub3JfZml4dXBzICpmaXh1cHM7DQo+ICsNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgc3Bp X25vcl9vdHBfb3JnYW5pemF0aW9uIG90cF9vcmc7DQoNCkNhbiB3ZSBtb3ZlIG90cF9vcmcganVz dCBiZWZvcmUgZml4dXBzPyBGaXh1cHMgYXJlIHVzdWFsbHkgdGhlIGxhc3QgdGhpbmcNCnRoYXQg d2Ugd2FudCB0byBzcGVjaWZ5IGluIGEgZmxhc2ggaW5mby4NCg0KPiAgfTsNCj4gDQo+ICAvKiBV c2VkIHdoZW4gdGhlICJfZXh0X2lkIiBpcyB0d28gYnl0ZXMgYXQgbW9zdCAqLw0KPiBAQCAtMzkz LDYgKzQzNywxNCBAQCBzdHJ1Y3QgZmxhc2hfaW5mbyB7DQo+ICAgICAgICAgICAgICAgICAuYWRk cl93aWR0aCA9IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g ICAgICAgICAgICAgICAgIC5mbGFncyA9IFNQSV9OT1JfTk9fRlIgfCBTUElfTk9SX1hTUl9SRFks DQo+IA0KPiArI2RlZmluZSBPVFBfSU5GTyhfbGVuLCBfbl9yZWdpb25zLCBfYmFzZSwgX29mZnNl dCkgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAub3RwX29yZyA9IHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgLmxlbiA9IChfbGVuKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAuYmFzZSA9IChfYmFzZSksICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIC5v ZmZzZXQgPSAoX29mZnNldCksICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgLm5fcmVnaW9ucyA9IChfbl9yZWdpb25zKSwgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgfSwNCj4gKw0KPiAgLyoqDQo+ICAgKiBzdHJ1 Y3Qgc3BpX25vcl9tYW51ZmFjdHVyZXIgLSBTUEkgTk9SIG1hbnVmYWN0dXJlciBvYmplY3QNCj4g ICAqIEBuYW1lOiBtYW51ZmFjdHVyZXIgbmFtZQ0KPiBAQCAtNDczLDYgKzUyNSw4IEBAIGludCBz cGlfbm9yX3Bvc3RfYmZwdF9maXh1cHMoc3RydWN0IHNwaV9ub3IgKm5vciwNCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2ZkcF9iZnB0ICpiZnB0LA0KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzcGlfbm9yX2ZsYXNoX3BhcmFtZXRlciAq cGFyYW1zKTsNCj4gDQo+ICt2b2lkIHNwaV9ub3Jfb3RwX2luaXQoc3RydWN0IHNwaV9ub3IgKm5v cik7DQo+ICsNCj4gIHN0YXRpYyBzdHJ1Y3Qgc3BpX25vciBfX21heWJlX3VudXNlZCAqbXRkX3Rv X3NwaV9ub3Ioc3RydWN0IG10ZF9pbmZvICptdGQpDQo+ICB7DQo+ICAgICAgICAgcmV0dXJuIG10 ZC0+cHJpdjsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NwaS1ub3Ivb3RwLmMgYi9kcml2 ZXJzL210ZC9zcGktbm9yL290cC5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAw MDAwMDAwMDAwMC4uNGUzMDFmZDUxNTZiDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZHJpdmVy cy9tdGQvc3BpLW5vci9vdHAuYw0KPiBAQCAtMCwwICsxLDIxOCBAQA0KPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBPVFAgc3VwcG9ydCBmb3IgU1BJ IE5PUiBmbGFzaGVzDQo+ICsgKg0KPiArICogQ29weXJpZ2h0IChDKSAyMDIxIE1pY2hhZWwgV2Fs bGUgPG1pY2hhZWxAd2FsbGUuY2M+PiArICovDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9sb2cy Lmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbXRkL210ZC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L210 ZC9zcGktbm9yLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJjb3JlLmgiDQo+ICsNCj4gKyNkZWZpbmUg c3BpX25vcl9vdHBfb3BzKG5vcikgKChub3IpLT5wYXJhbXMtPm90cC5vcHMpDQo+ICsjZGVmaW5l IHNwaV9ub3Jfb3RwX3JlZ2lvbl9sZW4obm9yKSAoKG5vciktPnBhcmFtcy0+b3RwLm9yZy0+bGVu KQ0KPiArI2RlZmluZSBzcGlfbm9yX290cF9uX3JlZ2lvbnMobm9yKSAoKG5vciktPnBhcmFtcy0+ b3RwLm9yZy0+bl9yZWdpb25zKQ0KDQpJIGRvbid0IGxpa2UgdGhlc2Ugd3JhcHBlcnMgYmVjYXVz ZSB0aGV5IGdyYXR1aW91c2x5IGhpZGUgd2hhdCdzIHJlYWxseSB0aGVyZS4NCkkgZmluZCB0aGUg Y29kZSBtb3JlIGVhc2llciB0byByZWFkIHdpdGhvdXQgdGhlc2Ugd3JhcHBlcnMsIGJlY2F1c2Ug SSBkb24ndCANCmhhdmUgdG8gbWVtb3JpemUgd2hhdCB0aGVzZSB3cmFwcGVycyBhcmUgZG9pbmcs IGFuZCBJIGJldHRlciBzZWUgaG93IHRoZSBjb2RlDQppcyBvcmdhbml6ZWQuDQoNCj4gKw0KPiAr c3RhdGljIGxvZmZfdCBzcGlfbm9yX290cF9yZWdpb25fc3RhcnQoY29uc3Qgc3RydWN0IHNwaV9u b3IgKm5vciwgaW50IHJlZ2lvbikNCj4gK3sNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgc3BpX25v cl9vdHBfb3JnYW5pemF0aW9uICpvcmcgPSBub3ItPnBhcmFtcy0+b3RwLm9yZzsNCg0KaG93IGFi b3V0IHMvb3JnL290cF9vcmc/DQoNCj4gKw0KPiArICAgICAgIHJldHVybiBvcmctPmJhc2UgKyBy ZWdpb24gKiBvcmctPm9mZnNldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHNpemVfdCBzcGlfbm9y X290cF9zaXplKHN0cnVjdCBzcGlfbm9yICpub3IpDQo+ICt7DQo+ICsgICAgICAgcmV0dXJuIHNw aV9ub3Jfb3RwX25fcmVnaW9ucyhub3IpICogc3BpX25vcl9vdHBfcmVnaW9uX2xlbihub3IpOw0K PiArfQ0KPiArDQo+ICsvKg0KPiArICogVHJhbnNsYXRlIHRoZSBmaWxlIG9mZnNldHMgZnJvbSBh bmQgdG8gT1RQIHJlZ2lvbnMuIFNlZSBhbHNvDQo+ICsgKiBzcGlfbm9yX210ZF9vdHBfZG9fb3Ao KS4NCj4gKyAqLw0KPiArc3RhdGljIGxvZmZfdCBzcGlfbm9yX290cF9yZWdpb25fdG9fb2Zmc2V0 KHN0cnVjdCBzcGlfbm9yICpub3IsIHVuc2lnbmVkIGludCByZWdpb24pDQo+ICt7DQo+ICsgICAg ICAgcmV0dXJuIHJlZ2lvbiAqIHNwaV9ub3Jfb3RwX3JlZ2lvbl9sZW4obm9yKTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHVuc2lnbmVkIGludCBzcGlfbm9yX290cF9vZmZzZXRfdG9fcmVnaW9uKHN0 cnVjdCBzcGlfbm9yICpub3IsIGxvZmZfdCBvZnMpDQo+ICt7DQo+ICsgICAgICAgcmV0dXJuIG9m cyAvIHNwaV9ub3Jfb3RwX3JlZ2lvbl9sZW4obm9yKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBzcGlfbm9yX210ZF9vdHBfaW5mbyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc2l6ZV90IGxlbiwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKnJldGxlbiwgc3RydWN0 IG90cF9pbmZvICpidWYpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IHNwaV9ub3IgKm5vciA9IG10 ZF90b19zcGlfbm9yKG10ZCk7DQo+ICsgICAgICAgY29uc3Qgc3RydWN0IHNwaV9ub3Jfb3RwX29w cyAqb3BzID0gc3BpX25vcl9vdHBfb3BzKG5vcik7DQo+ICsgICAgICAgdW5zaWduZWQgaW50IG5f cmVnaW9ucyA9IHNwaV9ub3Jfb3RwX25fcmVnaW9ucyhub3IpOw0KPiArICAgICAgIHVuc2lnbmVk IGludCByZWdpb247DQo+ICsgICAgICAgaW50IHJldCwgbG9ja2VkOw0KPiArDQo+ICsgICAgICAg aWYgKGxlbiA8IG5fcmVnaW9ucyAqIHNpemVvZigqYnVmKSkNCj4gKyAgICAgICAgICAgICAgIHJl dHVybiAtRU5PU1BDOw0KPiArDQo+ICsgICAgICAgcmV0ID0gc3BpX25vcl9sb2NrX2FuZF9wcmVw KG5vcik7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7 DQo+ICsNCj4gKyAgICAgICBmb3IgKHJlZ2lvbiA9IDA7IHJlZ2lvbiA8IHNwaV9ub3Jfb3RwX25f cmVnaW9ucyhub3IpOyByZWdpb24rKykgew0KDQpmb3IgKGkgPSAwOyBpIDwgIG5fcmVnaW9uczsg aSsrKQ0KDQphbHJlYWR5IGluZGljYXRlcyB0aGF0IGkgaXMgdGhlIGluZGV4IG9mIGEgcmVnaW9u LCBubyBuZWVkIHRvIGhhdmUgYW4gZXhwbGljaXQNCm5hbWUuIEFsc28sIGlmIHlvdSB3YW50IHRv IGludHJvZHVjZSBhIGxvY2FsIHZhcmlhYmxlLCBuX3JlZ2lvbnMsIHVzZSBpdCBoZXJlDQp0b28u DQoNCj4gKyAgICAgICAgICAgICAgIGJ1Zi0+c3RhcnQgPSBzcGlfbm9yX290cF9yZWdpb25fdG9f b2Zmc2V0KG5vciwgcmVnaW9uKTsNCj4gKyAgICAgICAgICAgICAgIGJ1Zi0+bGVuZ3RoID0gc3Bp X25vcl9vdHBfcmVnaW9uX2xlbihub3IpOw0KPiArDQo+ICsgICAgICAgICAgICAgICBsb2NrZWQg PSBvcHMtPmlzX2xvY2tlZChub3IsIHJlZ2lvbik7DQo+ICsgICAgICAgICAgICAgICBpZiAobG9j a2VkIDwgMCkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBsb2NrZWQ7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiArICAgICAgICAgICAgICAgfQ0KPiAr DQo+ICsgICAgICAgICAgICAgICBidWYtPmxvY2tlZCA9ICEhbG9ja2VkOw0KPiArICAgICAgICAg ICAgICAgYnVmKys7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgKnJldGxlbiA9IG5fcmVn aW9ucyAqIHNpemVvZigqYnVmKTsNCj4gKw0KPiArb3V0Og0KPiArICAgICAgIHNwaV9ub3JfdW5s b2NrX2FuZF91bnByZXAobm9yKTsNCj4gKw0KPiArICAgICAgIHJldHVybiByZXQ7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgc3BpX25vcl9tdGRfb3RwX3JlYWRfd3JpdGUoc3RydWN0IG10ZF9p bmZvICptdGQsIGxvZmZfdCBvZnMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZV90IHRvdGFsX2xlbiwgc2l6ZV90ICpyZXRsZW4sDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICpidWYsIGJvb2wgaXNfd3JpdGUpDQoNCm5v dCByZWxhdGVkIHRvIHRoaXMgcGF0Y2gsIGJ1dCB0aGUgbGlzdCBvZiBhcmd1bWVudHMgaXMgcXVp dGUgYmlnLCBtYXliZQ0Kd2UgY2FuIHVwZGF0ZSBtdGQgdG8gcGFzcyBhIHBvaW50ZXIgdG8gYSBz dHJ1Y3QuDQoNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgc3BpX25vciAqbm9yID0gbXRkX3RvX3Nw aV9ub3IobXRkKTsNCj4gKyAgICAgICBjb25zdCBzdHJ1Y3Qgc3BpX25vcl9vdHBfb3BzICpvcHMg PSBzcGlfbm9yX290cF9vcHMobm9yKTsNCj4gKyAgICAgICBjb25zdCBzaXplX3QgcmxlbiA9IHNw aV9ub3Jfb3RwX3JlZ2lvbl9sZW4obm9yKTsNCj4gKyAgICAgICBsb2ZmX3QgcnN0YXJ0LCByb2Zz Ow0KPiArICAgICAgIHVuc2lnbmVkIGludCByZWdpb247DQo+ICsgICAgICAgc2l6ZV90IGxlbjsN Cj4gKyAgICAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAgICAgaWYgKG9mcyA8IDAgfHwgb2ZzID49 IHNwaV9ub3Jfb3RwX3NpemUobm9yKSkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiAr DQo+ICsgICAgICAgcmV0ID0gc3BpX25vcl9sb2NrX2FuZF9wcmVwKG5vcik7DQo+ICsgICAgICAg aWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAgICAgICAv KiBkb24ndCBhY2Nlc3MgYmV5b25kIHRoZSBlbmQgKi8NCj4gKyAgICAgICB0b3RhbF9sZW4gPSBt aW5fdChzaXplX3QsIHRvdGFsX2xlbiwgc3BpX25vcl9vdHBfc2l6ZShub3IpIC0gb2ZzKTsNCj4g Kw0KPiArICAgICAgICpyZXRsZW4gPSAwOw0KPiArICAgICAgIHdoaWxlICh0b3RhbF9sZW4pIHsN Cj4gKyAgICAgICAgICAgICAgIC8qDQo+ICsgICAgICAgICAgICAgICAgKiBUaGUgT1RQIHJlZ2lv bnMgYXJlIG1hcHBlZCBpbnRvIGEgY29udGlndW91cyBhcmVhIHN0YXJ0aW5nDQo+ICsgICAgICAg ICAgICAgICAgKiBhdCAwIGFzIGV4cGVjdGVkIGJ5IHRoZSBNVEQgbGF5ZXIuIFRoaXMgd2lsbCBt YXAgdGhlIE1URA0KPiArICAgICAgICAgICAgICAgICogZmlsZSBvZmZzZXRzIHRvIHRoZSBhZGRy ZXNzIG9mIGFuIE9UUCByZWdpb24gYXMgdXNlZCBpbiB0aGUNCj4gKyAgICAgICAgICAgICAgICAq IGFjdHVhbCBTUEkgY29tbWFuZHMuDQo+ICsgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAg ICAgICAgIHJlZ2lvbiA9IHNwaV9ub3Jfb3RwX29mZnNldF90b19yZWdpb24obm9yLCBvZnMpOw0K PiArICAgICAgICAgICAgICAgcnN0YXJ0ID0gc3BpX25vcl9vdHBfcmVnaW9uX3N0YXJ0KG5vciwg cmVnaW9uKTsNCg0KTWF5YmUgaXQncyBqdXN0IG1lLCBidXQgSSBkb24ndCBsaWtlIHRoZSBoZWxw ZXJzIDopLg0KRXNwZWNpYWxseSBzcGlfbm9yX290cF9vZmZzZXRfdG9fcmVnaW9uLiBBbmQgc3Bp X25vcl9vdHBfcmVnaW9uX3N0YXJ0KCkNCmlzIHVzZWQganVzdCBoZXJlLiBNYXliZSBkaXNjYXJk IHRoZW0gYW5kIHMvcmVnaW9uL2k/DQoNCj4gKw0KPiArICAgICAgICAgICAgICAgLyoNCj4gKyAg ICAgICAgICAgICAgICAqIFRoZSBzaXplIG9mIGEgT1RQIHJlZ2lvbiBpcyBleHBlY3RlZCB0byBi ZSBhIHBvd2VyIG9mIHR3bywNCj4gKyAgICAgICAgICAgICAgICAqIHRodXMgd2UgY2FuIGp1c3Qg bWFzayB0aGUgbG93ZXIgYml0cyBhbmQgZ2V0IHRoZSBvZmZzZXQgaW50bw0KPiArICAgICAgICAg ICAgICAgICogYSByZWdpb24uDQo+ICsgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAg ICAgIHJvZnMgPSBvZnMgJiAocmxlbiAtIDEpOw0KPiArDQo+ICsgICAgICAgICAgICAgICAvKiBk b24ndCBhY2Nlc3MgYmV5b25kIG9uZSBPVFAgcmVnaW9uICovDQo+ICsgICAgICAgICAgICAgICBs ZW4gPSBtaW5fdChzaXplX3QsIHRvdGFsX2xlbiwgcmxlbiAtIHJvZnMpOw0KPiArDQo+ICsgICAg ICAgICAgICAgICBpZiAoaXNfd3JpdGUpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9 IG9wcy0+d3JpdGUobm9yLCByc3RhcnQgKyByb2ZzLCBsZW4sIGJ1Zik7DQo+ICsgICAgICAgICAg ICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IG9wcy0+cmVhZChub3Is IHJzdGFydCArIHJvZnMsIGxlbiwgYnVmKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQgPT0g MCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gLUVJTzsNCj4gKyAgICAgICAgICAg ICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsNCj4g Kw0KPiArICAgICAgICAgICAgICAgKnJldGxlbiArPSByZXQ7DQo+ICsgICAgICAgICAgICAgICBv ZnMgKz0gcmV0Ow0KPiArICAgICAgICAgICAgICAgYnVmICs9IHJldDsNCj4gKyAgICAgICAgICAg ICAgIHRvdGFsX2xlbiAtPSByZXQ7DQo+ICsgICAgICAgfQ0KPiArICAgICAgIHJldCA9IDA7DQo+ ICsNCj4gK291dDoNCj4gKyAgICAgICBzcGlfbm9yX3VubG9ja19hbmRfdW5wcmVwKG5vcik7DQo+ ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBzcGlfbm9yX210 ZF9vdHBfcmVhZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4s DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpyZXRsZW4sIHVfY2hh ciAqYnVmKQ0KPiArew0KPiArICAgICAgIHJldHVybiBzcGlfbm9yX210ZF9vdHBfcmVhZF93cml0 ZShtdGQsIGZyb20sIGxlbiwgcmV0bGVuLCBidWYsIGZhbHNlKTsNCj4gK30NCj4gKw0KPiArc3Rh dGljIGludCBzcGlfbm9yX210ZF9vdHBfd3JpdGUoc3RydWN0IG10ZF9pbmZvICptdGQsIGxvZmZf dCB0bywgc2l6ZV90IGxlbiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZV90ICpyZXRsZW4sIHVfY2hhciAqYnVmKQ0KPiArew0KPiArICAgICAgIHJldHVybiBzcGlfbm9y X210ZF9vdHBfcmVhZF93cml0ZShtdGQsIHRvLCBsZW4sIHJldGxlbiwgYnVmLCB0cnVlKTsNCj4g K30NCj4gKw0KPiArc3RhdGljIGludCBzcGlfbm9yX210ZF9vdHBfbG9jayhzdHJ1Y3QgbXRkX2lu Zm8gKm10ZCwgbG9mZl90IGZyb20sIHNpemVfdCBsZW4pDQo+ICt7DQo+ICsgICAgICAgc3RydWN0 IHNwaV9ub3IgKm5vciA9IG10ZF90b19zcGlfbm9yKG10ZCk7DQo+ICsgICAgICAgY29uc3Qgc3Ry dWN0IHNwaV9ub3Jfb3RwX29wcyAqb3BzID0gc3BpX25vcl9vdHBfb3BzKG5vcik7DQo+ICsgICAg ICAgdW5zaWduZWQgaW50IHJlZ2lvbjsNCj4gKyAgICAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAg ICAgaWYgKGZyb20gPCAwIHx8IChmcm9tICsgbGVuKSA+IHNwaV9ub3Jfb3RwX3NpemUobm9yKSkN Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAgICAgLyogdGhl IHVzZXIgaGFzIHRvIGV4cGxpY2l0bHkgYXNrIGZvciB3aG9sZSByZWdpb25zICovDQo+ICsgICAg ICAgaWYgKGxlbiAlIHNwaV9ub3Jfb3RwX3JlZ2lvbl9sZW4obm9yKSkNCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAgICAgaWYgKGZyb20gJSBzcGlfbm9yX290 cF9yZWdpb25fbGVuKG5vcikpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4g Kw0KPiArICAgICAgIHJldCA9IHNwaV9ub3JfbG9ja19hbmRfcHJlcChub3IpOw0KPiArICAgICAg IGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgICAg d2hpbGUgKGxlbikgew0KPiArICAgICAgICAgICAgICAgcmVnaW9uID0gc3BpX25vcl9vdHBfb2Zm c2V0X3RvX3JlZ2lvbihub3IsIGZyb20pOw0KPiArICAgICAgICAgICAgICAgcmV0ID0gb3BzLT5s b2NrKG5vciwgcmVnaW9uKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIGdvdG8gb3V0Ow0KPiArDQo+ICsgICAgICAgICAgICAgICBsZW4gLT0g c3BpX25vcl9vdHBfcmVnaW9uX2xlbihub3IpOw0KPiArICAgICAgICAgICAgICAgZnJvbSArPSBz cGlfbm9yX290cF9yZWdpb25fbGVuKG5vcik7DQo+ICsgICAgICAgfQ0KPiArDQo+ICtvdXQ6DQo+ ICsgICAgICAgc3BpX25vcl91bmxvY2tfYW5kX3VucHJlcChub3IpOw0KPiArDQo+ICsgICAgICAg cmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArdm9pZCBzcGlfbm9yX290cF9pbml0KHN0cnVjdCBz cGlfbm9yICpub3IpDQo+ICt7DQo+ICsgICAgICAgc3RydWN0IG10ZF9pbmZvICptdGQgPSAmbm9y LT5tdGQ7DQo+ICsNCj4gKyAgICAgICBpZiAoIW5vci0+cGFyYW1zLT5vdHAub3BzKQ0KPiArICAg ICAgICAgICAgICAgcmV0dXJuOw0KPiArDQo+ICsgICAgICAgaWYgKFdBUk5fT04oIWlzX3Bvd2Vy X29mXzIoc3BpX25vcl9vdHBfcmVnaW9uX2xlbihub3IpKSkpDQoNCldoeSBXQVJOX09OIGFuZCBu b3QganVzdCBhIGRlYnVnIG1lc3NhZ2U/DQoNCkNoZWVycywNCnRhDQoNCj4gKyAgICAgICAgICAg ICAgIHJldHVybjsNCj4gKw0KPiArICAgICAgIC8qDQo+ICsgICAgICAgICogV2Ugb25seSBzdXBw b3J0IHVzZXJfcHJvdCBjYWxsYmFja3MgKHlldCkuDQo+ICsgICAgICAgICoNCj4gKyAgICAgICAg KiBTb21lIFNQSSBOT1IgZmxhc2hlcyBsaWtlIE1hY3Jvbml4IG9uZXMgY2FuIGJlIG9yZGVyZWQg aW4gdHdvDQo+ICsgICAgICAgICogZGlmZmVyZW50IHZhcmlhbnRzLiBPbmUgd2l0aCBhIGZhY3Rv cnkgbG9ja2VkIE9UUCBhcmVhIGFuZCBvbmUgd2hlcmUNCj4gKyAgICAgICAgKiBpdCBpcyBsZWZ0 IHRvIHRoZSB1c2VyIHRvIHdyaXRlIHRvIGl0LiBUaGUgZmFjdG9yeSBsb2NrZWQgT1RQIGlzDQo+ ICsgICAgICAgICogdXN1YWxseSBwcmVwcm9ncmFtbWVkIHdpdGggYW4gImVsZWN0cmljYWwgc2Vy aWFsIG51bWJlciIuIFdlIGRvbid0DQo+ICsgICAgICAgICogc3VwcG9ydCB0aGVzZSBmb3Igbm93 Lg0KPiArICAgICAgICAqLw0KPiArICAgICAgIG10ZC0+X2dldF91c2VyX3Byb3RfaW5mbyA9IHNw aV9ub3JfbXRkX290cF9pbmZvOw0KPiArICAgICAgIG10ZC0+X3JlYWRfdXNlcl9wcm90X3JlZyA9 IHNwaV9ub3JfbXRkX290cF9yZWFkOw0KPiArICAgICAgIG10ZC0+X3dyaXRlX3VzZXJfcHJvdF9y ZWcgPSBzcGlfbm9yX210ZF9vdHBfd3JpdGU7DQo+ICsgICAgICAgbXRkLT5fbG9ja191c2VyX3By b3RfcmVnID0gc3BpX25vcl9tdGRfb3RwX2xvY2s7DQo+ICt9DQo+IC0tDQo+IDIuMjAuMQ0KPiAN Cg0K