From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 49969A034C; Tue, 30 Aug 2022 14:11:09 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DCEFB40F18; Tue, 30 Aug 2022 14:11:08 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 6973040F17 for ; Tue, 30 Aug 2022 14:11:07 +0200 (CEST) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27U3RCgY009381; Tue, 30 Aug 2022 05:08:57 -0700 Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2040.outbound.protection.outlook.com [104.47.74.40]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3j7jsnc0ux-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Aug 2022 05:08:57 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QjHQG8tqyq+v4qvMZWzl5he40dz3iTb30KqkcvkCa4KJYvrYYiTHqojch5jT9o8P0pVjaWyumB1apXtBd8UZfOSxokU/h7iWFsyI0/jWyAQvkFGpPLtO36YvALXqsJRzdgfAMIYDqDK/h63VXJvGsVLCN/qXrV9qyv77HHXbFTHFfqs3xiqrTmNhJHUDF5VmfrYbSyukzkeBLylEmRIEpkU+PJ8pi5vUB203OZIkQwCIRPqjA3aySacoDIkKSnbyWf2ukOxIRByR2xVWXEAuK14qYC4tlshCTUxewfPXV+oyaV34jG7eBuFkBzoIYdSXdcVL9Mv2Ra1dGqE48uDqHg== 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=gQzPflBudAa/nJNYLf25XDrT2cuoa7Vvma1lhT89pOs=; b=CfG+Aq1jkVnmjLfVjkgC93CMuYggQr0902/RXaeZ9mv1aqBlZO/mbMaHjMJF98AJvDDmhKT1rJG4MOech9sJQMzoTE4eFureyv5QWmEGl7PYPhnbDCsLYJfhgvw25e+2EU2vjKnf6oajKUiDvVrXS4dh8HGR74wTumG0yWqV5Q+FT/uu3zO6W5LD3c9iPmcz/OA/Vs6gU9PZH4t3wNpnjDjpxwCJEw6Y/5J+VGqRcpDc1r/FUWpXvIgKvlZUoAgv1U3+2qdYO0FX2wPM12cq/OjzYjoDmTVyvCKAGXtiEtzGX70qGxoWgM0w+tU7b/Aa4bE46B8la3hjtBXe737tdQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gQzPflBudAa/nJNYLf25XDrT2cuoa7Vvma1lhT89pOs=; b=lSx8TCOLXWUX3AFN1iRymPX4qppSIuIt+FsC8RaN2jHNcAFnh9liB/NgHPCyDKKxhjRH69BEihUAGsVI1WlC2WO6+1vmXGASHWanjtfcJicCUYlU7ZBKrA3lcJLfNe/eKB4AfAZ0bxlHxN3VT42BICEYdJwya/xfssn3q8W7UmE= Received: from PH0PR18MB4750.namprd18.prod.outlook.com (2603:10b6:510:cd::11) by DM6PR18MB2905.namprd18.prod.outlook.com (2603:10b6:5:167::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.21; Tue, 30 Aug 2022 12:08:54 +0000 Received: from PH0PR18MB4750.namprd18.prod.outlook.com ([fe80::c0a3:b589:b82b:6546]) by PH0PR18MB4750.namprd18.prod.outlook.com ([fe80::c0a3:b589:b82b:6546%2]) with mapi id 15.20.5566.021; Tue, 30 Aug 2022 12:08:54 +0000 From: Hanumanth Reddy Pothula To: Ferruh Yigit , "Ding, Xuan" , Thomas Monjalon , Andrew Rybchenko CC: "dev@dpdk.org" , "Wu, WenxuanX" , "Li, Xiaoyun" , "stephen@networkplumber.org" , "Wang, YuanX" , "mdr@ashroe.eu" , "Zhang, Yuying" , "Zhang, Qi Z" , "viacheslavo@nvidia.com" , Jerin Jacob Kollanukkaran , Nithin Kumar Dabilpuram Subject: RE: [EXT] Re: [PATCH v2 1/3] ethdev: introduce pool sort capability Thread-Topic: [EXT] Re: [PATCH v2 1/3] ethdev: introduce pool sort capability Thread-Index: AQHYrnCMDyPkZ/Wts0iubYwzR+1tZq27420AgAJddwCACL4lQA== Date: Tue, 30 Aug 2022 12:08:54 +0000 Message-ID: References: <20220812104648.1019978-1-hpothula@marvell.com> <20220812172451.1208933-1-hpothula@marvell.com> <76e4091d-4037-ef5b-377f-7daa183e27d3@xilinx.com> In-Reply-To: <76e4091d-4037-ef5b-377f-7daa183e27d3@xilinx.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 84e104b1-c6c1-4774-639f-08da8a806892 x-ms-traffictypediagnostic: DM6PR18MB2905:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: h9zDnsvzCzwE4p3sSbOfFWfVw5AyZKZRiXrZIsenNonLdzjuQIYRUZ2Ic/4paqrLkIAp4bvv7Bkg9d5n6pDopvdxve/4R43xNOwuLMPAhvWRj/G3+d3H8BD9pzZDxZUg0c6QhtKjlgFArQumnoSvb5Ouq2H4Ix8n0VrIzfZ8r6ZTmDZlUsMwmq4nNgEEmxzrQQoH9Ku0DVhtRc4yGwfEXTNDTrheRRZ9+qAv4aZDdJalZyPsHGGqTiH2i/LcHqlLhFYp3u8VCJUW7xhBbQvlc3gh/ugsE5OV/+myfH1H8v9WsCxVdnVh/qsvbdGRQQtAqIF13ulNglWmyhktyPShXTuIYZ4V2CH0C1z/9UbVk2HTSTyvfWQrHQOXiMYnd5ACoYdhWUdzs/EPXdhK3w/uMAGUM66OiONDybCYrERIyZgniKWMYubjW1gytojzYnfORQxTSkQLwDBS28Gb/E+v5nEkYL5jnYtTY6ofc5MAt6nJJxUDGpW99LLXZh0cm2Mz4cxs7B+2R5vM785SEfjIMlMB7pavFKK6O8IeFn5bctEY2s9Qao4PlMAVvTYjs0GSjy+Kki74ClnTiADHiBUKS3kr+CcY93IFq7gkws/L6THfWDNt+6bAFpvT9KnumvZ7Rfior0/v1keQ4QA9/p2cdsPs5Cu+nO3XiS9cWngoq70cXGe188r/VXQdBrjd/0fepAV7kbzrtQvddhP4FLfvG4T3UmRs24+E36UE9oBdSmu2xJsIqAX0VQn0vKStmd32 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4750.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(39860400002)(396003)(136003)(366004)(376002)(346002)(55016003)(4326008)(2906002)(26005)(66446008)(7416002)(8676002)(66946007)(76116006)(66476007)(66556008)(64756008)(41300700001)(9686003)(6506007)(8936002)(53546011)(110136005)(316002)(33656002)(54906003)(7696005)(71200400001)(478600001)(107886003)(86362001)(83380400001)(38070700005)(186003)(122000001)(5660300002)(30864003)(38100700002)(52536014); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YzVaOXZFTmUvYlRkWkV5UkRIdGNadCtoNGZpKzBpYkRzZ1VQZkhHOEoyUk1L?= =?utf-8?B?T2pLbjk0K2xvQnpJczhCdHBlTGg1VCtoQ0kxTTVUTzRMekNodytnaWU4OU0z?= =?utf-8?B?clpiZGp2eE44SWdCVTlzdmkvaVM1bDIvOEZWT21aeHlBTWJFN3kvTEVjclF0?= =?utf-8?B?V2FMTk01K3gvTmF5UXhvZ05zekpyRjJqWXh4WjBIVFNQRGdEc0V3eUJSQ3JM?= =?utf-8?B?SjZrQTRTQS8wQTkxZVZUemFHaVRLVmI5NDBWYjlkS2ZZdlJlRFJldGtBUVJK?= =?utf-8?B?Y1lyNVltQnZNSXlCL2tLREx3ODJzMlgwdnNncTRORUlZalY1Vi9LRmhFZ3Jo?= =?utf-8?B?YW85MjlKck5qZE5MaTVyWmdkbnhtelQ1TUVENHJJZE1iUGxpZHdGWnp5R2R2?= =?utf-8?B?WWVBUERBYjlwNUMrd05UWlFGOEphWU0xMU9lSnpZQlRTT0xDZ01hTWtmb2gy?= =?utf-8?B?YnBGbUFLajNpb3BIQnVlNlE3djRtcHNDNVhtYXpKM0tISmNlR1QvdTY1RWlG?= =?utf-8?B?ZERSNEFxVFhqZnAwR29DWFJnOXg2NXRvMnJsYTRNTGI2NWd1OWlpaHpONVND?= =?utf-8?B?SkNzK2I4TVZmU3VXWHlJTHJtT1A4WjlYTXAzcHFhUDZJWEU4UUE2UUVrT2xO?= =?utf-8?B?bURHdnlvZTZ0am81amtjRTFPUEJEU3VtSHFISjJncWNaN3EwNi9RQmllYnVS?= =?utf-8?B?YXV3amg3MXhUeE5FTVRZTkx0UkRRUWpHam8vTjhzdzJtK2FVd1BYSmFGbmZZ?= =?utf-8?B?eUFyTnV4YURiYk9hd1RidU1tckx2L2xPWWlTRGpXNEJsMlFhaUs1T0VlVVVY?= =?utf-8?B?OVJrNUFYbmpBZEdtK1p5SWV1RUF1YURrTXZqaGNiU2k2ZVhaK0FXRUV0bjdS?= =?utf-8?B?cGRBbVhNNXJ5c1F5RDFQSG1zYlBIU01yWWNld0pjbnY5T0xta3luUmQ4ajFJ?= =?utf-8?B?aHgzNjBnYVB6YjFPS3o2ZkNvRTRxNHR4azM5YmUwZitNVXQrTkMwMG1iZjUv?= =?utf-8?B?VnppeFdYVzJIT1k5cDlpU3dCdTk1YVBIY0crWG1Sc1V6M29tc1JVakM4VjJQ?= =?utf-8?B?QUNTcUpTUEpEdDl6S0ZmczFGaVd5ejdhRm0vMEJ5VVNWRm1KVDJBVGNZeU1p?= =?utf-8?B?VDNLRjMzSngwQllrbW5wL1F5OTF4aTJvQXhXNVY4UllxeEtCbWY2dUJGUytP?= =?utf-8?B?UGh4NEc1U2xVT2hSd0w0TTZGN29DRjF3aGZJUzJibHYraldHMVFkekVNbWpW?= =?utf-8?B?ZGdidDdWYzdQN1hIQSs2bkVtd0tJZHNRV0t5c05LdEVFQXBPQXdKWFljbDlG?= =?utf-8?B?dW15cE1HQ1BTZHJ1NnBuUThVVHAxUXhzVDRDWEtUVW81RDdwSGFYWTBqSnp5?= =?utf-8?B?Q3hMem5zVzRrQzltQjhWa3lia004LytQSWVVYjZncStEVGNDaFE2aFFrUHQ4?= =?utf-8?B?ZHlnZHpHUDBBWlN4WFJZREJINlZweHdrditaeWxDMnlnOVZiYmFpODdJeXhI?= =?utf-8?B?RStiZmlHRURNY0dtbGVyZmh4TGcweU1CNWt1NEFDSk03QllLZFZRUmtKbVlI?= =?utf-8?B?d1FxbzNUSm9HUjZ6YTVKK1JBVDRPZUhkc1B3eFhKZ1MvTzJnN3NDaDhPWm1l?= =?utf-8?B?MFd6RStHQ2xyL0k4WjBySFhIRHlPMmRnRC9jWHh1SkJXdllXRjR6NVQ5Y2dp?= =?utf-8?B?UnJnNG9OTDlnNWVKOHFRczZCbE5Vd044S3dEMFZENkU3MGdhVy9JajRvYUZC?= =?utf-8?B?WHhRNHFkQkJ4U1REbFZ2TmxadUtuMjZFUDRFM25nVHdvOHovUnVOZElwV2Vy?= =?utf-8?B?Wkl0T3dyVFVJOHNCaHZEK0FPL1lnRTJTLzZTZi9Xbm9OYjA3djZzU0hzamtJ?= =?utf-8?B?ckRGQ2F4U2QxWVpNdjBzODN0N0d4OXVrM2pXRnh5WXRJa3pxSkJPRVc5R1hI?= =?utf-8?B?a1Q0Y2RiWitMZVcvZ3dRcm1nQllnUS9zQ2RaSXkvTjl0eUhFeHhONmNOMTFH?= =?utf-8?B?Ym5IeUlMd1JyMStqNHlHdnNtOFVEb0ZieWdFNWFJbFhiQlFrVDNheWlkWXJl?= =?utf-8?B?QmlQYnJaV1YwQUwvajlnSVkvY3IxS2hqOVRQTFh2OERUdXRKczlrMVFyNytn?= =?utf-8?Q?9O/2+kn5icYX7JcZyT4gs9xPn?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4750.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 84e104b1-c6c1-4774-639f-08da8a806892 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2022 12:08:54.0749 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: yA2cNm2Ap3MTcAU6jHSRrAOlvdcl+ra+QvzRN89fwB7laiU57aVU8hD+fdGIpMYP/XLPTqZeWtQot/PXlOs1fQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR18MB2905 X-Proofpoint-ORIG-GUID: LLnrnndaKy38AVqAEP51zdc5Hf-yIZnp X-Proofpoint-GUID: LLnrnndaKy38AVqAEP51zdc5Hf-yIZnp X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-30_06,2022-08-30_01,2022-06-22_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRmVycnVoIFlpZ2l0IDxm ZXJydWgueWlnaXRAeGlsaW54LmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMjQsIDIw MjIgOTowNCBQTQ0KPiBUbzogRGluZywgWHVhbiA8eHVhbi5kaW5nQGludGVsLmNvbT47IEhhbnVt YW50aCBSZWRkeSBQb3RodWxhDQo+IDxocG90aHVsYUBtYXJ2ZWxsLmNvbT47IFRob21hcyBNb25q YWxvbiA8dGhvbWFzQG1vbmphbG9uLm5ldD47IEFuZHJldw0KPiBSeWJjaGVua28gPGFuZHJldy5y eWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiBDYzogZGV2QGRwZGsub3JnOyBXdSwgV2VueHVhblgg PHdlbnh1YW54Lnd1QGludGVsLmNvbT47IExpLCBYaWFveXVuDQo+IDx4aWFveXVuLmxpQGludGVs LmNvbT47IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnOyBXYW5nLCBZdWFuWA0KPiA8eXVhbngu d2FuZ0BpbnRlbC5jb20+OyBtZHJAYXNocm9lLmV1OyBaaGFuZywgWXV5aW5nDQo+IDx5dXlpbmcu emhhbmdAaW50ZWwuY29tPjsgWmhhbmcsIFFpIFogPHFpLnouemhhbmdAaW50ZWwuY29tPjsNCj4g dmlhY2hlc2xhdm9AbnZpZGlhLmNvbTsgSmVyaW4gSmFjb2IgS29sbGFudWtrYXJhbiA8amVyaW5q QG1hcnZlbGwuY29tPjsNCj4gTml0aGluIEt1bWFyIERhYmlscHVyYW0gPG5kYWJpbHB1cmFtQG1h cnZlbGwuY29tPg0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIIHYyIDEvM10gZXRoZGV2OiBp bnRyb2R1Y2UgcG9vbCBzb3J0IGNhcGFiaWxpdHkNCj4gDQo+IEV4dGVybmFsIEVtYWlsDQo+IA0K PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQoNCg0KVGhhbmtzIERpbmcgWHVhbiBhbmQgRmVycnVoIFlpZ2l0IGZv ciByZXZpZXdpbmcgdGhlIGNoYW5nZXMgYW5kIGZvciBwcm92aWRpbmcgeW91ciB2YWx1YWJsZSBm ZWVkYmFjay4NClBsZWFzZSBmaW5kIHJlc3BvbnNlcyBpbmxpbmUuDQoNCj4gT24gOC8yMy8yMDIy IDQ6MjYgQU0sIERpbmcsIFh1YW4gd3JvdGU6DQo+ID4gSGkgSGFudW1hbnRoLA0KPiA+DQo+ID4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEhhbnVtYW50aCBQb3RodWxh IDxocG90aHVsYUBtYXJ2ZWxsLmNvbT4NCj4gPj4gU2VudDogU2F0dXJkYXksIEF1Z3VzdCAxMywg MjAyMiAxOjI1IEFNDQo+ID4+IFRvOiBUaG9tYXMgTW9uamFsb24gPHRob21hc0Btb25qYWxvbi5u ZXQ+OyBGZXJydWggWWlnaXQNCj4gPj4gPGZlcnJ1aC55aWdpdEB4aWxpbnguY29tPjsgQW5kcmV3 IFJ5YmNoZW5rbw0KPiA+PiA8YW5kcmV3LnJ5YmNoZW5rb0Bva3RldGxhYnMucnU+DQo+ID4+IENj OiBkZXZAZHBkay5vcmc7IERpbmcsIFh1YW4gPHh1YW4uZGluZ0BpbnRlbC5jb20+OyBXdSwgV2Vu eHVhblgNCj4gPj4gPHdlbnh1YW54Lnd1QGludGVsLmNvbT47IExpLCBYaWFveXVuIDx4aWFveXVu LmxpQGludGVsLmNvbT47DQo+ID4+IHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnOyBXYW5nLCBZ dWFuWCA8eXVhbngud2FuZ0BpbnRlbC5jb20+Ow0KPiA+PiBtZHJAYXNocm9lLmV1OyBaaGFuZywg WXV5aW5nIDx5dXlpbmcuemhhbmdAaW50ZWwuY29tPjsgWmhhbmcsIFFpIFoNCj4gPj4gPHFpLnou emhhbmdAaW50ZWwuY29tPjsgdmlhY2hlc2xhdm9AbnZpZGlhLmNvbTsgamVyaW5qQG1hcnZlbGwu Y29tOw0KPiA+PiBuZGFiaWxwdXJhbUBtYXJ2ZWxsLmNvbTsgSGFudW1hbnRoIFBvdGh1bGEgPGhw b3RodWxhQG1hcnZlbGwuY29tPg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggdjIgMS8zXSBldGhkZXY6 IGludHJvZHVjZSBwb29sIHNvcnQgY2FwYWJpbGl0eQ0KPiA+Pg0KPiA+PiBQcmVzZW50bHksIHRo ZSAnQnVmZmVyIFNwbGl0JyBmZWF0dXJlIHN1cHBvcnRzIHNlbmRpbmcgbXVsdGlwbGUNCj4gPj4g c2VnbWVudHMgb2YgdGhlIHJlY2VpdmVkIHBhY2tldCB0byBQTUQsIHdoaWNoIHByb2dyYW1zIHRo ZSBIVyB0bw0KPiA+PiByZWNlaXZlIHRoZSBwYWNrZXQgaW4gc2VnbWVudHMgZnJvbSBkaWZmZXJl bnQgcG9vbHMuDQo+ID4+DQo+ID4+IFRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgZmVhdHVyZSB0byBz dXBwb3J0IHRoZSBwb29sIHNvcnQgY2FwYWJpbGl0eS4NCj4gPj4gU29tZSBvZiB0aGUgSFcgaGFz IHN1cHBvcnQgZm9yIGNob29zaW5nIG1lbW9yeSBwb29scyBiYXNlZCBvbiB0aGUNCj4gPj4gcGFj a2V0J3Mgc2l6ZS4gVGhlIHBvb2wgc29ydCBjYXBhYmlsaXR5IGFsbG93cyBQTUQgdG8gY2hvb3Nl IGEgbWVtb3J5DQo+ID4+IHBvb2wgYmFzZWQgb24gdGhlIHBhY2tldCdzIGxlbmd0aC4NCj4gPj4N Cj4gPj4gVGhpcyBpcyBvZnRlbiB1c2VmdWwgZm9yIHNhdmluZyB0aGUgbWVtb3J5IHdoZXJlIHRo ZSBhcHBsaWNhdGlvbiBjYW4NCj4gPj4gY3JlYXRlIGEgZGlmZmVyZW50IHBvb2wgdG8gc3RlZXIg dGhlIHNwZWNpZmljIHNpemUgb2YgdGhlIHBhY2tldCwNCj4gPj4gdGh1cyBlbmFibGluZyBlZmZl Y3RpdmUgdXNlIG9mIG1lbW9yeS4NCj4gPj4NCj4gPj4gRm9yIGV4YW1wbGUsIGxldCdzIHNheSBI VyBoYXMgYSBjYXBhYmlsaXR5IG9mIHRocmVlIHBvb2xzLA0KPiA+PiAgIC0gcG9vbC0xIHNpemUg aXMgMksNCj4gPj4gICAtIHBvb2wtMiBzaXplIGlzID4gMksgYW5kIDwgNEsNCj4gPj4gICAtIHBv b2wtMyBzaXplIGlzID4gNEsNCj4gPj4gSGVyZSwNCj4gPj4gICAgICAgICAgcG9vbC0xIGNhbiBh Y2NvbW1vZGF0ZSBwYWNrZXRzIHdpdGggc2l6ZXMgPCAySw0KPiA+PiAgICAgICAgICBwb29sLTIg Y2FuIGFjY29tbW9kYXRlIHBhY2tldHMgd2l0aCBzaXplcyA+IDJLIGFuZCA8IDRLDQo+ID4+ICAg ICAgICAgIHBvb2wtMyBjYW4gYWNjb21tb2RhdGUgcGFja2V0cyB3aXRoIHNpemVzID4gNEsNCj4g Pj4NCj4gPj4gV2l0aCBwb29sIHNvcnQgY2FwYWJpbGl0eSBlbmFibGVkIGluIFNXLCBhbiBhcHBs aWNhdGlvbiBtYXkgY3JlYXRlDQo+ID4+IHRocmVlIHBvb2xzIG9mIGRpZmZlcmVudCBzaXplcyBh bmQgc2VuZCB0aGVtIHRvIFBNRC4gQWxsb3dpbmcgUE1EIHRvDQo+ID4+IHByb2dyYW0gSFcgYmFz ZWQgb24gcGFja2V0IGxlbmd0aHMuIFNvIHRoYXQgcGFja2V0cyB3aXRoIGxlc3MgdGhhbiAySw0K PiA+PiBhcmUgcmVjZWl2ZWQgb24gcG9vbC0xLCBwYWNrZXRzIHdpdGggbGVuZ3RocyBiZXR3ZWVu IDJLIGFuZCA0SyBhcmUNCj4gPj4gcmVjZWl2ZWQgb24gcG9vbC0yIGFuZCBmaW5hbGx5IHBhY2tl dHMgZ3JlYXRlciB0aGFuIDRLIGFyZSByZWNlaXZlZCBvbiBwb29sLQ0KPiAzLg0KPiA+Pg0KPiA+ PiBUaGUgZm9sbG93aW5nIHR3byBjYXBhYmlsaXRpZXMgYXJlIGFkZGVkIHRvIHRoZSBydGVfZXRo X3J4c2VnX2NhcGENCj4gPj4gc3RydWN0dXJlLCAxLiBwb29sX3NvcnQgLS0+IHRlbGxzIHBvb2wg c29ydCBjYXBhYmlsaXR5IGlzIHN1cHBvcnRlZCBieSBIVy4NCj4gPj4gMi4gbWF4X25wb29sIC0t PiBtYXggbnVtYmVyIG9mIHBvb2xzIHN1cHBvcnRlZCBieSBIVy4NCj4gPj4NCj4gPj4gRGVmaW5l ZCBuZXcgc3RydWN0dXJlIHJ0ZV9ldGhfcnhzZWdfc29ydCwgdG8gYmUgdXNlZCBvbmx5IHdoZW4g cG9vbA0KPiA+PiBzb3J0IGNhcGFiaWxpdHkgaXMgcHJlc2VudC4gSWYgcmVxdWlyZWQgdGhpcyBt YXkgYmUgZXh0ZW5kZWQgZnVydGhlcg0KPiA+PiB0byBzdXBwb3J0IG1vcmUgY29uZmlndXJhdGlv bnMuDQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IEhhbnVtYW50aCBQb3RodWxhIDxocG90aHVs YUBtYXJ2ZWxsLmNvbT4NCj4gPj4NCj4gPj4gdjI6DQo+ID4+ICAgLSBBbG9uZyB3aXRoIHNwZWMg Y2hhbmdlcywgdXBsb2FkaW5nIHRlc3RwbWQgYW5kIGRyaXZlciBjaGFuZ2VzLg0KPiA+DQo+ID4g VGhhbmtzIGZvciBDQ2luZy4gSXQncyBhbiBpbnRlcmVzdGluZyBmZWF0dXJlLg0KPiA+DQo+ID4g QnV0IEkgaGF2ZSBvbmUgcXVlc3Rpb24gaGVyZToNCj4gPiBCdWZmZXIgc3BsaXQgaXMgZm9yIHNw bGl0IHJlY2VpdmluZyBwYWNrZXRzIGludG8gbXVsdGlwbGUgc2VnbWVudHMsDQo+ID4gd2hpbGUg cG9vbCBzb3J0IHN1cHBvcnRzIFBNRCB0byBwdXQgdGhlIHJlY2VpdmluZyBwYWNrZXRzIGludG8g ZGlmZmVyZW50IHBvb2xzDQo+IGFjY29yZGluZyB0byBwYWNrZXQgc2l6ZS4NCj4gPiBFdmVyeSBw YWNrZXQgaXMgc3RpbGwgaW50YWN0Lg0KPiA+DQo+ID4gU28sIGF0IHRoaXMgbGV2ZWwsIHBvb2wg c29ydCBkb2VzIG5vdCBiZWxvbmcgdG8gYnVmZmVyIHNwbGl0Lg0KPiA+IEFuZCB5b3UgYWxyZWFk eSB1c2UgYSBkaWZmZXJlbnQgZnVuY3Rpb24gdG8gY2hlY2sgcG9vbCBzb3J0IHJhdGhlciB0aGFu IGNoZWNrDQo+IGJ1ZmZlciBzcGxpdC4NCj4gPg0KPiA+IFNob3VsZCBhIG5ldyBSWCBvZmZsb2Fk IGJlIGludHJvZHVjZWQ/IGxpa2UNCj4gIlJURV9FVEhfUlhfT0ZGTE9BRF9QT09MX1NPUlQiLg0K PiA+DQpQbGVhc2UgZmluZCBteSByZXNwb25zZSBiZWxvdy4gDQo+IA0KPiBIaSBIYW51bWFudGgs DQo+IA0KPiBJIGhhZCB0aGUgc2ltaWxhciBjb25jZXJuIHdpdGggdGhlIGZlYXR1cmUuIEkgYXNz dW1lIHlvdSB3YW50IHRvIGJlbmVmaXQgZnJvbQ0KPiBleGl0aW5nIGNvbmZpZyBzdHJ1Y3R1cmUg dGhhdCBnZXRzIG11bHRpcGxlIG1lbXBvb2wgYXMgYXJndW1lbnQsIHNpbmNlIHRoaXMNCj4gZmVh dHVyZSBhbHNvIG5lZWRzIG11bHRpcGxlIG1lbXBvb2xzLCBidXQgdGhlIGZlYXR1cmUgaXMgZGlm ZmVyZW50Lg0KPiANCj4gSXQgbG9va3MgdG8gbWUgd3JvbmcgdG8gY2hlY2sgJ09GRkxPQURfQlVG RkVSX1NQTElUJyBvZmZsb2FkIHRvIGRlY2lkZSBpZiB0bw0KPiByZWNlaXZlIGludG8gbXVsdGlw bGUgbWVtcG9vbCBvciBub3QsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhbnl0aGluZyByZWxhdGVkIHNw bGl0Lg0KPiBBbHNvIG5vdCBzdXJlIGFib3V0IHVzaW5nIHRoZSAnc29ydCcga2V5d29yZC4NCj4g V2hhdCBkbyB5b3UgdGhpbmsgdG8gaW50cm9kdWNlIG5ldyBmZXRhdXJlLCBpbnN0ZWFkIG9mIGV4 dGVuZGluZyBleGlzdGluZyBzcGxpdA0KPiBvbmU/DQoNCkFjdHVhbGx5IHdlIHRob3VnaHQgYm90 aCBCVUZGRVJfU1BMSVQgYW5kIFBPT0xfU09SVCBhcmUgc2ltaWxhciBmZWF0dXJlcyB3aGVyZSBS WA0KcG9vbHMgYXJlIGNvbmZpZ3VyZWQgaW4gY2VydGFpbiB3YXkgYW5kIHRob3VnaHQgbm90IHVz ZSB1cCBvbmUgbW9yZSBSWCBvZmZsb2FkIGNhcGFiaWxpdHksIA0KYXMgdGhlIGV4aXN0aW5nIHNv ZnR3YXJlIGFyY2hpdGVjdHVyZSBjYW4gYmUgZXh0ZW5kZWQgdG8gc3VwcG9ydCBwb29sX3NvcnQg Y2FwYWJpbGl0eS4NClllcywgYXMgcGFydCBvZiBwb29sIHNvcnQsIHRoZXJlIGlzIG5vIGJ1ZmZl ciBzcGxpdCBidXQgcG9vbHMgYXJlIHBpY2tlZCBiYXNlZCBvbiB0aGUgYnVmZmVyIGxlbmd0aC4N Cg0KU2luY2UgeW91IHRoaW5rIGl0J3MgYmV0dGVyIHRvIHVzZSBuZXcgUlggb2ZmbG9hZCBmb3Ig UE9PTF9TT1JULCB3aWxsIGdvIGFoZWFkIGFuZCBpbXBsZW1lbnQgdGhlIHNhbWUuDQoNCj4gVGhp cyBpcyBvcHRpbWlzYXRpb24sIHJpZ2h0PyBUbyBlbmFibGUgdXMgdG8gdXNlIGxlc3MgbWVtb3J5 IGZvciB0aGUgcGFja2V0DQo+IGJ1ZmZlciwgZG9lcyBpdCBxdWFsaWZ5IHRvIGEgZGV2aWNlIG9m ZmxvYWQ/DQo+IA0KWWVzLCBpdHMgcXVhbGlmeSBhcyBhIGRldmljZSBvZmZsb2FkIGFuZCBzYXZl cyBtZW1vcnkuDQpNYXJ2ZWwgTklDIGhhcyBhIGNhcGFiaWxpdHkgdG8gcmVjZWl2ZSBwYWNrZXRz IG9uICB0d28gZGlmZmVyZW50IHBvb2xzIGJhc2VkIG9uIGl0cyBsZW5ndGguDQpCZWxvdyBleHBs YWluZWQgbW9yZSBvbiB0aGUgc2FtZS4NCj4gDQo+IEFsc28sIHdoYXQgaXMgdGhlIHJlbGF0aW9u IHdpdGggc2VnbWVudGVkIFJ4LCBob3cgYSBQTUQgZGVjaWRlIHRvIHVzZQ0KPiBzZWdtZW50ZWQg Unggb3IgYmlnZ2VyIG1lbXBvb2w/IEhvdyBjYW4gYXBwbGljYXRpb24gY2FuIGNvbmZpZ3VyZSB0 aGlzPw0KPiANCj4gTmVlZCB0byBjbGFyaWZ5IHRoZSBydWxlcywgYmFzZWQgb24geW91ciBzYW1w bGUsIGlmIGEgNTEyIGJ5dGVzIHBhY2tldCByZWNlaXZlZCwNCj4gZG9lcyBpdCBoYXZlIHRvIGdv IHBvb2wtMSwgb3IgY2FuIGl0IGdvIHRvIGFueSBvZiB0aHJlZSBwb29scz8NCj4gDQpIZXJlLCBN YXJ2ZWxsIE5JQyBzdXBwb3J0cyB0d28gSFcgcG9vbHMsIFNQQihzbWFsbCBwYWNrZXQgYnVmZmVy KSBwb29sIGFuZCBMUEIobGFyZ2UgcGFja2V0IGJ1ZmZlcikgcG9vbC4NClNQQiBwb29sIGNhbiBo b2xkIHVwIHRvIDRLQg0KTFBCIHBvb2wgY2FuIGhvbGQgYW55dGhpbmcgbW9yZSB0aGFuIDRLQg0K U21hbGxlciBwYWNrZXRzIGFyZSByZWNlaXZlZCBvbiBTUEIgcG9vbCBhbmQgbGFyZ2VyIHBhY2tl dHMgb24gTFBCIHBvb2wsIGJhc2VkIG9uIHRoZSBSUSBjb25maWd1cmF0aW9uLg0KSGVyZSwgaW4g b3VyIGNhc2UgSFcgcG9vbHMgaG9sZHMgd2hvbGUgcGFja2V0LiBTbyBpZiBhIHBhY2tldCBpcyBk aXZpZGVkIGludG8gc2VnbWVudHMsIGxvd2VyIGxheWVyDQpIVyBnb2luZyB0byByZWNlaXZlIGFs bCBzZWdtZW50cyBvZiB0aGUgcGFja2V0IGFuZCB0aGVuIGdvaW5nIHRvIHBsYWNlIHRoZSB3aG9s ZSBwYWNrZXQgaW4gU1BCL0xQQiBwb29sLA0KYmFzZWQgb24gdGhlIHBhY2tldCBsZW5ndGguDQoN CkFzIHBvb2xzIGFyZSBwaWNrZWQgYmFzZWQgb24gdGhlIHBhY2tldHMgbGVuZ3RoIHdlIHVzZWQg U09SVCB0ZXJtLiBJbiBjYXNlIHlvdSBoYXZlIGFueSBiZXR0ZXIgdGVybSh3b3JkKSwgcGxlYXNl IHN1Z2dlc3QuIA0KDQo+IA0KPiBBbmQgSSBkb24ndCBzZWUgYW55IGNoYW5nZSBpbiB0aGUgJ25l dC9jbnhrJyBSeCBidXJzdCBjb2RlLCB3aGVuDQo+IG11bHRpcGxlIG1lbXBvb2wgdXNlZCwgd2hp bGUgZmlsbGluZyB0aGUgbWJ1ZnMgc2hvdWxkbid0IGl0IGNoZWNrIHdoaWNoDQo+IG1lbXBvb2wg aXMgZmlsbGVkLiBIb3cgdGhpcyB3b3JrcyB3aXRob3V0IHVwZGF0ZSBpbiB0aGUgUnggYnVyc3Qg Y29kZSwNCj4gb3IgYW0gSSBtaXNzaW5nIHNvbWUgaW1wbGVtZW50YXRpb24gZGV0YWlsPw0KPiAN ClBsZWFzZSBmaW5kIFBNRCBjaGFuZ2VzIGluIHBhdGNoIFt2MiwzLzNdIG5ldC9jbnhrOiBpbnRy b2R1Y2UgcG9vbCBzb3J0IGNhcGFiaWxpdHkNCkhlcmUsIGluIGNvbnRyb2wgcGF0aCwgSFcgcG9v bHMgYXJlIHByb2dyYW1tZWQgYmFzZWQgb24gdGhlIGlucHV0cyBpdCByZWNlaXZlZCBmcm9tIHRo ZSBhcHBsaWNhdGlvbi4NCk9uY2UgdGhlIEhXIGlzIHByb2dyYW1tZWQsIHBhY2tldHMgYXJlIHJl Y2VpdmVkIG9uIEhXIHBvb2xzIGJhc2VkIHRoZSBwYWNrZXRzIHNpemVzLg0KPiANCg0KSSB3aWxs IHVwbG9hZCBWMyB3aGVyZSBQT09MX1NPUlQgaXMgaW1wbGVtZW50ZWQgYXMgbmV3IFJYIE9GRkxP QUQsIHVubGVzcyBJZiB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2VzdGlvbi90aG91Z2h0cy4NCg0K PiA+PiAtLS0NCj4gPj4gICBsaWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyB8IDg3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0NCj4gLQ0KPiA+PiAgIGxpYi9ldGhkZXYvcnRl X2V0aGRldi5oIHwgNDUgKysrKysrKysrKysrKysrKysrKy0tDQo+ID4+ICAgMiBmaWxlcyBjaGFu Z2VkLCAxMTggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pDQo+ID4+DQo+ID4+IGRpZmYg LS1naXQgYS9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuYyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5j IGluZGV4DQo+ID4+IDE5NzlkYzA4NTAuLjdmZDU0NDNlYjggMTAwNjQ0DQo+ID4+IC0tLSBhL2xp Yi9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4+ICsrKyBiL2xpYi9ldGhkZXYvcnRlX2V0aGRldi5j DQo+ID4+IEBAIC0xNjM1LDcgKzE2MzUsNTUgQEAgcnRlX2V0aF9kZXZfaXNfcmVtb3ZlZCh1aW50 MTZfdCBwb3J0X2lkKSAgfQ0KPiA+Pg0KPiA+PiAgIHN0YXRpYyBpbnQNCj4gPj4gLXJ0ZV9ldGhf cnhfcXVldWVfY2hlY2tfc3BsaXQoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgKnJ4 X3NlZywNCj4gPj4gK3J0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc29ydChjb25zdCBzdHJ1Y3QgcnRl X2V0aF9yeHNlZyAqcnhfc2VnLA0KPiA+PiArCQkJICAgICB1aW50MTZfdCBuX3NlZywgdWludDMy X3QgKm1icF9idWZfc2l6ZSwNCj4gPj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2 X2luZm8gKmRldl9pbmZvKSB7DQo+ID4+ICsJY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfY2Fw YSAqc2VnX2NhcGEgPSAmZGV2X2luZm8tDQo+ID4+PiByeF9zZWdfY2FwYTsNCj4gPj4gKwl1aW50 MTZfdCBzZWdfaWR4Ow0KPiA+PiArDQo+ID4+ICsJaWYgKCFzZWdfY2FwYS0+bXVsdGlfcG9vbHMg fHwgbl9zZWcgPiBzZWdfY2FwYS0+bWF4X25wb29sKSB7DQo+ID4+ICsJCVJURV9FVEhERVZfTE9H KEVSUiwNCj4gPj4gKwkJCSAgICAgICAiSW52YWxpZCBjYXBhYmlsaXRpZXMsIG11bHRpX3Bvb2xz OiVkIGRpZmZlcm50DQo+ID4+IGxlbmd0aCBzZWdtZW50cyAldSBleGNlZWQgc3VwcG9ydGVkICV1 XG4iLA0KPiA+PiArCQkJICAgICAgIHNlZ19jYXBhLT5tdWx0aV9wb29scywgbl9zZWcsIHNlZ19j YXBhLQ0KPiA+Pj4gbWF4X25zZWcpOw0KPiA+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4gKwl9 DQo+ID4+ICsNCj4gPj4gKwlmb3IgKHNlZ19pZHggPSAwOyBzZWdfaWR4IDwgbl9zZWc7IHNlZ19p ZHgrKykgew0KPiA+PiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tzZWdfaWR4 XS5zb3J0Lm1wOw0KPiA+PiArCQl1aW50MzJfdCBsZW5ndGggPSByeF9zZWdbc2VnX2lkeF0uc29y dC5sZW5ndGg7DQo+ID4+ICsNCj4gPj4gKwkJaWYgKG1wbCA9PSBOVUxMKSB7DQo+ID4+ICsJCQlS VEVfRVRIREVWX0xPRyhFUlIsICJudWxsIG1lbXBvb2wgcG9pbnRlclxuIik7DQo+ID4+ICsJCQly ZXR1cm4gLUVJTlZBTDsNCj4gPj4gKwkJfQ0KPiA+PiArDQo+ID4+ICsJCWlmIChtcGwtPnByaXZh dGVfZGF0YV9zaXplIDwNCj4gPj4gKwkJCXNpemVvZihzdHJ1Y3QgcnRlX3BrdG1idWZfcG9vbF9w cml2YXRlKSkgew0KPiA+PiArCQkJUlRFX0VUSERFVl9MT0coRVJSLA0KPiA+PiArCQkJCSAgICAg ICAiJXMgcHJpdmF0ZV9kYXRhX3NpemUgJXUgPCAldVxuIiwNCj4gPj4gKwkJCQkgICAgICAgbXBs LT5uYW1lLCBtcGwtPnByaXZhdGVfZGF0YV9zaXplLA0KPiA+PiArCQkJCSAgICAgICAodW5zaWdu ZWQgaW50KXNpemVvZg0KPiA+PiArCQkJCQkoc3RydWN0IHJ0ZV9wa3RtYnVmX3Bvb2xfcHJpdmF0 ZSkpOw0KPiA+PiArCQkJcmV0dXJuIC1FTk9TUEM7DQo+ID4+ICsJCX0NCj4gPj4gKw0KPiA+PiAr CQkqbWJwX2J1Zl9zaXplID0gcnRlX3BrdG1idWZfZGF0YV9yb29tX3NpemUobXBsKTsNCj4gPj4g KwkJbGVuZ3RoID0gbGVuZ3RoICE9IDAgPyBsZW5ndGggOiAoKm1icF9idWZfc2l6ZSAtDQo+ID4+ IFJURV9QS1RNQlVGX0hFQURST09NKTsNCj4gPj4gKwkJaWYgKCptYnBfYnVmX3NpemUgPCBsZW5n dGggKyBSVEVfUEtUTUJVRl9IRUFEUk9PTSkgew0KPiA+PiArCQkJUlRFX0VUSERFVl9MT0coRVJS LA0KPiA+PiArCQkJCSAgICAgICAiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8ICV1KSlcbiIs DQo+ID4+ICsJCQkJICAgICAgIG1wbC0+bmFtZSwgKm1icF9idWZfc2l6ZSwNCj4gPj4gKwkJCQkg ICAgICAgbGVuZ3RoKTsNCj4gPj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+PiArCQl9DQo+ID4+ ICsJfQ0KPiA+PiArDQo+ID4+ICsJcmV0dXJuIDA7DQo+ID4+ICt9DQo+ID4+ICsNCj4gPj4gK3N0 YXRpYyBpbnQNCj4gPj4gK3J0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQoY29uc3Qgc3RydWN0 IHJ0ZV9ldGhfcnhzZWcgKnJ4X3NlZywNCj4gPj4gICAJCQkgICAgIHVpbnQxNl90IG5fc2VnLCB1 aW50MzJfdCAqbWJwX2J1Zl9zaXplLA0KPiA+PiAgIAkJCSAgICAgY29uc3Qgc3RydWN0IHJ0ZV9l dGhfZGV2X2luZm8gKmRldl9pbmZvKSAgeyBAQCAtDQo+ID4+IDE2NTQsMTIgKzE3MDIsMTIgQEAg cnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4gPj4gcnRlX2V0aF9y eHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+PiAgIAkgKiBDaGVjayB0aGUgc2l6ZXMgYW5kIG9mZnNl dHMgYWdhaW5zdCBidWZmZXIgc2l6ZXMNCj4gPj4gICAJICogZm9yIGVhY2ggc2VnbWVudCBzcGVj aWZpZWQgaW4gZXh0ZW5kZWQgY29uZmlndXJhdGlvbi4NCj4gPj4gICAJICovDQo+ID4+IC0JbXBf Zmlyc3QgPSByeF9zZWdbMF0ubXA7DQo+ID4+ICsJbXBfZmlyc3QgPSByeF9zZWdbMF0uc3BsaXQu bXA7DQo+ID4+ICAgCW9mZnNldF9tYXNrID0gUlRFX0JJVDMyKHNlZ19jYXBhLT5vZmZzZXRfYWxp Z25fbG9nMikgLSAxOw0KPiA+PiAgIAlmb3IgKHNlZ19pZHggPSAwOyBzZWdfaWR4IDwgbl9zZWc7 IHNlZ19pZHgrKykgew0KPiA+PiAtCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wbCA9IHJ4X3NlZ1tz ZWdfaWR4XS5tcDsNCj4gPj4gLQkJdWludDMyX3QgbGVuZ3RoID0gcnhfc2VnW3NlZ19pZHhdLmxl bmd0aDsNCj4gPj4gLQkJdWludDMyX3Qgb2Zmc2V0ID0gcnhfc2VnW3NlZ19pZHhdLm9mZnNldDsN Cj4gPj4gKwkJc3RydWN0IHJ0ZV9tZW1wb29sICptcGwgPSByeF9zZWdbc2VnX2lkeF0uc3BsaXQu bXA7DQo+ID4+ICsJCXVpbnQzMl90IGxlbmd0aCA9IHJ4X3NlZ1tzZWdfaWR4XS5zcGxpdC5sZW5n dGg7DQo+ID4+ICsJCXVpbnQzMl90IG9mZnNldCA9IHJ4X3NlZ1tzZWdfaWR4XS5zcGxpdC5vZmZz ZXQ7DQo+ID4+DQo+ID4+ICAgCQlpZiAobXBsID09IE5VTEwpIHsNCj4gPj4gICAJCQlSVEVfRVRI REVWX0xPRyhFUlIsICJudWxsIG1lbXBvb2wgcG9pbnRlclxuIik7DQo+ID4+IEBAIC0xNjkzLDcg KzE3NDEsMTEgQEAgcnRlX2V0aF9yeF9xdWV1ZV9jaGVja19zcGxpdChjb25zdCBzdHJ1Y3QNCj4g Pj4gcnRlX2V0aF9yeHNlZ19zcGxpdCAqcnhfc2VnLA0KPiA+PiAgIAkJfQ0KPiA+PiAgIAkJb2Zm c2V0ICs9IHNlZ19pZHggIT0gMCA/IDAgOiBSVEVfUEtUTUJVRl9IRUFEUk9PTTsNCj4gPj4gICAJ CSptYnBfYnVmX3NpemUgPSBydGVfcGt0bWJ1Zl9kYXRhX3Jvb21fc2l6ZShtcGwpOw0KPiA+PiAt CQlsZW5ndGggPSBsZW5ndGggIT0gMCA/IGxlbmd0aCA6ICptYnBfYnVmX3NpemU7DQo+ID4+ICsJ CS8qIE9uIHNlZ21lbnQgbGVuZ3RoID09IDAsIHVwZGF0ZSBzZWdtZW50J3MgbGVuZ3RoIHdpdGgN Cj4gPj4gKwkJICogdGhlIHBvb2wncyBsZW5ndGggLSBoZWFkZXJvb20gc3BhY2UsIHRvIG1ha2Ug c3VyZSBlbm91Z2gNCj4gPj4gKwkJICogc3BhY2UgaXMgYWNjb21pZGF0ZSBmb3IgaGVhZGVyLg0K PiA+PiArCQkgKiovDQo+ID4+ICsJCWxlbmd0aCA9IGxlbmd0aCAhPSAwID8gbGVuZ3RoIDogKCpt YnBfYnVmX3NpemUgLQ0KPiA+PiArUlRFX1BLVE1CVUZfSEVBRFJPT00pOw0KPiA+PiAgIAkJaWYg KCptYnBfYnVmX3NpemUgPCBsZW5ndGggKyBvZmZzZXQpIHsNCj4gPj4gICAJCQlSVEVfRVRIREVW X0xPRyhFUlIsDQo+ID4+ICAgCQkJCSAgICAgICAiJXMgbWJ1Zl9kYXRhX3Jvb21fc2l6ZSAldSA8 ICV1DQo+ID4+IChzZWdtZW50IGxlbmd0aD0ldSArIHNlZ21lbnQgb2Zmc2V0PSV1KVxuIiwgQEAg LTE3NjQsNyArMTgxNiw2IEBADQo+ID4+IHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAodWludDE2X3Qg cG9ydF9pZCwgdWludDE2X3QgcnhfcXVldWVfaWQsDQo+ID4+ICAgCQkJcmV0dXJuIC1FSU5WQUw7 DQo+ID4+ICAgCQl9DQo+ID4+ICAgCX0gZWxzZSB7DQo+ID4+IC0JCWNvbnN0IHN0cnVjdCBydGVf ZXRoX3J4c2VnX3NwbGl0ICpyeF9zZWc7DQo+ID4+ICAgCQl1aW50MTZfdCBuX3NlZzsNCj4gPj4N Cj4gPj4gICAJCS8qIEV4dGVuZGVkIG11bHRpLXNlZ21lbnQgY29uZmlndXJhdGlvbiBjaGVjay4g Ki8gQEAgLQ0KPiA+PiAxNzc0LDEzICsxODI1LDI3IEBAIHJ0ZV9ldGhfcnhfcXVldWVfc2V0dXAo dWludDE2X3QgcG9ydF9pZCwgdWludDE2X3QNCj4gPj4gcnhfcXVldWVfaWQsDQo+ID4+ICAgCQkJ cmV0dXJuIC1FSU5WQUw7DQo+ID4+ICAgCQl9DQo+ID4+DQo+ID4+IC0JCXJ4X3NlZyA9IChjb25z dCBzdHJ1Y3QgcnRlX2V0aF9yeHNlZ19zcGxpdCAqKXJ4X2NvbmYtPnJ4X3NlZzsNCj4gPj4gICAJ CW5fc2VnID0gcnhfY29uZi0+cnhfbnNlZzsNCj4gPj4NCj4gPj4gICAJCWlmIChyeF9jb25mLT5v ZmZsb2FkcyAmIFJURV9FVEhfUlhfT0ZGTE9BRF9CVUZGRVJfU1BMSVQpDQo+ID4+IHsNCj4gPj4g LQkJCXJldCA9IHJ0ZV9ldGhfcnhfcXVldWVfY2hlY2tfc3BsaXQocnhfc2VnLCBuX3NlZywNCj4g Pj4gLQkJCQkJCQkgICAmbWJwX2J1Zl9zaXplLA0KPiA+PiAtCQkJCQkJCSAgICZkZXZfaW5mbyk7 DQo+ID4+ICsJCQlyZXQgPSAtMTsgLyogVG8gbWFrZSBzdXJlIGF0IGxlYXN0IG9uZSBvZiBiZWxv dw0KPiA+PiBjb25kaXRpb25zIGJlY29tZXMNCj4gPj4gK3RydWUgKi8NCj4gPj4gKw0KPiA+PiAr CQkJLyogQ2hlY2sgYm90aCBOSVggYW5kIGFwcGxpY2F0aW9uIHN1cHBvcnRzIGJ1ZmZlci0NCj4g Pj4gc3BsaXQgY2FwYWJpbGl0eSAqLw0KPiA+PiArCQkJaWYgKGRldl9pbmZvLnJ4X3NlZ19jYXBh Lm1vZGVfc3BsaXQgJiYNCj4gPj4gKwkJCSAgICByeF9jb25mLT5tb2RlX2ZsYWcgPT0NCj4gPj4g UlRFX0VUSF9SWFNFR19NT0RFX1NQTElUKSB7DQo+ID4+ICsJCQkJcmV0ID0gcnRlX2V0aF9yeF9x dWV1ZV9jaGVja19zcGxpdChyeF9jb25mLQ0KPiA+Pj4gcnhfc2VnLCBuX3NlZywNCj4gPj4gKw0K PiA+PiAmbWJwX2J1Zl9zaXplLA0KPiA+PiArCQkJCQkJCQkgICAmZGV2X2luZm8pOw0KPiA+PiAr CQkJfQ0KPiA+PiArDQo+ID4+ICsJCQkvKiBDaGVjayBib3RoIE5JWCBhbmQgYXBwbGljYXRpb24g c3VwcG9ydHMgcG9vbC1zb3J0DQo+ID4+IGNhcGFiaWxpdHkgKi8NCj4gPj4gKwkJCWlmIChkZXZf aW5mby5yeF9zZWdfY2FwYS5tb2RlX3NvcnQgJiYNCj4gPj4gKwkJCSAgICByeF9jb25mLT5tb2Rl X2ZsYWcgPT0NCj4gPj4gUlRFX0VUSF9SWFNFR19NT0RFX1NPUlQpIHsNCj4gPj4gKwkJCQlyZXQg PSBydGVfZXRoX3J4X3F1ZXVlX2NoZWNrX3NvcnQocnhfY29uZi0NCj4gPj4+IHJ4X3NlZywgbl9z ZWcsDQo+ID4+ICsNCj4gPj4gJm1icF9idWZfc2l6ZSwNCj4gPj4gKwkJCQkJCQkJICAmZGV2X2lu Zm8pOw0KPiA+PiArCQkJfQ0KPiA+PiArDQo+ID4+ICAgCQkJaWYgKHJldCAhPSAwKQ0KPiA+PiAg IAkJCQlyZXR1cm4gcmV0Ow0KPiA+PiAgIAkJfSBlbHNlIHsNCj4gPj4gZGlmZiAtLWdpdCBhL2xp Yi9ldGhkZXYvcnRlX2V0aGRldi5oIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmggaW5kZXgNCj4g Pj4gZGU5ZTk3MGQ0ZC4uOWY2Nzg3ZDdhZCAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2V0aGRldi9y dGVfZXRoZGV2LmgNCj4gPj4gKysrIGIvbGliL2V0aGRldi9ydGVfZXRoZGV2LmgNCj4gPj4gQEAg LTEyMDQsMTYgKzEyMDQsNDYgQEAgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgew0KPiA+PiAg IAl1aW50MzJfdCByZXNlcnZlZDsgLyoqPCBSZXNlcnZlZCBmaWVsZC4gKi8gIH07DQo+ID4+DQo+ ID4+ICsvKioNCj4gPj4gKyAqIFRoZSBwb29sIHNvcnQgY2FwYWJpbGl0eSBhbGxvd3MgUE1EIHRv IGNob29zZSBhIG1lbW9yeSBwb29sIGJhc2VkIG9uDQo+ID4+ICt0aGUNCj4gPj4gKyAqIHBhY2tl dCdzIGxlbmd0aC4gU28sIGJhc2ljYWxseSwgUE1EIHByb2dyYW1zIEhXIGZvciByZWNlaXZpbmcN Cj4gPj4gK3BhY2tldHMgZnJvbQ0KPiA+PiArICogZGlmZmVyZW50IHBvb2xzLCBiYXNlZCBvbiB0 aGUgcGFja2V0J3MgbGVuZ3RoLg0KPiA+PiArICoNCj4gPj4gKyAqIFRoaXMgaXMgb2Z0ZW4gdXNl ZnVsIGZvciBzYXZpbmcgdGhlIG1lbW9yeSB3aGVyZSB0aGUgYXBwbGljYXRpb24gY2FuDQo+ID4+ ICtjcmVhdGUNCj4gPj4gKyAqIGEgZGlmZmVyZW50IHBvb2wgdG8gc3RlZXIgdGhlIHNwZWNpZmlj IHNpemUgb2YgdGhlIHBhY2tldCwgdGh1cw0KPiA+PiArZW5hYmxpbmcNCj4gPj4gKyAqIGVmZmVj dGl2ZSB1c2Ugb2YgbWVtb3J5Lg0KPiA+PiArICovDQo+ID4+ICtzdHJ1Y3QgcnRlX2V0aF9yeHNl Z19zb3J0IHsNCj4gPj4gKwlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wOyAvKio8IE1lbW9yeSBwb29s IHRvIGFsbG9jYXRlIHBhY2tldHMNCj4gPj4gZnJvbS4gKi8NCj4gPj4gKwl1aW50MTZfdCBsZW5n dGg7IC8qKjwgUGFja2V0IGRhdGEgbGVuZ3RoLiAqLw0KPiA+PiArCXVpbnQzMl90IHJlc2VydmVk OyAvKio8IFJlc2VydmVkIGZpZWxkLiAqLyB9Ow0KPiA+PiArDQo+ID4+ICtlbnVtIHJ0ZV9ldGhf cnhzZWdfbW9kZSB7DQo+ID4+ICsJLyoqDQo+ID4+ICsJICogQnVmZmVyIHNwbGl0IG1vZGU6IFBN RCBzcGxpdCB0aGUgcmVjZWl2ZWQgcGFja2V0cyBpbnRvIG11bHRpcGxlDQo+ID4+IHNlZ21lbnRz Lg0KPiA+PiArCSAqIEBzZWUgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQNCj4gPj4gKwkgKi8N Cj4gPj4gKwlSVEVfRVRIX1JYU0VHX01PREVfU1BMSVQgPSBSVEVfQklUNjQoMCksDQo+ID4+ICsJ LyoqDQo+ID4+ICsJICogUG9vbCBzb3J0IG1vZGU6IFBNRCB0byBjaG9vc2VzIGEgbWVtb3J5IHBv b2wgYmFzZWQgb24gdGhlDQo+ID4+IHBhY2tldCdzIGxlbmd0aC4NCj4gPj4gKwkgKiBAc2VlIHN0 cnVjdCBydGVfZXRoX3J4c2VnX3NvcnQNCj4gPj4gKwkgKi8NCj4gPj4gKwlSVEVfRVRIX1JYU0VH X01PREVfU09SVCAgPSBSVEVfQklUNjQoMSksIH07DQo+ID4+ICsNCj4gPj4gICAvKioNCj4gPj4g ICAgKiBAd2FybmluZw0KPiA+PiAgICAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBzdHJ1Y3R1cmUg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZS4NCj4gPj4gICAgKg0KPiA+PiAgICAqIEEg Y29tbW9uIHN0cnVjdHVyZSB1c2VkIHRvIGRlc2NyaWJlIFJ4IHBhY2tldCBzZWdtZW50IHByb3Bl cnRpZXMuDQo+ID4+ICAgICovDQo+ID4+IC11bmlvbiBydGVfZXRoX3J4c2VnIHsNCj4gPj4gK3N0 cnVjdCBydGVfZXRoX3J4c2VnIHsNCj4gPj4gICAJLyogVGhlIHNldHRpbmdzIGZvciBidWZmZXIg c3BsaXQgb2ZmbG9hZC4gKi8NCj4gPj4gICAJc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc3BsaXQgc3Bs aXQ7DQo+ID4+IC0JLyogVGhlIG90aGVyIGZlYXR1cmVzIHNldHRpbmdzIHNob3VsZCBiZSBhZGRl ZCBoZXJlLiAqLw0KPiA+PiArDQo+ID4+ICsJLypUaGUgc2V0dGluZ3MgZm9yIHBhY2tldCBzb3J0 IG9mZmxvYWQuICovDQo+ID4+ICsJc3RydWN0IHJ0ZV9ldGhfcnhzZWdfc29ydCBzb3J0Ow0KPiA+ PiAgIH07DQo+ID4+DQo+ID4+ICAgLyoqDQo+ID4+IEBAIC0xMjM5LDYgKzEyNjksMTEgQEAgc3Ry dWN0IHJ0ZV9ldGhfcnhjb25mIHsNCj4gPj4gICAJICogZmllbGRzIG9uIHJ0ZV9ldGhfZGV2X2lu Zm8gc3RydWN0dXJlIGFyZSBhbGxvd2VkIHRvIGJlIHNldC4NCj4gPj4gICAJICovDQo+ID4+ICAg CXVpbnQ2NF90IG9mZmxvYWRzOw0KPiA+PiArCS8qKg0KPiA+PiArCSAqIFBNRCBtYXkgc3VwcG9y dCBtb3JlIHRoYW4gb25lIHJ4c2VnIG1vZGUuIFRoaXMgYWxsb3dzDQo+ID4+IGFwcGxpY2F0aW9u DQo+ID4+ICsJICogdG8gY2hvc2Ugd2hpY2ggbW9kZSB0byBlbmFibGUuDQo+ID4+ICsJICovDQo+ ID4+ICsJZW51bSBydGVfZXRoX3J4c2VnX21vZGUgbW9kZV9mbGFnOw0KPiA+PiAgIAkvKioNCj4g Pj4gICAJICogUG9pbnRzIHRvIHRoZSBhcnJheSBvZiBzZWdtZW50IGRlc2NyaXB0aW9ucyBmb3Ig YW4gZW50aXJlIHBhY2tldC4NCj4gPj4gICAJICogQXJyYXkgZWxlbWVudHMgYXJlIHByb3BlcnRp ZXMgZm9yIGNvbnNlY3V0aXZlIFJ4IHNlZ21lbnRzLg0KPiA+PiBAQCAtMTI0Niw3ICsxMjgxLDcg QEAgc3RydWN0IHJ0ZV9ldGhfcnhjb25mIHsNCj4gPj4gICAJICogVGhlIHN1cHBvcnRlZCBjYXBh YmlsaXRpZXMgb2YgcmVjZWl2aW5nIHNlZ21lbnRhdGlvbiBpcyByZXBvcnRlZA0KPiA+PiAgIAkg KiBpbiBydGVfZXRoX2Rldl9pbmZvLnJ4X3NlZ19jYXBhIGZpZWxkLg0KPiA+PiAgIAkgKi8NCj4g Pj4gLQl1bmlvbiBydGVfZXRoX3J4c2VnICpyeF9zZWc7DQo+ID4+ICsJc3RydWN0IHJ0ZV9ldGhf cnhzZWcgKnJ4X3NlZzsNCj4gPj4NCj4gPj4gICAJdWludDY0X3QgcmVzZXJ2ZWRfNjRzWzJdOyAv Kio8IFJlc2VydmVkIGZvciBmdXR1cmUgZmllbGRzICovDQo+ID4+ICAgCXZvaWQgKnJlc2VydmVk X3B0cnNbMl07ICAgLyoqPCBSZXNlcnZlZCBmb3IgZnV0dXJlIGZpZWxkcyAqLw0KPiA+PiBAQCAt MTgyNywxMCArMTg2MiwxNCBAQCBzdHJ1Y3QgcnRlX2V0aF9zd2l0Y2hfaW5mbyB7DQo+ID4+ICAg ICovDQo+ID4+ICAgc3RydWN0IHJ0ZV9ldGhfcnhzZWdfY2FwYSB7DQo+ID4+ICAgCV9fZXh0ZW5z aW9uX18NCj4gPj4gKwl1aW50MzJfdCBtb2RlX3NwbGl0IDogMTsgLyoqPCBTdXBwb3J0cyBidWZm ZXIgc3BsaXQgY2FwYWJpbGl0eSBAc2VlDQo+ID4+IHN0cnVjdCBydGVfZXRoX3J4c2VnX3NwbGl0 ICovDQo+ID4+ICsJdWludDMyX3QgbW9kZV9zb3J0IDogMTsgLyoqPCBTdXBwb3J0cyBwb29sIHNv cnQgY2FwYWJpbGl0eSBAc2VlDQo+ID4+IHN0cnVjdA0KPiA+DQo+ID4gVGhlIHNhbWUgZG91YnQg aGVyZS4gQXMgSSBrbm93LCB0aGUgJ3J0ZV9ldGhfcnhzZWdfY2FwYScgc3RydWN0dXJlIGlzIHVz ZWQgZm9yDQo+IGJ1ZmZlciBzcGxpdC4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBYdWFuDQo+ID4N Cj4gPj4gK3J0ZV9ldGhfcnhzZWdfc29ydCAqLw0KPiA+PiAgIAl1aW50MzJfdCBtdWx0aV9wb29s czoxOyAvKio8IFN1cHBvcnRzIHJlY2VpdmluZyB0byBtdWx0aXBsZSBwb29scy4qLw0KPiA+PiAg IAl1aW50MzJfdCBvZmZzZXRfYWxsb3dlZDoxOyAvKio8IFN1cHBvcnRzIGJ1ZmZlciBvZmZzZXRz LiAqLw0KPiA+PiAgIAl1aW50MzJfdCBvZmZzZXRfYWxpZ25fbG9nMjo0OyAvKio8IFJlcXVpcmVk IG9mZnNldCBhbGlnbm1lbnQuICovDQo+ID4+ICAgCXVpbnQxNl90IG1heF9uc2VnOyAvKio8IE1h eGltdW0gYW1vdW50IG9mIHNlZ21lbnRzIHRvIHNwbGl0LiAqLw0KPiA+PiArCS8qIDwgTWF4aW11 bSBhbW91bnQgb2YgcG9vbHMgdGhhdCBQTUQgY2FuIHNvcnQgYmFzZWQgb24NCj4gPj4gcGFja2V0 L3NlZ21lbnQgbGVuZ3RocyAqLw0KPiA+PiArCXVpbnQxNl90IG1heF9ucG9vbDsNCj4gPj4gICAJ dWludDE2X3QgcmVzZXJ2ZWQ7IC8qKjwgUmVzZXJ2ZWQgZmllbGQuICovICB9Ow0KPiA+Pg0KPiA+ PiAtLQ0KPiA+PiAyLjI1LjENCj4gPg0KDQo=