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 8CAB3A0C4C; Tue, 5 Oct 2021 18:04:18 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 212C0413E2; Tue, 5 Oct 2021 18:04:18 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2060.outbound.protection.outlook.com [40.107.220.60]) by mails.dpdk.org (Postfix) with ESMTP id F0976413DD for ; Tue, 5 Oct 2021 18:04:16 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P2aDx3mWaZHjtFl1TnSRlz1cjlbaqS3x8fGJ8DArUGunT0kKb5MnLHnh5dl6Exk5Rm7d+kZvhthLhYdfOYpjvPGJKuAW0DKe1cXpYxOz0rDFKckjo2y1kGrSiHCJ3dzP4YI+7BJ/7F/HIR5B2nwgN+3t+O04RQzQ6/PzkmqlO46HgE9y6sTCDfIU159NXplRcAdUncc0ZshyJCrivJsQCHlyp1OdGSpZX1l5t3dxJgJ3PfsUFKp+5TzzS22P1BswUZo5qbkbrK2FfI+yT8/wC9R7pCphA+P/gZK7QAbbS2jnvMxL2ZYy4q353ujpTbDPBI+OqxoE7dNb2fGn0KVD1g== 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=zPUUcAtIzU1DsnfmwDI7+JhMR3MyiJbW65eFbDH8YNw=; b=Q06yYJBVkdRSeEHsnt7uq2J+mrGxnc4W1qucgQzOhkg4+92zpk9ZYY+HfdOFwPU5QGQHuyfgnXBer+77bKo9skYRdgAUp1x6sFgbnRsM92lsuqWYo5w2/jC5+rd4vhfTT2qTNm4WmjpxPr2DaA9KdwToQaseeI8h0Dk68vwDtfQqKBu06Q+GO9nh3ImPzQI9a2HimMVfZQIWC3LX6szSwgmAheYXW7S4M3svrXsnAoM2XgpKg6i27+qa1WSZdPcBKn2c+UofnpHP45rB3VRUg+3qHM+yN5vhVWzGaLdHrvbneUz8mu22ckSLT6ISJDcR6oiM36EzQzH2XN0SLd58AA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zPUUcAtIzU1DsnfmwDI7+JhMR3MyiJbW65eFbDH8YNw=; b=MYsJnkUe7JWkWjA2an35URQyAoXspaSNkGBPcTdaic8xkk3aExwwIr8CHQqm3qa/XsGQVlnrOGSb/BGnd0BDIFFeAcsQQEuYA+hjOLhamRx8Zhv1ctbqZ0NsTn2ESzpFVNPdm/99kpvKMSSqvkxV4HWNpYrmnlZ2sFSP8kf68o7PkSyTBp/LG9dyJWa8SlLYBZlSaHaUrqX8Sl79pOQjd4/lecqyIs6HyDlnpWKkfzFBrtFo5GXOaXaorpPFL8DOlhNPcqmnjJIGh0zkPC+n091k/hIJr2MBX+zlySYj+pkwOqhbt4Io1BTAAUfmFcL0oRII6WxpFR8tEUzr3l+/Qw== Received: from DM8PR12MB5400.namprd12.prod.outlook.com (2603:10b6:8:3b::12) by DM4PR12MB5295.namprd12.prod.outlook.com (2603:10b6:5:39f::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4566.19; Tue, 5 Oct 2021 16:04:13 +0000 Received: from DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::d03d:1f75:ca20:6a32]) by DM8PR12MB5400.namprd12.prod.outlook.com ([fe80::d03d:1f75:ca20:6a32%5]) with mapi id 15.20.4566.022; Tue, 5 Oct 2021 16:04:13 +0000 From: Ori Kam To: Ivan Malov , "dev@dpdk.org" CC: Andrew Rybchenko , Xiaoyun Li , NBU-Contact-Thomas Monjalon , Ferruh Yigit , Ray Kinsella Thread-Topic: [PATCH] ethdev: let apps find transfer admin port for a given ethdev Thread-Index: AQHXuYEF7mIz57bbu0KuupGgVTkvZqvEFz1ggABCZACAADNosA== Date: Tue, 5 Oct 2021 16:04:13 +0000 Message-ID: References: <20210907125157.3843-1-ivan.malov@oktetlabs.ru> <20211005003604.31684-1-ivan.malov@oktetlabs.ru> <1d718593-bb63-4ab2-54ee-7b80540c4131@oktetlabs.ru> In-Reply-To: <1d718593-bb63-4ab2-54ee-7b80540c4131@oktetlabs.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oktetlabs.ru; dkim=none (message not signed) header.d=none;oktetlabs.ru; dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c46ee284-d797-40cf-707f-08d98819c6b5 x-ms-traffictypediagnostic: DM4PR12MB5295: x-ld-processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QGq49KqEr2R8MhbIUJ6R9GptM6+0TypwvPtWKByxV4RD0FNRemKu3xAXHbHrhcyzAIvaN1jOM09o/7tss6Kg88RgVWos91oKIw++f/YapVPhdQ+SjA0/02ABM6ma82iO+lmq3r/BxmNxluN0RylK8nXYZ0M1BT5cCx5NL2/zCgbyFRoKW3U4xMxezixA3L1nuqz+jma2C8+IvFdx0V9x9GU+R896kqr7YhkiIOzYoAsgF1f0MRvUgG4JxWYV7WMIPZGu54H2eg5hqYVeoYZuST9UmR9VpVr5keBKuIuZ24tMC+yOXGzpIFj6VurOFpF31gu+kQ2SLL0QlgPnkWgw9Rd95irlD9JNmE5nhlqqwncfH+3FSOaL/MoAHr20vVWx94JfmeSak5E8NGKZIi4AAaQ3G7nTHtFRnA9ofvgCA6rG3JwSc5Z2zIOBcoA+rbDT/UkfWGWjy4hZm5doDCZrn40aTIkv98d8Mdn7UAqnmKh463ORhwrFYWD7EbUHmLda1cc9WedYV1qNC47FxT9LluCxTyvGu61d+GFa5DBeGdDW256XWIw7xJj8mqCqx30eJ5bCxJMVK6JO8p27MPTV0k6qEULauBnX9K5/g5SkflORe0lEuGawJAp2GT8dq387RU+X9ccE/q8Cayd0QNPSo5sF0mwZvHGopVtYcen6ySkDueaGCfzwxLsKusENgVI0cTYqbm3IQFt11sbbPZdjnPmikk1d9kpd7+FU97pKmejOZ8qsiS05G1/zlyvNvVUBuwY4aTi2bA6zR+RN/QUOeIlp+HMU5FTaQCqVaSIdopniYJXVbHgq4bWjgjg477jBnAyzA34/wJ47IU2oOwJjiA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM8PR12MB5400.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(76116006)(508600001)(66556008)(8936002)(8676002)(66476007)(4326008)(66446008)(7696005)(71200400001)(5660300002)(9686003)(64756008)(38070700005)(55016002)(66946007)(30864003)(2906002)(86362001)(122000001)(33656002)(83380400001)(6506007)(54906003)(53546011)(110136005)(966005)(186003)(316002)(52536014)(38100700002)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MjJRR0p3UzBDNGhSUXE2VFZYaGpFWU9YT2F0V0VLL2t6a0Y0ZUtUMk5jN0NN?= =?utf-8?B?cjhYb01Bdk9JR2tONzkxRGpLYzAxVzZQVTY0WkpIODN5NG5OT3lhdkE4bGFy?= =?utf-8?B?RmMzU0VUOUs4NXdxYjZ2dE8zUmJrZVA3TDBMR3p0cWIyMEtOM1hBZHpWWjF4?= =?utf-8?B?clhqU205Y3JMYXV4U01pVzdXN3ZGY3lqSjdpRU9MRzVyWjMvR21wMlI4c2dh?= =?utf-8?B?WHNWTVMxYlB1OGZTd3VWbXpLUVU1elZaL2hlUnJNc24ycFF2d25WYlI1L2lm?= =?utf-8?B?VUp6ZTNodmc3Q01GaFJ5K3B5OEpNOXI1TlAvUVZ6NzRzc1ZUcGw4ZkhhMWNz?= =?utf-8?B?MDBnNi96MmpQWHI3NHdVeWV5a21SS1lVL2R1aGVaMGNYd1l6WXIxZ0VPdVBB?= =?utf-8?B?RkxHRnJ1WlFiVVA0dS9wQmRyYUJFbGN3ZmY4NGJ5dXJjTmxaUmlHSGhlQjdx?= =?utf-8?B?QWRKZGZQdGNKeE5Cb3ZETm52dDFhL1djSTdpUDRzb0duYldPVXZsTnFPWjhL?= =?utf-8?B?bXRONGdGTy9Hbng5amVVem1vWWpKaTNPeU9aaGNaVEIwU0RYUEtBUnF2amh3?= =?utf-8?B?NFdhT0N6bVMvT2d4Uy9JWHJidnVPMnpiNGlyeTIxNC9XMXlRMEoxS1M1aEVB?= =?utf-8?B?blZURCtzZXZYRGExclVDbzdpb2ErL2huL2hXREdRa1dDZ2o3ZHV3d2NFdW9p?= =?utf-8?B?akp2OUQ3Rk9LQ3doSlp0N3RDeFZQYThBV2Y3WktuWHFWSUJZaDNyaHFDaDg5?= =?utf-8?B?aWlXWW9uWCt6UWhKT2E0cWYxZjNxWVdrZDl4NkVkQnZuRVEzQXg1Mm9nOU41?= =?utf-8?B?SXgzVHM0VjJtKzNSMWVsV1Y2RWppZWpZT1ZIYWh1VFhobndzOE1nb2trSmls?= =?utf-8?B?NXlIQXBBSFB1T21ubitIeldFMTVDazZHa2dJRnlERy9GejdqenRoc05NTWQ4?= =?utf-8?B?UG95RGR1ZHhRV20vOU1MeGNyY3NoekJJaHdGQzR4MlNkdlJjNWlqMFNsZUda?= =?utf-8?B?WFd5YWRNSEJPVGhsbVJJeVZkNUpqb29CMTdIeDVlR1ljb0hkTE50OC9Ia2RO?= =?utf-8?B?VDBRZlVBbUZRM1pLMnlINUo5aHkxaVlkTmtZVWFxZGxhdjVINURnM0JXU2Vk?= =?utf-8?B?OUxIQWlGMTZ2eGQwNGNtcVhGRmEyNVhHTDZTK2ZsM0JyRENUSlQ1UnRDV2o4?= =?utf-8?B?NGxvRVJTMktGRWZlZzFmamdMRFlCTURKanVwb2VDNG1iQTBuQTZKaWFPS0Uv?= =?utf-8?B?MjhpNUpKN285Z1RpZXVyUE02R3luY0tNQWFLek9VWlVyVlZXRUdwU1BCOGQw?= =?utf-8?B?b2tGUmQ2bHJJQVZoZFJneUcvaC9HWGZHQ0xQdFYrb2tZQ3hWbnN1S280UEs3?= =?utf-8?B?RDlMamNrMjluOHVqbVFuancxV2MwUlNoUWNoT3JNMklaQVRsR2JCRGxHUndu?= =?utf-8?B?Nm0wd25md05Xc0x3c3RoVkFGdFhZYXI2UnM1aXlpQjI0NGF2V2hQaHpFek1S?= =?utf-8?B?VDFTOTZTdXdaRWlET3dFaGtnSVJxOE9VeVc4Si9SMkU1QndMcHhKblkzTDJw?= =?utf-8?B?b3lmZUxmN0pHUzVpSGkyMDhVZklTSngzNEFobmJMcXN6SGNLMjJ3OHFUTjFL?= =?utf-8?B?NzljUG9jNHBpbTg2Yk1VY3o0Z05pSVh3SFh3d3E0VGV3aDhpcGgvb3diWmQw?= =?utf-8?B?eFNYNVc0aEo4K1F1d3pnZnk1dDhTUExvT29rSjd6bzVCMEY3d2lZQTlJS2hT?= =?utf-8?B?UzJPUEdiRlA0ZGE1Q0ZyOWNTZmxtbTRia21JbmIyZndkSWNsTVdzSVpHbDE1?= =?utf-8?B?QXNHQUNDd3ZNQ0Q4d2hJNW5ya05LUndIMDhDcDA0bUQ1WE9wTWhncldselRS?= =?utf-8?Q?Oj6qBrTR16/eb?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR12MB5400.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c46ee284-d797-40cf-707f-08d98819c6b5 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Oct 2021 16:04:13.7820 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: n1ofkDzPiL1pmV44MIPa8tPgp2YLB0THwhbpaIWExVtPRwnn382AjHJyoiuy9YWriJySsAavlIQpSoUmzNzRKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB5295 Subject: Re: [dpdk-dev] [PATCH] ethdev: let apps find transfer admin port for a given ethdev 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 Sender: "dev" SGkgSXZhbiwNCg0KSSBhZ3JlZSB3aXRoIHlvdXIgcmVwbHkuDQoNCkFja2VkLWJ5OiBPcmkgS2Ft IDxvcmlrYUBudmlkaWEuY29tPg0KVGhhbmtzLA0KT3JpDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogSXZhbiBNYWxvdiA8SXZhbi5NYWxvdkBva3RldGxhYnMucnU+DQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGV0aGRldjogbGV0IGFwcHMgZmluZCB0cmFuc2ZlciBhZG1p biBwb3J0IGZvciBhIGdpdmVuDQo+IGV0aGRldg0KPiANCj4gSGkgT3JpLA0KPiANCj4gVGhhbmtz IGEgbG90IGZvciBlYWdlcmx5IHJldmlld2luZyB0aGlzIGFuZCByZWxhdGVkIHBhdGNoZXMuIFRo YXQncyB2ZXJ5IGhlbHBmdWwNCj4gb2YgeW91cnMuDQo+IA0KPiBPbiAwNS8xMC8yMDIxIDEyOjIy LCBPcmkgS2FtIHdyb3RlOg0KPiA+IEhpIEl2YW4sDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogSXZhbiBNYWxvdiA8aXZhbi5tYWxvdkBva3RldGxhYnMu cnU+DQo+ID4+IFNlbnQ6IFR1ZXNkYXksIE9jdG9iZXIgNSwgMjAyMSAzOjM2IEFNDQo+ID4+IFN1 YmplY3Q6IFtQQVRDSF0gZXRoZGV2OiBsZXQgYXBwcyBmaW5kIHRyYW5zZmVyIGFkbWluIHBvcnQg Zm9yIGENCj4gPj4gZ2l2ZW4gZXRoZGV2DQo+ID4+DQo+ID4+IEludHJvZHVjZSBhIGhlbHBlciBB UEkgdG8gbGV0IGFwcGxpY2F0aW9ucyBmaW5kIHRyYW5zZmVyIGFkbWluIHBvcnQNCj4gPj4gZm9y IGEgZ2l2ZW4gZXRoZGV2IHRvIGF2b2lkIGZhaWx1cmVzIHdoZW4gbWFuYWdpbmcgInRyYW5zZmVy IiBmbG93cw0KPiA+PiB0aHJvdWdoIHVucHJpdmlsZWdlZCBwb3J0cy4NCj4gPj4NCj4gPj4gU2ln bmVkLW9mZi1ieTogSXZhbiBNYWxvdiA8aXZhbi5tYWxvdkBva3RldGxhYnMucnU+DQo+ID4+IFJl dmlld2VkLWJ5OiBBbmRyZXcgUnliY2hlbmtvIDxhbmRyZXcucnliY2hlbmtvQG9rdGV0bGFicy5y dT4NCj4gPj4gLS0tDQo+ID4+IFBhdGNoIHNlcmllcyBbMV0gaGFzIHJld29ya2VkIHN1cHBvcnQg Zm9yICJ0cmFuc2ZlciIgZmxvd3MuDQo+ID4+IEFzIGEgcmVzdWx0LCBhbiBhcHBsaWNhdGlvbiBu byBsb25nZXIgbmVlZHMgdG8gY29tbXVuaWNhdGUgc3VjaCBmbG93cw0KPiA+PiB0aHJvdWdoIGEg cGFydGljdWxhciBldGhkZXYgd2hlcmUgaXQgcmVjZWl2ZXMgdGhlIGNvcnJlc3BvbmRpbmcNCj4g Pj4gcGFja2V0cyBpbiB0aGUgZmlyc3QgcGxhY2UuDQo+ID4+DQo+ID4+IEhlbmNlLCB0aGlzIHBh dGNoIGlzIGEgbGVnaXRpbWF0ZSBmb2xsb3ctdXAgdG8gdGhlIHNlcmllcyBbMV0uDQo+ID4+IEF0 IHRoZSBzYW1lIHRpbWUsIGl0J3MgYSBmb2xsb3ctdXAgdG8gdGhlIGVhcmx5IFJGQyBbMl0uDQo+ ID4+DQo+ID4+IG5ldC9zZmMgZHJpdmVyIGlzIGdvaW5nIHRvIHN1cHBvcnQgdGhpcyBtZXRob2Qu IFRoZSBjb3JyZXNwb25kaW5nDQo+ID4+IHBhdGNoIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgYW5k IHdpbGwgYmUgcHJvdmlkZWQgaW4gdGhlIGNvdXJzZSBvZiB0aGlzIHJlbGVhc2UNCj4gY3ljbGUu DQo+ID4+DQo+ID4+IFsxXSBodHRwczovL3BhdGNoZXMuZHBkay5vcmcvcHJvamVjdC9kcGRrL2xp c3QvP3Nlcmllcz0xOTMyNg0KPiA+PiBbMl0gaHR0cHM6Ly9wYXRjaGVzLmRwZGsub3JnL3Byb2pl Y3QvZHBkay9saXN0Lz9zZXJpZXM9MTg3MzcNCj4gPj4gLS0tDQo+ID4+ICAgYXBwL3Rlc3QtcG1k L2NvbmZpZy5jICAgICAgICAgICAgICAgICAgfCAxMDYgKysrKysrKysrKysrKysrKysrKysrKysr LQ0KPiA+PiAgIGFwcC90ZXN0LXBtZC90ZXN0cG1kLmMgICAgICAgICAgICAgICAgIHwgIDIxICsr KysrDQo+ID4+ICAgYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuaCAgICAgICAgICAgICAgICAgfCAgIDQg Kw0KPiA+PiAgIGFwcC90ZXN0LXBtZC91dGlsLmMgICAgICAgICAgICAgICAgICAgIHwgICA1ICst DQo+ID4+ICAgZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMV8xMS5yc3QgfCAgIDMgKw0K PiA+PiAgIGxpYi9ldGhkZXYvcnRlX2Zsb3cuYyAgICAgICAgICAgICAgICAgIHwgIDIyICsrKysr DQo+ID4+ICAgbGliL2V0aGRldi9ydGVfZmxvdy5oICAgICAgICAgICAgICAgICAgfCAgMzIgKysr KysrKysNCj4gPj4gICBsaWIvZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5oICAgICAgICAgICB8ICAg NSArKw0KPiA+PiAgIGxpYi9ldGhkZXYvdmVyc2lvbi5tYXAgICAgICAgICAgICAgICAgIHwgICAz ICsNCj4gPj4gICA5IGZpbGVzIGNoYW5nZWQsIDE5NyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QtcG1kL2NvbmZpZy5jIGIvYXBw L3Rlc3QtcG1kL2NvbmZpZy5jIGluZGV4DQo+ID4+IDljNjYzMjllOTYuLjI3NzJjODNkMGEgMTAw NjQ0DQo+ID4+IC0tLSBhL2FwcC90ZXN0LXBtZC9jb25maWcuYw0KPiA+PiArKysgYi9hcHAvdGVz dC1wbWQvY29uZmlnLmMNCj4gPj4gQEAgLTE1MDUsMTAgKzE1MDUsMjUgQEAgcG9ydF9hY3Rpb25f aGFuZGxlX2NyZWF0ZShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+PiB1aW50MzJfdCBpZCwNCj4gPj4g ICAJc3RydWN0IHBvcnRfaW5kaXJlY3RfYWN0aW9uICpwaWE7DQo+ID4+ICAgCWludCByZXQ7DQo+ ID4+ICAgCXN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJvcjsNCj4gPj4gKwlzdHJ1Y3QgcnRlX3Bv cnQgKnBvcnQ7DQo+ID4+ICsNCj4gPj4gKwlpZiAocG9ydF9pZF9pc19pbnZhbGlkKHBvcnRfaWQs IEVOQUJMRURfV0FSTikgfHwNCj4gPj4gKwkgICAgcG9ydF9pZCA9PSAocG9ydGlkX3QpUlRFX1BP UlRfQUxMKQ0KPiA+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4NCj4gPg0KPiA+IElzIHRoaXMg cGFydCBvZiB0aGUgcGF0Y2ggb3IgYSBnZW5lcmFsIGZpeD8NCj4gDQo+IEkga25vdyBpdCBtaWdo dCBzZWVtIHVucmVsYXRlZCBhdCBmaXJzdCBnbGFuY2UuIEJ1dCBpdCBoYXMgdG8gYmUgYWRkZWQg aGVyZSBmb3INCj4gY29uc2lzdGVuY3kgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29kZSBiZWluZyBh ZGRlZC4gSXQgc2hvdWxkIGJlIE9LLg0KPiANCkp1c3QgY2hlY2tpbmcgSSdtIE8uSy4gd2l0aCBp dC4NCg0KPiA+DQo+ID4+ICAgCXJldCA9IGFjdGlvbl9hbGxvYyhwb3J0X2lkLCBpZCwgJnBpYSk7 DQo+ID4+ICAgCWlmIChyZXQpDQo+ID4+ICAgCQlyZXR1cm4gcmV0Ow0KPiA+PiArDQo+ID4+ICsJ cG9ydCA9ICZwb3J0c1twb3J0X2lkXTsNCj4gPj4gKw0KPiA+PiArCWlmIChjb25mLT50cmFuc2Zl cikNCj4gPj4gKwkJcG9ydF9pZCA9IHBvcnQtPmZsb3dfdHJhbnNmZXJfcHJveHk7DQo+ID4+ICsN Cj4gPj4gKwlpZiAocG9ydF9pZF9pc19pbnZhbGlkKHBvcnRfaWQsIEVOQUJMRURfV0FSTikgfHwN Cj4gPj4gKwkgICAgcG9ydF9pZCA9PSAocG9ydGlkX3QpUlRFX1BPUlRfQUxMKQ0KPiA+PiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gPj4gKw0KPiA+PiAgIAlpZiAoYWN0aW9uLT50eXBlID09IFJURV9G TE9XX0FDVElPTl9UWVBFX0FHRSkgew0KPiA+PiAgIAkJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9h Z2UgKmFnZSA9DQo+ID4+ICAgCQkJKHN0cnVjdCBydGVfZmxvd19hY3Rpb25fYWdlICopKHVpbnRw dHJfdCkoYWN0aW9uLT5jb25mKTsNCj4gQEANCj4gPj4gLTE1MzEsNiArMTU0Niw3IEBAIHBvcnRf YWN0aW9uX2hhbmRsZV9jcmVhdGUocG9ydGlkX3QgcG9ydF9pZCwNCj4gPj4gdWludDMyX3QgaWQs DQo+ID4+ICAgCQlyZXR1cm4gcG9ydF9mbG93X2NvbXBsYWluKCZlcnJvcik7DQo+ID4+ICAgCX0N Cj4gPj4gICAJcGlhLT50eXBlID0gYWN0aW9uLT50eXBlOw0KPiA+PiArCXBpYS0+dHJhbnNmZXIg PSBjb25mLT50cmFuc2ZlcjsNCj4gPj4gICAJcHJpbnRmKCJJbmRpcmVjdCBhY3Rpb24gIyV1IGNy ZWF0ZWRcbiIsIHBpYS0+aWQpOw0KPiA+PiAgIAlyZXR1cm4gMDsNCj4gPj4gICB9DQo+ID4+IEBA IC0xNTU3LDkgKzE1NzMsMTggQEAgcG9ydF9hY3Rpb25faGFuZGxlX2Rlc3Ryb3kocG9ydGlkX3Qg cG9ydF9pZCwNCj4gPj4gICAJCWZvciAoaSA9IDA7IGkgIT0gbjsgKytpKSB7DQo+ID4+ICAgCQkJ c3RydWN0IHJ0ZV9mbG93X2Vycm9yIGVycm9yOw0KPiA+PiAgIAkJCXN0cnVjdCBwb3J0X2luZGly ZWN0X2FjdGlvbiAqcGlhID0gKnRtcDsNCj4gPj4gKwkJCXBvcnRpZF90IHBvcnRfaWRfZWZmID0g cG9ydF9pZDsNCj4gPj4NCj4gPj4gICAJCQlpZiAoYWN0aW9uc1tpXSAhPSBwaWEtPmlkKQ0KPiA+ PiAgIAkJCQljb250aW51ZTsNCj4gPj4gKw0KPiA+PiArCQkJaWYgKHBpYS0+dHJhbnNmZXIpDQo+ ID4+ICsJCQkJcG9ydF9pZF9lZmYgPSBwb3J0LT5mbG93X3RyYW5zZmVyX3Byb3h5Ow0KPiA+PiAr DQo+ID4+ICsJCQlpZiAocG9ydF9pZF9pc19pbnZhbGlkKHBvcnRfaWRfZWZmLCBFTkFCTEVEX1dB Uk4pIHx8DQo+ID4+ICsJCQkgICAgcG9ydF9pZF9lZmYgPT0gKHBvcnRpZF90KVJURV9QT1JUX0FM TCkNCj4gPj4gKwkJCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4gKw0KPiA+PiAgIAkJCS8qDQo+ID4+ ICAgCQkJICogUG9pc29uaW5nIHRvIG1ha2Ugc3VyZSBQTURzIHVwZGF0ZSBpdCBpbiBjYXNlDQo+ ID4+ICAgCQkJICogb2YgZXJyb3IuDQo+ID4+IEBAIC0xNTY3LDcgKzE1OTIsNyBAQCBwb3J0X2Fj dGlvbl9oYW5kbGVfZGVzdHJveShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+PiAgIAkJCW1lbXNldCgm ZXJyb3IsIDB4MzMsIHNpemVvZihlcnJvcikpOw0KPiA+Pg0KPiA+PiAgIAkJCWlmIChwaWEtPmhh bmRsZSAmJiBydGVfZmxvd19hY3Rpb25faGFuZGxlX2Rlc3Ryb3koDQo+ID4+IC0JCQkJCXBvcnRf aWQsIHBpYS0+aGFuZGxlLCAmZXJyb3IpKSB7DQo+ID4+ICsJCQkJCXBvcnRfaWRfZWZmLCBwaWEt PmhhbmRsZSwgJmVycm9yKSkgew0KPiA+PiAgIAkJCQlyZXQgPSBwb3J0X2Zsb3dfY29tcGxhaW4o JmVycm9yKTsNCj4gPj4gICAJCQkJY29udGludWU7DQo+ID4+ICAgCQkJfQ0KPiA+PiBAQCAtMTYw Miw4ICsxNjI3LDE1IEBAIHBvcnRfYWN0aW9uX2hhbmRsZV91cGRhdGUocG9ydGlkX3QgcG9ydF9p ZCwNCj4gPj4gdWludDMyX3QgaWQsDQo+ID4+ICAgCXN0cnVjdCBydGVfZmxvd19lcnJvciBlcnJv cjsNCj4gPj4gICAJc3RydWN0IHJ0ZV9mbG93X2FjdGlvbl9oYW5kbGUgKmFjdGlvbl9oYW5kbGU7 DQo+ID4+ICAgCXN0cnVjdCBwb3J0X2luZGlyZWN0X2FjdGlvbiAqcGlhOw0KPiA+PiArCXN0cnVj dCBydGVfcG9ydCAqcG9ydDsNCj4gPj4gICAJY29uc3Qgdm9pZCAqdXBkYXRlOw0KPiA+Pg0KPiA+ PiArCWlmIChwb3J0X2lkX2lzX2ludmFsaWQocG9ydF9pZCwgRU5BQkxFRF9XQVJOKSB8fA0KPiA+ PiArCSAgICBwb3J0X2lkID09IChwb3J0aWRfdClSVEVfUE9SVF9BTEwpDQo+ID4+ICsJCXJldHVy biAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICsJcG9ydCA9ICZwb3J0c1twb3J0X2lkXTsNCj4gPj4g Kw0KPiA+PiAgIAlhY3Rpb25faGFuZGxlID0gcG9ydF9hY3Rpb25faGFuZGxlX2dldF9ieV9pZChw b3J0X2lkLCBpZCk7DQo+ID4+ICAgCWlmICghYWN0aW9uX2hhbmRsZSkNCj4gPj4gICAJCXJldHVy biAtRUlOVkFMOw0KPiA+PiBAQCAtMTYxOCw2ICsxNjUwLDE0IEBAIHBvcnRfYWN0aW9uX2hhbmRs ZV91cGRhdGUocG9ydGlkX3QgcG9ydF9pZCwNCj4gPj4gdWludDMyX3QgaWQsDQo+ID4+ICAgCQl1 cGRhdGUgPSBhY3Rpb247DQo+ID4+ICAgCQlicmVhazsNCj4gPj4gICAJfQ0KPiA+PiArDQo+ID4+ ICsJaWYgKHBpYS0+dHJhbnNmZXIpDQo+ID4+ICsJCXBvcnRfaWQgPSBwb3J0LT5mbG93X3RyYW5z ZmVyX3Byb3h5Ow0KPiA+PiArDQo+ID4+ICsJaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0X2lk LCBFTkFCTEVEX1dBUk4pIHx8DQo+ID4+ICsJICAgIHBvcnRfaWQgPT0gKHBvcnRpZF90KVJURV9Q T1JUX0FMTCkNCj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+ICsNCj4gPj4gICAJaWYgKHJ0 ZV9mbG93X2FjdGlvbl9oYW5kbGVfdXBkYXRlKHBvcnRfaWQsIGFjdGlvbl9oYW5kbGUsIHVwZGF0 ZSwNCj4gPj4gICAJCQkJCSAgJmVycm9yKSkgew0KPiA+PiAgIAkJcmV0dXJuIHBvcnRfZmxvd19j b21wbGFpbigmZXJyb3IpOyBAQCAtMTYzNiw2ICsxNjc2LDE0DQo+IEBADQo+ID4+IHBvcnRfYWN0 aW9uX2hhbmRsZV9xdWVyeShwb3J0aWRfdCBwb3J0X2lkLCB1aW50MzJfdCBpZCkNCj4gPj4gICAJ CXN0cnVjdCBydGVfZmxvd19xdWVyeV9hZ2UgYWdlOw0KPiA+PiAgIAkJc3RydWN0IHJ0ZV9mbG93 X2FjdGlvbl9jb25udHJhY2sgY3Q7DQo+ID4+ICAgCX0gcXVlcnk7DQo+ID4+ICsJcG9ydGlkX3Qg cG9ydF9pZF9lZmYgPSBwb3J0X2lkOw0KPiA+PiArCXN0cnVjdCBydGVfcG9ydCAqcG9ydDsNCj4g Pj4gKw0KPiA+PiArCWlmIChwb3J0X2lkX2lzX2ludmFsaWQocG9ydF9pZCwgRU5BQkxFRF9XQVJO KSB8fA0KPiA+PiArCSAgICBwb3J0X2lkID09IChwb3J0aWRfdClSVEVfUE9SVF9BTEwpDQo+ID4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICsJcG9ydCA9ICZwb3J0c1twb3J0X2lk XTsNCj4gPj4NCj4gPj4gICAJcGlhID0gYWN0aW9uX2dldF9ieV9pZChwb3J0X2lkLCBpZCk7DQo+ ID4+ICAgCWlmICghcGlhKQ0KPiA+PiBAQCAtMTY1MCwxMCArMTY5OCwxOSBAQCBwb3J0X2FjdGlv bl9oYW5kbGVfcXVlcnkocG9ydGlkX3QgcG9ydF9pZCwNCj4gPj4gdWludDMyX3QgaWQpDQo+ID4+ ICAgCQkJaWQsIHBpYS0+dHlwZSwgcG9ydF9pZCk7DQo+ID4+ICAgCQlyZXR1cm4gLUVOT1RTVVA7 DQo+ID4+ICAgCX0NCj4gPj4gKw0KPiA+PiArCWlmIChwaWEtPnRyYW5zZmVyKQ0KPiA+PiArCQlw b3J0X2lkX2VmZiA9IHBvcnQtPmZsb3dfdHJhbnNmZXJfcHJveHk7DQo+ID4+ICsNCj4gPj4gKwlp ZiAocG9ydF9pZF9pc19pbnZhbGlkKHBvcnRfaWRfZWZmLCBFTkFCTEVEX1dBUk4pIHx8DQo+ID4+ ICsJICAgIHBvcnRfaWRfZWZmID09IChwb3J0aWRfdClSVEVfUE9SVF9BTEwpDQo+ID4+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICAgCS8qIFBvaXNvbmluZyB0byBtYWtlIHN1cmUg UE1EcyB1cGRhdGUgaXQgaW4gY2FzZSBvZiBlcnJvci4gKi8NCj4gPj4gICAJbWVtc2V0KCZlcnJv ciwgMHg1NSwgc2l6ZW9mKGVycm9yKSk7DQo+ID4+ICAgCW1lbXNldCgmcXVlcnksIDAsIHNpemVv ZihxdWVyeSkpOw0KPiA+PiAtCWlmIChydGVfZmxvd19hY3Rpb25faGFuZGxlX3F1ZXJ5KHBvcnRf aWQsIHBpYS0+aGFuZGxlLCAmcXVlcnksDQo+ID4+ICZlcnJvcikpDQo+ID4+ICsJaWYgKHJ0ZV9m bG93X2FjdGlvbl9oYW5kbGVfcXVlcnkocG9ydF9pZF9lZmYsIHBpYS0+aGFuZGxlLCAmcXVlcnks DQo+ID4+ICsJCQkJCSAmZXJyb3IpKQ0KPiA+PiAgIAkJcmV0dXJuIHBvcnRfZmxvd19jb21wbGFp bigmZXJyb3IpOw0KPiA+PiAgIAlzd2l0Y2ggKHBpYS0+dHlwZSkgew0KPiA+PiAgIAljYXNlIFJU RV9GTE9XX0FDVElPTl9UWVBFX0FHRToNCj4gPj4gQEAgLTE4NzIsNiArMTkyOSwyMCBAQCBwb3J0 X2Zsb3dfdmFsaWRhdGUocG9ydGlkX3QgcG9ydF9pZCwgIHsNCj4gPj4gICAJc3RydWN0IHJ0ZV9m bG93X2Vycm9yIGVycm9yOw0KPiA+PiAgIAlzdHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCAqcGZ0ID0g TlVMTDsNCj4gPj4gKwlzdHJ1Y3QgcnRlX3BvcnQgKnBvcnQ7DQo+ID4+ICsNCj4gPj4gKwlpZiAo cG9ydF9pZF9pc19pbnZhbGlkKHBvcnRfaWQsIEVOQUJMRURfV0FSTikgfHwNCj4gPj4gKwkgICAg cG9ydF9pZCA9PSAocG9ydGlkX3QpUlRFX1BPUlRfQUxMKQ0KPiA+PiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gPj4gKw0KPiA+PiArCXBvcnQgPSAmcG9ydHNbcG9ydF9pZF07DQo+ID4+ICsNCj4gPj4g KwlpZiAoYXR0ci0+dHJhbnNmZXIpDQo+ID4+ICsJCXBvcnRfaWQgPSBwb3J0LT5mbG93X3RyYW5z ZmVyX3Byb3h5Ow0KPiA+PiArDQo+ID4+ICsJaWYgKHBvcnRfaWRfaXNfaW52YWxpZChwb3J0X2lk LCBFTkFCTEVEX1dBUk4pIHx8DQo+ID4+ICsJICAgIHBvcnRfaWQgPT0gKHBvcnRpZF90KVJURV9Q T1JUX0FMTCkNCj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+DQo+ID4+ICAgCS8qIFBvaXNv bmluZyB0byBtYWtlIHN1cmUgUE1EcyB1cGRhdGUgaXQgaW4gY2FzZSBvZiBlcnJvci4gKi8NCj4g Pj4gICAJbWVtc2V0KCZlcnJvciwgMHgxMSwgc2l6ZW9mKGVycm9yKSk7IEBAIC0xOTI1LDcgKzE5 OTYsMTkgQEANCj4gPj4gcG9ydF9mbG93X2NyZWF0ZShwb3J0aWRfdCBwb3J0X2lkLA0KPiA+PiAg IAlzdHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCAqcGZ0ID0gTlVMTDsNCj4gPj4gICAJc3RydWN0IHJ0 ZV9mbG93X2FjdGlvbl9hZ2UgKmFnZSA9IGFnZV9hY3Rpb25fZ2V0KGFjdGlvbnMpOw0KPiA+Pg0K PiA+PiArCWlmIChwb3J0X2lkX2lzX2ludmFsaWQocG9ydF9pZCwgRU5BQkxFRF9XQVJOKSB8fA0K PiA+PiArCSAgICBwb3J0X2lkID09IChwb3J0aWRfdClSVEVfUE9SVF9BTEwpDQo+ID4+ICsJCXJl dHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICAgCXBvcnQgPSAmcG9ydHNbcG9ydF9pZF07DQo+ ID4+ICsNCj4gPj4gKwlpZiAoYXR0ci0+dHJhbnNmZXIpDQo+ID4+ICsJCXBvcnRfaWQgPSBwb3J0 LT5mbG93X3RyYW5zZmVyX3Byb3h5Ow0KPiA+PiArDQo+ID4+ICsJaWYgKHBvcnRfaWRfaXNfaW52 YWxpZChwb3J0X2lkLCBFTkFCTEVEX1dBUk4pIHx8DQo+ID4+ICsJICAgIHBvcnRfaWQgPT0gKHBv cnRpZF90KVJURV9QT1JUX0FMTCkNCj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+ICsNCj4g Pj4gICAJaWYgKHBvcnQtPmZsb3dfbGlzdCkgew0KPiA+PiAgIAkJaWYgKHBvcnQtPmZsb3dfbGlz dC0+aWQgPT0gVUlOVDMyX01BWCkgew0KPiA+PiAgIAkJCWZwcmludGYoc3RkZXJyLA0KPiA+PiBA QCAtMTk4OSw2ICsyMDcyLDcgQEAgcG9ydF9mbG93X2Rlc3Ryb3kocG9ydGlkX3QgcG9ydF9pZCwg dWludDMyX3QgbiwNCj4gPj4gY29uc3QgdWludDMyX3QgKnJ1bGUpDQo+ID4+ICAgCQl1aW50MzJf dCBpOw0KPiA+Pg0KPiA+PiAgIAkJZm9yIChpID0gMDsgaSAhPSBuOyArK2kpIHsNCj4gPj4gKwkJ CXBvcnRpZF90IHBvcnRfaWRfZWZmID0gcG9ydF9pZDsNCj4gPj4gICAJCQlzdHJ1Y3QgcnRlX2Zs b3dfZXJyb3IgZXJyb3I7DQo+ID4+ICAgCQkJc3RydWN0IHBvcnRfZmxvdyAqcGYgPSAqdG1wOw0K PiA+Pg0KPiA+PiBAQCAtMTk5OSw3ICsyMDgzLDE1IEBAIHBvcnRfZmxvd19kZXN0cm95KHBvcnRp ZF90IHBvcnRfaWQsIHVpbnQzMl90DQo+ID4+IG4sIGNvbnN0IHVpbnQzMl90ICpydWxlKQ0KPiA+ PiAgIAkJCSAqIG9mIGVycm9yLg0KPiA+PiAgIAkJCSAqLw0KPiA+PiAgIAkJCW1lbXNldCgmZXJy b3IsIDB4MzMsIHNpemVvZihlcnJvcikpOw0KPiA+PiAtCQkJaWYgKHJ0ZV9mbG93X2Rlc3Ryb3ko cG9ydF9pZCwgcGYtPmZsb3csICZlcnJvcikpIHsNCj4gPj4gKw0KPiA+PiArCQkJaWYgKHBmLT5y dWxlLmF0dHItPnRyYW5zZmVyKQ0KPiA+PiArCQkJCXBvcnRfaWRfZWZmID0gcG9ydC0+Zmxvd190 cmFuc2Zlcl9wcm94eTsNCj4gPj4gKw0KPiA+PiArCQkJaWYgKHBvcnRfaWRfaXNfaW52YWxpZChw b3J0X2lkX2VmZiwgRU5BQkxFRF9XQVJOKSB8fA0KPiA+PiArCQkJICAgIHBvcnRfaWRfZWZmID09 IChwb3J0aWRfdClSVEVfUE9SVF9BTEwpDQo+ID4+ICsJCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4+ ICsNCj4gPj4gKwkJCWlmIChydGVfZmxvd19kZXN0cm95KHBvcnRfaWRfZWZmLCBwZi0+Zmxvdywg JmVycm9yKSkgew0KPiA+PiAgIAkJCQlyZXQgPSBwb3J0X2Zsb3dfY29tcGxhaW4oJmVycm9yKTsN Cj4gPj4gICAJCQkJY29udGludWU7DQo+ID4+ICAgCQkJfQ0KPiA+PiBAQCAtMjEzMyw2ICsyMjI1 LDE0IEBAIHBvcnRfZmxvd19xdWVyeShwb3J0aWRfdCBwb3J0X2lkLCB1aW50MzJfdCBydWxlLA0K PiA+PiAgIAkJZnByaW50ZihzdGRlcnIsICJGbG93IHJ1bGUgIyV1IG5vdCBmb3VuZFxuIiwgcnVs ZSk7DQo+ID4+ICAgCQlyZXR1cm4gLUVOT0VOVDsNCj4gPj4gICAJfQ0KPiA+PiArDQo+ID4+ICsJ aWYgKHBmLT5ydWxlLmF0dHItPnRyYW5zZmVyKQ0KPiA+PiArCQlwb3J0X2lkID0gcG9ydC0+Zmxv d190cmFuc2Zlcl9wcm94eTsNCj4gPj4gKw0KPiA+PiArCWlmIChwb3J0X2lkX2lzX2ludmFsaWQo cG9ydF9pZCwgRU5BQkxFRF9XQVJOKSB8fA0KPiA+PiArCSAgICBwb3J0X2lkID09IChwb3J0aWRf dClSVEVfUE9SVF9BTEwpDQo+ID4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ID4+ICAg CXJldCA9IHJ0ZV9mbG93X2NvbnYoUlRFX0ZMT1dfQ09OVl9PUF9BQ1RJT05fTkFNRV9QVFIsDQo+ ID4+ICAgCQkJICAgICZuYW1lLCBzaXplb2YobmFtZSksDQo+ID4+ICAgCQkJICAgICh2b2lkICop KHVpbnRwdHJfdClhY3Rpb24tPnR5cGUsICZlcnJvcik7IGRpZmYgLS1naXQNCj4gPj4gYS9hcHAv dGVzdC1wbWQvdGVzdHBtZC5jIGIvYXBwL3Rlc3QtcG1kL3Rlc3RwbWQuYyBpbmRleA0KPiA+PiA5 N2FlNTJlMTdlLi5hODhlOTIwYmQwIDEwMDY0NA0KPiA+PiAtLS0gYS9hcHAvdGVzdC1wbWQvdGVz dHBtZC5jDQo+ID4+ICsrKyBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmMNCj4gPj4gQEAgLTUzMyw2 ICs1MzMsMjUgQEAgaW50IHByb2NfaWQ7DQo+ID4+ICAgICovDQo+ID4+ICAgdW5zaWduZWQgaW50 IG51bV9wcm9jcyA9IDE7DQo+ID4+DQo+ID4+ICtzdGF0aWMgdm9pZA0KPiA+PiArZmxvd19waWNr X3RyYW5zZmVyX3Byb3h5X21wKHVpbnQxNl90IHBvcnRfaWQpIHsNCj4gPj4gKwlzdHJ1Y3QgcnRl X3BvcnQgKnBvcnQgPSAmcG9ydHNbcG9ydF9pZF07DQo+ID4+ICsJaW50IHJldDsNCj4gPj4gKw0K PiA+PiArCXBvcnQtPmZsb3dfdHJhbnNmZXJfcHJveHkgPSBwb3J0X2lkOw0KPiA+PiArDQo+ID4+ ICsJaWYgKCFpc19wcm9jX3ByaW1hcnkoKSkNCj4gPj4gKwkJcmV0dXJuOw0KPiA+PiArDQo+ID4+ ICsJcmV0ID0gcnRlX2Zsb3dfcGlja190cmFuc2Zlcl9wcm94eShwb3J0X2lkLCAmcG9ydC0NCj4g Pj4+IGZsb3dfdHJhbnNmZXJfcHJveHksDQo+ID4+ICsJCQkJCSAgIE5VTEwpOw0KPiA+PiArCWlm IChyZXQgIT0gMCkgew0KPiA+PiArCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIHBpY2tpbmcgZmxv dyB0cmFuc2ZlciBwcm94eSBmb3IgcG9ydCAldTogJXMNCj4gPj4gLSBpZ25vcmVcbiIsDQo+ID4+ ICsJCQlwb3J0X2lkLCBydGVfc3RyZXJyb3IoLXJldCkpOw0KPiA+PiArCX0NCj4gPj4gK30NCj4g Pj4gKw0KPiA+PiAgIHN0YXRpYyBpbnQNCj4gPj4gICBldGhfZGV2X2NvbmZpZ3VyZV9tcCh1aW50 MTZfdCBwb3J0X2lkLCB1aW50MTZfdCBuYl9yeF9xLCB1aW50MTZfdA0KPiBuYl90eF9xLA0KPiA+ PiAgIAkJICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9ldGhfY29uZiAqZGV2X2NvbmYpIEBAIC0xNDg5 LDYgKzE1MDgsOA0KPiBAQA0KPiA+PiBpbml0X2NvbmZpZ19wb3J0X29mZmxvYWRzKHBvcnRpZF90 IHBpZCwgdWludDMyX3Qgc29ja2V0X2lkKQ0KPiA+PiAgIAlpbnQgcmV0Ow0KPiA+PiAgIAlpbnQg aTsNCj4gPj4NCj4gPj4gKwlmbG93X3BpY2tfdHJhbnNmZXJfcHJveHlfbXAocGlkKTsNCj4gPj4g Kw0KPiA+PiAgIAlwb3J0LT5kZXZfY29uZi50eG1vZGUgPSB0eF9tb2RlOw0KPiA+PiAgIAlwb3J0 LT5kZXZfY29uZi5yeG1vZGUgPSByeF9tb2RlOw0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvYXBw L3Rlc3QtcG1kL3Rlc3RwbWQuaCBiL2FwcC90ZXN0LXBtZC90ZXN0cG1kLmggaW5kZXgNCj4gPj4g NTg2M2IyZjQzZi4uYjNkZmQzNTBlNSAxMDA2NDQNCj4gPj4gLS0tIGEvYXBwL3Rlc3QtcG1kL3Rl c3RwbWQuaA0KPiA+PiArKysgYi9hcHAvdGVzdC1wbWQvdGVzdHBtZC5oDQo+ID4+IEBAIC0xNzMs NiArMTczLDggQEAgc3RydWN0IHBvcnRfaW5kaXJlY3RfYWN0aW9uIHsNCj4gPj4gICAJZW51bSBy dGVfZmxvd19hY3Rpb25fdHlwZSB0eXBlOyAvKio8IEFjdGlvbiB0eXBlLiAqLw0KPiA+PiAgIAlz dHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX2hhbmRsZSAqaGFuZGxlOwkvKio8IEluZGlyZWN0IGFjdGlv biBoYW5kbGUuICovDQo+ID4+ICAgCWVudW0gYWdlX2FjdGlvbl9jb250ZXh0X3R5cGUgYWdlX3R5 cGU7IC8qKjwgQWdlIGFjdGlvbiBjb250ZXh0DQo+ID4+IHR5cGUuICovDQo+ID4+ICsJLyoqIElm IHRydWUsIHRoZSBhY3Rpb24gYXBwbGllcyB0byAidHJhbnNmZXIiIGZsb3dzLCBhbmQgdmljZSB2 ZXJzYSAqLw0KPiA+PiArCWJvb2wgdHJhbnNmZXI7DQo+ID4+ICAgfTsNCj4gPj4NCj4gPj4gICBz dHJ1Y3QgcG9ydF9mbG93X3R1bm5lbCB7DQo+ID4+IEBAIC0yMzQsNiArMjM2LDggQEAgc3RydWN0 IHJ0ZV9wb3J0IHsNCj4gPj4gICAJLyoqPCBkeW5hbWljIGZsYWdzLiAqLw0KPiA+PiAgIAl1aW50 NjRfdAkJbWJ1Zl9keW5mOw0KPiA+PiAgIAljb25zdCBzdHJ1Y3QgcnRlX2V0aF9yeHR4X2NhbGxi YWNrDQo+ID4+ICp0eF9zZXRfZHluZl9jYltSVEVfTUFYX1FVRVVFU19QRVJfUE9SVCsxXTsNCj4g Pj4gKwkvKiogQXNzb2NpYXRlZCBwb3J0IHdoaWNoIGlzIHN1cHBvc2VkIHRvIGhhbmRsZSAidHJh bnNmZXIiIGZsb3dzICovDQo+ID4+ICsJcG9ydGlkX3QJCWZsb3dfdHJhbnNmZXJfcHJveHk7DQo+ ID4+ICAgfTsNCj4gPj4NCj4gPj4gICAvKioNCj4gPj4gZGlmZiAtLWdpdCBhL2FwcC90ZXN0LXBt ZC91dGlsLmMgYi9hcHAvdGVzdC1wbWQvdXRpbC5jIGluZGV4DQo+ID4+IDE0YTlhMjUxZmIuLmQ5 ZWRiYmY5ZWUgMTAwNjQ0DQo+ID4+IC0tLSBhL2FwcC90ZXN0LXBtZC91dGlsLmMNCj4gPj4gKysr IGIvYXBwL3Rlc3QtcG1kL3V0aWwuYw0KPiA+PiBAQCAtOTgsMTMgKzk4LDE2IEBAIGR1bXBfcGt0 X2J1cnN0KHVpbnQxNl90IHBvcnRfaWQsIHVpbnQxNl90IHF1ZXVlLA0KPiA+PiBzdHJ1Y3QgcnRl X21idWYgKnBrdHNbXSwNCj4gPj4gICAJCWludCByZXQ7DQo+ID4+ICAgCQlzdHJ1Y3QgcnRlX2Zs b3dfZXJyb3IgZXJyb3I7DQo+ID4+ICAgCQlzdHJ1Y3QgcnRlX2Zsb3dfcmVzdG9yZV9pbmZvIGlu Zm8gPSB7IDAsIH07DQo+ID4+ICsJCXN0cnVjdCBydGVfcG9ydCAqcG9ydCA9ICZwb3J0c1twb3J0 X2lkXTsNCj4gPj4NCj4gPj4gICAJCW1iID0gcGt0c1tpXTsNCj4gPj4gICAJCWV0aF9oZHIgPSBy dGVfcGt0bWJ1Zl9yZWFkKG1iLCAwLCBzaXplb2YoX2V0aF9oZHIpLA0KPiAmX2V0aF9oZHIpOw0K PiA+PiAgIAkJZXRoX3R5cGUgPSBSVEVfQkVfVE9fQ1BVXzE2KGV0aF9oZHItPmV0aGVyX3R5cGUp Ow0KPiA+PiAgIAkJcGFja2V0X3R5cGUgPSBtYi0+cGFja2V0X3R5cGU7DQo+ID4+ICAgCQlpc19l bmNhcHN1bGF0aW9uID0gUlRFX0VUSF9JU19UVU5ORUxfUEtUKHBhY2tldF90eXBlKTsNCj4gPj4g LQkJcmV0ID0gcnRlX2Zsb3dfZ2V0X3Jlc3RvcmVfaW5mbyhwb3J0X2lkLCBtYiwgJmluZm8sICZl cnJvcik7DQo+ID4+ICsNCj4gPj4gKwkJcmV0ID0gcnRlX2Zsb3dfZ2V0X3Jlc3RvcmVfaW5mbyhw b3J0LT5mbG93X3RyYW5zZmVyX3Byb3h5LA0KPiA+PiArCQkJCQkJbWIsICZpbmZvLCAmZXJyb3Ip Ow0KPiA+DQo+ID4gSSdtIG5vdCBzdXJlIHRoaXMgaXMgY29ycmVjdCwNCj4gPiBTaW5jZSB0byBy ZXN0b3JlIHRoZSBkYXRhIHlvdSBuZWVkIHRvIGtub3cgdGhlIHBvcnQgdGhhdCB0aGlzIHRyYWZm aWMgd2FzIHNlbnQNCj4gdG8uDQo+ID4gRXZlbiBpZiB0aGUgYWN0aW9uIHdhcyBvZmZsb2FkZWQg b24gdGhlIHByb3h5IHBvcnQsIGl0IGlzIGltcG9ydGFudCB0bw0KPiA+IGtub3cgd2hhdCB3YXMg dGhlIGRlc3RpbmF0aW9uIHBvcnQuDQo+ID4gZXZlbiBzZXR0aW5nIHRoZSB0dW5uZWwgbXVzdCBi ZSBkb25lIG9uIHRoZSB0YXJnZXQgcG9ydCBhbmQgbm90IHRoZSBwcm94eQ0KPiBwb3J0Lg0KPiAN Cj4gSXMgdHVubmVsIG9mZmxvYWQgYSAidHJhbnNmZXIiLWJhc2VkIGZlYXR1cmU/IE15IGFuc3dl ciBpcyAieWVzIi4gQW5kLCBpZiB3ZSBhbGwNCj4gYWdyZWUgdGhhdCBpdCdzIGVhc2llciB0byBj b21tdW5pY2F0ZSBhbGwgInRyYW5zZmVyIi1yZWxhdGVkIHJlcXVlc3RzIHRocm91Z2ggYQ0KPiBz aW5nbGUgKCJ0cmFuc2ZlciIgYWRtaW4pIGV0aGRldiwgdGhlbiB0aGUgZmlyc3QgYXJndW1lbnQg aW4gdGhlIGhpZ2hsaWdodGVkDQo+IGludm9jYXRpb24gYWxzbyBzaG91bGQgYmUgdGhpcyAicHJv eHkiDQo+IGV0aGRldi4gQSB1bmlmaWVkIGVudHJ5IHBvaW50Lg0KPiANCj4gQnV0IHBsZWFzZSBk b24ndCB0aGluayBtZSBmb3J3YXJkOiBJIGZ1bGx5IHVuZGVyc3RhbmQgeW91ciBjb25jZXJuIGFi b3V0IHRoZQ0KPiByZWFsIERQREsgcG9ydCB0aHJvdWdoIHdoaWNoIHRoZSBwYWNrZXQgd2FzIGRl bGl2ZXJlZCB0byB0aGUgYXBwbGljYXRpb24uIEJ1dA0KPiB0aGF0IHNob3VsZCBub3QgYmUgYSBi aWcgcHJvYmxlbS4gVGhlIG1idWYgd2hpY2ggaXMgcGFzc2VkIHRvIHRoaXMgQVBJIHN0aWxsIGhh cw0KPiBpdHMgbWV0YWRhdGEgc2V0ICh0dW5uZWwgbWFyaywgZm9yDQo+IGluc3RhbmNlKSB3aGlj aCB0aGUgUE1EIGNhbiB1c2UgdG8gcmVjYWxsIHRoZSBwb3J0IHdoaWNoIHRoaXMgcGFja2V0IHdh cyBzZW50DQo+IHRvLiBNb3JlIHRvIHRoYXQsIHRoZSBtYnVmIGV2ZW4gaGFzIGEgZGVkaWNhdGVk IGZpZWxkIHRvIGV4cHJlc3MgZXhhY3RseSB3aGF0DQo+IHlvdSBtYXkgd2FudCB0byBoYXZlIC0g dGhlICJwb3J0IiBmaWVsZC4gU28sIHdoZW4geW91ciBQTUQgcmVjZWl2ZXMgdGhlDQo+ICJtaXNz ZWQiIHBhY2tldCBhbmQgaGFuZHMgaXQgb3ZlciB0byB0aGUgYXBwbGljYXRpb24gdGhyb3VnaCBz b21lIGV0aGRldiAvDQo+IHBvcnQsIGl0IGNhbiBzZXQgdGhpcyBtYnVmIGZpZWxkcyB0byB0aGF0 IHBvcnQgSUQuDQo+IFRoaXMgd2F5LCBzdWNoIGluZm9ybWF0aW9uIGlzIG5vdCBsb3N0IGJlY2F1 c2Ugb2YgbWlncmF0aW9uIHRvICJ0cmFuc2ZlciBwcm94eSINCj4gc29sdXRpb24sIGlzIGl0Pw0K PiANCg0KWWVzIHRoaXMgYW5zd2VyIG15IGNvbmNlcm5zIChtYXliZSB0aGVyZSB3aWxsIHNvbWUg dGltZSBwZW5hbHRpeSB0byBzZXQgdGhpcyB2YWx1ZSkNCmJ1dCBpdCBsb29rcyBsZWdpdC4NCg0K PiA+DQo+ID4+ICAgCQlpZiAoIXJldCkgew0KPiA+PiAgIAkJCU1LRFVNUFNUUihwcmludF9idWYs IGJ1Zl9zaXplLCBjdXJfbGVuLA0KPiA+PiAgIAkJCQkgICJyZXN0b3JlIGluZm86Iik7DQo+ID4+ IGRpZmYgLS1naXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIxXzExLnJzdA0KPiA+ PiBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjFfMTEucnN0DQo+ID4+IGluZGV4IDM3 Nzc2YzEzNWUuLmNjMGVhNDY5NWEgMTAwNjQ0DQo+ID4+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25v dGVzL3JlbGVhc2VfMjFfMTEucnN0DQo+ID4+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3Jl bGVhc2VfMjFfMTEucnN0DQo+ID4+IEBAIC02Nyw2ICs2Nyw5IEBAIE5ldyBGZWF0dXJlcw0KPiA+ PiAgICAgQWRkZWQgbWFjcm9zIEVUSF9SU1NfSVBWNF9DSEtTVU0gYW5kIEVUSF9SU1NfTDRfQ0hL U1VNLCBub3cNCj4gSVB2NA0KPiA+PiBhbmQNCj4gPj4gICAgIFRDUC9VRFAvU0NUUCBoZWFkZXIg Y2hlY2tzdW0gZmllbGQgY2FuIGJlIHVzZWQgYXMgaW5wdXQgc2V0IGZvciBSU1MuDQo+ID4+DQo+ ID4+ICsqICoqQWRkZWQgYW4gQVBJIHRvIHBpY2sgZmxvdyB0cmFuc2ZlciBwcm94eSBwb3J0KioN Cj4gPj4gKyAgQSBuZXcgQVBJLCBgYHJ0ZV9mbG93X3BpY2tfdHJhbnNmZXJfcHJveHkoKWBgLCB3 YXMgYWRkZWQuDQo+ID4+ICsNCj4gPj4gICAqICoqVXBkYXRlZCBCcm9hZGNvbSBibnh0IFBNRC4q Kg0KPiA+Pg0KPiA+PiAgICAgKiBBZGRlZCBmbG93IG9mZmxvYWQgc3VwcG9ydCBmb3IgVGhvci4N Cj4gPj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYvcnRlX2Zsb3cuYyBiL2xpYi9ldGhkZXYvcnRl X2Zsb3cuYyBpbmRleA0KPiA+PiA2NDdiYmY5MWNlLi4xNWU5NzhmN2Y3IDEwMDY0NA0KPiA+PiAt LS0gYS9saWIvZXRoZGV2L3J0ZV9mbG93LmMNCj4gPj4gKysrIGIvbGliL2V0aGRldi9ydGVfZmxv dy5jDQo+ID4+IEBAIC0xMjcwLDMgKzEyNzAsMjUgQEAgcnRlX2Zsb3dfdHVubmVsX2l0ZW1fcmVs ZWFzZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiAgIAkJCQkgIFJURV9GTE9XX0VSUk9SX1RZUEVf VU5TUEVDSUZJRUQsDQo+ID4+ICAgCQkJCSAgTlVMTCwgcnRlX3N0cmVycm9yKEVOT1RTVVApKTsN Cj4gPj4gICB9DQo+ID4+ICsNCj4gPj4gK2ludA0KPiA+PiArcnRlX2Zsb3dfcGlja190cmFuc2Zl cl9wcm94eSh1aW50MTZfdCBwb3J0X2lkLCB1aW50MTZfdCAqcHJveHlfcG9ydF9pZCwNCj4gPj4g KwkJCSAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcikNCj4gPg0KPiA+IFdoYXQgYWJv dXQgcmVwbGFjZWluZyBwaWNrIHdpdGggZ2V0Pw0KPiANCj4gVGhlcmUncyBhIHNjaG9vbCBvZiB0 aG91Z2h0IHRoYXQgdGVybXMgbGlrZSAiZ2V0IiBpbXBseSB0aGUgZXhpc3RlbmNlIG9mIHBhaXJl ZA0KPiBhY3Rpb25zLiBGb3IgZXhhbXBsZSwgImdldCAtIHNldCIsICJwcm9iZSAtIHVucHJvYmUi LCAiYWxsb2NhdGUgLSBmcmVlIiwgImluaXQgLQ0KPiBmaW5pIi4NCj4NCj4gU28sIGluIG9yZGVy IHRvIGF2b2lkIGFueSB3cm9uZyBhc3N1bXB0aW9ucywgSSBiZWxpZXZlIGl0J3MgYmV0dGVyIHRv IHN0aWNrIHdpdGgNCj4gdGVybSAicGljayIgaGVyZSBhcyBpdCBkb2Vzbid0IHNlZW0gdG8gaGF2 ZSBhIHBhaXJlZCB0ZXJtLg0KPg0KSSBzdGlsbCB0aGluayBnZXQgaXMgYmV0dGVyLCBidXQgbGV0 cyBsZWF2ZSBpdCBsaWtlIHRoaXMuDQogDQo+ID4NCj4gPj4gK3sNCj4gPj4gKwlzdHJ1Y3QgcnRl X2V0aF9kZXYgKmRldiA9ICZydGVfZXRoX2RldmljZXNbcG9ydF9pZF07DQo+ID4+ICsJY29uc3Qg c3RydWN0IHJ0ZV9mbG93X29wcyAqb3BzID0gcnRlX2Zsb3dfb3BzX2dldChwb3J0X2lkLCBlcnJv cik7DQo+ID4+ICsNCj4gPj4gKwlpZiAodW5saWtlbHkob3BzID09IE5VTEwpKQ0KPiA+PiArCQly ZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPj4gKw0KPiA+PiArCWlmIChsaWtlbHkob3BzLT5waWNrX3Ry YW5zZmVyX3Byb3h5ICE9IE5VTEwpKSB7DQo+ID4+ICsJCXJldHVybiBmbG93X2Vycihwb3J0X2lk LA0KPiA+PiArCQkJCW9wcy0+cGlja190cmFuc2Zlcl9wcm94eShkZXYsIHByb3h5X3BvcnRfaWQs DQo+ID4+ICsJCQkJCQkJIGVycm9yKSwNCj4gPj4gKwkJCQllcnJvcik7DQo+ID4+ICsJfQ0KPiA+ PiArDQo+ID4+ICsJKnByb3h5X3BvcnRfaWQgPSBwb3J0X2lkOw0KPiA+PiArDQo+ID4+ICsJcmV0 dXJuIDA7DQo+ID4+ICt9DQo+ID4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3J0ZV9mbG93Lmgg Yi9saWIvZXRoZGV2L3J0ZV9mbG93LmggaW5kZXgNCj4gPj4gZjE5NWFhNzIyNC4uZDJjYjQ3NjE4 OSAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZmxvdy5oDQo+ID4+ICsrKyBiL2xp Yi9ldGhkZXYvcnRlX2Zsb3cuaA0KPiA+PiBAQCAtMTIyLDYgKzEyMiwxMCBAQCBzdHJ1Y3QgcnRl X2Zsb3dfYXR0ciB7DQo+ID4+ICAgCSAqDQo+ID4+ICAgCSAqIEluIG9yZGVyIHRvIG1hdGNoIHRy YWZmaWMgb3JpZ2luYXRpbmcgZnJvbSBzcGVjaWZpYyBzb3VyY2UocyksIHRoZQ0KPiA+PiAgIAkg KiBhcHBsaWNhdGlvbiBzaG91bGQgdXNlIHBhdHRlcm4gaXRlbXMgRVRIREVWIGFuZCBFU1dJVENI X1BPUlQuDQo+ID4+ICsJICoNCj4gPj4gKwkgKiBDb21tdW5pY2F0aW5nICJ0cmFuc2ZlciIgZmxv d3MgdmlhIHVucHJpdmlsZWdlZCBldGhkZXZzIG1heSBub3QNCj4gPj4gKwkgKiBiZSBwb3NzaWJs ZS4gSW4gb3JkZXIgdG8gcGljayB0aGUgZXRoZGV2IHN1aXRhYmxlIGZvciB0aGF0LCB0aGUNCj4g Pj4gKwkgKiBhcHBsaWNhdGlvbiBzaG91bGQgdXNlIEBwIHJ0ZV9mbG93X3BpY2tfdHJhbnNmZXJf cHJveHkoKS4NCj4gPj4gICAJICovDQo+ID4+ICAgCXVpbnQzMl90IHRyYW5zZmVyOjE7DQo+ID4+ ICAgCXVpbnQzMl90IHJlc2VydmVkOjI5OyAvKio8IFJlc2VydmVkLCBtdXN0IGJlIHplcm8uICov IEBAIC00NDI3LDYNCj4gPj4gKzQ0MzEsMzQgQEAgcnRlX2Zsb3dfdHVubmVsX2l0ZW1fcmVsZWFz ZSh1aW50MTZfdCBwb3J0X2lkLA0KPiA+PiAgIAkJCSAgICAgc3RydWN0IHJ0ZV9mbG93X2l0ZW0g Kml0ZW1zLA0KPiA+PiAgIAkJCSAgICAgdWludDMyX3QgbnVtX29mX2l0ZW1zLA0KPiA+PiAgIAkJ CSAgICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICplcnJvcik7DQo+ID4+ICsNCj4gPj4gKy8qKg0K PiA+PiArICogQW4gYXBwbGljYXRpb24gcmVjZWl2aW5nIHBhY2tldHMgb24gYSBnaXZlbiBldGhk ZXYgbWF5IHdhbnQgdG8NCj4gPj4gK2hhdmUgdGhlaXINCj4gPj4gKyAqIHByb2Nlc3Npbmcgb2Zm bG9hZGVkIHRvIHRoZSBlLXN3aXRjaCBseWluZyBiZW5lYXRoIHRoaXMgZXRoZGV2IGJ5DQo+ID4+ ICttZWFucw0KPiA+PiArICogb2YgbWFpbnRhaW5pbmcgInRyYW5zZmVyIiBmbG93cy4gSG93ZXZl ciwgaXQgbmVlZCBuZXZlciB1c2UgdGhpcw0KPiA+PiArZXhhY3QNCj4gPj4gKyAqIGV0aGRldiBh cyBhbiBlbnRyeSBwb2ludCBmb3Igc3VjaCBmbG93cyB0byBiZSBtYW5hZ2VkIHRocm91Z2guDQo+ ID4+ICtNb3JlIHRvDQo+ID4+ICsgKiB0aGF0LCB0aGlzIHBhcnRpY3VsYXIgZXRoZGV2IG1heSBi ZSBzaG9ydCBvZiBwcml2aWxlZ2VzIHRvDQo+ID4+ICtjb250cm9sIHRoZQ0KPiA+PiArICogZS1z d2l0Y2guIEluc3RlYWQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZmluZCBhbiBhZG1pbiBldGhk ZXYNCj4gPj4gK3NpdHRpbmcNCj4gPj4gKyAqIG9uIHRvcCBvZiB0aGUgc2FtZSBlLXN3aXRjaCB0 byBiZSB1c2VkIGFzIHRoZSBlbnRyeSBwb2ludCAoYSAicHJveHkiKS4NCj4gPj4gKyAqDQo+ID4N Cj4gPiBUaGlzIGV4cGxhbmF0aW9uIGlzIG5vdCBjbGVhciwgY2FuIHlvdSByZXBocmFzZSBpdD8N Cj4gDQo+IENvdWxkIHlvdSBwbGVhc2UgYmUgc28ga2luZCB0byBvdXRsaW5lIHRoZSBwYXJ0cyB3 aGljaCBhcmUgbm90IGNsZWFyIHRvIHlvdS4NCj4gTWF5YmUgeW91ciB1bmRlcnN0YW5kaW5nIGlz IHJpZ2h0IGluIGZhY3QgYnV0IHlvdSBhcmUganVzdCB1bnN1cmUuDQo+IElmIHlvdSBleHByZXNz ZWQgeW91ciBpbnRlcnByZXRhdGlvbiBvZiB0aGlzIHRleHQsIEkgY291bGQgcmV2aWV3IGl0IGFu ZCBlaXRoZXINCj4gY29uZmlybSBpdHMgY29ycmVjdG5lc3Mgb3IgZGVidW5rIGFueSBtaXN1bmRl cnN0YW5kaW5nLiBJbiB0aGUgbGF0dGVyIGNhc2UsIGl0DQo+IHdvdWxkIGJlIGVhc2llciB0byBt ZSB0byByZXBocmFzZSB0aGUgY29tbWVudCBpbiB0aGUgcGF0Y2guDQo+IA0KDQpBZnRlciBhIGZl dyBtb3JlIHJlYWRzIEkgY2FuJ3QgcG9pbnQgbXkgZmluZ2VyIHRvIGl0Lg0KTGV0cyBsZWF2ZSBp dC4NCg0KPiA+DQo+ID4+ICsgKiBUaGlzIEFQSSBpcyBhIGhlbHBlciB0byBmaW5kIHN1Y2ggInRy YW5zZmVyIHByb3h5IiBmb3IgYSBnaXZlbiBldGhkZXYuDQo+ID4+ICsgKg0KPiA+PiArICogQG5v dGUNCj4gPj4gKyAqICAgSWYgdGhlIFBNRCBzZXJ2aW5nIEBwIHBvcnRfaWQgZG9lc24ndCBoYXZl IHRoZSBjb3JyZXNwb25kaW5nIG1ldGhvZA0KPiA+PiArICogICBpbXBsZW1lbnRlZCwgdGhlIEFQ SSB3aWxsIHJldHVybiBAcCBwb3J0X2lkIHZpYSBAcCBwcm94eV9wb3J0X2lkLg0KPiA+DQo+ID4g KzENCj4gPg0KPiA+PiArICoNCj4gPj4gKyAqIEBwYXJhbSBwb3J0X2lkDQo+ID4+ICsgKiAgIElE IG9mIHRoZSBldGhkZXYgaW4gcXVlc3Rpb24NCj4gPj4gKyAqIEBwYXJhbVtvdXRdIHByb3h5X3Bv cnRfaWQNCj4gPj4gKyAqICAgSUQgb2YgdGhlICJ0cmFuc2ZlciBwcm94eSINCj4gPj4gKyAqDQo+ ID4+ICsgKiBAcmV0dXJuDQo+ID4+ICsgKiAgIDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSBlcnJv ciBjb2RlIG90aGVyd2lzZQ0KPiA+PiArICovDQo+ID4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4g Pj4gK2ludA0KPiA+PiArcnRlX2Zsb3dfcGlja190cmFuc2Zlcl9wcm94eSh1aW50MTZfdCBwb3J0 X2lkLCB1aW50MTZfdCAqcHJveHlfcG9ydF9pZCwNCj4gPj4gKwkJCSAgICAgc3RydWN0IHJ0ZV9m bG93X2Vycm9yICplcnJvcik7DQo+ID4+ICAgI2lmZGVmIF9fY3BsdXNwbHVzDQo+ID4+ICAgfQ0K PiA+PiAgICNlbmRpZg0KPiA+PiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZmxvd19kcml2 ZXIuaCBiL2xpYi9ldGhkZXYvcnRlX2Zsb3dfZHJpdmVyLmgNCj4gaW5kZXgNCj4gPj4gNDZmNjJj MmVjMi4uZWQ1MmU1OWEwYSAxMDA2NDQNCj4gPj4gLS0tIGEvbGliL2V0aGRldi9ydGVfZmxvd19k cml2ZXIuaA0KPiA+PiArKysgYi9saWIvZXRoZGV2L3J0ZV9mbG93X2RyaXZlci5oDQo+ID4+IEBA IC0xMzksNiArMTM5LDExIEBAIHN0cnVjdCBydGVfZmxvd19vcHMgew0KPiA+PiAgIAkJIHN0cnVj dCBydGVfZmxvd19pdGVtICpwbWRfaXRlbXMsDQo+ID4+ICAgCQkgdWludDMyX3QgbnVtX29mX2l0 ZW1zLA0KPiA+PiAgIAkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyKTsNCj4gPj4gKwkvKiog U2VlIHJ0ZV9mbG93X3BpY2tfdHJhbnNmZXJfcHJveHkoKSAqLw0KPiA+PiArCWludCAoKnBpY2tf dHJhbnNmZXJfcHJveHkpDQo+ID4+ICsJCShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4g KwkJIHVpbnQxNl90ICpwcm94eV9wb3J0X2lkLA0KPiA+PiArCQkgc3RydWN0IHJ0ZV9mbG93X2Vy cm9yICplcnJvcik7DQo+ID4+ICAgfTsNCj4gPj4NCj4gPj4gICAvKioNCj4gPj4gZGlmZiAtLWdp dCBhL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXAgYi9saWIvZXRoZGV2L3ZlcnNpb24ubWFwIGluZGV4 DQo+ID4+IDkwNGJjZTZlYTEuLmQ0Mjg2ZGM4ZGQgMTAwNjQ0DQo+ID4+IC0tLSBhL2xpYi9ldGhk ZXYvdmVyc2lvbi5tYXANCj4gPj4gKysrIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiA+PiBA QCAtMjQ3LDYgKzI0Nyw5IEBAIEVYUEVSSU1FTlRBTCB7DQo+ID4+ICAgCXJ0ZV9tdHJfbWV0ZXJf cG9saWN5X2RlbGV0ZTsNCj4gPj4gICAJcnRlX210cl9tZXRlcl9wb2xpY3lfdXBkYXRlOw0KPiA+ PiAgIAlydGVfbXRyX21ldGVyX3BvbGljeV92YWxpZGF0ZTsNCj4gPj4gKw0KPiA+PiArCSMgYWRk ZWQgaW4gMjEuMTENCj4gPj4gKwlydGVfZmxvd19waWNrX3RyYW5zZmVyX3Byb3h5Ow0KPiA+PiAg IH07DQo+ID4+DQo+ID4+ICAgSU5URVJOQUwgew0KPiA+PiAtLQ0KPiA+PiAyLjIwLjENCj4gPg0K PiA+IEJlc3QsDQo+ID4gT3JpDQo+ID4NCj4gDQo+IC0tDQo+IEl2YW4gTQ0KDQo=