From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 210E7A0350; Wed, 1 Jul 2020 09:04:59 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A0D231D5AE; Wed, 1 Jul 2020 08:53:31 +0200 (CEST) Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2058.outbound.protection.outlook.com [40.107.20.58]) by dpdk.org (Postfix) with ESMTP id ADB6F1D415 for ; Wed, 1 Jul 2020 08:52:58 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nJEtdVjGIGYlXPogPDIFpgInBpxg1v8zF9elT5MgxzTLgc+qGl976C0eoZjFTsiF41cDrb2Oo2rJxXkX9V0dY2SpLMtzVhFzR/aF2xB7ch6rONBhEsDOm7fjSyJSxRr8Jg4Pah4n3s88uDgZHQ4T6ap0bLBW5Pcg0XK1k6JXFgjcUprBphPtoT1HeAm7RluOJWxB5oaryevsNFMmzQtZmDd8FI0qEXaheFgQ+8Lj+s6d6AZl1o4UkSwqcAtSmo8dd6nROnsbExkve8iH+YcWGroDIsOhmEe3KBeScb9nCTuBX64/6MK4aSbDAqXbyqMThn7gnzZWyxTGPxobD2UMdg== 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=DCdqb/jjUzipFmM57knNyF9msxLUNLS8fZ7EaWgcbXQ=; b=hTlOpe0ZYOETLsYELyNJCA6aTnHZYRItqTYtfTJCuuiGLiF9wM5msLlVMok6C/jA1YUeHT6YO4KA/rNKMUHEPsQcCkYX265zG7kTiRwH9FhBqu6mzWm+Bfe1uG7RT5ExTkMFd+NZH75Os2lYGuhb6XU87WHQmPsLdSmFqMqHZoxx6NNJ2vi01/lHway6YDQyZp8UXU8EcHUrjZ6AsxYsQ2iFlGHRM4+a5mFVO9NLp85EQM+UE0WrTVvvseIoNzK5F2f4WdjI52jOyDV0pFINLmecZO0PVPtCOZDQUSLbSnZWXbzGo/iZ+HktDaYxrvvkiBZ81jCAionHePNBHwbxdA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DCdqb/jjUzipFmM57knNyF9msxLUNLS8fZ7EaWgcbXQ=; b=J5muiKR3Nm2kcbDBu0hAgaELa9xd2O1WhGVj6jjCOpELYM/vG1/XQ1pSpu7l+qDjQXRWZIyhLYgLyYF4Sfso4uoPoZsEb44+Gaxpsny1+AXP4AKLnJm5hd+b5URJTPBW4Pxq8L0+lWnL4/diz02JS+XSSBRiVyiDu097eHp6lfI= Received: from DB8PR05MB6761.eurprd05.prod.outlook.com (2603:10a6:10:139::21) by DB7PR05MB6218.eurprd05.prod.outlook.com (2603:10a6:10:84::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.22; Wed, 1 Jul 2020 06:52:56 +0000 Received: from DB8PR05MB6761.eurprd05.prod.outlook.com ([fe80::10cf:d50d:bee:a43]) by DB8PR05MB6761.eurprd05.prod.outlook.com ([fe80::10cf:d50d:bee:a43%5]) with mapi id 15.20.3131.027; Wed, 1 Jul 2020 06:52:55 +0000 From: Gregory Etelson To: "Kinsella, Ray" CC: Matan Azrad , Raslan Darawsheh , Ori Kam , John McNamara , Marko Kovacevic , Neil Horman , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Ajit Khaparde , "sriharsha.basavapatna@broadcom.com" , "hemal.shah@broadcom.com" , Eli Britstein , Oz Shlomo , "dev@dpdk.org" Thread-Topic: [PATCH 2/2] ethdev: tunnel offload model Thread-Index: AQHWSwo+xAN7H+4T80CTcoDjz3hY0qjw5LUggAAotQCAAToJIA== Date: Wed, 1 Jul 2020 06:52:55 +0000 Message-ID: References: <20200625160348.26220-1-getelson@mellanox.com> <20200625160348.26220-3-getelson@mellanox.com> <38d3513f-1261-0fbc-7c56-f83ced61f97a@ashroe.eu> In-Reply-To: <38d3513f-1261-0fbc-7c56-f83ced61f97a@ashroe.eu> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: ashroe.eu; dkim=none (message not signed) header.d=none;ashroe.eu; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [176.230.225.181] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 212d84bf-e08d-4fbf-3590-08d81d8b624f x-ms-traffictypediagnostic: DB7PR05MB6218: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr,ExtFwd x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 04519BA941 x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: v5bNSHoWS/UiqaFZge0S+O2YxVMfmwcgrFUdueqWMX+hvqcxq+t09pQ81LkoS0JgXiSFvzPZGzXcOOqsRTmtq9vTfpttLXEXJjM8AWCR6bSzOBtCrw2rviXkDqTM5gMigwDjfKzA/XDfyJ89G9jZx0Njg4lX+p88d6+kPlIE9kwzxLRUQ2XBLNYTSOXaglVbjhD+1rfq3i+788vdl3H1/YaEIHfRycI/bcg6ZMKz/JLkl8ugR7RDL64XA6m0VMg/hK+g7Ei/ocVVf9rBDPSsVsH7WTk3yX/s4pmP1fp6sp1QFK3TAD5umQSh4G8RpldPmqYS4yU2ZUcT0U5WzxmALhcElQLcYh7ic2LO+D/5XddLgz/doTY6n6BamzyRYuiORDuLiUQhDgwOy1ED/lkBSg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB8PR05MB6761.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(396003)(136003)(376002)(346002)(366004)(39860400002)(8676002)(4326008)(9686003)(55016002)(5660300002)(52536014)(8936002)(64756008)(66556008)(66476007)(66946007)(966005)(7696005)(76116006)(30864003)(6506007)(54906003)(316002)(45080400002)(478600001)(66446008)(86362001)(6916009)(26005)(53546011)(186003)(2906002)(83380400001)(83080400001)(33656002)(71200400001)(7416002)(579004)(559001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: k9wUmp+5fMtWVVIuhdqAIlw7EsordZmHeRPTAqTZGRFrqP0N72sXVS7JPQma/5zrKjgtZYKfmhLSZKaftCKkwbURPvNLguGjZ0Wr7uf2JVXfaoqrj+idOSfL69cyUWbAUI+zzZsw0xe8HTXTjrwEZS9QOYbkSNPTT7KOi/7K3w0qgh8ZwZVUKdSni3nWvGkq8hQgRRkyIuNHwI2oPNxZb7odJ5foM+U8hl8UoPU0xjJPG4xmV9d15tJn3WS8GlWSTTeJhJppsBQ0v4b/O8edtCFxX5iYDLgp0Spqeef56XpjRyrAveEZ7oemyXhS6baxooSb5rBcsZXb/c8X7p6jx2cNi7e/NDWRwF93dDWJ+mqiVe4DilLi5d3xWlBYsWYZJf8GNRmFUi9REqnpJdXq82Mc2U8/vNm5xbO38H8MIBfFxa1YiUVNp2fTW13DwAnOyPJoIy9AC6jnmyxoO+qsczIjPMdfTB+LQyw82kCyqr69GSwm0qmidXh80pKUH/t8 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DB8PR05MB6761.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 212d84bf-e08d-4fbf-3590-08d81d8b624f X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jul 2020 06:52:55.8598 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: fFy+SD9/DLzcn2FRKcrRCiOUsi44e1yXghZ5Q2tIicCnUO67p8WFpWQwFW5e2Yb0ePpNZYMPjf3orie21exDbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB6218 Subject: Re: [dpdk-dev] [PATCH 2/2] ethdev: tunnel offload model X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2luc2VsbGEsIFJheSA8 bWRyQGFzaHJvZS5ldT4NCj4gU2VudDogVHVlc2RheSwgSnVuZSAzMCwgMjAyMCAxNDozMA0KPiBU bzogR3JlZ29yeSBFdGVsc29uIDxnZXRlbHNvbkBtZWxsYW5veC5jb20+DQo+IENjOiBNYXRhbiBB enJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsgUmFzbGFuIERhcmF3c2hlaA0KPiA8cmFzbGFuZEBt ZWxsYW5veC5jb20+OyBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+OyBKb2huIE1jTmFtYXJh DQo+IDxqb2huLm1jbmFtYXJhQGludGVsLmNvbT47IE1hcmtvIEtvdmFjZXZpYw0KPiA8bWFya28u a292YWNldmljQGludGVsLmNvbT47IE5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+ Ow0KPiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5uZXQ+OyBGZXJydWggWWlnaXQN Cj4gPGZlcnJ1aC55aWdpdEBpbnRlbC5jb20+OyBBbmRyZXcgUnliY2hlbmtvDQo+IDxhcnliY2hl bmtvQHNvbGFyZmxhcmUuY29tPjsgQWppdCBLaGFwYXJkZQ0KPiA8YWppdC5raGFwYXJkZUBicm9h ZGNvbS5jb20+OyBzcmloYXJzaGEuYmFzYXZhcGF0bmFAYnJvYWRjb20uY29tOw0KPiBoZW1hbC5z aGFoQGJyb2FkY29tLmNvbTsgRWxpIEJyaXRzdGVpbiA8ZWxpYnJAbWVsbGFub3guY29tPjsgT3og U2hsb21vDQo+IDxvenNoQG1lbGxhbm94LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAyLzJd IGV0aGRldjogdHVubmVsIG9mZmxvYWQgbW9kZWwNCj4gDQo+IA0KPiANCj4gT24gMzAvMDYvMjAy MCAxMDowNSwgR3JlZ29yeSBFdGVsc29uIHdyb3RlOg0KPiA+DQo+ID4gKyBtYWludGFpbmVycw0K PiA+DQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBHcmVnb3J5IEV0 ZWxzb24gPGdldGVsc29uQG1lbGxhbm94LmNvbT4NCj4gPiBTZW50OiBUaHVyc2RheSwgSnVuZSAy NSwgMjAyMCAxOTowNA0KPiA+IFRvOiBkZXZAZHBkay5vcmcNCj4gPiBDYzogR3JlZ29yeSBFdGVs c29uIDxnZXRlbHNvbkBtZWxsYW5veC5jb20+OyBNYXRhbiBBenJhZA0KPiA+IDxtYXRhbkBtZWxs YW5veC5jb20+OyBSYXNsYW4gRGFyYXdzaGVoIDxyYXNsYW5kQG1lbGxhbm94LmNvbT47IEVsaQ0K PiA+IEJyaXRzdGVpbiA8ZWxpYnJAbWVsbGFub3guY29tPjsgT3JpIEthbSA8b3Jpa2FAbWVsbGFu b3guY29tPg0KPiA+IFN1YmplY3Q6IFtQQVRDSCAyLzJdIGV0aGRldjogdHVubmVsIG9mZmxvYWQg bW9kZWwNCj4gPg0KPiA+IEZyb206IEVsaSBCcml0c3RlaW4gPGVsaWJyQG1lbGxhbm94LmNvbT4N Cj4gPg0KPiA+IEhhcmR3YXJlIHZlbmRvcnMgaW1wbGVtZW50IHR1bm5lbGVkIHRyYWZmaWMgb2Zm bG9hZCB0ZWNobmlxdWVzDQo+IGRpZmZlcmVudGx5LiBBbHRob3VnaCBSVEUgZmxvdyBBUEkgcHJv dmlkZXMgdG9vbHMgY2FwYWJsZSB0byBvZmZsb2FkIGFsbCBzb3J0cw0KPiBvZiBuZXR3b3JrIHN0 YWNrcywgc29mdHdhcmUgYXBwbGljYXRpb24gbXVzdCByZWZlcmVuY2UgdGhpcyBoYXJkd2FyZQ0K PiBkaWZmZXJlbmNlcyBpbiBmbG93IHJ1bGVzIGNvbXBpbGF0aW9uLiBBcyB0aGUgcmVzdWx0IHR1 bm5lbGVkIHRyYWZmaWMgZmxvdyBydWxlcw0KPiB0aGF0IHV0aWxpemUgaGFyZHdhcmUgY2FwYWJp bGl0aWVzIGNhbiBiZSBkaWZmZXJlbnQgZm9yIHRoZSBzYW1lIHRyYWZmaWMuDQo+ID4NCj4gPiBU dW5uZWwgcG9ydCBvZmZsb2FkIHByb3Bvc2VkIGluIFsxXSBwcm92aWRlcyBzb2Z0d2FyZSBhcHBs aWNhdGlvbiB3aXRoDQo+IHVuaWZpZWQgcnVsZXMgbW9kZWwgZm9yIHR1bm5lbGVkIHRyYWZmaWMg cmVnYXJkbGVzcyB1bmRlcmx5aW5nIGhhcmR3YXJlLg0KPiA+ICAtIFRoZSBtb2RlbCBpbnRyb2R1 Y2VzIGEgY29uY2VwdCBvZiBhIHZpcnR1YWwgdHVubmVsIHBvcnQgKFZUUCkuDQo+ID4gIC0gVGhl IG1vZGVsIHVzZXMgVlRQIHRvIG9mZmxvYWQgaW5ncmVzcyB0dW5uZWxlZCBuZXR3b3JrIHRyYWZm aWMNCj4gPiAgICB3aXRoIFJURSBmbG93IHJ1bGVzLg0KPiA+ICAtIFRoZSBtb2RlbCBpcyBpbXBs ZW1lbnRlZCBhcyBzZXQgb2YgaGVscGVyIGZ1bmN0aW9ucy4gRWFjaCBQTUQNCj4gPiAgICBpbXBs ZW1lbnRzIFZUUCBvZmZsb2FkIGFjY29yZGluZyB0byB1bmRlcmx5aW5nIGhhcmR3YXJlIG9mZmxv YWQNCj4gPiAgICBjYXBhYmlsaXRpZXMuICBBcHBsaWNhdGlvbnMgbXVzdCBxdWVyeSBQTUQgZm9y IFZUUCBmbG93DQo+ID4gICAgaXRlbXMgLyBhY3Rpb25zIGJlZm9yZSB1c2luZyBpbiBjcmVhdGlv biBvZiBhIFZUUCBmbG93IHJ1bGUuDQo+ID4NCj4gPiBUaGUgbW9kZWwgY29tcG9uZW50czoNCj4g PiAtIFZpcnR1YWwgVHVubmVsIFBvcnQgKFZUUCkgaXMgYSBzdGF0ZWxlc3Mgc29mdHdhcmUgb2Jq ZWN0IHRoYXQNCj4gPiAgIGRlc2NyaWJlcyB0dW5uZWxlZCBuZXR3b3JrIHRyYWZmaWMuICBWVFAg b2JqZWN0IHVzdWFsbHkgY29udGFpbnMNCj4gPiAgIGRlc2NyaXB0aW9ucyBvZiBvdXRlciBoZWFk ZXJzLCB0dW5uZWwgaGVhZGVycyBhbmQgaW5uZXIgaGVhZGVycy4NCj4gPiAtIFR1bm5lbCBTdGVl cmluZyBmbG93IFJ1bGUgKFRTUikgZGV0ZWN0cyB0dW5uZWxlZCBwYWNrZXRzIGFuZA0KPiA+ICAg ZGVsZWdhdGVzIHRoZW0gdG8gdHVubmVsIHByb2Nlc3NpbmcgaW5mcmFzdHJ1Y3R1cmUsIGltcGxl bWVudGVkDQo+ID4gICBpbiBQTUQgZm9yIG9wdGltYWwgaGFyZHdhcmUgdXRpbGl6YXRpb24sIGZv ciBmdXJ0aGVyIHByb2Nlc3NpbmcuDQo+ID4gLSBUdW5uZWwgTWF0Y2hpbmcgZmxvdyBSdWxlIChU TVIpIHZlcmlmaWVzIHBhY2tldCBjb25maWd1cmF0aW9uIGFuZA0KPiA+ICAgcnVucyBvZmZsb2Fk IGFjdGlvbnMgaW4gY2FzZSBvZiBhIG1hdGNoLg0KPiA+DQo+ID4gQXBwbGljYXRpb24gYWN0aW9u czoNCj4gPiAxIEluaXRpYWxpemUgVlRQIG9iamVjdCBhY2NvcmRpbmcgdG8gdHVubmVsDQo+ID4g ICBuZXR3b3JrIHBhcmFtZXRlcnMuDQo+ID4gMiBDcmVhdGUgVFNSIGZsb3cgcnVsZToNCj4gPiAy LjEgUXVlcnkgUE1EIGZvciBWVFAgYWN0aW9uczogYXBwbGljYXRpb24gY2FuIHF1ZXJ5IGZvciBW VFAgYWN0aW9ucw0KPiA+ICAgICBtb3JlIHRoYW4gb25jZQ0KPiA+ICAgICBpbnQNCj4gPiAgICAg cnRlX2Zsb3dfdHVubmVsX2RlY2FwX3NldCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd190dW5uZWwgKnR1bm5lbCwNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICoq cG1kX2FjdGlvbnMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg Km51bV9vZl9wbWRfYWN0aW9ucywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPg0KPiA+IDIuMiBJbnRlZ3JhdGUgUE1E IGFjdGlvbnMgaW50byBUU1IgYWN0aW9ucyBsaXN0Lg0KPiA+IDIuMyBDcmVhdGUgVFNSIGZsb3cg cnVsZToNCj4gPiAgICAgZmxvdyBjcmVhdGUgPHBvcnQ+IGdyb3VwIDANCj4gPiAgICAgICAgICAg bWF0Y2gge3R1bm5lbCBpdGVtc30gLyBlbmQNCj4gPiAgICAgICAgICAgYWN0aW9ucyB7UE1EIGFj dGlvbnN9IC8ge0FwcCBhY3Rpb25zfSAvIGVuZA0KPiA+DQo+ID4gMyBDcmVhdGUgVE1SIGZsb3cg cnVsZToNCj4gPiAzLjEgUXVlcnkgUE1EIGZvciBWVFAgaXRlbXM6IGFwcGxpY2F0aW9uIGNhbiBx dWVyeSBmb3IgVlRQIGl0ZW1zDQo+ID4gICAgIG1vcmUgdGhhbiBvbmNlDQo+ID4gICAgIGludA0K PiA+ICAgICBydGVfZmxvd190dW5uZWxfbWF0Y2godWludDE2X3QgcG9ydF9pZCwNCj4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd190dW5uZWwgKnR1bm5lbCwNCj4g PiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19pdGVtICoqcG1kX2l0 ZW1zLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKm51bV9vZl9wbWRf aXRlbXMsDQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJy b3IgKmVycm9yKTsNCj4gPg0KPiA+IDMuMiBJbnRlZ3JhdGUgUE1EIGl0ZW1zIGludG8gVE1SIGl0 ZW1zIGxpc3Q6DQo+ID4gMy4zIENyZWF0ZSBUTVIgZmxvdyBydWxlDQo+ID4gICAgIGZsb3cgY3Jl YXRlIDxwb3J0PiBncm91cCAwDQo+ID4gICAgICAgICAgIG1hdGNoIHtQTUQgaXRlbXN9IC8ge0FQ UCBpdGVtc30gLyBlbmQNCj4gPiAgICAgICAgICAgYWN0aW9ucyB7b2ZmbG9hZCBhY3Rpb25zfSAv IGVuZA0KPiA+DQo+ID4gVGhlIG1vZGVsIHByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbiBjYWxsIHRv IHJlc3RvcmUgcGFja2V0cyB0aGF0IG1pc3MgdHVubmVsDQo+IFRNUiBydWxlcyB0byBpdHMgb3Jp Z2luYWwgc3RhdGU6DQo+ID4gaW50DQo+ID4gcnRlX2Zsb3dfZ2V0X3Jlc3RvcmVfaW5mbyh1aW50 MTZfdCBwb3J0X2lkLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9t YnVmICptYnVmLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93 X3Jlc3RvcmVfaW5mbyAqaW5mbywNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBydGVfZmxvd19lcnJvciAqZXJyb3IpOw0KPiA+DQo+ID4gcnRlX3R1bm5lbCBvYmplY3QgZmls bGVkIGJ5IHRoZSBjYWxsIGluc2lkZSBydGVfZmxvd19yZXN0b3JlX2luZm8gKmluZm8NCj4gcGFy YW1ldGVyIGNhbiBiZSB1c2VkIGJ5IHRoZSBhcHBsaWNhdGlvbiB0byBjcmVhdGUgbmV3IFRNUiBy dWxlIGZvciB0aGF0DQo+IHR1bm5lbC4NCj4gPg0KPiA+IFRoZSBtb2RlbCByZXF1aXJlbWVudHM6 DQo+ID4gU29mdHdhcmUgYXBwbGljYXRpb24gbXVzdCBpbml0aWFsaXplDQo+ID4gcnRlX3R1bm5l bCBvYmplY3Qgd2l0aCB0dW5uZWwgcGFyYW1ldGVycyBiZWZvcmUgY2FsbGluZw0KPiA+IHJ0ZV9m bG93X3R1bm5lbF9kZWNhcF9zZXQoKSAmIHJ0ZV9mbG93X3R1bm5lbF9tYXRjaCgpLg0KPiA+DQo+ ID4gUE1EIGFjdGlvbnMgYXJyYXkgb2J0YWluZWQgaW4gcnRlX2Zsb3dfdHVubmVsX2RlY2FwX3Nl dCgpIG11c3QgYmUNCj4gcmVsZWFzZWQgYnkgYXBwbGljYXRpb24gd2l0aCBydGVfZmxvd19hY3Rp b25fcmVsZWFzZSgpIGNhbGwuDQo+ID4gQXBwbGljYXRpb24gY2FuIHJlbGVhc2UgdGhlIGFjdGlv bnNmdGVyIFRTUiBydWxlIHdhcyBjcmVhdGVkLg0KPiA+DQo+ID4gUE1EIGl0ZW1zIGFycmF5IG9i dGFpbmVkIHdpdGggcnRlX2Zsb3dfdHVubmVsX21hdGNoKCkgbXVzdCBiZSByZWxlYXNlZA0KPiBi eSBhcHBsaWNhdGlvbiB3aXRoIHJ0ZV9mbG93X2l0ZW1fcmVsZWFzZSgpIGNhbGwuICBBcHBsaWNh dGlvbiBjYW4gcmVsZWFzZSB0aGUNCj4gaXRlbXMgYWZ0ZXIgcnVsZSB3YXMgY3JlYXRlZC4gSG93 ZXZlciwgaWYgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRvIGNyZWF0ZQ0KPiBhZGRpdGlvbmFsIFRN UiBydWxlIGZvciB0aGUgc2FtZSB0dW5uZWwgaXQgd2lsbCBuZWVkIHRvIG9idGFpbiBQTUQgaXRl bXMNCj4gYWdhaW4uDQo+ID4NCj4gPiBBcHBsaWNhdGlvbiBjYW5ub3QgZGVzdHJveSBydGVfdHVu bmVsIG9iamVjdCBiZWZvcmUgaXQgcmVsZWFzZXMgYWxsIFBNRA0KPiBhY3Rpb25zICYgUE1EIGl0 ZW1zIHJlZmVyZW5jaW5nIHRoYXQgdHVubmVsLg0KPiA+DQo+ID4gWzFdDQo+ID4gaHR0cHM6Ly9l dXIwMy5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHBzJTNBJTJGJTJG bWFpbA0KPiA+IHMuZHBkay5vcmclMkZhcmNoaXZlcyUyRmRldiUyRjIwMjAtDQo+IEp1bmUlMkYx Njk2NTYuaHRtbCZhbXA7ZGF0YT0wMiU3QzAxDQo+ID4NCj4gJTdDZ2V0ZWxzb24lNDBtZWxsYW5v eC5jb20lN0MxMTc4ZGQ1ZWIwMjE0ZDgwN2Q2ZDA4ZDgxY2U4ZTczOSUNCj4gN0NhNjUyOTcNCj4g Pg0KPiAxYzdkMmU0ZDliYTZhNGQxNDkyNTZmNDYxYiU3QzAlN0MwJTdDNjM3MjkxMTMzOTM1NzI5 NDIzJmFtcDtzZA0KPiBhdGE9RyUyQg0KPiA+IEdJUHklMkJ4ejczc2dta2VtNGpvallHS0REc1hz OG5LVkswS3RkZWsyOGMlM0QmYW1wO3Jlc2VydmVkPTANCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IEVsaSBCcml0c3RlaW4gPGVsaWJyQG1lbGxhbm94LmNvbT4NCj4gPiBBY2tlZC1ieTogT3JpIEth bSA8b3Jpa2FAbWVsbGFub3guY29tPg0KPiA+IC0tLQ0KPiA+ICBkb2MvZ3VpZGVzL3Byb2dfZ3Vp ZGUvcnRlX2Zsb3cucnN0ICAgICAgIHwgMTA1ICsrKysrKysrKysrKw0KPiA+ICBsaWIvbGlicnRl X2V0aGRldi9ydGVfZXRoZGV2X3ZlcnNpb24ubWFwIHwgICA1ICsNCj4gPiAgbGliL2xpYnJ0ZV9l dGhkZXYvcnRlX2Zsb3cuYyAgICAgICAgICAgICB8IDExMiArKysrKysrKysrKysrDQo+ID4gIGxp Yi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmggICAgICAgICAgICAgfCAxOTYgKysrKysrKysrKysr KysrKysrKysrKysNCj4gPiAgbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmggICAg ICB8ICAzMiArKysrDQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgNDUwIGluc2VydGlvbnMoKykNCj4g Pg0KPiA+IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ ID4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0DQo+ID4gaW5kZXggZDVkZDE4 Y2U5OS4uY2ZkOThjMmU3ZCAxMDA2NDQNCj4gPiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cnRlX2Zsb3cucnN0DQo+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJz dA0KPiA+IEBAIC0zMDEwLDYgKzMwMTAsMTExIEBAIG9wZXJhdGlvbnMgaW5jbHVkZToNCj4gPiAg LSBEdXBsaWNhdGlvbiBvZiBhIGNvbXBsZXRlIGZsb3cgcnVsZSBkZXNjcmlwdGlvbi4NCj4gPiAg LSBQYXR0ZXJuIGl0ZW0gb3IgYWN0aW9uIG5hbWUgcmV0cmlldmFsLg0KPiA+DQo+ID4gK1R1bm5l bGVkIHRyYWZmaWMgb2ZmbG9hZA0KPiA+ICt+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiAr DQo+ID4gK1Byb3ZpZGUgc29mdHdhcmUgYXBwbGljYXRpb24gd2l0aCB1bmlmaWVkIHJ1bGVzIG1v ZGVsIGZvciB0dW5uZWxlZA0KPiA+ICt0cmFmZmljIHJlZ2FyZGxlc3MgdW5kZXJseWluZyBoYXJk d2FyZS4NCj4gPiArDQo+ID4gKyAtIFRoZSBtb2RlbCBpbnRyb2R1Y2VzIGEgY29uY2VwdCBvZiBh IHZpcnR1YWwgdHVubmVsIHBvcnQgKFZUUCkuDQo+ID4gKyAtIFRoZSBtb2RlbCB1c2VzIFZUUCB0 byBvZmZsb2FkIGluZ3Jlc3MgdHVubmVsZWQgbmV0d29yayB0cmFmZmljDQo+ID4gKyAgIHdpdGgg UlRFIGZsb3cgcnVsZXMuDQo+ID4gKyAtIFRoZSBtb2RlbCBpcyBpbXBsZW1lbnRlZCBhcyBzZXQg b2YgaGVscGVyIGZ1bmN0aW9ucy4gRWFjaCBQTUQNCj4gPiArICAgaW1wbGVtZW50cyBWVFAgb2Zm bG9hZCBhY2NvcmRpbmcgdG8gdW5kZXJseWluZyBoYXJkd2FyZSBvZmZsb2FkDQo+ID4gKyAgIGNh cGFiaWxpdGllcy4gIEFwcGxpY2F0aW9ucyBtdXN0IHF1ZXJ5IFBNRCBmb3IgVlRQIGZsb3cNCj4g PiArICAgaXRlbXMgLyBhY3Rpb25zIGJlZm9yZSB1c2luZyBpbiBjcmVhdGlvbiBvZiBhIFZUUCBm bG93IHJ1bGUuDQo+ID4gKw0KPiA+ICtUaGUgbW9kZWwgY29tcG9uZW50czoNCj4gPiArDQo+ID4g Ky0gVmlydHVhbCBUdW5uZWwgUG9ydCAoVlRQKSBpcyBhIHN0YXRlbGVzcyBzb2Z0d2FyZSBvYmpl Y3QgdGhhdA0KPiA+ICsgIGRlc2NyaWJlcyB0dW5uZWxlZCBuZXR3b3JrIHRyYWZmaWMuICBWVFAg b2JqZWN0IHVzdWFsbHkgY29udGFpbnMNCj4gPiArICBkZXNjcmlwdGlvbnMgb2Ygb3V0ZXIgaGVh ZGVycywgdHVubmVsIGhlYWRlcnMgYW5kIGlubmVyIGhlYWRlcnMuDQo+ID4gKy0gVHVubmVsIFN0 ZWVyaW5nIGZsb3cgUnVsZSAoVFNSKSBkZXRlY3RzIHR1bm5lbGVkIHBhY2tldHMgYW5kDQo+ID4g KyAgZGVsZWdhdGVzIHRoZW0gdG8gdHVubmVsIHByb2Nlc3NpbmcgaW5mcmFzdHJ1Y3R1cmUsIGlt cGxlbWVudGVkDQo+ID4gKyAgaW4gUE1EIGZvciBvcHRpbWFsIGhhcmR3YXJlIHV0aWxpemF0aW9u LCBmb3IgZnVydGhlciBwcm9jZXNzaW5nLg0KPiA+ICstIFR1bm5lbCBNYXRjaGluZyBmbG93IFJ1 bGUgKFRNUikgdmVyaWZpZXMgcGFja2V0IGNvbmZpZ3VyYXRpb24gYW5kDQo+ID4gKyAgcnVucyBv ZmZsb2FkIGFjdGlvbnMgaW4gY2FzZSBvZiBhIG1hdGNoLg0KPiA+ICsNCj4gPiArQXBwbGljYXRp b24gYWN0aW9uczoNCj4gPiArDQo+ID4gKzEgSW5pdGlhbGl6ZSBWVFAgb2JqZWN0IGFjY29yZGlu ZyB0byB0dW5uZWwgbmV0d29yayBwYXJhbWV0ZXJzLg0KPiA+ICsNCj4gPiArMiBDcmVhdGUgVFNS IGZsb3cgcnVsZS4NCj4gPiArDQo+ID4gKzIuMSBRdWVyeSBQTUQgZm9yIFZUUCBhY3Rpb25zLiBB cHBsaWNhdGlvbiBjYW4gcXVlcnkgZm9yIFZUUCBhY3Rpb25zDQo+IG1vcmUgdGhhbiBvbmNlLg0K PiA+ICsNCj4gPiArICAuLiBjb2RlLWJsb2NrOjogYw0KPiA+ICsNCj4gPiArICAgIGludA0KPiA+ ICsgICAgcnRlX2Zsb3dfdHVubmVsX2RlY2FwX3NldCh1aW50MTZfdCBwb3J0X2lkLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsICp0dW5u ZWwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19h Y3Rpb24gKipwbWRfYWN0aW9ucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludDMyX3QgKm51bV9vZl9wbWRfYWN0aW9ucywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICsyLjIg SW50ZWdyYXRlIFBNRCBhY3Rpb25zIGludG8gVFNSIGFjdGlvbnMgbGlzdC4NCj4gPiArDQo+ID4g KzIuMyBDcmVhdGUgVFNSIGZsb3cgcnVsZS4NCj4gPiArDQo+ID4gKyAgICAuLiBjb2RlLWJsb2Nr OjogY29uc29sZQ0KPiA+ICsNCj4gPiArICAgICAgZmxvdyBjcmVhdGUgPHBvcnQ+IGdyb3VwIDAg bWF0Y2gge3R1bm5lbCBpdGVtc30gLyBlbmQgYWN0aW9ucw0KPiA+ICsge1BNRCBhY3Rpb25zfSAv IHtBcHAgYWN0aW9uc30gLyBlbmQNCj4gPiArDQo+ID4gKzMgQ3JlYXRlIFRNUiBmbG93IHJ1bGUu DQo+ID4gKw0KPiA+ICszLjEgUXVlcnkgUE1EIGZvciBWVFAgaXRlbXMuIEFwcGxpY2F0aW9uIGNh biBxdWVyeSBmb3IgVlRQIGl0ZW1zIG1vcmUNCj4gdGhhbiBvbmNlLg0KPiA+ICsNCj4gPiArICAg IC4uIGNvZGUtYmxvY2s6OiBjDQo+ID4gKw0KPiA+ICsgICAgICBpbnQNCj4gPiArICAgICAgcnRl X2Zsb3dfdHVubmVsX21hdGNoKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsICp0dW5uZWwsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqKnBtZF9pdGVtcywN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpudW1fb2ZfcG1kX2l0 ZW1zLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9mbG93X2Vy cm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICszLjIgSW50ZWdyYXRlIFBNRCBpdGVtcyBpbnRvIFRN UiBpdGVtcyBsaXN0Lg0KPiA+ICsNCj4gPiArMy4zIENyZWF0ZSBUTVIgZmxvdyBydWxlLg0KPiA+ ICsNCj4gPiArICAgIC4uIGNvZGUtYmxvY2s6OiBjb25zb2xlDQo+ID4gKw0KPiA+ICsgICAgICBm bG93IGNyZWF0ZSA8cG9ydD4gZ3JvdXAgMCBtYXRjaCB7UE1EIGl0ZW1zfSAvIHtBUFAgaXRlbXN9 IC8NCj4gPiArIGVuZCBhY3Rpb25zIHtvZmZsb2FkIGFjdGlvbnN9IC8gZW5kDQo+ID4gKw0KPiA+ ICtUaGUgbW9kZWwgcHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9uIGNhbGwgdG8gcmVzdG9yZSBwYWNr ZXRzIHRoYXQgbWlzcw0KPiA+ICt0dW5uZWwgVE1SIHJ1bGVzIHRvIGl0cyBvcmlnaW5hbCBzdGF0 ZToNCj4gPiArDQo+ID4gKy4uIGNvZGUtYmxvY2s6OiBjDQo+ID4gKw0KPiA+ICsgIGludA0KPiA+ ICsgIHJ0ZV9mbG93X2dldF9yZXN0b3JlX2luZm8odWludDE2X3QgcG9ydF9pZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfbWJ1ZiAqbWJ1ZiwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfZmxvd19yZXN0b3JlX2luZm8gKmlu Zm8sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJy b3IgKmVycm9yKTsNCj4gPiArDQo+ID4gK3J0ZV90dW5uZWwgb2JqZWN0IGZpbGxlZCBieSB0aGUg Y2FsbCBpbnNpZGUgYGBydGVfZmxvd19yZXN0b3JlX2luZm8NCj4gPiArKmluZm8gcGFyYW1ldGVy YGAgY2FuIGJlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uIHRvIGNyZWF0ZSBuZXcgVE1SDQo+ID4g K3J1bGUgZm9yIHRoYXQgdHVubmVsLg0KPiA+ICsNCj4gPiArVGhlIG1vZGVsIHJlcXVpcmVtZW50 czoNCj4gPiArDQo+ID4gK1NvZnR3YXJlIGFwcGxpY2F0aW9uIG11c3QgaW5pdGlhbGl6ZQ0KPiA+ ICtydGVfdHVubmVsIG9iamVjdCB3aXRoIHR1bm5lbCBwYXJhbWV0ZXJzIGJlZm9yZSBjYWxsaW5n DQo+ID4gK3J0ZV9mbG93X3R1bm5lbF9kZWNhcF9zZXQoKSAmIHJ0ZV9mbG93X3R1bm5lbF9tYXRj aCgpLg0KPiA+ICsNCj4gPiArUE1EIGFjdGlvbnMgYXJyYXkgb2J0YWluZWQgaW4gcnRlX2Zsb3df dHVubmVsX2RlY2FwX3NldCgpIG11c3QgYmUNCj4gPiArcmVsZWFzZWQgYnkgYXBwbGljYXRpb24g d2l0aCBydGVfZmxvd19hY3Rpb25fcmVsZWFzZSgpIGNhbGwuDQo+ID4gK0FwcGxpY2F0aW9uIGNh biByZWxlYXNlIHRoZSBhY3Rpb25zZnRlciBUU1IgcnVsZSB3YXMgY3JlYXRlZC4NCj4gPiArDQo+ ID4gK1BNRCBpdGVtcyBhcnJheSBvYnRhaW5lZCB3aXRoIHJ0ZV9mbG93X3R1bm5lbF9tYXRjaCgp IG11c3QgYmUNCj4gPiArcmVsZWFzZWQgYnkgYXBwbGljYXRpb24gd2l0aCBydGVfZmxvd19pdGVt X3JlbGVhc2UoKSBjYWxsLg0KPiA+ICtBcHBsaWNhdGlvbiBjYW4gcmVsZWFzZSB0aGUgaXRlbXMg YWZ0ZXIgcnVsZSB3YXMgY3JlYXRlZC4gSG93ZXZlciwgaWYNCj4gPiArdGhlIGFwcGxpY2F0aW9u IG5lZWRzIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIFRNUiBydWxlIGZvciB0aGUgc2FtZQ0KPiA+ICt0 dW5uZWwgaXQgd2lsbCBuZWVkIHRvIG9idGFpbiBQTUQgaXRlbXMgYWdhaW4uDQo+ID4gKw0KPiA+ ICtBcHBsaWNhdGlvbiBjYW5ub3QgZGVzdHJveSBydGVfdHVubmVsIG9iamVjdCBiZWZvcmUgaXQg cmVsZWFzZXMgYWxsDQo+ID4gK1BNRCBhY3Rpb25zICYgUE1EIGl0ZW1zIHJlZmVyZW5jaW5nIHRo YXQgdHVubmVsLg0KPiA+ICsNCj4gPiAgQ2F2ZWF0cw0KPiA+ICAtLS0tLS0tDQo+ID4NCj4gPiBk aWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1hcA0KPiA+ IGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldl92ZXJzaW9uLm1hcA0KPiA+IGluZGV4IDcx NTUwNTYwNDUuLjYzODAwODExZGYgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYv cnRlX2V0aGRldl92ZXJzaW9uLm1hcA0KPiA+ICsrKyBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9l dGhkZXZfdmVyc2lvbi5tYXANCj4gPiBAQCAtMjQxLDQgKzI0MSw5IEBAIEVYUEVSSU1FTlRBTCB7 DQo+ID4gIAlfX3J0ZV9ldGhkZXZfdHJhY2VfcnhfYnVyc3Q7DQo+ID4gIAlfX3J0ZV9ldGhkZXZf dHJhY2VfdHhfYnVyc3Q7DQo+ID4gIAlydGVfZmxvd19nZXRfYWdlZF9mbG93czsNCj4gPiArCXJ0 ZV9mbG93X3R1bm5lbF9kZWNhcF9zZXQ7DQo+ID4gKwlydGVfZmxvd190dW5uZWxfbWF0Y2g7DQo+ ID4gKwlydGVfZmxvd190dW5uZWxfZ2V0X3Jlc3RvcmVfaW5mbzsNCj4gPiArCXJ0ZV9mbG93X3R1 bm5lbF9hY3Rpb25fZGVjYXBfcmVsZWFzZTsNCj4gPiArCXJ0ZV9mbG93X3R1bm5lbF9pdGVtX3Jl bGVhc2U7DQo+ID4gIH07DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9m bG93LmMNCj4gPiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmMgaW5kZXggYzE5ZDI1NjQ5 Zi4uMmRjNWJmYmIzZiAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxv dy5jDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuYw0KPiA+IEBAIC0xMjY4 LDMgKzEyNjgsMTE1IEBAIHJ0ZV9mbG93X2dldF9hZ2VkX2Zsb3dzKHVpbnQxNl90IHBvcnRfaWQs DQo+IHZvaWQgKipjb250ZXh0cywNCj4gPiAgCQkJCSAgUlRFX0ZMT1dfRVJST1JfVFlQRV9VTlNQ RUNJRklFRCwNCj4gPiAgCQkJCSAgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiAg fQ0KPiA+ICsNCj4gPiAraW50DQo+ID4gK3J0ZV9mbG93X3R1bm5lbF9kZWNhcF9zZXQodWludDE2 X3QgcG9ydF9pZCwNCj4gPiArCQkJICBzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsICp0dW5uZWwsDQo+ ID4gKwkJCSAgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqKmFjdGlvbnMsDQo+ID4gKwkJCSAgdWlu dDMyX3QgKm51bV9vZl9hY3Rpb25zLA0KPiA+ICsJCQkgIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhf ZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9 IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxp a2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCWlmIChsaWtlbHko ISFvcHMtPnR1bm5lbF9kZWNhcF9zZXQpKSB7DQo+ID4gKwkJcmV0dXJuIGZsb3dfZXJyKHBvcnRf aWQsDQo+ID4gKwkJCQlvcHMtPnR1bm5lbF9kZWNhcF9zZXQoZGV2LCB0dW5uZWwsIGFjdGlvbnMs DQo+ID4gKwkJCQkJCSAgICAgIG51bV9vZl9hY3Rpb25zLCBlcnJvciksDQo+ID4gKwkJCQllcnJv cik7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9U U1VQLA0KPiA+ICsJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ICsJ CQkJICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtp bnQNCj4gPiArcnRlX2Zsb3dfdHVubmVsX21hdGNoKHVpbnQxNl90IHBvcnRfaWQsDQo+ID4gKwkJ ICAgICAgc3RydWN0IHJ0ZV9mbG93X3R1bm5lbCAqdHVubmVsLA0KPiA+ICsJCSAgICAgIHN0cnVj dCBydGVfZmxvd19pdGVtICoqaXRlbXMsDQo+ID4gKwkJICAgICAgdWludDMyX3QgKm51bV9vZl9p dGVtcywNCj4gPiArCQkgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKSB7DQo+ID4g KwlzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ ID4gKwljb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfb3BzICpvcHMgPSBydGVfZmxvd19vcHNfZ2V0KHBv cnRfaWQsIGVycm9yKTsNCj4gPiArDQo+ID4gKwlpZiAodW5saWtlbHkoIW9wcykpDQo+ID4gKwkJ cmV0dXJuIC1ydGVfZXJybm87DQo+ID4gKwlpZiAobGlrZWx5KCEhb3BzLT50dW5uZWxfbWF0Y2gp KSB7DQo+ID4gKwkJcmV0dXJuIGZsb3dfZXJyKHBvcnRfaWQsDQo+ID4gKwkJCQlvcHMtPnR1bm5l bF9tYXRjaChkZXYsIHR1bm5lbCwgaXRlbXMsDQo+ID4gKwkJCQkJCSAgbnVtX29mX2l0ZW1zLCBl cnJvciksDQo+ID4gKwkJCQllcnJvcik7DQo+ID4gKwl9DQo+ID4gKwlyZXR1cm4gcnRlX2Zsb3df ZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkJICBSVEVfRkxPV19FUlJPUl9UWVBF X1VOU1BFQ0lGSUVELA0KPiA+ICsJCQkJICBOVUxMLCBydGVfc3RyZXJyb3IoRU5PVFNVUCkpOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQNCj4gPiArcnRlX2Zsb3dfdHVubmVsX2dldF9yZXN0b3Jl X2luZm8odWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQkJCSBzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ ID4gKwkJCQkgc3RydWN0IHJ0ZV9mbG93X3Jlc3RvcmVfaW5mbyAqcmVzdG9yZV9pbmZvLA0KPiA+ ICsJCQkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpDQo+ID4gK3sNCj4gPiArCXN0cnVj dCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNv bnN0IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwg ZXJyb3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4g LXJ0ZV9lcnJubzsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPmdldF9yZXN0b3JlX2luZm8pKSB7 DQo+ID4gKwkJcmV0dXJuIGZsb3dfZXJyKHBvcnRfaWQsDQo+ID4gKwkJCQlvcHMtPmdldF9yZXN0 b3JlX2luZm8oZGV2LCBtLCByZXN0b3JlX2luZm8sDQo+ID4gKwkJCQkJCSAgICAgIGVycm9yKSwN Cj4gPiArCQkJCWVycm9yKTsNCj4gPiArCX0NCj4gPiArCXJldHVybiBydGVfZmxvd19lcnJvcl9z ZXQoZXJyb3IsIEVOT1RTVVAsDQo+ID4gKwkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVfVU5TUEVD SUZJRUQsDQo+ID4gKwkJCQkgIE5VTEwsIHJ0ZV9zdHJlcnJvcihFTk9UU1VQKSk7DQo+ID4gK30N Cj4gPiArDQo+ID4gK2ludA0KPiA+ICtydGVfZmxvd190dW5uZWxfYWN0aW9uX2RlY2FwX3JlbGVh c2UodWludDE2X3QgcG9ydF9pZCwNCj4gPiArCQkJCSAgICAgc3RydWN0IHJ0ZV9mbG93X2FjdGlv biAqYWN0aW9ucywNCj4gPiArCQkJCSAgICAgdWludDMyX3QgbnVtX29mX2FjdGlvbnMsDQo+ID4g KwkJCQkgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IpIHsNCj4gPiArCXN0cnVjdCBy dGVfZXRoX2RldiAqZGV2ID0gJnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0 IHN0cnVjdCBydGVfZmxvd19vcHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJy b3IpOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0 ZV9lcnJubzsNCj4gPiArCWlmIChsaWtlbHkoISFvcHMtPmFjdGlvbl9yZWxlYXNlKSkgew0KPiA+ ICsJCXJldHVybiBmbG93X2Vycihwb3J0X2lkLA0KPiA+ICsJCQkJb3BzLT5hY3Rpb25fcmVsZWFz ZShkZXYsIGFjdGlvbnMsDQo+ID4gKwkJCQkJCSAgICBudW1fb2ZfYWN0aW9ucywgZXJyb3IpLA0K PiA+ICsJCQkJZXJyb3IpOw0KPiA+ICsJfQ0KPiA+ICsJcmV0dXJuIHJ0ZV9mbG93X2Vycm9yX3Nl dChlcnJvciwgRU5PVFNVUCwNCj4gPiArCQkJCSAgUlRFX0ZMT1dfRVJST1JfVFlQRV9VTlNQRUNJ RklFRCwNCj4gPiArCQkJCSAgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsNCj4gPiArfQ0K PiA+ICsNCj4gPiAraW50DQo+ID4gK3J0ZV9mbG93X3R1bm5lbF9pdGVtX3JlbGVhc2UodWludDE2 X3QgcG9ydF9pZCwNCj4gPiArCQkJICAgICBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqaXRlbXMsDQo+ ID4gKwkJCSAgICAgdWludDMyX3QgbnVtX29mX2l0ZW1zLA0KPiA+ICsJCQkgICAgIHN0cnVjdCBy dGVfZmxvd19lcnJvciAqZXJyb3IpIHsNCj4gPiArCXN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0g JnJ0ZV9ldGhfZGV2aWNlc1twb3J0X2lkXTsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19v cHMgKm9wcyA9IHJ0ZV9mbG93X29wc19nZXQocG9ydF9pZCwgZXJyb3IpOw0KPiA+ICsNCj4gPiAr CWlmICh1bmxpa2VseSghb3BzKSkNCj4gPiArCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCWlm IChsaWtlbHkoISFvcHMtPml0ZW1fcmVsZWFzZSkpIHsNCj4gPiArCQlyZXR1cm4gZmxvd19lcnIo cG9ydF9pZCwNCj4gPiArCQkJCW9wcy0+aXRlbV9yZWxlYXNlKGRldiwgaXRlbXMsDQo+ID4gKwkJ CQkJCSAgbnVtX29mX2l0ZW1zLCBlcnJvciksDQo+ID4gKwkJCQllcnJvcik7DQo+ID4gKwl9DQo+ ID4gKwlyZXR1cm4gcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFTk9UU1VQLA0KPiA+ICsJCQkJ ICBSVEVfRkxPV19FUlJPUl9UWVBFX1VOU1BFQ0lGSUVELA0KPiA+ICsJCQkJICBOVUxMLCBydGVf c3RyZXJyb3IoRU5PVFNVUCkpOw0KPiA+ICt9DQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVf ZXRoZGV2L3J0ZV9mbG93LmgNCj4gPiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93LmggaW5k ZXggYjBlNDE5OTE5Mi4uMTM3NGI2ZTVhNyAxMDA2NDQNCj4gPiAtLS0gYS9saWIvbGlicnRlX2V0 aGRldi9ydGVfZmxvdy5oDQo+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaA0K PiA+IEBAIC0zMzI0LDYgKzMzMjQsMjAyIEBAIGludA0KPiA+ICBydGVfZmxvd19nZXRfYWdlZF9m bG93cyh1aW50MTZfdCBwb3J0X2lkLCB2b2lkICoqY29udGV4dHMsDQo+ID4gIAkJCXVpbnQzMl90 IG5iX2NvbnRleHRzLCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPg0KPiA+ICsv KiBUdW5uZWwgaW5mb3JtYXRpb24uICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiANCj4g X19ydGVfZXhwZXJpbWVudGFsIGlzIG5vdCByZXF1aXJlZCBBRkFJSyBvbiBzdHJ1Y3R1cmUgZGVm aW5pdGlvbnMsIHN0cnVjdHVyZQ0KPiBkZWZpbml0aW9ucyBhcmUgbm90IHN5bWJvbHMsIGp1c3Qg b24gZXhwb3J0ZWQgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMuDQo+IA0KPiBEaWQgeW91IGdldCBh IHNwZWNpZmljIHdhcm5pbmcsIHRoYXQgbWFkZSB5b3UgYWRkIHRoaXM/DQoNCltHcmVnb3J5IEV0 ZWxzb25dIFRoZSBhdHRyaWJ1dGUgaXMgbm90IHJlcXVpcmVkIGluIHN0cnVjdHVyZXMgZGVmaW5p dGlvbi4NCkl0J3MgcmVtb3ZlZCBpbiB2MiBwYXRjaCB2ZXJzaW9uDQoNCj4gDQo+ID4gK3N0cnVj dCBydGVfZmxvd19pcF90dW5uZWxfa2V5IHsNCj4gPiArCXJ0ZV9iZTY0X3QgdHVuX2lkOyAvKio8 IFR1bm5lbCBpZGVudGlmaWNhdGlvbi4gKi8NCj4gPiArCXVuaW9uIHsNCj4gPiArCQlzdHJ1Y3Qg ew0KPiA+ICsJCQlydGVfYmUzMl90IHNyY19hZGRyOyAvKio8IElQdjQgc291cmNlIGFkZHJlc3Mu ICovDQo+ID4gKwkJCXJ0ZV9iZTMyX3QgZHN0X2FkZHI7IC8qKjwgSVB2NCBkZXN0aW5hdGlvbiBh ZGRyZXNzLg0KPiAqLw0KPiA+ICsJCX0gaXB2NDsNCj4gPiArCQlzdHJ1Y3Qgew0KPiA+ICsJCQl1 aW50OF90IHNyY19hZGRyWzE2XTsgLyoqPCBJUHY2IHNvdXJjZSBhZGRyZXNzLiAqLw0KPiA+ICsJ CQl1aW50OF90IGRzdF9hZGRyWzE2XTsgLyoqPCBJUHY2IGRlc3RpbmF0aW9uIGFkZHJlc3MuDQo+ ICovDQo+ID4gKwkJfSBpcHY2Ow0KPiA+ICsJfSB1Ow0KPiA+ICsJYm9vbCAgICAgICBpc19pcHY2 OyAvKio8IFRydWUgZm9yIHZhbGlkIElQdjYgZmllbGRzLiBPdGhlcndpc2UgSVB2NC4gKi8NCj4g PiArCXJ0ZV9iZTE2X3QgdHVuX2ZsYWdzOyAvKio8IFR1bm5lbCBmbGFncy4gKi8NCj4gPiArCXVp bnQ4X3QgICAgdG9zOyAvKio8IFRPUyBmb3IgSVB2NCwgVEMgZm9yIElQdjYuICovDQo+ID4gKwl1 aW50OF90ICAgIHR0bDsgLyoqPCBUVEwgZm9yIElQdjQsIEhMIGZvciBJUHY2LiAqLw0KPiA+ICsJ cnRlX2JlMzJfdCBsYWJlbDsgLyoqPCBGbG93IExhYmVsIGZvciBJUHY2LiAqLw0KPiA+ICsJcnRl X2JlMTZfdCB0cF9zcmM7IC8qKjwgVHVubmVsIHBvcnQgc291cmNlLiAqLw0KPiA+ICsJcnRlX2Jl MTZfdCB0cF9kc3Q7IC8qKjwgVHVubmVsIHBvcnQgZGVzdGluYXRpb24uICovIH07DQo+ID4gKw0K PiA+ICsNCj4gPiArLyogVHVubmVsIGhhcyBhIHR5cGUgYW5kIHRoZSBrZXkgaW5mb3JtYXRpb24u ICovIF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsIHsNCj4g PiArCS8qKg0KPiA+ICsJICogVHVubmVsIHR5cGUsIGZvciBleGFtcGxlIFJURV9GTE9XX0lURU1f VFlQRV9WWExBTiwNCj4gPiArCSAqIFJURV9GTE9XX0lURU1fVFlQRV9OVkdSRSBldGMuDQo+ID4g KwkgKi8NCj4gPiArCWVudW0gcnRlX2Zsb3dfaXRlbV90eXBlCQl0eXBlOw0KPiA+ICsJc3RydWN0 IHJ0ZV9mbG93X2lwX3R1bm5lbF9rZXkJdHVuX2luZm87IC8qKjwgVHVubmVsIGtleSBpbmZvLiAq Lw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEluZGljYXRlIHRoYXQgdGhlIHBh Y2tldCBoYXMgYSB0dW5uZWwuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9GTE9XX1JFU1RP UkVfSU5GT19UVU5ORUwgICgxVUxMIDw8IDApDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogSW5k aWNhdGUgdGhhdCB0aGUgcGFja2V0IGhhcyBhIG5vbiBkZWNhcHN1bGF0ZWQgdHVubmVsIGhlYWRl ci4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgUlRFX0ZMT1dfUkVTVE9SRV9JTkZPX0VOQ0FQU1VM QVRFRCAgKDFVTEwgPDwgMSkNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBJbmRpY2F0ZSB0aGF0 IHRoZSBwYWNrZXQgaGFzIGEgZ3JvdXBfaWQuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5lIFJURV9G TE9XX1JFU1RPUkVfSU5GT19HUk9VUF9JRCAgKDFVTEwgPDwgMikNCj4gPiArDQo+ID4gKy8qKg0K PiA+ICsgKiBSZXN0b3JlIGluZm9ybWF0aW9uIHN0cnVjdHVyZSB0byBjb21tdW5pY2F0ZSB0aGUg Y3VycmVudCBwYWNrZXQNCj4gPiArcHJvY2Vzc2luZw0KPiA+ICsgKiBzdGF0ZSB3aGVuIHNvbWUg b2YgdGhlIHByb2Nlc3NpbmcgcGlwZWxpbmUgaXMgZG9uZSBpbiBoYXJkd2FyZSBhbmQNCj4gPiAr c2hvdWxkDQo+ID4gKyAqIGNvbnRpbnVlIGluIHNvZnR3YXJlLg0KPiA+ICsgKi8NCj4gPiArX19y dGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0cnVjdCBydGVfZmxvd19yZXN0b3JlX2luZm8gew0KPiA+ ICsJLyoqDQo+ID4gKwkgKiBCaXR3aXNlIGZsYWdzIChSVEVfRkxPV19SRVNUT1JFX0lORk9fKikg dG8gaW5kaWNhdGUgdmFsaWRhdGlvbg0KPiBvZg0KPiA+ICsJICogb3RoZXIgZmllbGRzIGluIHN0 cnVjdCBydGVfZmxvd19yZXN0b3JlX2luZm8uDQo+ID4gKwkgKi8NCj4gPiArCXVpbnQ2NF90IGZs YWdzOw0KPiA+ICsJdWludDMyX3QgZ3JvdXBfaWQ7IC8qKjwgR3JvdXAgSUQuICovDQo+ID4gKwlz dHJ1Y3QgcnRlX2Zsb3dfdHVubmVsIHR1bm5lbDsgLyoqPCBUdW5uZWwgaW5mb3JtYXRpb24uICov IH07DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQWxsb2NhdGUgYW4gYXJyYXkgb2YgYWN0aW9u cyB0byBiZSB1c2VkIGluIHJ0ZV9mbG93X2NyZWF0ZSwgdG8NCj4gPiAraW1wbGVtZW50DQo+ID4g KyAqIHR1bm5lbC1kZWNhcC1zZXQgZm9yIHRoZSBnaXZlbiB0dW5uZWwuDQo+ID4gKyAqIFNhbXBs ZSB1c2FnZToNCj4gPiArICogICBhY3Rpb25zIHZ4bGFuX2RlY2FwIC8gdHVubmVsLWRlY2FwLXNl dCh0dW5uZWwgcHJvcGVydGllcykgLw0KPiA+ICsgKiAgICAgICAgICAgIGp1bXAgZ3JvdXAgMCAv IGVuZA0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ICsgKiAgIFBvcnQgaWRl bnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbVtpbl0gdHVubmVsDQo+ ID4gKyAqICAgVHVubmVsIHByb3BlcnRpZXMuDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGFjdGlvbnMN Cj4gPiArICogICBBcnJheSBvZiBhY3Rpb25zIHRvIGJlIGFsbG9jYXRlZCBieSB0aGUgUE1ELiBU aGlzIGFycmF5IHNob3VsZCBiZQ0KPiA+ICsgKiAgIGNvbmNhdGVuYXRlZCB3aXRoIHRoZSBhY3Rp b25zIGFycmF5IHByb3ZpZGVkIHRvIHJ0ZV9mbG93X2NyZWF0ZS4NCj4gPiArICogQHBhcmFtW291 dF0gbnVtX29mX2FjdGlvbnMNCj4gPiArICogICBOdW1iZXIgb2YgYWN0aW9ucyBhbGxvY2F0ZWQu DQo+ID4gKyAqIEBwYXJhbVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVy cm9yIHJlcG9ydGluZyBpZiBub3QgTlVMTC4gUE1EcyBpbml0aWFsaXplIHRoaXMNCj4gPiArICog ICBzdHJ1Y3R1cmUgaW4gY2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0 dXJuDQo+ID4gKyAqICAgMCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVy d2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1l bnRhbA0KPiA+ICtpbnQNCj4gPiArcnRlX2Zsb3dfdHVubmVsX2RlY2FwX3NldCh1aW50MTZfdCBw b3J0X2lkLA0KPiA+ICsJCQkgIHN0cnVjdCBydGVfZmxvd190dW5uZWwgKnR1bm5lbCwNCj4gPiAr CQkJICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICoqYWN0aW9ucywNCj4gPiArCQkJICB1aW50MzJf dCAqbnVtX29mX2FjdGlvbnMsDQo+ID4gKwkJCSAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJv cik7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogQWxsb2NhdGUgYW4gYXJyYXkgb2YgaXRlbXMg dG8gYmUgdXNlZCBpbiBydGVfZmxvd19jcmVhdGUsIHRvDQo+ID4gK2ltcGxlbWVudA0KPiA+ICsg KiB0dW5uZWwtbWF0Y2ggZm9yIHRoZSBnaXZlbiB0dW5uZWwuDQo+ID4gKyAqIFNhbXBsZSB1c2Fn ZToNCj4gPiArICogICBwYXR0ZXJuIHR1bm5lbC1tYXRjaCh0dW5uZWwgcHJvcGVydGllcykgLyBv dXRlci1oZWFkZXItbWF0Y2hlcyAvDQo+ID4gKyAqICAgICAgICAgICBpbm5lci1oZWFkZXItbWF0 Y2hlcyAvIGVuZA0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ICsgKiAgIFBv cnQgaWRlbnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbVtpbl0gdHVu bmVsDQo+ID4gKyAqICAgVHVubmVsIHByb3BlcnRpZXMuDQo+ID4gKyAqIEBwYXJhbVtvdXRdIGl0 ZW1zDQo+ID4gKyAqICAgQXJyYXkgb2YgaXRlbXMgdG8gYmUgYWxsb2NhdGVkIGJ5IHRoZSBQTUQu IFRoaXMgYXJyYXkgc2hvdWxkIGJlDQo+ID4gKyAqICAgY29uY2F0ZW5hdGVkIHdpdGggdGhlIGl0 ZW1zIGFycmF5IHByb3ZpZGVkIHRvIHJ0ZV9mbG93X2NyZWF0ZS4NCj4gPiArICogQHBhcmFtW291 dF0gbnVtX29mX2l0ZW1zDQo+ID4gKyAqICAgTnVtYmVyIG9mIGl0ZW1zIGFsbG9jYXRlZC4NCj4g PiArICogQHBhcmFtW291dF0gZXJyb3INCj4gPiArICogICBQZXJmb3JtIHZlcmJvc2UgZXJyb3Ig cmVwb3J0aW5nIGlmIG5vdCBOVUxMLiBQTURzIGluaXRpYWxpemUgdGhpcw0KPiA+ICsgKiAgIHN0 cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4gKyAqDQo+ID4gKyAqIEByZXR1cm4N Cj4gPiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3RoZXJ3aXNl IGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFs DQo+ID4gK2ludA0KPiA+ICtydGVfZmxvd190dW5uZWxfbWF0Y2godWludDE2X3QgcG9ydF9pZCwN Cj4gPiArCQkgICAgICBzdHJ1Y3QgcnRlX2Zsb3dfdHVubmVsICp0dW5uZWwsDQo+ID4gKwkJICAg ICAgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gKippdGVtcywNCj4gPiArCQkgICAgICB1aW50MzJfdCAq bnVtX29mX2l0ZW1zLA0KPiA+ICsJCSAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3Ip Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIFBvcHVsYXRlIHRoZSBjdXJyZW50IHBhY2tldCBw cm9jZXNzaW5nIHN0YXRlLCBpZiBleGlzdHMsIGZvciB0aGUgZ2l2ZW4NCj4gbWJ1Zi4NCj4gPiAr ICoNCj4gPiArICogQHBhcmFtIHBvcnRfaWQNCj4gPiArICogICBQb3J0IGlkZW50aWZpZXIgb2Yg RXRoZXJuZXQgZGV2aWNlLg0KPiA+ICsgKiBAcGFyYW1baW5dIG0NCj4gPiArICogICBNYnVmIHN0 cnVjdC4NCj4gPiArICogQHBhcmFtW291dF0gaW5mbw0KPiA+ICsgKiAgIFJlc3RvcmUgaW5mb3Jt YXRpb24uIFVwb24gc3VjY2VzcyBjb250YWlucyB0aGUgSFcgc3RhdGUuDQo+ID4gKyAqIEBwYXJh bVtvdXRdIGVycm9yDQo+ID4gKyAqICAgUGVyZm9ybSB2ZXJib3NlIGVycm9yIHJlcG9ydGluZyBp ZiBub3QgTlVMTC4gUE1EcyBpbml0aWFsaXplIHRoaXMNCj4gPiArICogICBzdHJ1Y3R1cmUgaW4g Y2FzZSBvZiBlcnJvciBvbmx5Lg0KPiA+ICsgKg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAg MCBvbiBzdWNjZXNzLCBhIG5lZ2F0aXZlIGVycm5vIHZhbHVlIG90aGVyd2lzZSBhbmQgcnRlX2Vy cm5vIGlzIHNldC4NCj4gPiArICovDQo+ID4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtpbnQN Cj4gPiArcnRlX2Zsb3dfdHVubmVsX2dldF9yZXN0b3JlX2luZm8odWludDE2X3QgcG9ydF9pZCwN Cj4gPiArCQkJCSBzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gKwkJCQkgc3RydWN0IHJ0ZV9mbG93 X3Jlc3RvcmVfaW5mbyAqaW5mbywNCj4gPiArCQkJCSBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVy cm9yKTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBSZWxlYXNlIHRoZSBhY3Rpb24gYXJyYXkg YXMgYWxsb2NhdGVkIGJ5IHJ0ZV9mbG93X3R1bm5lbF9kZWNhcF9zZXQuDQo+ID4gKyAqDQo+ID4g KyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4gKyAqICAgUG9ydCBpZGVudGlmaWVyIG9mIEV0aGVybmV0 IGRldmljZS4NCj4gPiArICogQHBhcmFtW2luXSBhY3Rpb25zDQo+ID4gKyAqICAgQXJyYXkgb2Yg YWN0aW9ucyB0byBiZSByZWxlYXNlZC4NCj4gPiArICogQHBhcmFtW2luXSBudW1fb2ZfYWN0aW9u cw0KPiA+ICsgKiAgIE51bWJlciBvZiBlbGVtZW50cyBpbiBhY3Rpb25zIGFycmF5Lg0KPiA+ICsg KiBAcGFyYW1bb3V0XSBlcnJvcg0KPiA+ICsgKiAgIFBlcmZvcm0gdmVyYm9zZSBlcnJvciByZXBv cnRpbmcgaWYgbm90IE5VTEwuIFBNRHMgaW5pdGlhbGl6ZSB0aGlzDQo+ID4gKyAqICAgc3RydWN0 dXJlIGluIGNhc2Ugb2YgZXJyb3Igb25seS4NCj4gPiArICoNCj4gPiArICogQHJldHVybg0KPiA+ ICsgKiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJubyB2YWx1ZSBvdGhlcndpc2UgYW5k IHJ0ZV9lcnJubyBpcyBzZXQuDQo+ID4gKyAqLw0KPiA+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4g PiAraW50DQo+ID4gK3J0ZV9mbG93X3R1bm5lbF9hY3Rpb25fZGVjYXBfcmVsZWFzZSh1aW50MTZf dCBwb3J0X2lkLA0KPiA+ICsJCQkJICAgICBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uICphY3Rpb25z LA0KPiA+ICsJCQkJICAgICB1aW50MzJfdCBudW1fb2ZfYWN0aW9ucywNCj4gPiArCQkJCSAgICAg c3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog UmVsZWFzZSB0aGUgaXRlbSBhcnJheSBhcyBhbGxvY2F0ZWQgYnkgcnRlX2Zsb3dfdHVubmVsX21h dGNoLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gcG9ydF9pZA0KPiA+ICsgKiAgIFBvcnQgaWRl bnRpZmllciBvZiBFdGhlcm5ldCBkZXZpY2UuDQo+ID4gKyAqIEBwYXJhbVtpbl0gaXRlbXMNCj4g PiArICogICBBcnJheSBvZiBpdGVtcyB0byBiZSByZWxlYXNlZC4NCj4gPiArICogQHBhcmFtW2lu XSBudW1fb2ZfaXRlbXMNCj4gPiArICogICBOdW1iZXIgb2YgZWxlbWVudHMgaW4gaXRlbSBhcnJh eS4NCj4gPiArICogQHBhcmFtW291dF0gZXJyb3INCj4gPiArICogICBQZXJmb3JtIHZlcmJvc2Ug ZXJyb3IgcmVwb3J0aW5nIGlmIG5vdCBOVUxMLiBQTURzIGluaXRpYWxpemUgdGhpcw0KPiA+ICsg KiAgIHN0cnVjdHVyZSBpbiBjYXNlIG9mIGVycm9yIG9ubHkuDQo+ID4gKyAqDQo+ID4gKyAqIEBy ZXR1cm4NCj4gPiArICogICAwIG9uIHN1Y2Nlc3MsIGEgbmVnYXRpdmUgZXJybm8gdmFsdWUgb3Ro ZXJ3aXNlIGFuZCBydGVfZXJybm8gaXMgc2V0Lg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJp bWVudGFsDQo+ID4gK2ludA0KPiA+ICtydGVfZmxvd190dW5uZWxfaXRlbV9yZWxlYXNlKHVpbnQx Nl90IHBvcnRfaWQsDQo+ID4gKwkJCSAgICAgc3RydWN0IHJ0ZV9mbG93X2l0ZW0gKml0ZW1zLA0K PiA+ICsJCQkgICAgIHVpbnQzMl90IG51bV9vZl9pdGVtcywNCj4gPiArCQkJICAgICBzdHJ1Y3Qg cnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsNCj4gPiAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4gIH0N Cj4gPiAgI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9mbG93 X2RyaXZlci5oDQo+ID4gYi9saWIvbGlicnRlX2V0aGRldi9ydGVfZmxvd19kcml2ZXIuaA0KPiA+ IGluZGV4IDg4MWNjNDY5YjcuLmFkMWQ3YTJjZGMgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL2xpYnJ0 ZV9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmgNCj4gPiArKysgYi9saWIvbGlicnRlX2V0aGRldi9y dGVfZmxvd19kcml2ZXIuaA0KPiA+IEBAIC0xMDcsNiArMTA3LDM4IEBAIHN0cnVjdCBydGVfZmxv d19vcHMgew0KPiA+ICAJCSB2b2lkICoqY29udGV4dCwNCj4gPiAgCQkgdWludDMyX3QgbmJfY29u dGV4dHMsDQo+ID4gIAkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyKTsNCj4gPiArCS8qKiBT ZWUgcnRlX2Zsb3dfdHVubmVsX2RlY2FwX3NldCgpICovDQo+ID4gKwlpbnQgKCp0dW5uZWxfZGVj YXBfc2V0KQ0KPiA+ICsJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQkgc3RydWN0 IHJ0ZV9mbG93X3R1bm5lbCAqdHVubmVsLA0KPiA+ICsJCSBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9u ICoqcG1kX2FjdGlvbnMsDQo+ID4gKwkJIHVpbnQzMl90ICpudW1fb2ZfYWN0aW9ucywNCj4gPiAr CQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnIpOw0KPiA+ICsJLyoqIFNlZSBydGVfZmxvd190 dW5uZWxfbWF0Y2goKSAqLw0KPiA+ICsJaW50ICgqdHVubmVsX21hdGNoKQ0KPiA+ICsJCShzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93X3R1bm5lbCAqdHVu bmVsLA0KPiA+ICsJCSBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqKnBtZF9pdGVtcywNCj4gPiArCQkg dWludDMyX3QgKm51bV9vZl9pdGVtcywNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICpl cnIpOw0KPiA+ICsJLyoqIFNlZSBydGVfZmxvd19nZXRfcnRlX2Zsb3dfcmVzdG9yZV9pbmZvKCkg Ki8NCj4gPiArCWludCAoKmdldF9yZXN0b3JlX2luZm8pDQo+ID4gKwkJKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICsJCSBzdHJ1Y3QgcnRlX21idWYgKm0sDQo+ID4gKwkJIHN0cnVjdCBy dGVfZmxvd19yZXN0b3JlX2luZm8gKmluZm8sDQo+ID4gKwkJIHN0cnVjdCBydGVfZmxvd19lcnJv ciAqZXJyKTsNCj4gPiArCS8qKiBTZWUgcnRlX2Zsb3dfYWN0aW9uX3R1bm5lbF9kZWNhcF9yZWxl YXNlKCkgKi8NCj4gPiArCWludCAoKmFjdGlvbl9yZWxlYXNlKQ0KPiA+ICsJCShzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiwNCj4gPiArCQkgc3RydWN0IHJ0ZV9mbG93X2FjdGlvbiAqcG1kX2FjdGlv bnMsDQo+ID4gKwkJIHVpbnQzMl90IG51bV9vZl9hY3Rpb25zLA0KPiA+ICsJCSBzdHJ1Y3QgcnRl X2Zsb3dfZXJyb3IgKmVycik7DQo+ID4gKwkvKiogU2VlIHJ0ZV9mbG93X2l0ZW1fcmVsZWFzZSgp ICovDQo+ID4gKwlpbnQgKCppdGVtX3JlbGVhc2UpDQo+ID4gKwkJKHN0cnVjdCBydGVfZXRoX2Rl diAqZGV2LA0KPiA+ICsJCSBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSAqcG1kX2l0ZW1zLA0KPiA+ICsJ CSB1aW50MzJfdCBudW1fb2ZfaXRlbXMsDQo+ID4gKwkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyKTsNCj4gPiAgfTsNCj4gPg0KPiA+ICAvKioNCj4gPiAtLQ0KPiA+IDIuMjUuMQ0KPiA+DQo=