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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9723BC05027 for ; Fri, 20 Jan 2023 14:14:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230261AbjATOOi (ORCPT ); Fri, 20 Jan 2023 09:14:38 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230274AbjATOOg (ORCPT ); Fri, 20 Jan 2023 09:14:36 -0500 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on20630.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eaa::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E331C6B99F for ; Fri, 20 Jan 2023 06:13:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JJMZNNHmTPSO7x4CSpfwgHdj6MZZ0QsgSR7N6a+MjelZ5tutlJMot9PGkkGxQM6O+B37lKfg7IDbVjkWnqrQ5a+H9ZY/KYgHR80EBNWJen/90Z5XCH0guLIhU68K28K53o+a4QgpkzZkQkf9ysbNwGEVWmrD4ZlIjjpY7Jr/XUveXmTB6dP0aNg5NuhjJ+Ez67El/S1bcHRaf5hr7nyvKMCGlff4GWN3yxJ4WG4AYZjsVX2D3OBQkEtDhSbNtEtJjx5Anri6t9ze1OME2I417cleeUYHEbm1T/v54efOIQph5Rln11hQAZWP99z3mufywziNLE91i6+SizrsyznYqg== 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=1uNLIwNH40Vxn8H/AmMgEDLZV3ikMtwaSrAt/gXgVEc=; b=nP5Ck8nervM/c2IZOuD0rQoBp8d3LRu1lLC1Mh5bTA1QsFjwuJHWxzj5x4CQCWEfGSztJeLQ3jL6aVN/FkBWAN8gd+Q7qFjDMBCs6H6iPnLPPsIqXjImvdfN9yhv9QPHo+9efzzrha7F4BGQRaLJXBSVoSfFU7R9jwzlppXSZqjemoptE1h4TOnX5iMcYmeV2C4zZypNFeZ7ojQDxSEaaxSomkWz6PZhCd66NrmXa1oMZnROWdbDuyy+Egfkcz7AXssUVKrdDPdffGxVBmI2RYILiViVNrKcVAUGRadptSgmlWXfDiR1YbBeiOdqw2GJsvkiPEKuY2DcI/TnL1JIhw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1uNLIwNH40Vxn8H/AmMgEDLZV3ikMtwaSrAt/gXgVEc=; b=MGLuSTfytUrNANBPd46d2Rj5FNWsUORHS9gNCYIZQywEIks3Kr8VIt9oPnhswKnYszFOL/5D6yS8jvVCJaT9QCmpWEhuwB54mpTEnRpJ8iHAj6U+2paAcqcIX6UwxVRrrKBbj4LhqQ9rHWdhbW6AQbL+C4ywF1UZiijiPPbE6bU= Received: from DM6PR12MB4202.namprd12.prod.outlook.com (2603:10b6:5:219::22) by BY5PR12MB4918.namprd12.prod.outlook.com (2603:10b6:a03:1df::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.27; Fri, 20 Jan 2023 14:11:59 +0000 Received: from DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939]) by DM6PR12MB4202.namprd12.prod.outlook.com ([fe80::33a7:54d4:2de0:3939%7]) with mapi id 15.20.6002.026; Fri, 20 Jan 2023 14:11:59 +0000 From: "Lucero Palau, Alejandro" To: Jacob Keller , "Lucero Palau, Alejandro" , "netdev@vger.kernel.org" , "linux-net-drivers (AMD-Xilinx)" CC: "davem@davemloft.net" , "kuba@kernel.org" , "pabeni@redhat.com" , "edumazet@google.com" , "habetsm@gmail.com" , "ecree.xilinx@gmail.com" Subject: Re: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Topic: [PATCH net-next 1/7] sfc: add devlink support for ef100 Thread-Index: AQHZK/m3dRrScZP960COfMprLSU9Pa6mZvqAgADzWQA= Date: Fri, 20 Jan 2023 14:11:59 +0000 Message-ID: References: <20230119113140.20208-1-alejandro.lucero-palau@amd.com> <20230119113140.20208-2-alejandro.lucero-palau@amd.com> <24448301-f6cd-2b8e-f9fa-570bc10953c9@intel.com> Accept-Language: en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.53.21091200 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM6PR12MB4202:EE_|BY5PR12MB4918:EE_ x-ms-office365-filtering-correlation-id: a88c5846-1dda-46e3-ac4f-08dafaf04bda x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +ZtVKReeC0etkHZDrrPClBnnvQcdRwPh/KJWRSWT6PbPkFvXrxN1btDicc9ur/Gv6mMSJa+ZPIkbAH1EOvj/w8Q3vfkdELNHdh96TN4vv3pXW1X0s6KAWUmwPcZl4HzGgoS1DFvvq+Ggw1mPYkzsxXUlL98OKnFmikYx3WsOU6S/O15s9JQzzJxy0c2747gwd9XcrpdL916Lt9uCRD9pC6r+0ajYj1l41M7ZUM2YFqJD/FTiqVFbI/FObgoCQH3qWWQyQCm94vLxEDEscrlqpere1HrHeH8YekNBS81ybfiS1sP6J6L5zkLeeggilBBquUj5+c0raAym9Jm79ercDpN6LrgeApf13UM7bJMG/8GJXiT5zpkJect7n8w/O5lOYcltCn3buVM3M9gUZUa+NzCoCbq75tLy/SUXOU3yO2yOIICDmEXFH5xg0x3d5jUeBiWemJ6NqZFIy+EgLZPtW1OJgEAjq5xgRQZLwF6D8tjcezOgZGhuqYOT9k89dQ/4eLSB6RZVooiRAicFhQsJ7TTxxwzfOAE1F10kJrPTKXFH1oUxXxlq7I7fi4KNUkU/FWd+jjrpc+7eGIkpBwG/zoU8JxAsGq3p9r+2FjjWdobL0W7X7gHlfXXRPBREnujnMzS25Hb64uUlERaFJ6crKUlPXvG655Tj84eHQx5/NSJqyp8aDDQDrscxw/W8mzoOdIMdFzOshPUpZ9+1y1QDkfe5pV6kAdsHIU+phRZUhTWvQyCIGlx12gcNP7bim2ZO x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR12MB4202.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(396003)(39860400002)(376002)(136003)(346002)(366004)(451199015)(186003)(31686004)(26005)(83380400001)(6512007)(38100700002)(2906002)(30864003)(478600001)(86362001)(31696002)(66946007)(76116006)(91956017)(6486002)(316002)(66446008)(64756008)(66556008)(53546011)(5660300002)(66476007)(4326008)(8676002)(54906003)(6636002)(71200400001)(38070700005)(41300700001)(122000001)(110136005)(2616005)(6506007)(36756003)(8936002)(2004002)(45980500001)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Wk9CMUI3UGMwajVFN1lLMEZlUTljKzV0TlJ4dzJaTVhHZld2M2ZDeTkzdjU0?= =?utf-8?B?VkI3N3RPYzJJZytDS2d0SWcxeHlEZnB2bzhlcEs0VDZUZHRMdkhlaFUveVNN?= =?utf-8?B?eFowdkN5Z1N1R08wQzhBdDZLbTNpbG93RjBQOVg2MlpKRkVRUEtOYnNTaENV?= =?utf-8?B?ZVRBdmZjT0FCUG9HRHE1Uzlsbnl5ajBDbzBIVTlRV2ZQREpkOENXU3NOdWQ4?= =?utf-8?B?TW4xSk15NElreEdHRDA2a29QMTYzQXJ1UGxpZU5GT0psQWFvREdrbVU4WDE2?= =?utf-8?B?cDJ3S1E5RXRHc3IzYm5uZmRwT1pOTDRFWDNxdjJROTYrb2JiOGkvazB6djQw?= =?utf-8?B?c3Q2aHNpdGhNdmdUUHdnMjB6RkdKbGdVMUFKSzg4ZldIT1FOU1dpdEwvRmxn?= =?utf-8?B?NFRSU21ZenZ1MHJ6ZDhIVS95VzhOQm12NSt2alJrTEU3YUxacHZmcVFZeDJr?= =?utf-8?B?ZGJrQU9rUU1VUXFSWmRpQ29rczdCRDZZWDVpcU0ySzhLWHp2a3FodFBnelZV?= =?utf-8?B?c1oxL0NYUVJTSlBLWkFISFRuWHJ4Sy9NMm0xZEcvaHlHbk4rWFhIK3laOVpQ?= =?utf-8?B?N3Vwc0Y3dk5KSUJXTzNjYXNEa0NNaUI5NmMrYnVpQ2psQ3BqK210SmZpRnhn?= =?utf-8?B?dEVPdTBNUXZTenhFOE8ycFRGbGtTU3FIa1dnVzB4Q2tMVVZRa3htN1lUOEpy?= =?utf-8?B?a2plV0hSSWtyQVR1WC9HUHFyMGdoS3d0OXN4eVNreTBkck42WXkydmZXajBS?= =?utf-8?B?eS9paHRwMFpXVktiZXVGUGMrYkRuVzVhQXVuOWZtbGcxTFRPV1g2dXVOYklV?= =?utf-8?B?YVFwRFdDcXErekxoQXJ1czNXbUdJbG8wWHo5UmxVTmlCc1FPV0J6UGVYUzNT?= =?utf-8?B?UU1BS3FzS2JuV3MvT3ROMitoMWMxTTZCNXhqR0lEWk9NQ3h0TXhTQjN0TDZS?= =?utf-8?B?cUN5eWhlYWM3cmxWeWxQcHV5MWZrWS9wNGcxME9pdFdianA1K0s0NjBPcTBx?= =?utf-8?B?N2MyTzIrMnNJbVpkV1JQT0w0azRjWFc5QmJwRlRyUnBuQUpEMmt4NjZDS0oy?= =?utf-8?B?bUx1Zm1UNVhqZFZVeTdCOTVjMUdMUEo2M0FSYmFvTHI2WWFVOTJyRXR1QVlo?= =?utf-8?B?dm1tSnNacTJRUnF2aGx0VWxIMktHMXNIY25oeHBPazBJdkhzVnVqWWJ4T0Js?= =?utf-8?B?bHF0c1lZZzl1bVRaMUYrVmtiY1NwZ1JGY1lEQTdXZU5hL0hXTFVPSmVkc0h2?= =?utf-8?B?dWtRbVlIQzZmYkdnVHVvNkhuRmlGRGdObE8xSkYveWlZTjA2U1VhNzU2Q2x2?= =?utf-8?B?R2xyREhkdGRvQkI2RHNkZHJNR2tyQ2UxMXA0NEVxTnpoNDBJUTBjNEZ5bVdY?= =?utf-8?B?RTlDaHpPUllVU1pKcWNvWkZrNEZkeFNrVTJYMUtQVnVzVzA1RXFIVXR5UWVI?= =?utf-8?B?Wm9jNjJ0Qm9lSXgzamI1VkRmRlV6aHF4MjQzdXM3aFNBZjJSUUVKdXo5Nm85?= =?utf-8?B?R1VyMGZlZHVGRDd4QmN0aHRKeTFXWjBnbUw2dloxakJhTTR3V1Y1WXovN1lL?= =?utf-8?B?WWJ0TTQ5US95Myt2NlJKOGRWbVFHV1FxeTlZU2Z5ZEJBVENEUHA4TnBTUGFV?= =?utf-8?B?R2pGRXorNXZWaXdSbjdtTFo5b2lWVHNrdWk4TTVEaU0zZk40NHFnV2NzbTI4?= =?utf-8?B?RzJPWnN3MGIwTnpWUHFlN21oUlppbnVablIzRFlkZ1V2SUpBcjJteEZpTlN3?= =?utf-8?B?d1owSDNMNExoOW9yd083eXlQUXQ0dlZDSm9XNE5IbkQwMmErUU9XVEtOZWJo?= =?utf-8?B?dzJvZTRpMjNGMHhCb25UUDNDNDRJeVhsUTRkN09ITFQ4ZGVaMGNEYTY5VGR2?= =?utf-8?B?ay9EZVU0b25yTWlUTE8rS2MxNE1tdEdjR21DaEdnQmJUMS9Ub0hzYTJUM2dX?= =?utf-8?B?aTBTSjZWdHRnQU5FL0NVa3EzMDdRdHhzTG9OQnQxeHFwOW11Mm5hWmh4aVNM?= =?utf-8?B?eGJoTUZOWHFHTCs2bEJNN3VjTFpOTFZsMnBHWGJ4R0tzeTdId2ZRWkh0T0Nu?= =?utf-8?B?WGdxQUJKSjYvb0JqalBkcTRTeXY1REpDRFhDUGI5MUEwTjhyV2djWlpUbmt1?= =?utf-8?Q?vCznZWLRnt/t31fENdbQ/CZw1?= Content-Type: text/plain; charset="utf-8" Content-ID: <7BEE305F887D614CA358EF36EF30E6EA@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR12MB4202.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a88c5846-1dda-46e3-ac4f-08dafaf04bda X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2023 14:11:59.7751 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Nk/UOtGnqud4TRFNUBbLxzN5TlKJ+Ydda6V1B/vEQhba/v8STXpqTzDN9VENh9OV5zu8frpFI9sWVE+43ZPDEQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4918 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQpPbiAxLzE5LzIzIDIzOjQwLCBKYWNvYiBLZWxsZXIgd3JvdGU6DQo+DQo+IE9uIDEvMTkvMjAy MyAzOjMxIEFNLCBhbGVqYW5kcm8ubHVjZXJvLXBhbGF1QGFtZC5jb20gd3JvdGU6DQo+PiBGcm9t OiBBbGVqYW5kcm8gTHVjZXJvIDxhbGVqYW5kcm8ubHVjZXJvLXBhbGF1QGFtZC5jb20+DQo+Pg0K Pj4gQmFzaWMgc3VwcG9ydCBmb3IgZGV2bGluayBpbmZvIGNvbW1hbmQuDQo+Pg0KPj4gU2lnbmVk LW9mZi1ieTogQWxlamFuZHJvIEx1Y2VybyA8YWxlamFuZHJvLmx1Y2Vyby1wYWxhdUBhbWQuY29t Pg0KPj4gLS0tDQo+PiAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9LY29uZmlnICAgICAgIHwg ICAxICsNCj4+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlICAgICAgfCAgIDMg Ky0NCj4+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAwX25pYy5jICAgfCAgIDYgKw0K Pj4gICBkcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuYyB8IDQyNyArKysrKysr KysrKysrKysrKysrKysrKysrDQo+PiAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2 bGluay5oIHwgIDIwICsrDQo+PiAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmMgICAg ICAgIHwgIDcyICsrKysrDQo+PiAgIGRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmggICAg ICAgIHwgICAzICsNCj4+ICAgZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaCAg fCAgIDIgKw0KPj4gICA4IGZpbGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pDQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMv ZWZ4X2RldmxpbmsuYw0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJu ZXQvc2ZjL2VmeF9kZXZsaW5rLmgNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL0tjb25maWcgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZw0KPj4g aW5kZXggMDk1MGU2YjA1MDhmLi40YWYzNmJhODkwNmIgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJz L25ldC9ldGhlcm5ldC9zZmMvS2NvbmZpZw0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQv c2ZjL0tjb25maWcNCj4+IEBAIC0yMiw2ICsyMiw3IEBAIGNvbmZpZyBTRkMNCj4+ICAgCWRlcGVu ZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUwNCj4+ICAgCXNlbGVjdCBNRElPDQo+PiAgIAlz ZWxlY3QgQ1JDMzINCj4+ICsJc2VsZWN0IE5FVF9ERVZMSU5LDQo+PiAgIAloZWxwDQo+PiAgIAkg IFRoaXMgZHJpdmVyIHN1cHBvcnRzIDEwLzQwLWdpZ2FiaXQgRXRoZXJuZXQgY2FyZHMgYmFzZWQg b24NCj4+ICAgCSAgdGhlIFNvbGFyZmxhcmUgU0ZDOTEwMC1mYW1pbHkgY29udHJvbGxlcnMuDQo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlDQo+PiBpbmRleCA3MTJhNDhkMDAwNjkuLjU1Yjlj NzNjZDhlZiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9NYWtlZmls ZQ0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL01ha2VmaWxlDQo+PiBAQCAtNiw3 ICs2LDggQEAgc2ZjLXkJCQkrPSBlZngubyBlZnhfY29tbW9uLm8gZWZ4X2NoYW5uZWxzLm8gbmlj Lm8gXA0KPj4gICAJCQkgICBtY2RpLm8gbWNkaV9wb3J0Lm8gbWNkaV9wb3J0X2NvbW1vbi5vIFwN Cj4+ICAgCQkJICAgbWNkaV9mdW5jdGlvbnMubyBtY2RpX2ZpbHRlcnMubyBtY2RpX21vbi5vIFwN Cj4+ICAgCQkJICAgZWYxMDAubyBlZjEwMF9uaWMubyBlZjEwMF9uZXRkZXYubyBcDQo+PiAtCQkJ ICAgZWYxMDBfZXRodG9vbC5vIGVmMTAwX3J4Lm8gZWYxMDBfdHgubw0KPj4gKwkJCSAgIGVmMTAw X2V0aHRvb2wubyBlZjEwMF9yeC5vIGVmMTAwX3R4Lm8gXA0KPj4gKwkJCSAgIGVmeF9kZXZsaW5r Lm8NCj4+ICAgc2ZjLSQoQ09ORklHX1NGQ19NVEQpCSs9IG10ZC5vDQo+PiAgIHNmYy0kKENPTkZJ R19TRkNfU1JJT1YpCSs9IHNyaW92Lm8gZWYxMF9zcmlvdi5vIGVmMTAwX3NyaW92Lm8gZWYxMDBf cmVwLm8gXA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWUubyB0Yy5vIHRjX2Jp bmRpbmdzLm8gdGNfY291bnRlcnMubw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3NmYy9lZjEwMF9uaWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwMF9uaWMu Yw0KPj4gaW5kZXggYWQ2ODZjNjcxYWI4Li4xNGFmOGYzMTRiODMgMTAwNjQ0DQo+PiAtLS0gYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMDBfbmljLmMNCj4+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L3NmYy9lZjEwMF9uaWMuYw0KPj4gQEAgLTI3LDYgKzI3LDcgQEANCj4+ICAgI2lu Y2x1ZGUgInRjLmgiDQo+PiAgICNpbmNsdWRlICJtYWUuaCINCj4+ICAgI2luY2x1ZGUgInJ4X2Nv bW1vbi5oIg0KPj4gKyNpbmNsdWRlICJlZnhfZGV2bGluay5oIg0KPj4gICANCj4+ICAgI2RlZmlu ZSBFRjEwMF9NQVhfVklTIDQwOTYNCj4+ICAgI2RlZmluZSBFRjEwMF9OVU1fTUNESV9CVUZGRVJT CTENCj4+IEBAIC0xMTI0LDYgKzExMjUsMTAgQEAgaW50IGVmMTAwX3Byb2JlX25ldGRldl9wZihz dHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4gICAJCW5ldGlmX3dhcm4oZWZ4LCBwcm9iZSwgbmV0X2Rl diwNCj4+ICAgCQkJICAgIkZhaWxlZCB0byBwcm9iZSBiYXNlIG1wb3J0IHJjICVkOyByZXByZXNl bnRvcnMgd2lsbCBub3QgZnVuY3Rpb25cbiIsDQo+PiAgIAkJCSAgIHJjKTsNCj4+ICsJfSBlbHNl IHsNCj4+ICsJCWlmIChlZnhfcHJvYmVfZGV2bGluayhlZngpKQ0KPj4gKwkJCW5ldGlmX3dhcm4o ZWZ4LCBwcm9iZSwgbmV0X2RldiwNCj4+ICsJCQkJICAgIkZhaWxlZCB0byByZWdpc3RlciBkZXZs aW5rXG4iKTsNCj4+ICAgCX0NCj4+ICAgDQo+IEEgYml0IG9mIGEgd2VpcmQgY29uc3RydWN0aW9u IGhlcmUgd2l0aCB0aGUgbmV4dCBzdGVwIGluIGFuIGVsc2UgYmxvY2s/DQo+IEkgZ3Vlc3MgdGhp cyBpcyBiZWluZyB0cmVhdGVkIGFzIGFuIG9wdGlvbmFsIGZlYXR1cmUsIGFuZCBkZXBlbmRzIG9u DQo+IGVmeF9lZjEwMF9nZXRfYmFzZV9tcG9ydCBzdWNjZWVkaW5nPw0KDQoNClJpZ2h0LiBUaGUg bWFlIHBvcnRzIGluaXRpYWxpemF0aW9uIGNhbiBmYWlsIGJ1dCB0aGUgZHJpdmVyIGNhbiBzdGls bCANCmluaXRpYWxpemUgdGhlIGRldmljZSB3aXRoIGxpbWl0ZWQgZnVuY3Rpb25hbGl0eS4NCg0K DQo+DQo+IEl0IHJlYWRzIGEgbGl0dGxlIGF3a3dhcmQsIGJ1dCBJIGNhbid0IHRoaW5rIG9mIGEg YmV0dGVyIHdheSB0byBhcnJhbmdlDQo+IHRoaXMgdW5sZXNzIGFub3RoZXIgaGVscGVyIGZ1bmN0 aW9uIHdhcyB1c2VkIHRvIGNvbWJpbmUgdGhlc2UgdHdvIGNhbGxzDQo+IGluIG9yZGVyIHRvIGF2 b2lkIHRoZSBleHRyYSBpbmRlbnRhdGlvbi4NCj4NCg0KSSBjb3VsZCBhZGQgc29tZSBjaGVjayBh dCB0aGUgYmVnaW5uaW5nIG9mIHRob3NlIGZ1bmN0aW9ucyBhbmQgcmV0dXJuaW5nIA0KZG9pbmcg bm90aGluZyBpZiB0aGUgY2hlY2tzIGZhaWxzLiBUaGF0IHdvdWxkIGF2b2lkIHRoaXMgdWdsaW5l c3MuDQoNCj4+ICAgCXJjID0gZWZ4X2luaXRfdGMoZWZ4KTsNCj4+IEBAIC0xMTU3LDYgKzExNjIs NyBAQCB2b2lkIGVmMTAwX3JlbW92ZShzdHJ1Y3QgZWZ4X25pYyAqZWZ4KQ0KPj4gICB7DQo+PiAg IAlzdHJ1Y3QgZWYxMDBfbmljX2RhdGEgKm5pY19kYXRhID0gZWZ4LT5uaWNfZGF0YTsNCj4+ICAg DQo+PiArCWVmeF9maW5pX2RldmxpbmsoZWZ4KTsNCj4+ICAgCWVmeF9tY2RpX2RldGFjaChlZngp Ow0KPj4gICAJZWZ4X21jZGlfZmluaShlZngpOw0KPj4gICAJaWYgKG5pY19kYXRhKQ0KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5jIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9kZXZsaW5rLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLmM1MDZmOGYzNWQyNQ0KPj4gLS0tIC9kZXYvbnVsbA0K Pj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmeF9kZXZsaW5rLmMNCj4+IEBAIC0w LDAgKzEsNDI3IEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQ0KPj4gKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+PiArICogRHJpdmVyIGZvciBBTUQgbmV0d29y ayBjb250cm9sbGVycyBhbmQgYm9hcmRzDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDIzLCBBZHZh bmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuDQo+PiArICoNCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0K Pj4gKyAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug dmVyc2lvbiAyIGFzIHB1Ymxpc2hlZA0KPj4gKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIGluY29ycG9yYXRlZCBoZXJlaW4gYnkgcmVmZXJlbmNlLg0KPj4gKyAqLw0KPj4gKw0K Pj4gKyNpbmNsdWRlIDxsaW51eC9ydGMuaD4NCj4+ICsjaW5jbHVkZSAibmV0X2RyaXZlci5oIg0K Pj4gKyNpbmNsdWRlICJlZjEwMF9uaWMuaCINCj4+ICsjaW5jbHVkZSAiZWZ4X2RldmxpbmsuaCIN Cj4+ICsjaW5jbHVkZSAibmljLmgiDQo+PiArI2luY2x1ZGUgIm1jZGkuaCINCj4+ICsjaW5jbHVk ZSAibWNkaV9mdW5jdGlvbnMuaCINCj4+ICsjaW5jbHVkZSAibWNkaV9wY29sLmgiDQo+PiArDQo+ PiArLyogQ3VzdG9tIGRldmxpbmstaW5mbyB2ZXJzaW9uIG9iamVjdCBuYW1lcyBmb3IgZGV0YWls cyB0aGF0IGRvIG5vdCBtYXAgdG8gdGhlDQo+PiArICogZ2VuZXJpYyBzdGFuZGFyZGl6ZWQgbmFt ZXMuDQo+PiArICovDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRldfTUdN VF9TVUMJImZ3Lm1nbXQuc3VjIg0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9O X0ZXX01HTVRfQ01DCSJmdy5tZ210LmNtYyINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9f VkVSU0lPTl9GUEdBX1JFVgkiZnBnYS5yZXYiDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZP X1ZFUlNJT05fREFUQVBBVEhfSFcJImZwZ2EuYXBwIg0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktf SU5GT19WRVJTSU9OX0RBVEFQQVRIX0ZXCURFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfRldf QVBQDQo+PiArI2RlZmluZSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fU09DX0JPT1QJImNvcHJv Yy5ib290Ig0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19VQk9PVAki Y29wcm9jLnVib290Ig0KPj4gKyNkZWZpbmUgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX1NPQ19N QUlOCSJjb3Byb2MubWFpbiINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9T T0NfUkVDT1ZFUlkJImNvcHJvYy5yZWNvdmVyeSINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5LX0lO Rk9fVkVSU0lPTl9GV19FWFBST00JImZ3LmV4cHJvbSINCj4+ICsjZGVmaW5lIEVGWF9ERVZMSU5L X0lORk9fVkVSU0lPTl9GV19VRUZJCSJmdy51ZWZpIg0KPiBIZXJlLCB5b3UndmUgZGVmaW5lZCBz ZXZlcmFsIG5ldyB2ZXJzaW9ucywgb25seSBvbmUgb2Ygd2hpY2ggaXMNCj4gc3RhbmRhcmQuIEkg ZG9uJ3Qgc2VlIGFuIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBhZGRpdGlvbi4gUGxlYXNlIGFk ZCBhDQo+IGVmMTAwLnJzdCBmaWxlIHRvIERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5r DQo+DQo+IEl0IGlzIGFsc28gcHJlZmVycmVkIHRvIHVzZSB0aGUgc3RhbmRhcmQgbmFtZXMgb3Ig ZXh0ZW5kIHRoZSBzZXQgb2YNCj4gc3RhbmRhcmQgbmFtZXMgd2hlcmUgYXBwcm9wcmlhdGUgZmly c3QuIENhbiB5b3UgZXhwbGFpbiB3aHkgeW91IGRpZG4ndA0KPiBkbyB0aGF0IGhlcmU/DQo+DQo+ IEZvciBleGFtcGxlLCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgImZ3LnVuZGkiIGluZGljYXRlcyBp dCBtYXkgaW5jbHVkZQ0KPiB0aGUgVUVGSSBkcml2ZXIsIGFuZCBJIHdvdWxkIGV4cGVjdCB5b3Vy IFVFRkkgdmVyc2lvbiB0byBiZSBzb21ldGhpbmcNCj4gbGlrZSBmdy51bmRpIG9yIGZ3LnVuZGku dWVmaSBpZiBpdHMgZGlzdGluY3QuLi4NCg0KDQpPSy4gSSdsbCBhZGQgdGhhdCBkb2MgZmlsZSBp biB0aGUgbmV4dCB2ZXJzaW9uIGFuZCB1c2UgdGhvc2Ugc3RhbmRhcmQgDQpkZWZpbml0aW9ucyB3 aGVuIHBvc3NpYmxlLg0KDQo+PiArDQo+PiArI2RlZmluZSBFRlhfTUFYX1ZFUlNJT05fSU5GT19M RU4JNjQNCj4+ICsNCj4+ICtzdGF0aWMgaW50IGVmeF9kZXZsaW5rX2luZm9fbnZyYW1fcGFydGl0 aW9uKHN0cnVjdCBlZnhfbmljICplZngsDQo+PiArCQkJCQkgICAgc3RydWN0IGRldmxpbmtfaW5m b19yZXEgKnJlcSwNCj4+ICsJCQkJCSAgICB1bnNpZ25lZCBpbnQgcGFydGl0aW9uX3R5cGUsDQo+ PiArCQkJCQkgICAgY29uc3QgY2hhciAqdmVyc2lvbl9uYW1lKQ0KPj4gK3sNCj4+ICsJY2hhciBi dWZbRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOXTsNCj4+ICsJdTE2IHZlcnNpb25bNF07DQo+PiAr CWludCByYzsNCj4+ICsNCj4+ICsJcmMgPSBlZnhfbWNkaV9udnJhbV9tZXRhZGF0YShlZngsIHBh cnRpdGlvbl90eXBlLCBOVUxMLCB2ZXJzaW9uLCBOVUxMLA0KPj4gKwkJCQkgICAgIDApOw0KPj4g KwlpZiAocmMpDQo+PiArCQlyZXR1cm4gcmM7DQo+PiArDQo+PiArCXNucHJpbnRmKGJ1ZiwgRUZY X01BWF9WRVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUiLCB2ZXJzaW9uWzBdLA0KPj4gKwkJ IHZlcnNpb25bMV0sIHZlcnNpb25bMl0sIHZlcnNpb25bM10pOw0KPj4gKwlkZXZsaW5rX2luZm9f dmVyc2lvbl9zdG9yZWRfcHV0KHJlcSwgdmVyc2lvbl9uYW1lLCBidWYpOw0KPj4gKw0KPj4gKwly ZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgZWZ4X2RldmxpbmtfaW5mb19z dG9yZWRfdmVyc2lvbnMoc3RydWN0IGVmeF9uaWMgKmVmeCwNCj4+ICsJCQkJCSAgICAgc3RydWN0 IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+ICt7DQo+PiArCWVmeF9kZXZsaW5rX2luZm9fbnZy YW1fcGFydGl0aW9uKGVmeCwgcmVxLCBOVlJBTV9QQVJUSVRJT05fVFlQRV9CVU5ETEUsDQo+PiAr CQkJCQkgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19CVU5ETEVfSUQpOw0KPj4gKwll ZnhfZGV2bGlua19pbmZvX252cmFtX3BhcnRpdGlvbihlZngsIHJlcSwNCj4+ICsJCQkJCSBOVlJB TV9QQVJUSVRJT05fVFlQRV9NQ19GSVJNV0FSRSwNCj4+ICsJCQkJCSBERVZMSU5LX0lORk9fVkVS U0lPTl9HRU5FUklDX0ZXX01HTVQpOw0KPj4gKwllZnhfZGV2bGlua19pbmZvX252cmFtX3BhcnRp dGlvbihlZngsIHJlcSwNCj4+ICsJCQkJCSBOVlJBTV9QQVJUSVRJT05fVFlQRV9TVUNfRklSTVdB UkUsDQo+PiArCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0ZXX01HTVRfU1VDKTsNCj4+ ICsJZWZ4X2RldmxpbmtfaW5mb19udnJhbV9wYXJ0aXRpb24oZWZ4LCByZXEsDQo+PiArCQkJCQkg TlZSQU1fUEFSVElUSU9OX1RZUEVfRVhQQU5TSU9OX1JPTSwNCj4+ICsJCQkJCSBFRlhfREVWTElO S19JTkZPX1ZFUlNJT05fRldfRVhQUk9NKTsNCj4+ICsJZWZ4X2RldmxpbmtfaW5mb19udnJhbV9w YXJ0aXRpb24oZWZ4LCByZXEsDQo+PiArCQkJCQkgTlZSQU1fUEFSVElUSU9OX1RZUEVfRVhQQU5T SU9OX1VFRkksDQo+PiArCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0ZXX1VFRkkpOw0K Pj4gK30NCj4+ICsNCj4+ICsjZGVmaW5lIEVGWF9NQVhfU0VSSUFMTlVNX0xFTgkoRVRIX0FMRU4g KiAyICsgMSkNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCBlZnhfZGV2bGlua19pbmZvX2JvYXJkX2Nm ZyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LA0KPj4gKwkJCQkgICAgICAgc3RydWN0IGRldmxpbmtfaW5m b19yZXEgKnJlcSkNCj4+ICt7DQo+PiArCWNoYXIgc25bRUZYX01BWF9TRVJJQUxOVU1fTEVOXTsN Cj4+ICsJdTggbWFjX2FkZHJlc3NbRVRIX0FMRU5dOw0KPj4gKwlpbnQgcmM7DQo+PiArDQo+PiAr CXJjID0gZWZ4X21jZGlfZ2V0X2JvYXJkX2NmZyhlZngsICh1OCAqKW1hY19hZGRyZXNzLCBOVUxM LCBOVUxMKTsNCj4+ICsJaWYgKCFyYykgew0KPj4gKwkJc25wcmludGYoc24sIEVGWF9NQVhfU0VS SUFMTlVNX0xFTiwgIiVwbSIsIG1hY19hZGRyZXNzKTsNCj4+ICsJCWRldmxpbmtfaW5mb19zZXJp YWxfbnVtYmVyX3B1dChyZXEsIHNuKTsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICsjZGVmaW5l IEVGWF9WRVJfRkxBRyhfZikJXA0KPj4gKwkoTUNfQ01EX0dFVF9WRVJTSU9OX1Y1X09VVF8gIyMg X2YgIyMgX1BSRVNFTlRfTEJOKQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGVmeF9kZXZsaW5rX2lu Zm9fcnVubmluZ192ZXJzaW9ucyhzdHJ1Y3QgZWZ4X25pYyAqZWZ4LA0KPj4gKwkJCQkJICAgICAg c3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+ICt7DQo+IFRoaXMgZnVuY3Rpb24gZm9y IGRvaW5nIHJ1bm5pbmcgdmVyc2lvbnMgaXMgdmVyeSBsb25nLCBhbmQgc2VlbXMgcXVpdGUNCj4g Y29tcGxpY2F0ZWQuIEl0J3MgZGlmZmljdWx0IHRvIHBhcnNlIHdoYXQgdmVyc2lvbnMgYXJlIGJl aW5nIHJlcG9ydGVkLg0KPg0KPiBJIHNhdyB0aGF0IHlvdXIgc3RvcmVkIHZlcnNpb24gdXNlZCBh IGhlbHBlciBmdW5jdGlvbiB0byBzZXBhcmF0ZSBlYWNoDQo+IHRoaW5nIG91dCBuaWNlbHkuIElz IHRoZXJlIGFueSB3YXkgdG8gZG8gdGhhdCBoZXJlPw0KPg0KDQpPSy4gSSdsbCBzcGxpdCBpdCB1 cCBiYXNlZCBvbiB0aGUgaGFuZGxpbmcgcGVyIHZlcnNpb24uDQoNCj4+ICsJTUNESV9ERUNMQVJF X0JVRihvdXRidWYsIE1DX0NNRF9HRVRfVkVSU0lPTl9WNV9PVVRfTEVOKTsNCj4+ICsJTUNESV9E RUNMQVJFX0JVRihpbmJ1ZiwgTUNfQ01EX0dFVF9WRVJTSU9OX0VYVF9JTl9MRU4pOw0KPj4gKwlj aGFyIGJ1ZltFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU5dOw0KPj4gKwl1bnNpZ25lZCBpbnQgZmxh Z3MsIGJ1aWxkX2lkOw0KPj4gKwl1bmlvbiB7DQo+PiArCQljb25zdCBfX2xlMzIgKmR3b3JkczsN Cj4+ICsJCWNvbnN0IF9fbGUxNiAqd29yZHM7DQo+PiArCQljb25zdCBjaGFyICpzdHI7DQo+PiAr CX0gdmVyOw0KPiBGb3IgZXhhbXBsZSwgeW91J3ZlIGdvdCB0aGlzIGxvY2FsIHVuaW9uIG9uIHRo ZSBzdGFjayB0aGF0IHNlZW1zIHRvIGJlDQo+IHJldXNlZCBhIGJ1bmNoLi4uDQo+DQo+PiArCXN0 cnVjdCBydGNfdGltZSBidWlsZF9kYXRlOw0KPj4gKwlzaXplX3Qgb3V0bGVuZ3RoLCBvZmZzZXQ7 DQo+PiArCXU2NCB0c3RhbXA7DQo+PiArCWludCByYzsNCj4+ICsNCj4+ICsJcmMgPSBlZnhfbWNk aV9ycGMoZWZ4LCBNQ19DTURfR0VUX1ZFUlNJT04sIGluYnVmLCBzaXplb2YoaW5idWYpLA0KPj4g KwkJCSAgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSwgJm91dGxlbmd0aCk7DQo+PiArCWlmIChyYyB8 fCBvdXRsZW5ndGggPCBNQ19DTURfR0VUX1ZFUlNJT05fT1VUX0xFTikNCj4+ICsJCXJldHVybjsN Cj4+ICsNCj4+ICsJLyogSGFuZGxlIHByZXZpb3VzIG91dHB1dCAqLw0KPj4gKwlpZiAob3V0bGVu Z3RoIDwgTUNfQ01EX0dFVF9WRVJTSU9OX1YyX09VVF9MRU4pIHsNCj4+ICsJCXZlci53b3JkcyA9 IChfX2xlMTYgKilNQ0RJX1BUUihvdXRidWYsDQo+PiArCQkJCQkgICAgICAgR0VUX1ZFUlNJT05f RVhUX09VVF9WRVJTSU9OKTsNCj4+ICsJCW9mZnNldCA9IHNucHJpbnRmKGJ1ZiwgRUZYX01BWF9W RVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4gKwkJCQkgIGxlMTZfdG9fY3B1KHZl ci53b3Jkc1swXSksDQo+PiArCQkJCSAgbGUxNl90b19jcHUodmVyLndvcmRzWzFdKSwNCj4+ICsJ CQkJICBsZTE2X3RvX2NwdSh2ZXIud29yZHNbMl0pLA0KPj4gKwkJCQkgIGxlMTZfdG9fY3B1KHZl ci53b3Jkc1szXSkpOw0KPj4gKw0KPj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVubmluZ19w dXQocmVxLA0KPj4gKwkJCQkJCSBERVZMSU5LX0lORk9fVkVSU0lPTl9HRU5FUklDX0ZXX01HTVQs DQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCQlyZXR1cm47DQo+PiArCX0NCj4+ICsNCj4+ICsJLyog SGFuZGxlIFYyIGFkZGl0aW9ucyAqLw0KPj4gKwlmbGFncyA9IE1DRElfRFdPUkQob3V0YnVmLCBH RVRfVkVSU0lPTl9WMl9PVVRfRkxBR1MpOw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9G TEFHKEJPQVJEX0VYVF9JTkZPKSkpIHsNCj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJT SU9OX0lORk9fTEVOLCAiJXMiLA0KPj4gKwkJCSBNQ0RJX1BUUihvdXRidWYsIEdFVF9WRVJTSU9O X1YyX09VVF9CT0FSRF9OQU1FKSk7DQo+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9maXhlZF9w dXQocmVxLA0KPj4gKwkJCQkJICAgICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfQk9B UkRfSUQsDQo+PiArCQkJCQkgICAgICAgYnVmKTsNCj4+ICsNCj4+ICsJCS8qIEZhdm91ciBmdWxs IGJvYXJkIHZlcnNpb24gaWYgcHJlc2VudCAoaW4gVjUgb3IgbGF0ZXIpICovDQo+PiArCQlpZiAo fmZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhCT0FSRF9WRVJTSU9OKSkpIHsNCj4+ICsJCQlzbnBy aW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1IiwNCj4+ICsJCQkJIE1DRElf RFdPUkQob3V0YnVmLA0KPj4gKwkJCQkJICAgIEdFVF9WRVJTSU9OX1YyX09VVF9CT0FSRF9SRVZJ U0lPTikpOw0KPj4gKwkJCWRldmxpbmtfaW5mb192ZXJzaW9uX2ZpeGVkX3B1dChyZXEsDQo+PiAr CQkJCQkJICAgICAgIERFVkxJTktfSU5GT19WRVJTSU9OX0dFTkVSSUNfQk9BUkRfUkVWLA0KPj4g KwkJCQkJCSAgICAgICBidWYpOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJdmVyLnN0ciA9IE1DRElf UFRSKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX0JPQVJEX1NFUklBTCk7DQo+PiArCQlpZiAo dmVyLnN0clswXSkNCj4+ICsJCQlkZXZsaW5rX2luZm9fYm9hcmRfc2VyaWFsX251bWJlcl9wdXQo cmVxLCB2ZXIuc3RyKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZF Ul9GTEFHKEZQR0FfRVhUX0lORk8pKSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilN Q0RJX1BUUihvdXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjJfT1VUX0ZQR0FfVkVSU0lP Tik7DQo+PiArCQlvZmZzZXQgPSBzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xF TiwgIiV1XyVjJXUiLA0KPj4gKwkJCQkgIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMF0pLA0KPj4g KwkJCQkgICdBJyArIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4gKwkJCQkgIGxlMzJf dG9fY3B1KHZlci5kd29yZHNbMl0pKTsNCj4+ICsNCj4+ICsJCXZlci5zdHIgPSBNQ0RJX1BUUihv dXRidWYsIEdFVF9WRVJTSU9OX1YyX09VVF9GUEdBX0VYVFJBKTsNCj4+ICsJCWlmICh2ZXIuc3Ry WzBdKQ0KPj4gKwkJCXNucHJpbnRmKCZidWZbb2Zmc2V0XSwgRUZYX01BWF9WRVJTSU9OX0lORk9f TEVOIC0gb2Zmc2V0LA0KPj4gKwkJCQkgIiAoJXMpIiwgdmVyLnN0cik7DQo+PiArDQo+PiArCQlk ZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZM SU5LX0lORk9fVkVSU0lPTl9GUEdBX1JFViwNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4g Kw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKENNQ19FWFRfSU5GTykpKSB7DQo+ PiArCQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlH RVRfVkVSU0lPTl9WMl9PVVRfQ01DRldfVkVSU0lPTik7DQo+PiArCQlvZmZzZXQgPSBzbnByaW50 ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1IiwNCj4+ICsJCQkJ ICBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwNCj4+ICsJCQkJICBsZTMyX3RvX2NwdSh2ZXIu ZHdvcmRzWzFdKSwNCj4+ICsJCQkJICBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+ICsJ CQkJICBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+PiArCQl0c3RhbXAgPSBN Q0RJX1FXT1JEKG91dGJ1ZiwNCj4+ICsJCQkJICAgIEdFVF9WRVJTSU9OX1YyX09VVF9DTUNGV19C VUlMRF9EQVRFKTsNCj4+ICsJCWlmICh0c3RhbXApIHsNCj4+ICsJCQlydGNfdGltZTY0X3RvX3Rt KHRzdGFtcCwgJmJ1aWxkX2RhdGUpOw0KPj4gKwkJCXNucHJpbnRmKCZidWZbb2Zmc2V0XSwgRUZY X01BWF9WRVJTSU9OX0lORk9fTEVOIC0gb2Zmc2V0LA0KPj4gKwkJCQkgIiAoJXB0UmQpIiwgJmJ1 aWxkX2RhdGUpOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJZGV2bGlua19pbmZvX3ZlcnNpb25fcnVu bmluZ19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJT05fRldfTUdN VF9DTUMsDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICsNCj4+ICsJdmVyLndvcmRzID0g KF9fbGUxNiAqKU1DRElfUFRSKG91dGJ1ZiwgR0VUX1ZFUlNJT05fVjJfT1VUX1ZFUlNJT04pOw0K Pj4gKwlvZmZzZXQgPSBzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1 LiV1LiV1LiV1IiwNCj4+ICsJCQkgIGxlMTZfdG9fY3B1KHZlci53b3Jkc1swXSksIGxlMTZfdG9f Y3B1KHZlci53b3Jkc1sxXSksDQo+PiArCQkJICBsZTE2X3RvX2NwdSh2ZXIud29yZHNbMl0pLCBs ZTE2X3RvX2NwdSh2ZXIud29yZHNbM10pKTsNCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJf RkxBRyhNQ0ZXX0VYVF9JTkZPKSkpIHsNCj4+ICsJCWJ1aWxkX2lkID0gTUNESV9EV09SRChvdXRi dWYsIEdFVF9WRVJTSU9OX1YyX09VVF9NQ0ZXX0JVSUxEX0lEKTsNCj4+ICsJCXNucHJpbnRmKCZi dWZbb2Zmc2V0XSwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOIC0gb2Zmc2V0LA0KPj4gKwkJCSAi ICgleCkgJXMiLCBidWlsZF9pZCwNCj4+ICsJCQkgTUNESV9QVFIob3V0YnVmLCBHRVRfVkVSU0lP Tl9WMl9PVVRfTUNGV19CVUlMRF9OQU1FKSk7DQo+PiArCX0NCj4+ICsJZGV2bGlua19pbmZvX3Zl cnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJIERFVkxJTktfSU5GT19WRVJTSU9OX0dF TkVSSUNfRldfTUdNVCwNCj4+ICsJCQkJCSBidWYpOw0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBC SVQoRUZYX1ZFUl9GTEFHKFNVQ0ZXX0VYVF9JTkZPKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAo X19sZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1YyX09VVF9T VUNGV19WRVJTSU9OKTsNCj4+ICsJCXRzdGFtcCA9IE1DRElfUVdPUkQob3V0YnVmLA0KPj4gKwkJ CQkgICAgR0VUX1ZFUlNJT05fVjJfT1VUX1NVQ0ZXX0JVSUxEX0RBVEUpOw0KPj4gKwkJcnRjX3Rp bWU2NF90b190bSh0c3RhbXAsICZidWlsZF9kYXRlKTsNCj4+ICsJCWJ1aWxkX2lkID0gTUNESV9E V09SRChvdXRidWYsIEdFVF9WRVJTSU9OX1YyX09VVF9TVUNGV19DSElQX0lEKTsNCj4+ICsNCj4+ ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOLA0KPj4gKwkJCSAiJXUu JXUuJXUuJXUgdHlwZSAleCAoJXB0UmQpIiwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jk c1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2 ZXIuZHdvcmRzWzJdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSksDQo+PiArCQkJIGJ1aWxk X2lkLCAmYnVpbGRfZGF0ZSk7DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5u aW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9GV19NR01U X1NVQywNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAob3V0bGVuZ3Ro IDwgTUNfQ01EX0dFVF9WRVJTSU9OX1YzX09VVF9MRU4pDQo+PiArCQlyZXR1cm47DQo+PiArDQo+ PiArCS8qIEhhbmRsZSBWMyBhZGRpdGlvbnMgKi8NCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9W RVJfRkxBRyhEQVRBUEFUSF9IV19WRVJTSU9OKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAoX19s ZTMyICopTUNESV9QVFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1YzX09VVF9EQVRB UEFUSF9IV19WRVJTSU9OKTsNCj4+ICsNCj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJT SU9OX0lORk9fTEVOLCAiJXUuJXUuJXUiLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRz WzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZl ci5kd29yZHNbMl0pKTsNCj4+ICsNCj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdf cHV0KHJlcSwNCj4+ICsJCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0RBVEFQQVRIX0hX LA0KPj4gKwkJCQkJCSBidWYpOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChmbGFncyAmIEJJVChF RlhfVkVSX0ZMQUcoREFUQVBBVEhfRldfVkVSU0lPTikpKSB7DQo+PiArCQl2ZXIuZHdvcmRzID0g KF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlHRVRfVkVSU0lPTl9WM19PVVRf REFUQVBBVEhfRldfVkVSU0lPTik7DQo+PiArDQo+PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhf VkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1IiwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3 b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMV0pLA0KPj4gKwkJCSBsZTMyX3RvX2Nw dSh2ZXIuZHdvcmRzWzJdKSk7DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5u aW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9EQVRBUEFU SF9GVywNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAob3V0bGVuZ3Ro IDwgTUNfQ01EX0dFVF9WRVJTSU9OX1Y0X09VVF9MRU4pDQo+PiArCQlyZXR1cm47DQo+PiArDQo+ PiArCS8qIEhhbmRsZSBWNCBhZGRpdGlvbnMgKi8NCj4+ICsJaWYgKGZsYWdzICYgQklUKEVGWF9W RVJfRkxBRyhTT0NfQk9PVF9WRVJTSU9OKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAoX19sZTMy ICopTUNESV9QVFIob3V0YnVmLA0KPj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9TT0NfQk9P VF9WRVJTSU9OKTsNCj4+ICsNCj4+ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lO Rk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBd KSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbMl0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+ PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVG WF9ERVZMSU5LX0lORk9fVkVSU0lPTl9TT0NfQk9PVCwNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJ fQ0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKFNPQ19VQk9PVF9WRVJT SU9OKSkpIHsNCj4+ICsJCXZlci5kd29yZHMgPSAoX19sZTMyICopTUNESV9QVFIob3V0YnVmLA0K Pj4gKwkJCQkJCUdFVF9WRVJTSU9OX1Y0X09VVF9TT0NfVUJPT1RfVkVSU0lPTik7DQo+PiArDQo+ PiArCQlzbnByaW50ZihidWYsIEVGWF9NQVhfVkVSU0lPTl9JTkZPX0xFTiwgIiV1LiV1LiV1LiV1 IiwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1swXSksIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbMV0pLA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzJdKSwNCj4+ICsJCQkg bGUzMl90b19jcHUodmVyLmR3b3Jkc1szXSkpOw0KPj4gKw0KPj4gKwkJZGV2bGlua19pbmZvX3Zl cnNpb25fcnVubmluZ19wdXQocmVxLA0KPj4gKwkJCQkJCSBFRlhfREVWTElOS19JTkZPX1ZFUlNJ T05fU09DX1VCT09ULA0KPj4gKwkJCQkJCSBidWYpOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChm bGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoU09DX01BSU5fUk9PVEZTX1ZFUlNJT04pKSkgew0KPj4g KwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+PiArCQkJCQkJR0VU X1ZFUlNJT05fVjRfT1VUX1NPQ19NQUlOX1JPT1RGU19WRVJTSU9OKTsNCj4+ICsNCj4+ICsJCXNu cHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUiLA0KPj4g KwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3b3Jkc1sx XSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0KPj4gKwkJCSBsZTMyX3Rv X2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVyc2lvbl9y dW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lPTl9TT0Nf TUFJTiwNCj4+ICsJCQkJCQkgYnVmKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBC SVQoRUZYX1ZFUl9GTEFHKFNPQ19SRUNPVkVSWV9CVUlMRFJPT1RfVkVSU0lPTikpKSB7DQo+PiAr CQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlHRVRf VkVSU0lPTl9WNF9PVVRfU09DX1JFQ09WRVJZX0JVSUxEUk9PVF9WRVJTSU9OKTsNCj4+ICsNCj4+ ICsJCXNucHJpbnRmKGJ1ZiwgRUZYX01BWF9WRVJTSU9OX0lORk9fTEVOLCAiJXUuJXUuJXUuJXUi LA0KPj4gKwkJCSBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzBdKSwgbGUzMl90b19jcHUodmVyLmR3 b3Jkc1sxXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMl0pLA0KPj4gKwkJCSBs ZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzNdKSk7DQo+PiArDQo+PiArCQlkZXZsaW5rX2luZm9fdmVy c2lvbl9ydW5uaW5nX3B1dChyZXEsDQo+PiArCQkJCQkJIEVGWF9ERVZMSU5LX0lORk9fVkVSU0lP Tl9TT0NfUkVDT1ZFUlksDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYg KGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhTVUNGV19WRVJTSU9OKSkgJiYNCj4+ICsJICAgIH5m bGFncyAmIEJJVChFRlhfVkVSX0ZMQUcoU1VDRldfRVhUX0lORk8pKSkgew0KPj4gKwkJdmVyLmR3 b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BUUihvdXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05f VjRfT1VUX1NVQ0ZXX1ZFUlNJT04pOw0KPj4gKw0KPj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFY X1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZl ci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+ICsJCQkgbGUzMl90 b19jcHUodmVyLmR3b3Jkc1syXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbM10p KTsNCj4+ICsNCj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ ICsJCQkJCQkgRUZYX0RFVkxJTktfSU5GT19WRVJTSU9OX0ZXX01HTVRfU1VDLA0KPj4gKwkJCQkJ CSBidWYpOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChvdXRsZW5ndGggPCBNQ19DTURfR0VUX1ZF UlNJT05fVjVfT1VUX0xFTikNCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJLyogSGFuZGxlIFY1 IGFkZGl0aW9ucyAqLw0KPj4gKw0KPj4gKwlpZiAoZmxhZ3MgJiBCSVQoRUZYX1ZFUl9GTEFHKEJP QVJEX1ZFUlNJT04pKSkgew0KPj4gKwkJdmVyLmR3b3JkcyA9IChfX2xlMzIgKilNQ0RJX1BUUihv dXRidWYsDQo+PiArCQkJCQkJR0VUX1ZFUlNJT05fVjVfT1VUX0JPQVJEX1ZFUlNJT04pOw0KPj4g Kw0KPj4gKwkJc25wcmludGYoYnVmLCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4l dS4ldSIsDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2 ZXIuZHdvcmRzWzFdKSwNCj4+ICsJCQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSksDQo+PiAr CQkJIGxlMzJfdG9fY3B1KHZlci5kd29yZHNbM10pKTsNCj4+ICsNCj4+ICsJCWRldmxpbmtfaW5m b192ZXJzaW9uX3J1bm5pbmdfcHV0KHJlcSwNCj4+ICsJCQkJCQkgREVWTElOS19JTkZPX1ZFUlNJ T05fR0VORVJJQ19CT0FSRF9SRVYsDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICsNCj4+ ICsJaWYgKGZsYWdzICYgQklUKEVGWF9WRVJfRkxBRyhCVU5ETEVfVkVSU0lPTikpKSB7DQo+PiAr CQl2ZXIuZHdvcmRzID0gKF9fbGUzMiAqKU1DRElfUFRSKG91dGJ1ZiwNCj4+ICsJCQkJCQlHRVRf VkVSU0lPTl9WNV9PVVRfQlVORExFX1ZFUlNJT04pOw0KPj4gKw0KPj4gKwkJc25wcmludGYoYnVm LCBFRlhfTUFYX1ZFUlNJT05fSU5GT19MRU4sICIldS4ldS4ldS4ldSIsDQo+PiArCQkJIGxlMzJf dG9fY3B1KHZlci5kd29yZHNbMF0pLCBsZTMyX3RvX2NwdSh2ZXIuZHdvcmRzWzFdKSwNCj4+ICsJ CQkgbGUzMl90b19jcHUodmVyLmR3b3Jkc1syXSksDQo+PiArCQkJIGxlMzJfdG9fY3B1KHZlci5k d29yZHNbM10pKTsNCj4+ICsNCj4+ICsJCWRldmxpbmtfaW5mb192ZXJzaW9uX3J1bm5pbmdfcHV0 KHJlcSwNCj4+ICsJCQkJCQkgREVWTElOS19JTkZPX1ZFUlNJT05fR0VORVJJQ19GV19CVU5ETEVf SUQsDQo+PiArCQkJCQkJIGJ1Zik7DQo+PiArCX0NCj4+ICt9DQo+IEluIHRoZSBpY2UgZHJpdmVy IEkgaW1wbGVtZW50ZWQgZWFjaCB2ZXJzaW9uIGV4dHJhY3Rpb24gYXMgYSBzZXBhcmF0ZQ0KPiBm dW5jdGlvbiB0byBtYWtlIGl0IG1vcmUgY2xlYXIgd2hpY2ggdmVyc2lvbnMgd2hlcmUgd2hpY2gu IFRoaXMgcnVubmluZw0KPiBmdW5jdGlvbiBjb3VsZCBiZW5lZml0IGZyb20gc29tZSBvcmdhbml6 YXRpb24gbGlrZSB0aGF0Lg0KPg0KPj4gKw0KPj4gKyN1bmRlZiBFRlhfVkVSX0ZMQUcNCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBlZnhfZGV2bGlua19pbmZvX3F1ZXJ5X2FsbChzdHJ1Y3QgZWZ4X25p YyAqZWZ4LA0KPj4gKwkJCQkgICAgICAgc3RydWN0IGRldmxpbmtfaW5mb19yZXEgKnJlcSkNCj4+ ICt7DQo+PiArCWVmeF9kZXZsaW5rX2luZm9fYm9hcmRfY2ZnKGVmeCwgcmVxKTsNCj4+ICsJZWZ4 X2RldmxpbmtfaW5mb19zdG9yZWRfdmVyc2lvbnMoZWZ4LCByZXEpOw0KPj4gKwllZnhfZGV2bGlu a19pbmZvX3J1bm5pbmdfdmVyc2lvbnMoZWZ4LCByZXEpOw0KPj4gK30NCj4gRG8geW91IHJlYWxs eSBuZWVkIHRoaXMgdG8gYmUgYSBzZXBhcmF0ZSBmdW5jdGlvbiBhbmQgbm90IGp1c3QgaW5saW5l ZA0KPiBpbnRvIHRoZSBjYWxsZXIsIGVmeF9kZXZsaW5rX2luZm9fZ2V0Lg0KDQoNClRoYXQgd2Fz IGFsc28gcG9pbnRlZCBvdXQgYnkgSmlyaSBQaXJrbyBhbmQgSSBhZ3JlZSB0aGlzIGlzIG5vdCBu ZWNlc3NhcnkuDQoNCj4+ICsNCj4+ICtzdHJ1Y3QgZWZ4X2Rldmxpbmsgew0KPj4gKwlzdHJ1Y3Qg ZWZ4X25pYyAqZWZ4Ow0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBlZnhfZGV2bGlua19p bmZvX2dldChzdHJ1Y3QgZGV2bGluayAqZGV2bGluaywNCj4+ICsJCQkJc3RydWN0IGRldmxpbmtf aW5mb19yZXEgKnJlcSwNCj4+ICsJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQ0K Pj4gK3sNCj4+ICsJc3RydWN0IGVmeF9kZXZsaW5rICpkZXZsaW5rX3ByaXZhdGUgPSBkZXZsaW5r X3ByaXYoZGV2bGluayk7DQo+PiArCXN0cnVjdCBlZnhfbmljICplZnggPSBkZXZsaW5rX3ByaXZh dGUtPmVmeDsNCj4+ICsNCj4+ICsJZWZ4X2RldmxpbmtfaW5mb19xdWVyeV9hbGwoZWZ4LCByZXEp Ow0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBk ZXZsaW5rX29wcyBzZmNfZGV2bGlua19vcHMgPSB7DQo+PiArCS5pbmZvX2dldAkJCT0gZWZ4X2Rl dmxpbmtfaW5mb19nZXQsDQo+PiArfTsNCj4+ICsNCj4+ICt2b2lkIGVmeF9maW5pX2Rldmxpbmso c3RydWN0IGVmeF9uaWMgKmVmeCkNCj4+ICt7DQo+PiArCWlmIChlZngtPmRldmxpbmspIHsNCj4+ ICsJCXN0cnVjdCBlZnhfZGV2bGluayAqZGV2bGlua19wcml2YXRlOw0KPj4gKw0KPj4gKwkJZGV2 bGlua19wcml2YXRlID0gZGV2bGlua19wcml2KGVmeC0+ZGV2bGluayk7DQo+PiArDQo+PiArCQlk ZXZsaW5rX3VucmVnaXN0ZXIoZWZ4LT5kZXZsaW5rKTsNCj4+ICsJCWRldmxpbmtfZnJlZShlZngt PmRldmxpbmspOw0KPj4gKwkJZWZ4LT5kZXZsaW5rID0gTlVMTDsNCj4+ICsJfQ0KPj4gK30NCj4+ ICsNCj4+ICtpbnQgZWZ4X3Byb2JlX2Rldmxpbmsoc3RydWN0IGVmeF9uaWMgKmVmeCkNCj4+ICt7 DQo+PiArCXN0cnVjdCBlZnhfZGV2bGluayAqZGV2bGlua19wcml2YXRlOw0KPj4gKw0KPj4gKwll ZngtPmRldmxpbmsgPSBkZXZsaW5rX2FsbG9jKCZzZmNfZGV2bGlua19vcHMsDQo+PiArCQkJCSAg ICAgc2l6ZW9mKHN0cnVjdCBlZnhfZGV2bGluayksDQo+PiArCQkJCSAgICAgJmVmeC0+cGNpX2Rl di0+ZGV2KTsNCj4+ICsJaWYgKCFlZngtPmRldmxpbmspDQo+PiArCQlyZXR1cm4gLUVOT01FTTsN Cj4+ICsJZGV2bGlua19wcml2YXRlID0gZGV2bGlua19wcml2KGVmeC0+ZGV2bGluayk7DQo+PiAr CWRldmxpbmtfcHJpdmF0ZS0+ZWZ4ID0gZWZ4Ow0KPj4gKw0KPj4gKwlkZXZsaW5rX3JlZ2lzdGVy KGVmeC0+ZGV2bGluayk7DQo+PiArDQo+IFNvIGRyaXZlcnMgaW1wbGVtZW50aW5nIGRldmxpbmsg dHlwaWNhbGx5IHdvdWxkIGFsbG9jYXRlIHRoZSBkZXZsaW5rDQo+IGVhcmx5IChhbG1vc3QgdGhl IGZpcnN0IHRoaW5nIGl0IGRvZXMpIGFuZCBtYWtlIGl0cyBwcml2YXRlIGZpZWxkDQo+IHNvbWV0 aGluZyBsaWtlIHRoZWlyIG1haW4gcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4NCj4NCj4gT2J2aW91 c2x5IHlvdSdyZSBhZGRpbmcgdGhpcyB0byBhIHByZS1leGlzdGluZyBkcml2ZXIgYW5kIGl0IGlz DQo+IGluaXRpYWxseSBzaW1wbGVyIGFuZCBlYXNpZXIgdG8ga2VlcCBpdCBzZXBhcmF0ZS4gSSdt IG5vdCBzdXJlIHdoYXQNCj4gb3RoZXIgcmV2aWV3ZXJzJyBzdGFuY2Ugb24gdGhpcyBpcywgYnV0 IEkgdGhpbmsgaXRzIHByZWZlcmFibGUgdG8NCj4gYWxsb2NhdGUgYXMgYW4gZWFybHkgc3RhZ2Ug YW5kIHJlZ2lzdGVyIG9uY2UgdGhlIGRyaXZlciBpcyByZWFkeSB0bw0KPiBhY2NlcHQgcmVxdWVz dHMgZnJvbSB1c2VyIHNwYWNlLg0KPg0KPiBBcyBmb3IgYSByZWFzb24gd2h5LCBpbXBsZW1lbnRp bmcgcmVsb2FkIHN1cHBvcnQgZWZmZWN0aXZlbHkgcmVxdWlyZXMgdGhpcy4NCj4NCg0KV2UgaGF2 ZSBkaXNjdXNzZWQgdGhpcyBpbnRlcm5hbGx5IGFuZCB3ZSBkbyBub3QgcGxhbiB0byBzdXBwb3J0 IHJlbG9hZC4NCg0KDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWZ4X2RldmxpbmsuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0 L3NmYy9lZnhfZGV2bGluay5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAw MDAwMDAwMDAwLi45OTdmODc4YWVhOTMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZl cnMvbmV0L2V0aGVybmV0L3NmYy9lZnhfZGV2bGluay5oDQo+PiBAQCAtMCwwICsxLDIwIEBADQo+ PiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPj4gKy8qKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqDQo+PiArICogRHJpdmVyIGZvciBBTUQgbmV0d29yayBjb250cm9sbGVy cyBhbmQgYm9hcmRzDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDIzLCBBZHZhbmNlZCBNaWNybyBE ZXZpY2VzLCBJbmMuDQo+PiArICoNCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdA0KPj4gKyAqIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFz IHB1Ymxpc2hlZA0KPj4gKyAqIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGluY29y cG9yYXRlZCBoZXJlaW4gYnkgcmVmZXJlbmNlLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZm5kZWYg X0VGWF9ERVZMSU5LX0gNCj4+ICsjZGVmaW5lIF9FRlhfREVWTElOS19IDQo+PiArDQo+PiArI2lu Y2x1ZGUgIm5ldF9kcml2ZXIuaCINCj4+ICsjaW5jbHVkZSA8bmV0L2RldmxpbmsuaD4NCj4+ICsN Cj4+ICtpbnQgZWZ4X3Byb2JlX2Rldmxpbmsoc3RydWN0IGVmeF9uaWMgKmVmeCk7DQo+PiArdm9p ZCBlZnhfZmluaV9kZXZsaW5rKHN0cnVjdCBlZnhfbmljICplZngpOw0KPj4gKw0KPj4gKyNlbmRp ZgkvKiBfRUZYX0RFVkxJTktfSCAqLw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVy bmV0L3NmYy9tY2RpLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvbWNkaS5jDQo+PiBpbmRl eCBhZjMzODIwOGVhZTkuLjMyOGNhZTgyYTdkOCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L3NmYy9tY2RpLmMNCj4+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9t Y2RpLmMNCj4+IEBAIC0yMzA4LDYgKzIzMDgsNzggQEAgc3RhdGljIGludCBlZnhfbWNkaV9udnJh bV91cGRhdGVfZmluaXNoKHN0cnVjdCBlZnhfbmljICplZngsIHVuc2lnbmVkIGludCB0eXBlKQ0K Pj4gICAJcmV0dXJuIHJjOw0KPj4gICB9DQo+PiAgIA0KPj4gK2ludCBlZnhfbWNkaV9udnJhbV9t ZXRhZGF0YShzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCB1bnNpZ25lZCBpbnQgdHlwZSwNCj4+ICsJCQkg ICAgdTMyICpzdWJ0eXBlLCB1MTYgdmVyc2lvbls0XSwgY2hhciAqZGVzYywNCj4+ICsJCQkgICAg c2l6ZV90IGRlc2NzaXplKQ0KPj4gK3sNCj4+ICsJTUNESV9ERUNMQVJFX0JVRihpbmJ1ZiwgTUNf Q01EX05WUkFNX01FVEFEQVRBX0lOX0xFTik7DQo+PiArCWVmeF9kd29yZF90ICpvdXRidWY7DQo+ PiArCXNpemVfdCBvdXRsZW47DQo+PiArCXUzMiBmbGFnczsNCj4+ICsJaW50IHJjOw0KPj4gKw0K Pj4gKwlvdXRidWYgPSBremFsbG9jKE1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfTEVOTUFYX01D REkyLCBHRlBfS0VSTkVMKTsNCj4+ICsJaWYgKCFvdXRidWYpDQo+PiArCQlyZXR1cm4gLUVOT01F TTsNCj4+ICsNCj4+ICsJTUNESV9TRVRfRFdPUkQoaW5idWYsIE5WUkFNX01FVEFEQVRBX0lOX1RZ UEUsIHR5cGUpOw0KPj4gKw0KPj4gKwlyYyA9IGVmeF9tY2RpX3JwY19xdWlldChlZngsIE1DX0NN RF9OVlJBTV9NRVRBREFUQSwgaW5idWYsDQo+PiArCQkJCXNpemVvZihpbmJ1ZiksIG91dGJ1ZiwN Cj4+ICsJCQkJTUNfQ01EX05WUkFNX01FVEFEQVRBX09VVF9MRU5NQVhfTUNESTIsDQo+PiArCQkJ CSZvdXRsZW4pOw0KPj4gKwlpZiAocmMpDQo+PiArCQlnb3RvIG91dF9mcmVlOw0KPj4gKwlpZiAo b3V0bGVuIDwgTUNfQ01EX05WUkFNX01FVEFEQVRBX09VVF9MRU5NSU4pIHsNCj4+ICsJCXJjID0g LUVJTzsNCj4+ICsJCWdvdG8gb3V0X2ZyZWU7DQo+PiArCX0NCj4+ICsNCj4+ICsJZmxhZ3MgPSBN Q0RJX0RXT1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX0ZMQUdTKTsNCj4+ICsNCj4+ICsJ aWYgKGRlc2MgJiYgZGVzY3NpemUgPiAwKSB7DQo+PiArCQlpZiAoZmxhZ3MgJiBCSVQoTUNfQ01E X05WUkFNX01FVEFEQVRBX09VVF9ERVNDUklQVElPTl9WQUxJRF9MQk4pKSB7DQo+PiArCQkJaWYg KGRlc2NzaXplIDw9DQo+PiArCQkJICAgIE1DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfREVTQ1JJ UFRJT05fTlVNKG91dGxlbikpIHsNCj4+ICsJCQkJcmMgPSAtRTJCSUc7DQo+PiArCQkJCWdvdG8g b3V0X2ZyZWU7DQo+PiArCQkJfQ0KPj4gKw0KPj4gKwkJCXN0cm5jcHkoZGVzYywNCj4+ICsJCQkJ TUNESV9QVFIob3V0YnVmLCBOVlJBTV9NRVRBREFUQV9PVVRfREVTQ1JJUFRJT04pLA0KPj4gKwkJ CQlNQ19DTURfTlZSQU1fTUVUQURBVEFfT1VUX0RFU0NSSVBUSU9OX05VTShvdXRsZW4pKTsNCj4+ ICsJCQlkZXNjW01DX0NNRF9OVlJBTV9NRVRBREFUQV9PVVRfREVTQ1JJUFRJT05fTlVNKG91dGxl bildID0gJ1wwJzsNCj4+ICsJCX0gZWxzZSB7DQo+PiArCQkJZGVzY1swXSA9ICdcMCc7DQo+PiAr CQl9DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKHN1YnR5cGUpIHsNCj4+ICsJCWlmIChmbGFncyAm IEJJVChNQ19DTURfTlZSQU1fTUVUQURBVEFfT1VUX1NVQlRZUEVfVkFMSURfTEJOKSkNCj4+ICsJ CQkqc3VidHlwZSA9IE1DRElfRFdPUkQob3V0YnVmLCBOVlJBTV9NRVRBREFUQV9PVVRfU1VCVFlQ RSk7DQo+PiArCQllbHNlDQo+PiArCQkJKnN1YnR5cGUgPSAwOw0KPj4gKwl9DQo+PiArDQo+PiAr CWlmICh2ZXJzaW9uKSB7DQo+PiArCQlpZiAoZmxhZ3MgJiBCSVQoTUNfQ01EX05WUkFNX01FVEFE QVRBX09VVF9WRVJTSU9OX1ZBTElEX0xCTikpIHsNCj4+ICsJCQl2ZXJzaW9uWzBdID0gTUNESV9X T1JEKG91dGJ1ZiwgTlZSQU1fTUVUQURBVEFfT1VUX1ZFUlNJT05fVyk7DQo+PiArCQkJdmVyc2lv blsxXSA9IE1DRElfV09SRChvdXRidWYsIE5WUkFNX01FVEFEQVRBX09VVF9WRVJTSU9OX1gpOw0K Pj4gKwkJCXZlcnNpb25bMl0gPSBNQ0RJX1dPUkQob3V0YnVmLCBOVlJBTV9NRVRBREFUQV9PVVRf VkVSU0lPTl9ZKTsNCj4+ICsJCQl2ZXJzaW9uWzNdID0gTUNESV9XT1JEKG91dGJ1ZiwgTlZSQU1f TUVUQURBVEFfT1VUX1ZFUlNJT05fWik7DQo+PiArCQl9IGVsc2Ugew0KPj4gKwkJCXZlcnNpb25b MF0gPSAwOw0KPj4gKwkJCXZlcnNpb25bMV0gPSAwOw0KPj4gKwkJCXZlcnNpb25bMl0gPSAwOw0K Pj4gKwkJCXZlcnNpb25bM10gPSAwOw0KPj4gKwkJfQ0KPj4gKwl9DQo+PiArDQo+PiArb3V0X2Zy ZWU6DQo+PiArCWtmcmVlKG91dGJ1Zik7DQo+PiArCXJldHVybiByYzsNCj4+ICt9DQo+PiArDQo+ PiAgIGludCBlZnhfbWNkaV9tdGRfcmVhZChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgbG9mZl90IHN0 YXJ0LA0KPj4gICAJCSAgICAgIHNpemVfdCBsZW4sIHNpemVfdCAqcmV0bGVuLCB1OCAqYnVmZmVy KQ0KPj4gICB7DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21jZGku aCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9tY2RpLmgNCj4+IGluZGV4IDdlMzVmZWM5ZGEz NS4uNjNiMDkwNTg3ZjdhIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Zj L21jZGkuaA0KPj4gKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL21jZGkuaA0KPj4gQEAg LTM3OSw2ICszNzksOSBAQCBpbnQgZWZ4X21jZGlfbnZyYW1faW5mbyhzdHJ1Y3QgZWZ4X25pYyAq ZWZ4LCB1bnNpZ25lZCBpbnQgdHlwZSwNCj4+ICAgCQkJYm9vbCAqcHJvdGVjdGVkX291dCk7DQo+ PiAgIGludCBlZnhfbmV3X21jZGlfbnZyYW1fdGVzdF9hbGwoc3RydWN0IGVmeF9uaWMgKmVmeCk7 DQo+PiAgIGludCBlZnhfbWNkaV9udnJhbV90ZXN0X2FsbChzdHJ1Y3QgZWZ4X25pYyAqZWZ4KTsN Cj4+ICtpbnQgZWZ4X21jZGlfbnZyYW1fbWV0YWRhdGEoc3RydWN0IGVmeF9uaWMgKmVmeCwgdW5z aWduZWQgaW50IHR5cGUsDQo+PiArCQkJICAgIHUzMiAqc3VidHlwZSwgdTE2IHZlcnNpb25bNF0s IGNoYXIgKmRlc2MsDQo+PiArCQkJICAgIHNpemVfdCBkZXNjc2l6ZSk7DQo+PiAgIGludCBlZnhf bWNkaV9oYW5kbGVfYXNzZXJ0aW9uKHN0cnVjdCBlZnhfbmljICplZngpOw0KPj4gICBpbnQgZWZ4 X21jZGlfc2V0X2lkX2xlZChzdHJ1Y3QgZWZ4X25pYyAqZWZ4LCBlbnVtIGVmeF9sZWRfbW9kZSBt b2RlKTsNCj4+ICAgaW50IGVmeF9tY2RpX3dvbF9maWx0ZXJfc2V0X21hZ2ljKHN0cnVjdCBlZnhf bmljICplZngsIGNvbnN0IHU4ICptYWMsDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRo ZXJuZXQvc2ZjL25ldF9kcml2ZXIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9uZXRfZHJp dmVyLmgNCj4+IGluZGV4IDNiNDllMjE2NzY4Yi4uZDAzNjY0MWRjMDQzIDEwMDY0NA0KPj4gLS0t IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaA0KPj4gKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc2ZjL25ldF9kcml2ZXIuaA0KPj4gQEAgLTk5NCw2ICs5OTQsNyBAQCBl bnVtIGVmeF94ZHBfdHhfcXVldWVzX21vZGUgew0KPj4gICAgKiAgICAgIHhkcF9yeHFfaW5mbyBz dHJ1Y3R1cmVzPw0KPj4gICAgKiBAbmV0ZGV2X25vdGlmaWVyOiBOZXRkZXZpY2Ugbm90aWZpZXIu DQo+PiAgICAqIEB0Yzogc3RhdGUgZm9yIFRDIG9mZmxvYWQgKEVGMTAwKS4NCj4+ICsgKiBAZGV2 bGluazogcmVmZXJlbmNlIHRvIGRldmxpbmsgc3RydWN0dXJlIG93bmVkIGJ5IHRoaXMgZGV2aWNl DQo+PiAgICAqIEBtZW1fYmFyOiBUaGUgQkFSIHRoYXQgaXMgbWFwcGVkIGludG8gbWVtYmFzZS4N Cj4+ICAgICogQHJlZ19iYXNlOiBPZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGJhciB0byB0 aGUgZnVuY3Rpb24gY29udHJvbCB3aW5kb3cuDQo+PiAgICAqIEBtb25pdG9yX3dvcms6IEhhcmR3 YXJlIG1vbml0b3Igd29ya2l0ZW0NCj4+IEBAIC0xMTc5LDYgKzExODAsNyBAQCBzdHJ1Y3QgZWZ4 X25pYyB7DQo+PiAgIAlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbmV0ZGV2X25vdGlmaWVyOw0KPj4g ICAJc3RydWN0IGVmeF90Y19zdGF0ZSAqdGM7DQo+PiAgIA0KPj4gKwlzdHJ1Y3QgZGV2bGluayAq ZGV2bGluazsNCj4+ICAgCXVuc2lnbmVkIGludCBtZW1fYmFyOw0KPj4gICAJdTMyIHJlZ19iYXNl Ow0KPj4gICANCg0K