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 C4EF6A034F; Thu, 1 Apr 2021 06:13:34 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 48292140FDE; Thu, 1 Apr 2021 06:13:34 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2047.outbound.protection.outlook.com [40.107.92.47]) by mails.dpdk.org (Postfix) with ESMTP id EB33D40142 for ; Thu, 1 Apr 2021 06:13:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QI/9kMQo9+wuMOePwChMsqLq7h3P4V7phCe8YXiZxD9w4tPp4nP719jARww0VXePvvmzdbRwikQ3HPL5b4qcGiyUjiWPH/PlFncLdsOUPjGnM1d3pwXmUggKIttK7ylKWy1mw502p6k+cV50+cJtWZZrUs6oE9/s3RbzCKNzpEaTGJy0lePtGXrw049jVWVIN8qAKM3M0mCUzzvmIFsNwEh5pbgWKO/ksk0xgJvDkrErX38Dv+9ZH5qKZrqkgDxw/5lxfB6UcRuprsW2H2drTQBZ3Mo9Ao62S/3Ja0LYn/x3WpFQ6Fzfl07DFhknlgr3LgLhII8txdDyqjzJc7FmcQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=29HvA2uyc58soGH8DxwRZA6ZW7+StvzE4QqTM46Hw2s=; b=gw/OKE7kEWipF8Q5TRTZXtOfYQui+8l8LqaEWJD3aU9pc2JPO1nWU87mq2Hr/1YJkMb8NSmLGUKuxrEIcKE3NE3BdZ+Fp4mpN6hrfA/Uejm/PrDRzZ1vwSPvUhnHq0+xY6fBYQMQ4zhlR4laTq4VvvSH5C0UfE/U0TbcXZYT9maO7y+iXPbrvHA/daP7XIKWcs7+VLTWt/zIYQliLvOkjgO+euEcriwPSQsvcbTMb9DR6Rv3oGDLogo6bV30Fq6ES9+KrkBljTZmNOioiZZt5cryovgw7hHr/mdSonF71Mjy6/8/8kqm0QXfs/W1JJmgJwCb/87NEzuX/gn3S26EVA== 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=29HvA2uyc58soGH8DxwRZA6ZW7+StvzE4QqTM46Hw2s=; b=YKS/10d2V4vxJyAgeMA2eYsKrZRDxpHs5pe8thdqDpbs+KMIbDpMjyKbiVDo6z11aoTOrdZz8Cc/TU2achDTwCC45r0paSE9g2gX66/Cd3eqy6WMukfUnoqfdXP7Uq8tTkfoHBrxh7kr9VQClgqTO9nwesnKlQWlT8ojLz9of8K0pGtD7PXxqOEQQK551cz7o0jyzTLnIzUH/RhbQZi/MSHtCHwgX6nmxAcjSA4fbZGLLWIXE84vsSCXeYrnsrd1p2lO+ccH3Zx4Ex83gDHdNVq2kGWrSu+BCKGilpfPJFaQxCnZlp037CnDXYsxIaWndvKzCS2Odolxg1TXkT9czw== Received: from BL0PR12MB2419.namprd12.prod.outlook.com (2603:10b6:207:44::27) by BL0PR12MB4898.namprd12.prod.outlook.com (2603:10b6:208:1c7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.27; Thu, 1 Apr 2021 04:13:31 +0000 Received: from BL0PR12MB2419.namprd12.prod.outlook.com ([fe80::7979:5ea5:f490:d87f]) by BL0PR12MB2419.namprd12.prod.outlook.com ([fe80::7979:5ea5:f490:d87f%5]) with mapi id 15.20.3977.033; Thu, 1 Apr 2021 04:13:31 +0000 From: "Jiawei(Jonny) Wang" To: Ferruh Yigit , Salem Sol , "dev@dpdk.org" CC: Ori Kam , Xiaoyun Li Thread-Topic: [dpdk-dev] [PATCH v3 1/8] app/testpmd: store VXLAN/NVGRE encap data globally Thread-Index: AQHXGw+YZeXTfYWyyEC+n3JKbqYFaaqeFswAgAD01oA= Date: Thu, 1 Apr 2021 04:13:31 +0000 Message-ID: References: <20210317092610.71000-1-salems@nvidia.com> <20210317092610.71000-2-salems@nvidia.com> <5eff804f-baf3-7dce-7cb8-6189454f0665@intel.com> In-Reply-To: <5eff804f-baf3-7dce-7cb8-6189454f0665@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=nvidia.com; x-originating-ip: [120.31.162.34] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 91fd8a13-c7ca-4456-e18b-08d8f4c482bf x-ms-traffictypediagnostic: BL0PR12MB4898: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: DFHXml3Nx3PuXcAkKiScFWazY0eKqz3Fv8PuYcQIqio0tVNY4UfLQMVRW5i356RS449Z+janSHYI0Dc2Ea6x9q3RtcnX3huxWAAMR7npQ31Epu44JeMKE5lDF2r1RPq5KOIrcPLtRDJc8nh3NNm61jpx8X3e8VYtKaHWSUjHbQJycpdK8cQ6GSTxHDa7nk1Ir6NPlHtk9KMVOxrGVWWY+laIXYNj69ZktCaljw6raiR+E609zWnAzB2kCpat0KCyL93/epXZSRyHqhJRu5dcOnvtirSB+Cte1MaD1zXTBTdUMWLTS38Hud6G74qUk/UmOh8+wH5PHuu+IQApOlFDC458wEhkB0ASZStF47gCb95hpXaxB0suB3ZSg/S1XIeDurwV30M5ZC5b+crC30cWvLUpBlsj/ofSYHt4I7BbkIRcXXXFrUWDP2QeY6uMI0TCNfoChyM0GUXz7YFA1G/nqPYKiV1rsId65a0PO51dOie3ZW6jKIsG6hnblv2gPfIgSqWurGIhwuAj96P+Z5lwB1h4uWi1rloNIpPJWyA9i3gXqqGfKdh7ygveLC9R3pI58MPuFERLfOew7wqYAL5FkhhA/07r5RZM8ko/3hkUatItHm4LiGrFh/S830P1D+9p97u2esTJ38R+9z+blHVgmB9id9+QVKgEnmBD59L70NH8QiIxhDKgzCU9nXBLhXVG4/8b38EQ/m350jU5fun3/L+Bvmy5QxRm5vGVX7P8mhBWseJyiPnjX4NWBbierCu8 x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BL0PR12MB2419.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(376002)(396003)(136003)(366004)(316002)(8676002)(8936002)(53546011)(6506007)(110136005)(186003)(52536014)(71200400001)(66476007)(55016002)(7696005)(54906003)(33656002)(26005)(2906002)(66446008)(5660300002)(83380400001)(4326008)(478600001)(38100700001)(76116006)(86362001)(66946007)(64756008)(9686003)(66556008); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?aU1YMFZUdzBlUWpBM3Nsbnlvc2d6ZXhnT29RVDlPK2YxMWRoZGV6V0M3S2J1?= =?utf-8?B?Qm5hUFNhbzBpNzZKeDlpWitjKzBrRytPVHcxQmU3NHg4OTBsdUIvZ2lMbE1Z?= =?utf-8?B?ZmNRNkIxU01aZENneVh6b1orUVU3anF4ZVFmMUlZK0N5b2FFL1NjOUNHOWNM?= =?utf-8?B?a05HeTFzSGk1T0k2NENRdHptMzZ4eXZPRUErbFRnNkN3ZDU1Y01YRWdaekdS?= =?utf-8?B?T2dxRHVQYmovbVk5T3k2d0l4RHd6V3Nudk9WWG1ucVJSaXdodlR0YmdHeTJ1?= =?utf-8?B?WHhmMURQcm1CeFJmdGdSOEpobHpvcEIrQzRGak95ODlQWWoxV0tyNE1UZlhR?= =?utf-8?B?Z21BbkhGTXEvdERTTzJRTldybEt5MllCVlZ0ZzJiZ3VLRjExNUs2N3BDa1N1?= =?utf-8?B?bWhYTk82bnlzdFRJZjZlVWlBZ01uWmRiclJPdFk3QzRhK3ord0tRYjFQcjVn?= =?utf-8?B?ZXpma2N0cndjKzk5YTY4N0dlUmc5czY5Wmo3b1dHL01GZnd2OVlXMTQ4RGti?= =?utf-8?B?dk5qZmxWdmRVU2tKUnJEMWJ4bm10bTZYZzhSdFpVUCtkbnBOQ0hSZHdyVUgr?= =?utf-8?B?M3I0b09CUlZJRE5qb1lacmRMOWhqK053Wk1pMnBYSEN4TEVIRzRmT3VUSU5l?= =?utf-8?B?Zm02MnJXSEZnU2lhQUduQkErWjV5b0JIL0puUkJPcENTMklidEgvMTZ6Vkg2?= =?utf-8?B?WFdBbitGbUc0eko3NDNTQ20rc0tjVDlvM2RtOU90WkNJSElHdnVjSDZmT01Z?= =?utf-8?B?dUxESVlaQmVlV0JxZ0Q0YUtERDg1dnJiS1dKSWlkZ2NaaGkxdUp5QXRkemN3?= =?utf-8?B?cEk1QXRnNlZ1MVhLdHV2OERNaU5JaDdjOHdlbEFkNUFkdFg4M3BHUzU2SWho?= =?utf-8?B?YWdrZklJZHpNZTBBZTBRVnFEanhXV0R4MFREb2xDZ3o2Y2FqZ3dGdXNzR0V0?= =?utf-8?B?SjNlREJ1NXhFbFZSR3ZTb3ZOYkY4OXFOL0NiTHJ3bkpHV3B4VHd6c3hQMUJi?= =?utf-8?B?cUR2NExjYloxL1FabzRsRFdqVHZXbmlpcEdmaThVajRFKzZ1YWdrN2xPSWlp?= =?utf-8?B?TEtHMkRBUzFUSit3V3RkL29HaUlqR05qamhsOXllMjFLVWxsKzI0R1U4bFBT?= =?utf-8?B?N2psQS8zakZGUEpRSzN6VzJQK051QXE4dnBZV21taUxIV3lPV1BhQTF0UXdS?= =?utf-8?B?c3FWWHlxdjZ1b0NhQjdXeTRRZnp0RUJsQjhCcWFmSzh2Mk1iRnpTTnoxV3Jj?= =?utf-8?B?QXpGb0VLZ1hnQ3RubEdCQ1B2YWZNSFMzSityZjZnRGpITnJoRjFnbktRdkIy?= =?utf-8?B?UVd2RWF2UTRKTkhBelpGbU5Md0pQNkFST3dubWRWcHZFcDJaeXkyd01ndzFw?= =?utf-8?B?b2NJSElOdG8wK3MxTXJPNlR1ZGRlRkJKYlE1ZVlVMzVSRzl6aFMyQXg4S0dY?= =?utf-8?B?THRNZ1VnVGZRTkFUdlBEOEZHdGpnNExQS04wUldUbDE2eG9GSWxxM1RleEE4?= =?utf-8?B?Z1NQVXNBTk9Qb3pYNGh6cGlQNnI5SFdFY1hlbUdsanlkNU1DdEppb1FyYnRp?= =?utf-8?B?U0dtVUlyOEw0WnIxNXVzbGFQZCt3dUUvVEY3ZytjdGY5ekYwMWUvcVg1ZWVy?= =?utf-8?B?NzdnZWk3SGNxRkx5TGN4NWM0QmNLbi9WZWx4UTZqSncvbGlGSHRWK2ZGQWdS?= =?utf-8?B?U3FiK3RaWHRzLzErd2dzZUc1ME0vMGFodDVWeWRYdiszVE5iNzhoaWVsUWVP?= =?utf-8?Q?e5+uRTTjyoU+KGg4FZtKsY9Utz4T6dDEQe3Gzug?= 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: BL0PR12MB2419.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 91fd8a13-c7ca-4456-e18b-08d8f4c482bf X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Apr 2021 04:13:31.6156 (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: e30F8i4i2G0tARlFN/pYpw5u4Plr+KsC1AKYqSN/17hUs0cB7ZULdqJSJ1mI4261PJK1Cua09xO+/klRLPYrbQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB4898 Subject: Re: [dpdk-dev] [PATCH v3 1/8] app/testpmd: store VXLAN/NVGRE encap data globally 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" SGVsbG8gRmVycnVoLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEZl cnJ1aCBZaWdpdCA8ZmVycnVoLnlpZ2l0QGludGVsLmNvbT4NCj4gU2VudDogV2VkbmVzZGF5LCBN YXJjaCAzMSwgMjAyMSA4OjA4IFBNDQo+IFRvOiBTYWxlbSBTb2wgPHNhbGVtc0BudmlkaWEuY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBKaWF3ZWkoSm9ubnkpIFdhbmcgPGppYXdlaXdAbnZpZGlh LmNvbT47IE9yaSBLYW0gPG9yaWthQG52aWRpYS5jb20+Ow0KPiBYaWFveXVuIExpIDx4aWFveXVu LmxpQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYzIDEvOF0g YXBwL3Rlc3RwbWQ6IHN0b3JlIFZYTEFOL05WR1JFDQo+IGVuY2FwIGRhdGEgZ2xvYmFsbHkNCj4g DQo+IE9uIDMvMTcvMjAyMSA5OjI2IEFNLCBTYWxlbSBTb2wgd3JvdGU6DQo+ID4gRnJvbTogSmlh d2VpIFdhbmcgPGppYXdlaXdAbnZpZGlhLmNvbT4NCj4gPg0KPiA+IFdpdGggdGhlIGN1cnJlbnQg Y29kZSB0aGUgVlhMQU4vTlZHUkUgcGFyc2luZyByb3V0aW5lIHN0b3JlZCB0aGUNCj4gPiBjb25m aWd1cmF0aW9uIG9mIHRoZSBoZWFkZXIgb24gc3RhY2ssIHRoaXMgbWlnaHQgbGVhZCB0byBvdmVy d3JpdGluZw0KPiA+IHRoZSBkYXRhIG9uIHRoZSBzdGFjay4NCj4gPg0KPiA+IFRoaXMgcGF0Y2gg c3RvcmVzIHRoZSBleHRlcm5hbCBkYXRhIG9mIHZ4bGFuIGFuZCBudmdyZSBlbmNhcCBpbnRvDQo+ ID4gZ2xvYmFsIGRhdGEgYXMgYSBwcmUtc3RlcCB0byBzdXBwb3J0aW5nIHZ4bGFuIGFuZCBudmdy ZSBlbmNhcCBhcyBhDQo+ID4gc2FtcGxlIGFjdGlvbnMuDQo+ID4NCj4gDQo+IEkgZGlkbid0IGdl dCB3aGF0IHdhcyBvbiBzdGFjayBhbmQgbW92ZWQgaW4gdG8gdGhlIGdsb2JhbCBkYXRhLCBjYW4g eW91DQo+IHBsZWFzZSBlbGFib3JhdGUuDQo+IA0KDQpUaGlzIHBhdGNoIHNwbGl0IHRoZSBmdW5j dGlvbiBhbmQgc2F2ZWQgaW5wdXQgZGF0YSBpbnRvIGlucHV0IHBhcmFtZXRlcjoNClNvIGl0IG1l bnRpb25lZCBoZXJlICJwcmUtc3RlcCIgZm9yIG5leHQgc3RvcmUgdGhlIGRhdGEgb2YgdnhsYW4v bnZncmUgaW50byBnbG9iYWwuDQoNClRoZSBnbG9iYWwgdmFyIGZvciBzYW1wbGUgYWN0aW9uIGlz IGRlZmluZWQgaW46IA0KKGh0dHBzOi8vcGF0Y2hlcy5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0 Y2gvMjAyMTAzMTcwOTI2MTAuNzEwMDAtNS1zYWxlbXNAbnZpZGlhLmNvbS8pDQpzdHJ1Y3QgYWN0 aW9uX3Z4bGFuX2VuY2FwX2RhdGEgc2FtcGxlX3Z4bGFuX2VuY2FwW1JBV19TQU1QTEVfQ09ORlNf TUFYX05VTV07DQoNCj4gRm9yIGV4YW1wbGUgZm9yIG52Z3JlLCAnYWN0aW9uX252Z3JlX2VuY2Fw X2RhdGEnIGlzIHBvaW50ZXIgaW4gc3RhY2sgYnV0IHRoZQ0KPiBhY3R1YWwgb2JqZWN0IGlzICdj dHgtPm9iamVjdCcsIHNvIGl0IGlzIG5vdCByZWFsbHkgaW4gdGhlIHN0YWNrLg0KPiANCg0KQWZ0 ZXIgY2FsbCAnc2V0IHNhbXBsZSAwIG52Z3JlIC4uICcsIHRoZSBkYXRhIGJlIHN0b3JlZCBpbnRv ICdjdHgtPm9iamVjdCcsIHRoZSAnY3R4LT5vYmplY3QnIHdpbGwgYmUgcmV1c2VkDQpmb3IgdGhl IGZvbGxvd2luZyBDTEkgY29tbWFuZCwgQWZ0ZXIgdGhhdCwgd2hpbGUgd2UgdHJ5IHRvIHVzZSBw cmV2aW91cyAnc2FtcGxlIGFjdGlvbicgdG8gZmV0Y2ggbnZncmUgZGF0YSwNCnRoZXNlIGRhdGEg bWF5IGJlIGxvc3QuDQoNCkZvciBzYW1wbGUgYWN0aW9uLCB1c2UgZ2xvYmFsIGRhdGEgY2FuIHNh dmUgdGhlIHByZXZpb3VzIG52Z3JlIGNvbmZpZ3VyYXRpb25zIGRhdGEuDQoNCj4gVG91Z2gsIE9L IHRvIHJlZmFjdG9yIGFuZCBzcGxpdCB0aGUgZnVuY3Rpb24gYXMgcHJlcGFyYXRpb24gdG8gc3Vw cG9ydCB0aGUNCj4gc2FtcGxlIGFjdGlvbi4NCj4gDQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhd2Vp IFdhbmcgPGppYXdlaXdAbnZpZGlhLmNvbT4NCj4gDQo+IDwuLi4+DQo+IA0KPiA+IC0vKiogUGFy c2UgVlhMQU4gZW5jYXAgYWN0aW9uLiAqLw0KPiA+ICsvKiogU2V0dXAgVlhMQU4gZW5jYXAgY29u ZmlndXJhdGlvbi4gKi8NCj4gPiAgIHN0YXRpYyBpbnQNCj4gPiAtcGFyc2VfdmNfYWN0aW9uX3Z4 bGFuX2VuY2FwKHN0cnVjdCBjb250ZXh0ICpjdHgsIGNvbnN0IHN0cnVjdCB0b2tlbg0KPiAqdG9r ZW4sDQo+ID4gLQkJCSAgICBjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCBsZW4sDQo+ID4g LQkJCSAgICB2b2lkICpidWYsIHVuc2lnbmVkIGludCBzaXplKQ0KPiA+ICtwYXJzZV9zZXR1cF92 eGxhbl9lbmNhcF9kYXRhDQo+ID4gKwkJKHN0cnVjdCBhY3Rpb25fdnhsYW5fZW5jYXBfZGF0YSAq YWN0aW9uX3Z4bGFuX2VuY2FwX2RhdGEpDQo+IA0KPiBDYW4geW91IHBsZWFzZSBmaXggdGhlIHN5 bnRheCwgSSBndWVzcyB0aGlzIGlzIGRvbmUgdG8ga2VlcCB3aXRoaW4gaW4gODAgY29sdW1uDQo+ IGxpbWl0LCBidXQgZnJvbSByZWFkYWJpbGl0eSBwZXJzcGVjdGl2ZSBJIHRoaW5rIGJldHRlciB0 byBnbyBvdmVyIHRoZSA4MCBjb2x1bW4NCj4gYSBsaXR0bGUgaW5zdGVhZCBvZiBicmVha2luZyB0 aGUgbGluZSBsaWtlIHRoaXMuDQo+IA0KDQpPaywgd2lsbCBjaGFuZ2UgaW50byBvbmUgbGluZS4N Cg0KPiA8Li4uPg0KPiANCj4gPiArLyoqIFNldHVwIE5WR1JFIGVuY2FwIGNvbmZpZ3VyYXRpb24u ICovIHN0YXRpYyBpbnQNCj4gPiArcGFyc2Vfc2V0dXBfbnZncmVfZW5jYXBfZGF0YQ0KPiA+ICsJ CShzdHJ1Y3QgYWN0aW9uX252Z3JlX2VuY2FwX2RhdGEgKmFjdGlvbl9udmdyZV9lbmNhcF9kYXRh KQ0KPiB7DQo+ID4gKwlpZiAoIWFjdGlvbl9udmdyZV9lbmNhcF9kYXRhKQ0KPiA+ICsJCXJldHVy biAtMTsNCj4gDQo+IFRoaXMgaXMgYSBzdGF0aWMgZnVuY3Rpb24sIGFuZCB0aGUgaW5wdXQgb2Yg aXQgaXMgaW4gb3VyIGNvbnRyb2wsIHNvIG5vdCBzdXJlIGlmIHdlDQo+IHNob3VsZCB2ZXJpZnkg dGhlIGlucHV0IGhlcmUuDQo+IEJ1dCBpZiB3ZSBuZWVkIHRvLCBjYW4geW91IHBsZWFzZSBjaGVj ayB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24NCj4gd2hlcmUgaXQgaXMgY2FsbGVk Lg0KDQpJIGFncmVlIHdpdGggeW91IHRoYXQgY2FuIHJlbW92ZSB0aGlzIGNoZWNraW5nIGluc2lk ZSwgc2luY2Ugd2UgbWFrZSBzdXJlIGl0J3MgdmFsaWQgYmVmb3JlIGNhbGwuDQoNClRoYW5rcy4N Cg==