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 903AB43C8E; Tue, 12 Mar 2024 09:44:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 59D5F402D8; Tue, 12 Mar 2024 09:44:31 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by mails.dpdk.org (Postfix) with ESMTP id EB38840282 for ; Tue, 12 Mar 2024 09:44:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710233069; x=1741769069; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=O3kGacO4fOpXL6NY3H8fc2oN3NjseEJAPF0L4DBRoC4=; b=V+XK0gcc8FeC09aimKn6iz/8N7d1mqP/LAA6UqsrUCd8+rOyiUVc8bz9 m5Au2tW9OLQtpJbTnmRJfVGmBszyPxGQPDO9Xes/hP5JT0Oumygp2YxVY 2TRP48q9Bug7p+j23ZVJpP5N8xtoXOLcqMSBR/Y1Q6mnLVkISp20YGzPt eJ68K/g/u9kk3YMSIe8v1uWPjdrUua8caW/7tT5IYtqew1VDH7m76CWLv oucUuccS61PkyTpEk2nUPZmdxVzKE9L70r4t7q4WujhaIOpqN6bgpFTTM cBe93LQJGnH/UmpxpRF8yMFqzUsARzBUzFvRuBhlrQSy6TJXpkV6hT7K2 w==; X-IronPort-AV: E=McAfee;i="6600,9927,11010"; a="22449314" X-IronPort-AV: E=Sophos;i="6.07,118,1708416000"; d="scan'208";a="22449314" Received: from fmviesa002.fm.intel.com ([10.60.135.142]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Mar 2024 01:44:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,118,1708416000"; d="scan'208";a="34642548" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmviesa002.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 12 Mar 2024 01:44:27 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 12 Mar 2024 01:44:26 -0700 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 12 Mar 2024 01:44:26 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.101) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Tue, 12 Mar 2024 01:44:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dxn39gng1zUjoJ+9IW8Ok6X+BW0gAqElfVGgi3DIxWZOlNh24uE1TpwFmyU8awKH1xaM9whDnaPaMI6dHnsZ1s4QGkQ6wHeaQt9Htfcql3BScwWNINHoGydN9Ks3TFBM9M3kYpnQbSH6icE6W8U9OvMcQfcdJ3MhBR+AcbJrZYVoqJJwFxneDagFxdj/vTClfdngGkIb6zewDSwHnT2dd5T5zNThP5dLUTqnf5u9hhmBh9/8qMw30nytZYRb/O2lOhBh6jyFN2SHvR0V7jLDOfveDQw1/PpoXCa5+nLEFbiOZ2gXOqN9Rfx3rA4KKbeq8Y1LNUyS3Zf3cgWiQIhgYA== 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=O3kGacO4fOpXL6NY3H8fc2oN3NjseEJAPF0L4DBRoC4=; b=b+pwo720LCt3dJ9+oiJ9EQH8WixiDBaO67g60hSPkPOtkevImLz/srBiNfAUnGTwDB4AtMPa08JQvEuMdKSwJq3nAHM5aJSySD7F3XFlc41JaoKUMEOesL+SS/nddeXFFgX2wuSWgt+Ptk2fHLDES16/meHVS0gmmU1BlglFyn6/l+TUdMj4Ov3SHpMWpo4GYKtyshCJEIZByFkFL0M4QMozQNCy/GvyznYZU0HnEOwiX2REgjpJf8HDygEqfybh1fTATa1oQP4JRCRYT1+EokWur40TFBZbv8ZFi3qvVDqcRjJa++QDPhO/KtyXbMnAQoAEovoFEcq8v4ECHSKoaQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from CO6PR11MB5602.namprd11.prod.outlook.com (2603:10b6:303:13a::5) by IA0PR11MB7933.namprd11.prod.outlook.com (2603:10b6:208:407::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.16; Tue, 12 Mar 2024 08:44:23 +0000 Received: from CO6PR11MB5602.namprd11.prod.outlook.com ([fe80::7bce:b7a0:1830:98d0]) by CO6PR11MB5602.namprd11.prod.outlook.com ([fe80::7bce:b7a0:1830:98d0%5]) with mapi id 15.20.7339.024; Tue, 12 Mar 2024 08:44:23 +0000 From: "Zeng, ZhichaoX" To: "Medvedkin, Vladimir" , "dev@dpdk.org" CC: "Cui, KaixinX" , "Xu, HailinX" Subject: RE: [PATCH v4] net/i40e: support FEC feature Thread-Topic: [PATCH v4] net/i40e: support FEC feature Thread-Index: AQHab7Fdf/8LogurfEKLfF2vvMwfY7EyusaAgAC1+TA= Date: Tue, 12 Mar 2024 08:44:23 +0000 Message-ID: References: <20231220084706.446508-1-qiming.yang@intel.com> <20240306104135.2805774-1-zhichaox.zeng@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO6PR11MB5602:EE_|IA0PR11MB7933:EE_ x-ms-office365-filtering-correlation-id: ee9189b1-cd6f-46e3-87d3-08dc42709e30 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: tq5vmlEWTcyFCS/xDHY/qRCiR+0WePTivdbLPqA5oFgfHkviOc3/L1VQ3kjTMq8J4lK4COOYN5+w5fGT+VabopEYCjuoRv+KKMJ4q2z8O3gzaXH1apacjyLEoi/Ns8uENJOi+20VrmF3jR7f5fUeEah0Hs6Om0RckENkGXJFIrz+X0jLdZRfuZB9XtU10WNxhM8U43HukLsj65WBP5dKBMiWNwUOF28dku/ZUpc6gHNgORAjEhQfrBbhvtY6KLS6FFVWkCW0Ew+tBXOF3o8YPHfkVpRcyEYQm9yA9Gqu3hvulPn5vBFUGZ+01fnr/M6nXnlT4vxgSmmIJodmMaqy+X9zAaastoZwndq6+vihg5XAJgtOsVeJNfqTfuFXBe56weS90mOvNUA4FalSHBzduA3l456EnyadYPvKD6Ab9dPHdv+nIYomlYcwIImx6dG0pSYFiGwMjAYYAFPZDOAuEllIFYLw2+NMTKhL7nsNbSXcmIphOy1AloCS7KtGBkugoR6JUeZbv4+OA17ndeBB4RGZLnlnagAeLFazOMlYv4nBUo7/6qyx4pJXnSjCuW7BLxzF/D4xnQVTLzHQ/K/iBPNsHEQD9wmjxKkxULuS5SbPkUHuWACljEOvel7CTIg0KIxxkv4UlThcwaFxagUUlgaBfmKtBni96e+ie1hR9DJOsQbQ+G4t68QJYZQA9MhU x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CO6PR11MB5602.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RCtnSGwxVEhneGZJOUhjeGVTSkxNcC9Mbk9JSmI5RzZ6WVFxbEphMUc3VzhF?= =?utf-8?B?N1RHc3JoUTNZWHM3c0NuaVdDWHVYcU12Tytlb1Bra0htY01KQ2d6RUF0N0x3?= =?utf-8?B?Zk1nby9jRExISEtnankvNGRGUVJESEE0WXRIejdqOWhjc0RqemVPWnExT3ZB?= =?utf-8?B?amdaVzFOYVIwV2V1WU11K2wyZ3p4L1c0YUhyUVNsSDYrTGpYSUNrUG5WMmM3?= =?utf-8?B?U1ZGbXorRFN5aysyRHZOYXJZVnhNbHNINHZtcUxYMFJTSkJEZ2tUcWMzSzBY?= =?utf-8?B?SVZBNVpLdHBVMlQxOXBBbktRUkZ5UFk3YWswYkphOVE0Zk5jWlpoMUc5S283?= =?utf-8?B?YWNLeHBqTGMxSDNLNktwNDY0Z3FqaVl6OWVQK2xVZ2R2cVNtM2JyT0RoZ29j?= =?utf-8?B?b1JuVTg3V3RRVWNNVVNIYVlQTVUvd0ZLakRjb2xqeDFwNC85TnROSDlJQUNi?= =?utf-8?B?TUJOZXgwdCtYdVlKdFU4Z2hIZDE1SDhuclRETml4UFM0SUhqVEU1c0tDMDd6?= =?utf-8?B?dGY3UmMwYTFCbjE2VEJDM1pqMnVqU1FLa3lvcEZ1K0tUOXY3dE1GRHAyUUFU?= =?utf-8?B?UGxRaGRydGphYnAycnUwRkVnaWpSWHk5L2tuUzhWMDVqOUNWWUpZMW1ESWln?= =?utf-8?B?V3JGV05yVGM0aS9EdmptYUlSWFl1YnRPNnQvUk5QeStwQ280TVdVZ0VIcjlq?= =?utf-8?B?bnh3ZG9vTGU0a1RNcXkvanJGQlR0WnVXbUU0QXNwN0N2MFJXK0Y1K1dud1R5?= =?utf-8?B?WWJHMmZ6K21XMWUzaHlwUTFRUHFyOERtcDJ0ZDhxTFNFVGkzV1BCMEZBZzdC?= =?utf-8?B?THdPbGtESzU3a2NzV3FmYTF4eEwxMjdBd2VROUNZTVIwQ1piZU93UVhTRnVN?= =?utf-8?B?am96cW1oT3haazl5azB3YXRhT1VYQkE4TlNaSjFWVVhjWk5WckFsU0ZROXBj?= =?utf-8?B?Z2tIVEpqQ2lMVkZ6a2NSL2t5R2luOUFBYngrZXdPbHhyQk96aEFoWEFvMmNv?= =?utf-8?B?MTBSUGRoQ29TVks0bi9WWnQ1WUpudnEwbnBtSlA4T0JxaEhNQzJvNERaVC9C?= =?utf-8?B?czA1dXNudVVQYWJBTGlCMEpNUVJ2bEdrUGtmYmhjM1VxK3h0cTlRc2dGRmFX?= =?utf-8?B?Ly9lM3VxZ0JwcnA1VXhUeitSZHRvVkoyTlV5MVBKUEJWcE1sdGF2M1ZZVkpv?= =?utf-8?B?OW1HNTFZbExyTktKbWZWOTBhRzUwRWxTem5aS09yUmd3L0lFRTJBVkt5TVZY?= =?utf-8?B?YnV4VTRUNjFHOWxDTDYySTgrMDBQQ3FONDF5VUdVRk5CL3ZWeW5yVUswZnFB?= =?utf-8?B?aUxHaHZ2dmNCdDl0azd3UTFTcjlFWVdnMVJFb3g1ZDBqOWRZL0pLYS9TbFZV?= =?utf-8?B?RUd2QVhWZE8xMFJ5bEU4UU1rN0puYlFnV3NxaVdJelN4ZTB6YS9JbmlRQlAv?= =?utf-8?B?aHplWG5PUUNTWWlOemNHcFdKcW5oQnFKRWtmM1Z4MGtpUkFOckRabzREdm5z?= =?utf-8?B?N1d0S3RzSVFRWURDT1MvZDJ1cTMrT2FSQ0hJTUd0bDdIb1JWWjVwZjlta3gw?= =?utf-8?B?MG1WVUpFd1FIUFk0ZTJTY0hzd1FtaTJZZ0FGRXFWd21FQS8zQk44V3J6eEps?= =?utf-8?B?TFU4YUtqQm5iTFlOSVcveXFXZGYzbmI1QVhsMk82S3VDdFJIa1ErS3FKWnZO?= =?utf-8?B?Wlhma01IbE9IU3BuUWpRN1JUbmNSd1ZKS0t1bUFrdmJhaHRhU0JJUXIzbHUz?= =?utf-8?B?Q1Qyb2NxdGoxZG5JL2xhcFVVVERXMzJyMDhKeUorWk9hY2J6VHFia2lzQ1hG?= =?utf-8?B?aWIxd1dGOGF4d0FtSllhN0hISHA4dEFEZE5OSDEvd2Rub3ZGYXVQcmxKN0tT?= =?utf-8?B?MjRVa0xGM1J4SDJyNmMrRFNvZXN5czNXOVF0dG9IY0pPanU3ZTRmdHkxa3Fl?= =?utf-8?B?d2JOS2sxUThHMkloUW85TzVNdzZSNDVjdlU3K3owbUpvMVR0NWpYQWtpUm1C?= =?utf-8?B?WUtSUWhtTVpzWHAzZ2tLUVFwa042OTFMK041ZEJZZzBvSFArZUVvc2p1NURy?= =?utf-8?B?Z2J2VVNsdDBWN1FSMHEzd05hdGNiRi9CVE16N2dWWHgwWHFCZzQxbnFIZGd2?= =?utf-8?Q?TBUzrMGZ/9WhJI4X39nH9vo+J?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR11MB5602.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee9189b1-cd6f-46e3-87d3-08dc42709e30 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Mar 2024 08:44:23.7458 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8nzBh2aXLqrbVoCED0i6vZRLy2NHNVon6Medj1L6b14HlCZ5wg9vSx/9xPunKI8fQ/6aiJPuaikvFToMGOnh/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7933 X-OriginatorOrg: intel.com 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 SGkgVmxhZGltaXI6DQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cywgc29tZSByZXNwb25zZXMg YW5kIHF1ZXN0aW9ucyBhcmUgaW5saW5lLg0KDQo+IEZyb206IE1lZHZlZGtpbiwgVmxhZGltaXIg PHZsYWRpbWlyLm1lZHZlZGtpbkBpbnRlbC5jb20+IA0KPiBTZW50OiBNb25kYXksIE1hcmNoIDEx LCAyMDI0IDExOjU5IFBNDQo+IFRvOiBaZW5nLCBaaGljaGFvWCA8emhpY2hhb3guemVuZ0BpbnRl bC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IEN1aSwgS2FpeGluWCA8a2FpeGlueC5jdWlAaW50 ZWwuY29tPjsgWWFuZywgUWltaW5nIDxxaW1pbmcueWFuZ0BpbnRlbC5jb20+OyBaaGFuZywgWXV5 aW5nIDx5dXlpbmcuemhhbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY0XSBu ZXQvaTQwZTogc3VwcG9ydCBGRUMgZmVhdHVyZQ0KPiANCj4gSGkgWmhpY2hhLA0KPiBJdCB3b3Vs ZCBiZSBnb29kIHRvIHJlZmxlY3QgRkVDIGZlYXR1cmUgaGVyZToNCj4gaHR0cHM6Ly9kb2MuZHBk ay5vcmcvZ3VpZGVzL25pY3Mvb3ZlcnZpZXcuaHRtbCANCj4gaW4gIiBUYWJsZSAxLjEgRmVhdHVy ZXMgYXZhaWxhYmlsaXR5IGluIG5ldHdvcmtpbmcgZHJpdmVycyAiDQoNCkFmdGVyIG1vZGlmeWlu ZyAiZG9jL2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2k0MGUuaW5pIiwgdGhlIGNvcnJlc3BvbmRpbmcg Im92ZXJ2aWV3Lmh0bWwiIHdpbGwgYmUgZ2VuZXJhdGVkIGFmdGVyIGNvbXBpbGluZyB0aGUgZG9j dW1lbnQuDQoNCj4gcGxlYXNlIGZpbmQgdGhlIHJlc3QgY29tbWVudHMgaW5saW5lDQo+IE9uIDA2 LzAzLzIwMjQgMTA6NDEsIFpoaWNoYW8gWmVuZyB3cm90ZToNCj4gVGhpcyBwYXRjaCBlbmFibGVk IHF1ZXJ5aW5nIEZvcndhcmQgRXJyb3IgQ29ycmVjdGlvbihGRUMpIGNhcGFiaWxpdGllcywNCj4g c2V0IEZFQyBtb2RlIGFuZCBnZXQgY3VycmVudCBGRUMgbW9kZSBmdW5jdGlvbnMuDQo+IA0KPiBT aWduZWQtb2ZmLWJ5OiBRaW1pbmcgWWFuZyBtYWlsdG86cWltaW5nLnlhbmdAaW50ZWwuY29tDQo+ IFNpZ25lZC1vZmYtYnk6IFpoaWNoYW8gWmVuZyBtYWlsdG86emhpY2hhb3guemVuZ0BpbnRlbC5j b20NCj4gDQo+IC0tLQ0KPiB2NDogZml4IHNvbWUgbG9naWMNCj4gdjM6IG9wdGltaXplIGNvZGUg ZGV0YWlscw0KPiB2MjogdXBkYXRlIE5JQyBmZWF0dXJlIGRvY3VtZW50DQo+IC0tLQ0KPiAgZG9j L2d1aWRlcy9uaWNzL2ZlYXR1cmVzL2k0MGUuaW5pICAgICAgfCAgIDEgKw0KPiAgZG9jL2d1aWRl cy9yZWxfbm90ZXMvcmVsZWFzZV8yNF8wMy5yc3QgfCAgIDUgKw0KPiAgZHJpdmVycy9uZXQvaTQw ZS9pNDBlX2V0aGRldi5jICAgICAgICAgfCAxOTIgKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiAgMyBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKQ0KPiANCj4gZGlmZiAtLWdpdCBh L2RvYy9ndWlkZXMvbmljcy9mZWF0dXJlcy9pNDBlLmluaSBiL2RvYy9ndWlkZXMvbmljcy9mZWF0 dXJlcy9pNDBlLmluaQ0KPiBpbmRleCBlMjQxZGFkMDQ3Li5hYWMyYzFhNmExIDEwMDY0NA0KPiAt LS0gYS9kb2MvZ3VpZGVzL25pY3MvZmVhdHVyZXMvaTQwZS5pbmkNCj4gKysrIGIvZG9jL2d1aWRl cy9uaWNzL2ZlYXR1cmVzL2k0MGUuaW5pDQo+IEBAIC0zMCw2ICszMCw3IEBAIEZsb3cgY29udHJv bCAgICAgICAgID0gWQ0KPiAgQ1JDIG9mZmxvYWQgICAgICAgICAgPSBZDQo+ICBWTEFOIG9mZmxv YWQgICAgICAgICA9IFkNCj4gIFFpblEgb2ZmbG9hZCAgICAgICAgID0gUA0KPiArRkVDICAgICAg ICAgICAgICAgICAgPSBZDQo+ICBMMyBjaGVja3N1bSBvZmZsb2FkICA9IFANCj4gIEw0IGNoZWNr c3VtIG9mZmxvYWQgID0gUA0KPiAgSW5uZXIgTDMgY2hlY2tzdW0gICAgPSBQDQo+IGRpZmYgLS1n aXQgYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzI0XzAzLnJzdCBiL2RvYy9ndWlkZXMv cmVsX25vdGVzL3JlbGVhc2VfMjRfMDMucnN0DQo+IGluZGV4IDE2MWY3NzExMmIuLjg2MmE1Zjhm YjggMTAwNjQ0DQo+IC0tLSBhL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRfMDMucnN0 DQo+ICsrKyBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjRfMDMucnN0DQo+IEBAIC0x MTAsNiArMTEwLDExIEBAIE5ldyBGZWF0dXJlcw0KPiAgDQo+ICAgICogQWRkZWQgc3VwcG9ydCBm b3IgNTc2MFggZGV2aWNlIGZhbWlseS4NCj4gIA0KPiArKiAqKlVwZGF0ZWQgSW50ZWwgaTQwZSBk cml2ZXIuKioNCj4gKw0KPiArICAqIEFkZGVkIHN1cHBvcnQgZm9yIGNvbmZpZ3VyaW5nIHRoZSBG b3J3YXJkIEVycm9yIENvcnJlY3Rpb24oRkVDKSBtb2RlLCBxdWVyeWluZw0KPiArICAqIEZFQyBj YXBhYmlsaXRpZXMgYW5kIGN1cnJlbnQgRkVDIG1vZGUgZnJvbSBhIGRldmljZS4NCj4gKw0KPiAg KiAqKlVwZGF0ZWQgTWFydmVsbCBjbnhrIG5ldCBkcml2ZXIuKioNCj4gIA0KPiAgICAqIEFkZGVk IHN1cHBvcnQgZm9yIHBvcnQgcmVwcmVzZW50b3JzLg0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvaTQwZS9pNDBlX2V0aGRldi5jIGIvZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jDQo+ IGluZGV4IDM4MGNlMWE3MjAuLjJiYzY2NzVhMDQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvbmV0 L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiArKysgYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2 LmMNCj4gQEAgLTQwNiw2ICs0MDYsMTAgQEAgc3RhdGljIHZvaWQgaTQwZV9ldGhlcnR5cGVfZmls dGVyX3Jlc3RvcmUoc3RydWN0IGk0MGVfcGYgKnBmKTsNCj4gIHN0YXRpYyB2b2lkIGk0MGVfdHVu bmVsX2ZpbHRlcl9yZXN0b3JlKHN0cnVjdCBpNDBlX3BmICpwZik7DQo+ICBzdGF0aWMgdm9pZCBp NDBlX2ZpbHRlcl9yZXN0b3JlKHN0cnVjdCBpNDBlX3BmICpwZik7DQo+ICBzdGF0aWMgdm9pZCBp NDBlX25vdGlmeV9hbGxfdmZzX2xpbmtfc3RhdHVzKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2KTsN Cj4gK3N0YXRpYyBpbnQgaTQwZV9mZWNfZ2V0X2NhcGFiaWxpdHkoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYsDQo+ICsJc3RydWN0IHJ0ZV9ldGhfZmVjX2NhcGEgKnNwZWVkX2ZlY19jYXBhLCB1bnNp Z25lZCBpbnQgbnVtKTsNCj4gK3N0YXRpYyBpbnQgaTQwZV9mZWNfZ2V0KHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LCB1aW50MzJfdCAqZmVjX2NhcGEpOw0KPiArc3RhdGljIGludCBpNDBlX2ZlY19z ZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsIHVpbnQzMl90IGZlY19jYXBhKTsNCj4gIA0KPiAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHZhbGlkX2tleXNbXSA9IHsNCj4gIAlFVEhfSTQwRV9G TE9BVElOR19WRUJfQVJHLA0KPiBAQCAtNTIxLDYgKzUyNSw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZXRoX2Rldl9vcHMgaTQwZV9ldGhfZGV2X29wcyA9IHsNCj4gIAkudG1fb3BzX2dldCAgICAg ICAgICAgICAgICAgICA9IGk0MGVfdG1fb3BzX2dldCwNCj4gIAkudHhfZG9uZV9jbGVhbnVwICAg ICAgICAgICAgICA9IGk0MGVfdHhfZG9uZV9jbGVhbnVwLA0KPiAgCS5nZXRfbW9uaXRvcl9hZGRy ICAgICAgICAgICAgID0gaTQwZV9nZXRfbW9uaXRvcl9hZGRyLA0KPiArCS5mZWNfZ2V0X2NhcGFi aWxpdHkgICAgICAgICAgID0gaTQwZV9mZWNfZ2V0X2NhcGFiaWxpdHksDQo+ICsJLmZlY19nZXQg ICAgICAgICAgICAgICAgICAgICAgPSBpNDBlX2ZlY19nZXQsDQo+ICsJLmZlY19zZXQgICAgICAg ICAgICAgICAgICAgICAgPSBpNDBlX2ZlY19zZXQsDQo+ICB9Ow0KPiAgDQo+ICAvKiBzdG9yZSBz dGF0aXN0aWNzIG5hbWVzIGFuZCBpdHMgb2Zmc2V0IGluIHN0YXRzIHN0cnVjdHVyZSAqLw0KPiBA QCAtMTIyOTcsNiArMTIzMDQsMTkxIEBAIGk0MGVfY2xvdWRfZmlsdGVyX3FpbnFfY3JlYXRlKHN0 cnVjdCBpNDBlX3BmICpwZikNCj4gIAlyZXR1cm4gcmV0Ow0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMg aW50DQo+ICtpNDBlX2ZlY19nZXRfY2FwYWJpbGl0eShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwN Cj4gKwlzdHJ1Y3QgcnRlX2V0aF9mZWNfY2FwYSAqc3BlZWRfZmVjX2NhcGEsIF9fcnRlX3VudXNl ZCB1bnNpZ25lZCBpbnQgbnVtKQ0KPiArew0KPiArCXN0cnVjdCBpNDBlX2h3ICpodyA9IEk0MEVf REVWX1BSSVZBVEVfVE9fSFcoZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZSk7DQo+ICsNCj4gKwlpZiAo aHctPm1hYy50eXBlID09IEk0MEVfTUFDX1g3MjIgJiYNCj4gKwkgICAgIShody0+ZmxhZ3MgJiBJ NDBFX0hXX0ZMQUdfWDcyMl9GRUNfUkVRVUVTVF9DQVBBQkxFKSkgew0KPiArCQlQTURfRFJWX0xP RyhFUlIsICJTZXR0aW5nIEZFQyBlbmNvZGluZyBub3Qgc3VwcG9ydGVkIGJ5Ig0KPiArCQkJICIg ZmlybXdhcmUuIFBsZWFzZSB1cGRhdGUgdGhlIE5WTSBpbWFnZS5cbiIpOw0KPiArCQlyZXR1cm4g LUVOT1RTVVA7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGh3LT5kZXZpY2VfaWQgPT0gSTQwRV9ERVZf SURfMjVHX1NGUDI4IHx8DQo+ICsJICAgIGh3LT5kZXZpY2VfaWQgPT0gSTQwRV9ERVZfSURfMjVH X0IpIHsNCj4gKwkJaWYgKHNwZWVkX2ZlY19jYXBhKSB7DQo+ICsJCQlzcGVlZF9mZWNfY2FwYS0+ c3BlZWQgPSBSVEVfRVRIX1NQRUVEX05VTV8yNUc7DQo+ICsJCQlzcGVlZF9mZWNfY2FwYS0+Y2Fw YSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKE5PRkVDKSB8DQo+ICsJCQkJCSAgICAgUlRF X0VUSF9GRUNfTU9ERV9DQVBBX01BU0soQkFTRVIpIHwNCj4gKwkJCQkJICAgICBSVEVfRVRIX0ZF Q19NT0RFX0NBUEFfTUFTSyhBVVRPKSB8DQo+ICsJCQkJCSAgICAgUlRFX0VUSF9GRUNfTU9ERV9D QVBBX01BU0soUlMpOw0KPiArCQl9DQo+ICsNCj4gKwkJLyogc2luY2UgSFcgb25seSBzdXBwb3J0 cyAyNUcgKi8NCj4gKwkJcmV0dXJuIDE7DQo+ICsJfSBlbHNlIGlmIChody0+ZGV2aWNlX2lkID09 IEk0MEVfREVWX0lEX0tYX1g3MjIpIHsNCj4gKwkJaWYgKHNwZWVkX2ZlY19jYXBhKSB7DQo+ICsJ CQlzcGVlZF9mZWNfY2FwYS0+c3BlZWQgPSBSVEVfRVRIX1NQRUVEX05VTV8yNUc7DQo+ICsJCQlz cGVlZF9mZWNfY2FwYS0+Y2FwYSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKEFVVE8pIHwN Cj4gKwkJCQkJICAgICBSVEVfRVRIX0ZFQ19NT0RFX0NBUEFfTUFTSyhSUyk7DQo+ICsJCX0NCj4g KwkJcmV0dXJuIDE7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIC1FTk9UU1VQOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50DQo+ICtpNDBlX2ZlY19nZXQoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYs IHVpbnQzMl90ICpmZWNfY2FwYSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaTQwZV9odyAqaHcgPSBJNDBF X0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiArCXN0cnVjdCBp NDBlX2xpbmtfc3RhdHVzIGxpbmtfc3RhdHVzID0gezB9Ow0KPiArCXVpbnQ4X3QgY29uZmlndXJl ZF9mZWNfY2ZnID0gMCwgY3VycmVudF9mZWNfY2ZnOw0KPiArCXVpbnQzMl90IHRlbXBfZmVjX2Nh cGEgPSAwOw0KPiArCWJvb2wgbGlua191cCwgZW5hYmxlX2xzZTsNCj4gKwlpbnQgcmV0ID0gMDsN Cj4gKw0KPiArCWVuYWJsZV9sc2UgPSBkZXYtPmRhdGEtPmRldl9jb25mLmludHJfY29uZi5sc2Mg PyB0cnVlIDogZmFsc2U7DQo+ICsJLyogR2V0IEZFQyBpbmZvICovDQo+ICsJcmV0ID0gaTQwZV9h cV9nZXRfbGlua19pbmZvKGh3LCBlbmFibGVfbHNlLCAmbGlua19zdGF0dXMsIE5VTEwpOw0KPiAr CWlmIChyZXQgIT0gSTQwRV9TVUNDRVNTKSB7DQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIkZhaWxl ZCB0byBnZXQgbGluayBpbmZvcm1hdGlvbiIpOw0KPiArCQlyZXR1cm4gLUVOT1RTVVA7DQo+ICsJ fQ0KPiArDQo+ICsJbGlua191cCA9IGxpbmtfc3RhdHVzLmxpbmtfaW5mbyAmIEk0MEVfQVFfTElO S19VUDsNCj4gKw0KPiArCS8qKg0KPiArCSAqIElmIGxpbmsgaXMgZG93biBhbmQgQVVUTyBpcyBl bmFibGVkLCBBVVRPIGlzIHJldHVybmVkLA0KPiArCSAqIG90aGVyd2lzZSwgY29uZmlndXJlZCBG RUMgbW9kZSBpcyByZXR1cm5lZC4NCj4gKwkgKiBJZiBsaW5rIGlzIHVwLCBjdXJyZW50IEZFQyBt b2RlIGlzIHJldHVybmVkLg0KPiArCSAqLw0KPiArCWNvbmZpZ3VyZWRfZmVjX2NmZyA9IGxpbmtf c3RhdHVzLnJlcV9mZWNfaW5mbzsNCj4gaGVyZSB3ZSBuZWVkIHRvIGJldHRlciB1bmRlcnN0YW5k IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gW0ZDLFJTXS1GRUMgYWJpbGl0eSBiaXQgKGFrYSBJNDBF X0FRX0VOQUJMRV9GRUNfW0tSLFJTXSkgZnJvbSBbRkMsUlNdLUZFQyBSZXF1ZXN0IGJpdCAoYWth IEk0MEVfQVFfUkVRVUVTVF9GRUNfW0tSLFJTXSksIHNpbmNlIGxpbmtfc3RhdHVzLnJlcV9mZWNf aW5mbyBoYXMgb25seSAiUmVxdWVzdCIgYml0cyBmb3IgZWFjaCBGRUMgYWxnbyAoc2VlIGk0MGVf dXBkYXRlX2xpbmtfaW5mbygpKS4NCj4gRnJvbSB3aGF0IEkgZm91bmQgb24gdGhlIGludGVybmV0 LCBpdCBzZWVtcyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gdXNlIHRoZW0gYXQgYWxsLCBiZWNhdXNl LCBmb3IgZXhhbXBsZSBmb3IgRkMtRkVDIChha2EgQ2xhdXNlIDc0KSwgZnJvbToNCj4gaHR0cHM6 Ly93d3cuaWVlZTgwMi5vcmcvMy8yNUdTRy9wdWJsaWMvTm92MTQvYmFkZW5fMjVHRV8wMl8xMTE0 LnBkZg0KPiBLZXkgcGhyYXNlOiAiSWYgYm90aCBMUHMgYWR2ZXJ0aXNlIHRoZSBGRUMgQWJpbGl0 eSwgYW5kIEVJVEhFUiBMUCByZXF1ZXN0cyB0aGUgRkVDLCBpdCBpcyBlbmFibGVkLiINCj4gU28g SSdkIHN1Z2dlc3Qgbm90IHRvIHVzZSB0aGVzZSAiUmVxdWVzdCIgYml0cyBoZXJlLg0KPiBGb3Ig Y29uZmlndXJlZCBmZWMgKGNhc2Ugd2hlbiBsaW5rIGlzIERPV04pIHBsZWFzZSB1c2Ugc3RydWN0 IGk0MGVfYXFfZ2V0X3BoeV9hYmlsaXRpZXNfcmVzcCBhYmlsaXRpZXMuDQoNCldpbGwgZml4IGlu IG5leHQgdmVyc2lvbi4NCg0KPiANCj4gKwljdXJyZW50X2ZlY19jZmcgPSBsaW5rX3N0YXR1cy5m ZWNfaW5mbzsNCj4gKw0KPiArCWlmICghbGlua191cCkgew0KPiBUaGlzIHNlY3Rpb24gc2hvdWxk IGJlIHJld3JpdHRlbiBhY2NvcmRpbmcgdG8gYml0IGZsYWdzIGZyb20gYWJpbGl0aWVzLmZlY19j ZmdfY3Vycl9tb2RfZXh0X2luZm8uIA0KPiArCQlpZiAoY3VycmVudF9mZWNfY2ZnICYgKEk0MEVf QVFfRU5BQkxFX0ZFQ19LUiB8IEk0MEVfQVFfRU5BQkxFX0ZFQ19SUykpIHsNCj4gKwkJCXRlbXBf ZmVjX2NhcGEgPSBSVEVfRVRIX0ZFQ19NT0RFX0NBUEFfTUFTSyhBVVRPKTsNCj4gKwkJfSBlbHNl IHsNCj4gKwkJCWlmIChjb25maWd1cmVkX2ZlY19jZmcgPT0gKEk0MEVfQVFfUkVRVUVTVF9GRUNf S1IgfCBJNDBFX0FRX1JFUVVFU1RfRkVDX1JTKSkNCj4gKwkJCQl0ZW1wX2ZlY19jYXBhID0gUlRF X0VUSF9GRUNfTU9ERV9DQVBBX01BU0soQVVUTyk7DQo+ICsJCQllbHNlIGlmIChjb25maWd1cmVk X2ZlY19jZmcgJiBJNDBFX0FRX1JFUVVFU1RfRkVDX0tSKQ0KPiArCQkJCXRlbXBfZmVjX2NhcGEg PSBSVEVfRVRIX0ZFQ19NT0RFX0NBUEFfTUFTSyhCQVNFUik7DQo+ICsJCQllbHNlIGlmIChjb25m aWd1cmVkX2ZlY19jZmcgJiBJNDBFX0FRX1JFUVVFU1RfRkVDX1JTKQ0KPiArCQkJCXRlbXBfZmVj X2NhcGEgPSBSVEVfRVRIX0ZFQ19NT0RFX0NBUEFfTUFTSyhSUyk7DQo+ICsJCQllbHNlDQo+ICsJ CQkJdGVtcF9mZWNfY2FwYSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKE5PRkVDKTsNCj4g KwkJfQ0KDQpTaG91bGQgY3VycmVudF9mZWNfY2ZnIChsaW5rX3N0YXR1cy5mZWNfaW5mbykgYmUg cmV3cml0dGVuIHRoaXMgd2F5IHNpbmNlIGl0IG9ubHkgaGFzIEtSIG9yIFJTIGJpdCBhbmQgbm8g QVVUTyBiaXQ/IGFueSBzdWdnZXN0aW9uIHBsZWFzZT8NCg0KCQlpZiAoY29uZmlndXJlZF9mZWNf Y2ZnICYgSTQwRV9BUV9FTkFCTEVfRkVDX0FVVE8pDQoJCQl0ZW1wX2ZlY19jYXBhID0gUlRFX0VU SF9GRUNfTU9ERV9DQVBBX01BU0soQVVUTyk7DQoJCWVsc2UgaWYgKGNvbmZpZ3VyZWRfZmVjX2Nm ZyAmIEk0MEVfQVFfRU5BQkxFX0ZFQ19LUikNCgkJCXRlbXBfZmVjX2NhcGEgPSBSVEVfRVRIX0ZF Q19NT0RFX0NBUEFfTUFTSyhCQVNFUik7DQoJCWVsc2UgaWYgKGNvbmZpZ3VyZWRfZmVjX2NmZyAm IEk0MEVfQVFfRU5BQkxFX0ZFQ19SUykNCgkJCXRlbXBfZmVjX2NhcGEgPSBSVEVfRVRIX0ZFQ19N T0RFX0NBUEFfTUFTSyhSUyk7DQoJCWVsc2UNCgkJCXRlbXBfZmVjX2NhcGEgPSBSVEVfRVRIX0ZF Q19NT0RFX0NBUEFfTUFTSyhOT0ZFQyk7DQoNCj4gKwl9IGVsc2Ugew0KPiArCQlpZiAoY3VycmVu dF9mZWNfY2ZnICYgKEk0MEVfQVFfRU5BQkxFX0ZFQ19LUiB8IEk0MEVfQVFfRU5BQkxFX0ZFQ19S UykpDQo+ICsJCQl0ZW1wX2ZlY19jYXBhID0gUlRFX0VUSF9GRUNfTU9ERV9DQVBBX01BU0soQVVU Tyk7DQo+IEluIGNhc2Ugd2hlbiBGRUMgd2FzIHN1Y2Nlc3NmdWxseSBuZWdvdGlhdGVkIGN1cnJl bnRfZmVjX2NmZyBpcyBjb250YWluaW5nIG9ubHkgc2luZ2xlIGJpdCAoc2luY2UgMiBhbGdvcyBj YW4gbm90IGJlIGVuYWJsZWQgYXQgdGhlIHNhbWUgdGltZSksIHNvIHRoaXMgcGFydCBpcyBtZWFu aW5nbGVzcy4gQWxzbyBoZXJlIGFuZCBiZWxvdyBpbiB0aGlzIGVsc2Ugc2VjdGlvbiAoaS5lLiBp biBzZWN0aW9uIGlmIGxpbmsgaXMgVVApLCBmb3IgY29uc2lzdGVuY3kgcGxlYXNlIHVzZSBjb3Jy ZXNwb25kaW5nIG1hY3JvcyBkZWZpbmVkIGZvciBzdHJ1Y3QgaTQwZV9hcWNfZ2V0X2xpbmtfc3Rh dHVzIC0gSTQwRV9BUV9DT05GSUdfRkVDX0tSX0VOQSBhbmQgSTQwRV9BUV9DT05GSUdfRkVDX1JT X0VOQSBpbnN0ZWFkIG9mIEk0MEVfQVFfRU5BQkxFX0ZFQ18gLiANCj4gKwkJZWxzZSBpZiAoY3Vy cmVudF9mZWNfY2ZnICYgSTQwRV9BUV9FTkFCTEVfRkVDX0tSKQ0KPiArCQkJdGVtcF9mZWNfY2Fw YSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKEJBU0VSKTsNCj4gKwkJZWxzZSBpZiAoY3Vy cmVudF9mZWNfY2ZnICYgSTQwRV9BUV9FTkFCTEVfRkVDX1JTKQ0KPiArCQkJdGVtcF9mZWNfY2Fw YSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKFJTKTsNCj4gKwkJZWxzZQ0KPiArCQkJdGVt cF9mZWNfY2FwYSA9IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKE5PRkVDKTsNCg0KSXMgdGhl cmUgYW55IGlzc3VlIHdpdGggdGhpcyBjaGFuZ2U/DQoNCgkJaWYgKGN1cnJlbnRfZmVjX2NmZyAm IEk0MEVfQVFfQ09ORklHX0ZFQ19LUl9FTkEpDQoJCQl0ZW1wX2ZlY19jYXBhID0gUlRFX0VUSF9G RUNfTU9ERV9DQVBBX01BU0soQkFTRVIpOw0KCQllbHNlIGlmIChjdXJyZW50X2ZlY19jZmcgJiBJ NDBFX0FRX0NPTkZJR19GRUNfUlNfRU5BKQ0KCQkJdGVtcF9mZWNfY2FwYSA9IFJURV9FVEhfRkVD X01PREVfQ0FQQV9NQVNLKFJTKTsNCgkJZWxzZQ0KCQkJdGVtcF9mZWNfY2FwYSA9IFJURV9FVEhf RkVDX01PREVfQ0FQQV9NQVNLKE5PRkVDKTsNCg0KPiArCX0NCj4gKw0KPiArCSpmZWNfY2FwYSA9 IHRlbXBfZmVjX2NhcGE7DQo+ICsNCj4gKwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGlj IGludA0KPiAraTQwZV9mZWNfc2V0KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MzJfdCBm ZWNfY2FwYSkNCj4gK3sNCj4gKwlzdHJ1Y3QgaTQwZV9odyAqaHcgPSBJNDBFX0RFVl9QUklWQVRF X1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOw0KPiArCXN0cnVjdCBpNDBlX2FxX2dldF9w aHlfYWJpbGl0aWVzX3Jlc3AgYWJpbGl0aWVzID0gezB9Ow0KPiArCXN0cnVjdCBpNDBlX2FxX3Nl dF9waHlfY29uZmlnIGNvbmZpZyA9IHswfTsNCj4gKwllbnVtIGk0MGVfc3RhdHVzX2NvZGUgc3Rh dHVzOw0KPiArCXVpbnQ4X3QgcmVxX2ZlYyA9IDA7DQo+ICsNCj4gKwlpZiAoaHctPmRldmljZV9p ZCAhPSBJNDBFX0RFVl9JRF8yNUdfU0ZQMjggJiYNCj4gKwkgICAgaHctPmRldmljZV9pZCAhPSBJ NDBFX0RFVl9JRF8yNUdfQiAmJg0KPiArCSAgICBody0+ZGV2aWNlX2lkICE9IEk0MEVfREVWX0lE X0tYX1g3MjIpIHsNCj4gKwkJcmV0dXJuIC1FTk9UU1VQOw0KPiArCX0NCj4gKw0KPiArCWlmICho dy0+bWFjLnR5cGUgPT0gSTQwRV9NQUNfWDcyMiAmJg0KPiArCSAgICAhKGh3LT5mbGFncyAmIEk0 MEVfSFdfRkxBR19YNzIyX0ZFQ19SRVFVRVNUX0NBUEFCTEUpKSB7DQo+ICsJCVBNRF9EUlZfTE9H KEVSUiwgIlNldHRpbmcgRkVDIGVuY29kaW5nIG5vdCBzdXBwb3J0ZWQgYnkiDQo+ICsJCQkgIiBm aXJtd2FyZS4gUGxlYXNlIHVwZGF0ZSB0aGUgTlZNIGltYWdlLlxuIik7DQo+ICsJCXJldHVybiAt RU5PVFNVUDsNCj4gKwl9DQo+ICsNCj4gKwkvKioNCj4gKwkgKiBDb3B5IHRoZSBjdXJyZW50IHVz ZXIgUEhZIGNvbmZpZ3VyYXRpb24uIFRoZSBjdXJyZW50IHVzZXIgUEhZDQo+ICsJICogY29uZmln dXJhdGlvbiBpcyBpbml0aWFsaXplZCBkdXJpbmcgcHJvYmUgZnJvbSBQSFkgY2FwYWJpbGl0aWVz DQo+ICsJICogc29mdHdhcmUgbW9kZSwgYW5kIHVwZGF0ZWQgb24gc2V0IFBIWSBjb25maWd1cmF0 aW9uLg0KPiArCSAqLw0KPiArCWlmIChmZWNfY2FwYSAhPSAwKQ0KPiArCQlyZXR1cm4gLUVJTlZB TDsNCj4gRGlkIHlvdSBtZWFuIGlmIChmZWNfY2FwYSA9PSAwKT8NCg0KWWVzLi4uc29ycnkgZm9y IG1pc3Rha2UsIHdpbGwgZml4IGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gKw0KPiArCWlmIChm ZWNfY2FwYSAmIFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKEFVVE8pKSB7DQo+ICsJCWlmICho dy0+bWFjLnR5cGUgPT0gSTQwRV9NQUNfWDcyMikgew0KPiArCQkJUE1EX0RSVl9MT0coRVJSLCAi WDcyMiBVbnN1cHBvcnRlZCBGRUMgbW9kZTogQVVUTyIpOw0KPiArCQkJcmV0dXJuIC1FSU5WQUw7 DQo+ICsJCX0NCj4gKwkJcmVxX2ZlYyA9IEk0MEVfQVFfU0VUX0ZFQ19BVVRPOw0KPiArCQlnb3Rv IHNldF9mZWM7DQo+ICsJfQ0KPiArDQo+ICsJaWYgKGZlY19jYXBhICYgUlRFX0VUSF9GRUNfTU9E RV9DQVBBX01BU0soTk9GRUMpKQ0KPiArCQlyZXFfZmVjID0gMDsNCj4gKw0KPiArCWlmIChmZWNf Y2FwYSAmIFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKEJBU0VSKSkNCj4gKwkJcmVxX2ZlYyB8 PSBJNDBFX0FRX1NFVF9GRUNfUkVRVUVTVF9LUjsNCj4gKw0KPiArCWlmIChmZWNfY2FwYSAmIFJU RV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKFJTKSkgew0KPiArCQlpZiAoaHctPm1hYy50eXBlID09 IEk0MEVfTUFDX1g3MjIpIHsNCj4gKwkJCVBNRF9EUlZfTE9HKEVSUiwgIlg3MjIgVW5zdXBwb3J0 ZWQgRkVDIG1vZGU6IFJTIik7DQo+ICsJCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwkJfQ0KPiArCQly ZXFfZmVjIHw9IEk0MEVfQVFfU0VUX0ZFQ19SRVFVRVNUX1JTOw0KPiArCX0NCj4gVGhpcyBwYXJ0 IGlzIG5vdCBsb29raW5nIGNvcnJlY3QgdG8gbWU6DQo+IC0gb25seSBJNDBFX0FRX1NFVF9GRUNf QVVUTyBiaXQgaXMgc2V0IHcvbyBlbmFibGluZyBzcGVjaWZpYyBwcm90b2NvbHMNCj4gLSAiaWYg KGZlY19jYXBhICYgUlRFX0VUSF9GRUNfTU9ERV9DQVBBX01BU0soTk9GRUMpKSIgbWFrZXMgbm8g c2Vuc2UgaWYgb3RoZXIgYml0ZmllbGRzIGFyZSBzZXQNCj4gLSBvbmx5IEk0MEVfQVFfU0VUX0ZF Q19SRVFVRVNUXyogaXMgc2V0IHdpdGhvdXQgSTQwRV9BUV9TRVRfRkVDX0FCSUxJVFlfKg0KPiAg QWNjb3JkaW5nIHRvIEFQSSA6ICJJZiBvbmx5IHRoZSBBVVRPIGJpdCBpcyBzZXQsIHRoZSBkZWNp c2lvbiBvbiB3aGljaCBGRUMgbW9kZSB0byB1c2Ugd2lsbCBiZSBtYWRlIGJ5IEhXL0ZXIG9yIGRy aXZlci4gSWYgdGhlIEFVVE8gYml0IGlzIHNldCB3aXRoIHNvbWUgRkVDIG1vZGVzLCBvbmx5IHNw ZWNpZmllZCBGRUMgbW9kZXMgY2FuIGJlIHNldC4gSWYgQVVUTyBiaXQgaXMgY2xlYXIsIHNwZWNp ZnkgRkVDIG1vZGUgdG8gYmUgdXNlZCAob25seSBvbmUgdmFsaWQgbW9kZSBwZXIgc3BlZWQgbWF5 IGJlIHNldCkuIiBJJ2Qgc3VnZ2VzdDoNCj4gLSBJbiBjYXNlIHdoZW4gQVVUTyBiaXQgaXMgc2V0 IHdlIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIGJpdCBmbGFncy4gSW4gY2FzZSBvZiBhYnNlbmNl IGxldCdzIGRlY2lkZSB0byAgYWRkIGFsbCBzdXBwb3J0ZWQgYnkgbWFjIHR5cGUgYWxnb3JpdGht cyAoaS5lLiBzZXQgY29ycmVzcG9uZGluZyBfZW5hYmxlXyBhbmQgX3JlcXVlc3RfIGJpdCBmaWVs ZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGFsZ28pLg0KPiAtIEluIGNhc2UgaWYgdGhlcmUgYXJlIG1v cmUgYml0cyBhcGFydCBmcm9tIEFVVE8gLSBjaGVjayBmb3IgdGhlaXIgdmFsaWRpdHkgYW5kIHN1 cHBvcnQgYW5kIHNwZWNpZnkgY29ycmVzcG9uZGluZyBfZW5hYmxlXyBhbmQgX3JlcXVlc3RfIGZs YWdzLg0KPiAtIEluIGNhc2UgaWYgQVVUTyBpcyBub3Qgc2V0IGNoZWNrIHRoYXQgb25seSBzaW5n bGUgbW9kZSB3YXMgc3BlY2lmaWVkLCBjaGVjayBpdHMgdmFsaWRpdHkgKyBzdXBwb3J0IGFuZCBz byBvbi4NCg0KQmFzZWQgb24geW91ciBzdWdnZXN0aW9ucywgYW55IG90aGVyIHN1Z2dlc3Rpb24g Zm9yIHRoZSBmb2xsb3dpbmcgcmV3b3JrPw0KDQoJaWYgKGZlY19jYXBhICYgUlRFX0VUSF9GRUNf TU9ERV9DQVBBX01BU0soQVVUTykpDQoJCWZlY19hdXRvID0gMTsNCg0KCWlmIChmZWNfY2FwYSAm IFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKEJBU0VSKSkNCgkJZmVjX2tyID0gMTsNCg0KCWlm IChmZWNfY2FwYSAmIFJURV9FVEhfRkVDX01PREVfQ0FQQV9NQVNLKFJTKSkNCgkJZmVjX3JzID0g MTsNCg0KCWlmIChmZWNfYXV0bykgew0KCQlpZiAoaHctPm1hYy50eXBlID09IEk0MEVfTUFDX1g3 MjIpIHsNCgkJCVBNRF9EUlZfTE9HKEVSUiwgIlg3MjIgVW5zdXBwb3J0ZWQgRkVDIG1vZGU6IEFV VE8iKTsNCgkJCXJldHVybiAtRUlOVkFMOw0KCQl9DQoJCWlmIChmZWNfa3IgXiBmZWNfcnMpIHsN CgkJCWlmIChmZWNfa3IpDQoJCQkJcmVxX2ZlYyA9IEk0MEVfQVFfU0VUX0ZFQ19BQklMSVRZX0tS IHwNCgkJCQkJCQlJNDBFX0FRX1NFVF9GRUNfUkVRVUVTVF9LUjsNCgkJCWVsc2Ugew0KCQkJCWlm IChody0+bWFjLnR5cGUgPT0gSTQwRV9NQUNfWDcyMikgew0KCQkJCQlQTURfRFJWX0xPRyhFUlIs ICJYNzIyIFVuc3VwcG9ydGVkIEZFQyBtb2RlOiBSUyIpOw0KCQkJCQlyZXR1cm4gLUVJTlZBTDsN CgkJCQl9DQoJCQkJcmVxX2ZlYyA9IEk0MEVfQVFfU0VUX0ZFQ19BQklMSVRZX1JTIHwNCgkJCQkJ CQlJNDBFX0FRX1NFVF9GRUNfUkVRVUVTVF9SUzsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWlmICho dy0+bWFjLnR5cGUgPT0gSTQwRV9NQUNfWDcyMikgew0KCQkJCXJlcV9mZWMgPSBJNDBFX0FRX1NF VF9GRUNfQUJJTElUWV9LUiB8DQoJCQkJCQkgIEk0MEVfQVFfU0VUX0ZFQ19SRVFVRVNUX0tSOw0K CQkJfSBlbHNlIHsNCgkJCQlyZXFfZmVjID0gSTQwRV9BUV9TRVRfRkVDX0FCSUxJVFlfS1IgfA0K CQkJCQkJICBJNDBFX0FRX1NFVF9GRUNfUkVRVUVTVF9LUiB8DQoJCQkJCQkgIEk0MEVfQVFfU0VU X0ZFQ19BQklMSVRZX1JTIHwNCgkJCQkJCSAgSTQwRV9BUV9TRVRfRkVDX1JFUVVFU1RfUlM7DQoJ CQl9DQoJCX0NCgl9IGVsc2Ugew0KCQlpZiAoZmVjX2tyIF4gZmVjX3JzKSB7DQoJCQlpZiAoZmVj X2tyKQ0KCQkJCXJlcV9mZWMgPSBJNDBFX0FRX1NFVF9GRUNfQUJJTElUWV9LUiB8DQoJCQkJCQkJ STQwRV9BUV9TRVRfRkVDX1JFUVVFU1RfS1I7DQoJCQllbHNlIHsNCgkJCQlpZiAoaHctPm1hYy50 eXBlID09IEk0MEVfTUFDX1g3MjIpIHsNCgkJCQkJUE1EX0RSVl9MT0coRVJSLCAiWDcyMiBVbnN1 cHBvcnRlZCBGRUMgbW9kZTogUlMiKTsNCgkJCQkJcmV0dXJuIC1FSU5WQUw7DQoJCQkJfQ0KCQkJ CXJlcV9mZWMgPSBJNDBFX0FRX1NFVF9GRUNfQUJJTElUWV9SUyB8DQoJCQkJCQkJSTQwRV9BUV9T RVRfRkVDX1JFUVVFU1RfUlM7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gLUVJTlZBTDsN CgkJfQ0KCX0NCg0KPiArDQo+ICtzZXRfZmVjOg0KPiArCS8qIEdldCB0aGUgY3VycmVudCBwaHkg Y29uZmlnICovDQo+ICsJc3RhdHVzID0gaTQwZV9hcV9nZXRfcGh5X2NhcGFiaWxpdGllcyhodywg ZmFsc2UsIGZhbHNlLCAmYWJpbGl0aWVzLA0KPiArCQkJCQkgICAgICBOVUxMKTsNCj4gKwlpZiAo c3RhdHVzKSB7DQo+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIkZhaWxlZCB0byBnZXQgUEhZIGNhcGFi aWxpdGllczogJWRcbiIsDQo+ICsJCQkJc3RhdHVzKTsNCj4gKwkJcmV0dXJuIC1FTk9UU1VQOw0K PiArCX0NCj4gKw0KPiArCWlmIChhYmlsaXRpZXMuZmVjX2NmZ19jdXJyX21vZF9leHRfaW5mbyAh PSByZXFfZmVjKSB7DQo+ICsJCWNvbmZpZy5waHlfdHlwZSA9IGFiaWxpdGllcy5waHlfdHlwZTsN Cj4gKwkJY29uZmlnLmFiaWxpdGllcyA9IGFiaWxpdGllcy5hYmlsaXRpZXMgfA0KPiArCQkJCSAg IEk0MEVfQVFfUEhZX0VOQUJMRV9BVE9NSUNfTElOSzsNCj4gKwkJY29uZmlnLnBoeV90eXBlX2V4 dCA9IGFiaWxpdGllcy5waHlfdHlwZV9leHQ7DQo+ICsJCWNvbmZpZy5saW5rX3NwZWVkID0gYWJp bGl0aWVzLmxpbmtfc3BlZWQ7DQo+ICsJCWNvbmZpZy5lZWVfY2FwYWJpbGl0eSA9IGFiaWxpdGll cy5lZWVfY2FwYWJpbGl0eTsNCj4gKwkJY29uZmlnLmVlZXIgPSBhYmlsaXRpZXMuZWVlcl92YWw7 DQo+ICsJCWNvbmZpZy5sb3dfcG93ZXJfY3RybCA9IGFiaWxpdGllcy5kM19scGFuOw0KPiArCQlj b25maWcuZmVjX2NvbmZpZyA9IHJlcV9mZWMgJiBJNDBFX0FRX1BIWV9GRUNfQ09ORklHX01BU0s7 DQo+ICsJCXN0YXR1cyA9IGk0MGVfYXFfc2V0X3BoeV9jb25maWcoaHcsICZjb25maWcsIE5VTEwp Ow0KPiArCQlpZiAoc3RhdHVzKSB7DQo+ICsJCQlQTURfRFJWX0xPRyhFUlIsICJGYWlsZWQgdG8g c2V0IFBIWSBjYXBhYmlsaXRpZXM6ICVkXG4iLA0KPiArCQkJc3RhdHVzKTsNCj4gKwkJCXJldHVy biAtRU5PVFNVUDsNCj4gKwkJfQ0KPiArCX0NCj4gKw0KPiArCXN0YXR1cyA9IGk0MGVfdXBkYXRl X2xpbmtfaW5mbyhodyk7DQo+ICsJaWYgKHN0YXR1cykgew0KPiArCQlQTURfRFJWX0xPRyhFUlIs ICJGYWlsZWQgdG8gc2V0IFBIWSBjYXBhYmlsaXRpZXM6ICVkXG4iLA0KPiArCQkJc3RhdHVzKTsN Cj4gKwkJcmV0dXJuIC1FQUdBSU47DQo+IFRoaXMgaXMgYSBuZXcgcmV0dXJuIHN0YXR1cyBvZiB0 aGlzIEFQSS4gSXQgbmVlZHMgdG8gYmUgYWRkZWQgaW4gZG94eWdlbiBkb2N1bWVudGF0aW9uIGZv ciB0aGlzIGZ1bmN0aW9uIGFuZCBiZSByZWZsZWN0ZWQgaW4gcmVsZWFzZSBub3Rlcw0KDQpNeSBi YWQsIHdpbGwgZml4IGluIG5leHQgdmVyc2lvbi4NCg0KPiANCj4gKwl9DQo+ICsNCj4gKwlyZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiAgUlRFX0xPR19SRUdJU1RFUl9TVUZGSVgoaTQwZV9sb2d0eXBl X2luaXQsIGluaXQsIE5PVElDRSk7DQo+ICBSVEVfTE9HX1JFR0lTVEVSX1NVRkZJWChpNDBlX2xv Z3R5cGVfZHJpdmVyLCBkcml2ZXIsIE5PVElDRSk7DQo+ICAjaWZkZWYgUlRFX0VUSERFVl9ERUJV R19SWA0KPiAtLSANCj4gUmVnYXJkcywNCj4gVmxhZGltaXINCj4NCg0KUmVnYXJkcywNClpoaWNo YW8NCg==