From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <jiayu.hu@intel.com>
Received: from mga11.intel.com (mga11.intel.com [192.55.52.93])
 by dpdk.org (Postfix) with ESMTP id 010CD2AA0;
 Wed,  9 Jan 2019 04:32:49 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from fmsmga002.fm.intel.com ([10.253.24.26])
 by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 08 Jan 2019 19:32:48 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.56,455,1539673200"; d="scan'208";a="132882754"
Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201])
 by fmsmga002.fm.intel.com with ESMTP; 08 Jan 2019 19:32:48 -0800
Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by
 FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Tue, 8 Jan 2019 19:32:48 -0800
Received: from shsmsx154.ccr.corp.intel.com (10.239.6.54) by
 fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS)
 id 14.3.408.0; Tue, 8 Jan 2019 19:32:48 -0800
Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.63]) by
 SHSMSX154.ccr.corp.intel.com ([169.254.7.46]) with mapi id 14.03.0415.000;
 Wed, 9 Jan 2019 11:32:46 +0800
From: "Hu, Jiayu" <jiayu.hu@intel.com>
To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= <mb@smartsharesystems.com>, "Ananyev,
 Konstantin" <konstantin.ananyev@intel.com>, Stephen Hemminger
 <stephen@networkplumber.org>
CC: "dev@dpdk.org" <dev@dpdk.org>, "Bie, Tiwei" <tiwei.bie@intel.com>,
 "Richardson, Bruce" <bruce.richardson@intel.com>, "stable@dpdk.org"
 <stable@dpdk.org>
Thread-Topic: [dpdk-dev] [PATCH] gro: add missing invalid packet checks
Thread-Index: AQHUpxisSjPMmSc3QkGnTdYquJqwNaWkY1+AgACVKMD//6/tAIAAD0CAgAAkV4CAABKcgIABVfRg
Date: Wed, 9 Jan 2019 03:32:45 +0000
Message-ID: <ED946F0BEFE0A141B63BABBD629A2A9B3CF400C3@shsmsx102.ccr.corp.intel.com>
References: <1546567036-29444-1-git-send-email-jiayu.hu@intel.com>
 <1546927725-68831-1-git-send-email-jiayu.hu@intel.com>
 <20190107223151.18b185b7@hermes.lan>
 <ED946F0BEFE0A141B63BABBD629A2A9B3CF3E4BB@shsmsx102.ccr.corp.intel.com>
 <2601191342CEEE43887BDE71AB977258010D900817@irsmsx105.ger.corp.intel.com>
 <98CBD80474FA8B44BF855DF32C47DC35B425AD@smartserver.smartshare.dk>
 <2601191342CEEE43887BDE71AB977258010D900A85@irsmsx105.ger.corp.intel.com>
 <98CBD80474FA8B44BF855DF32C47DC35B425B0@smartserver.smartshare.dk>
In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35B425B0@smartserver.smartshare.dk>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGVjODlmZDItZDM2ZC00ZTJiLTk1MGYtNjZmY2Y3OTU4NTIxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZjU4RCtKeWxjNzhLZVN3ZFByUkJmSko3bWdIWTZzakJqbzhvd29mRHBqNkVNYkplOWtEZFdPYVVcL3lPUmdZTFAifQ==
x-ctpclassification: CTP_NT
x-originating-ip: [10.239.127.40]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-stable] [dpdk-dev] [PATCH] gro: add missing invalid
	packet checks
X-BeenThere: stable@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches for DPDK stable branches <stable.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/stable>,
 <mailto:stable-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/stable/>
List-Post: <mailto:stable@dpdk.org>
List-Help: <mailto:stable-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/stable>,
 <mailto:stable-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Wed, 09 Jan 2019 03:32:51 -0000

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTW9ydGVuIEJyw7hydXAg
W21haWx0bzptYkBzbWFydHNoYXJlc3lzdGVtcy5jb21dDQo+IFNlbnQ6IFR1ZXNkYXksIEphbnVh
cnkgOCwgMjAxOSAxMDo1MCBQTQ0KPiBUbzogQW5hbnlldiwgS29uc3RhbnRpbiA8a29uc3RhbnRp
bi5hbmFueWV2QGludGVsLmNvbT47IEh1LCBKaWF5dQ0KPiA8amlheXUuaHVAaW50ZWwuY29tPjsg
U3RlcGhlbiBIZW1taW5nZXINCj4gPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPg0KPiBDYzog
ZGV2QGRwZGsub3JnOyBCaWUsIFRpd2VpIDx0aXdlaS5iaWVAaW50ZWwuY29tPjsgUmljaGFyZHNv
biwgQnJ1Y2UNCj4gPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgc3RhYmxlQGRwZGsub3Jn
DQo+IFN1YmplY3Q6IFJFOiBbZHBkay1kZXZdIFtQQVRDSF0gZ3JvOiBhZGQgbWlzc2luZyBpbnZh
bGlkIHBhY2tldCBjaGVja3MNCj4gDQo+ID4gRnJvbTogQW5hbnlldiwgS29uc3RhbnRpbiBbbWFp
bHRvOmtvbnN0YW50aW4uYW5hbnlldkBpbnRlbC5jb21dDQo+ID4gPiBGcm9tOiBNb3J0ZW4gQnLD
uHJ1cCBbbWFpbHRvOm1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNvbV0NCj4gPiA+ID4gRnJvbTogZGV2
IFttYWlsdG86ZGV2LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBBbmFueWV2LA0KPiA+
ID4gPiBLb25zdGFudGluDQo+ID4gPiA+ID4gPiBGcm9tOiBTdGVwaGVuIEhlbW1pbmdlciBbbWFp
bHRvOnN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnXQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+
IE9uIFR1ZSwgIDggSmFuIDIwMTkgMTQ6MDg6NDUgKzA4MDANCj4gPiA+ID4gPiA+IEppYXl1IEh1
IDxqaWF5dS5odUBpbnRlbC5jb20+IHdyb3RlOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g
KwkvKg0KPiA+ID4gPiA+ID4gPiArCSAqIERvbid0IHByb2Nlc3MgdGhlIHBhY2tldCB3aG9zZSBF
dGhlcm5ldCwgSVB2NCBhbmQgVENQDQo+ID4gPiA+IGhlYWRlcg0KPiA+ID4gPiA+ID4gPiArCSAq
IGxlbmd0aHMgYXJlIGludmFsaWQuIEluIGFkZGl0aW9uLCBpZiB0aGUgSVB2NCBoZWFkZXINCj4g
PiA+ID4gY29udGFpbnMNCj4gPiA+ID4gPiA+ID4gKwkgKiBPcHRpb25zLCB0aGUgcGFja2V0IHNo
b3VsZG4ndCBiZSBwcm9jZXNzZWQuDQo+ID4gPiA+ID4gPiA+ICsJICovDQo+ID4gPiA+ID4gPiA+
ICsJaWYgKHVubGlrZWx5KElMTEVHQUxfRVRIRVJfSERSTEVOKHBrdC0+bDJfbGVuKSB8fA0KPiA+
ID4gPiA+ID4gPiArCQkJSUxMRUdBTF9JUFY0X0hEUkxFTihwa3QtPmwzX2xlbikgfHwNCj4gPiA+
ID4gPiA+ID4gKwkJCUlMTEVHQUxfVENQX0hEUkxFTihwa3QtPmw0X2xlbikpKQ0KPiA+ID4gPiA+
ID4gPiArCQlyZXR1cm4gLTE7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJbiB0aGUgR1JPIGRlc2ln
biwgd2UgYXNzdW1lIGFwcGxpY2F0aW9ucyBnaXZlIGNvcnJlY3QNCj4gPiA+ID4gPiBNQlVGLT5s
Ml9sZW4vLi4gZm9yIGlucHV0IHBhY2tldHMgb2YgR1JPLiBTcGVjaWZpY2FsbHksIEdSTw0KPiA+
ID4gPiA+IGxpYnJhcnkgYXNzdW1lcyBhcHBsaWNhdGlvbnMgd2lsbCBzZXQgdmFsdWVzIHRvIE1C
VUYtPmwyX2xlbi8uLi4NCj4gPiA+ID4gPiBhbmQgZ3VhcmFudGVlIHRoZSB2YWx1ZXMgYXJlIHRo
ZSBzYW1lIGFzIHRoZSB2YWx1ZXMgaW4gdGhlIHBhY2tldA0KPiA+ID4gPiA+IGhlYWRlcnMuIFRo
ZSByZWFzb24gZm9yIHRoaXMgYXNzdW1wdGlvbiBpcyB0byBwcm9jZXNzIGhlYWRlcg0KPiA+IGZh
c3Rlci4NCj4gPiA+DQo+ID4gPiA+ID4gVGhpcyBpcyBhbHNvIHdoeSBJIHdhbnQgdG8gYWRkIHRo
aXMgYXNzdW1wdGlvbiBpbiB0aGUgcHJvZ3JhbW1lcg0KPiA+ID4gPiA+IGd1aWRlLg0KPiA+ID4N
Cj4gPiA+ICsxIHRvIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBhYm91dCBhc3N1bXB0aW9u
cyBhbmQNCj4gPiBwcmVjb25kaXRpb25zLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+
ID4gPiBUaGUgYWJvdmUgY29kZSBpcyB0byBmb3JiaWQgR1JPIHRvIHByb2Nlc3MgaW52YWxpZCBw
YWNrZXRzLCB3aGljaA0KPiA+ID4gPiA+IGhhdmUgaW52YWxpZCBwYWNrZXQgaGVhZGVyIGxlbmd0
aHMsIGxpa2UgVENQIGhlYWRlciBsZW5ndGggaXMNCj4gPiBsZXNzDQo+ID4gPiA+IHRoYW4NCj4g
PiA+ID4gPiAyMCBieXRlcy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkg
bGlrZSBpdCB3aGVuIGNvZGUgaXMgYXMgcGlja3kgYXMgcG9zc2libGUgd2hlbiBkb2luZw0KPiA+
ID4gPiBvcHRpbWl6YXRpb25zIGJlY2F1c2UNCj4gPiA+ID4gPiA+IGl0IHJlZHVjZXMgcG9zc2li
bGUgc2VjdXJpdHkgcmlza2cuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVG8gbWUgdGhpcyBs
b29rcyBtb3JlIGNvbmZ1c2luZyBhbmQgbm90IGFzIGNhcmVmdWwgYXMgZG9pbmcgaXQNCj4gPiA+
ID4gbGlrZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAJaWYgKHVubGlrZWx5KHBrdC0+bDJf
bGVuICE9IEVUSEVSX0hEUl9MRU4pKQ0KPiA+ID4gPiA+ID4gCQlyZXR1cm4gLTE7DQo+ID4gPiA+
ID4gPiAJZXRoX2hkciA9IHJ0ZV9wa3RtYnVmX210b2QocGt0LCBzdHJ1Y3QgZXRoZXJfaGRyICop
Ow0KPiA+ID4gPiA+ID4gCWlwdjRfaGRyID0gKHN0cnVjdCBpcHY0X2hkciAqKSgoY2hhciAqKWV0
aF9oZHIgKw0KPiA+IEVUSEVSX0hEUl9MRU4pOw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IAlp
ZiAocGt0LT5sM19sZW4gIT0gKGlwdjQtPnZlcnNpb25faWhsICYgSVBWNF9IRFJfSUhMX01BU0sp
DQo+ID4gPDwgNCkNCj4gPiA+ID4gPiA+IAkJcmV0dXJuIC0xOw0KPiA+ID4gPiA+ID4NCj4gPiA+
ID4gPiA+IAlpZiAocGt0LT5sNF9sZW4gPCBzaXplb2Yoc3RydWN0IHRjcF9oZHIpKQ0KPiA+ID4g
PiA+ID4gCQlyZXR1cm4gLTE7DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gWW91IHNob3VsZCBh
bHNvIGNoZWNrIGZvciBUQ1Agb3B0aW9ucyBhcyB3ZWxsLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g
VGhlcmUgYXJlIHR3byB3YXlzIHRvIGdldCBldGhlciwgaXB2NCBhbmQgdGNwIGhlYWRlcnM6DQo+
ID4gPiA+ID4gMSkuIFVzZSBNQlVGLT5sMl9sZW4vbDNfbGVuLi4uOw0KPiA+ID4gPiA+IDIpLiBQ
YXJzZSBwYWNrZXQgYW5kIGlnbm9yZSBNQlVGLT5sMl9sZW4vLi4uLg0KPiA+ID4gPiA+DQo+ID4g
PiA+ID4gSWYgd2UgZm9sbG93IHRoZSBjaG9pY2UgMSwgd2UgZG9uJ3QgbmVlZCB0byBwYXJzZSBw
YWNrZXQgYW5kDQo+ID4gPiA+ID4gZG9uJ3QgbmVlZCB0byBjaGVjayBpZiB2YWx1ZXMgb2YgTUJV
Ri0+bDJfbGVuLy4uLiBhcmUgY29ycmVjdCwNCj4gPiA+ID4gPiBzaW5jZSB3ZSBhc3N1bWUgYXBw
bGljYXRpb25zIHdpbGwgc2V0IGNvcnJlY3QgdmFsdWVzLiBJZiB3ZQ0KPiA+IGZvbGxvdw0KPiA+
ID4gPiA+IHRoZSBjaG9pY2UgMiwgd2UgZG9uJ3QgbmVlZCB0byBjYXJlIGFib3V0IHRoZSB2YWx1
ZXMgb2YgTUJVRi0NCj4gPiA+ID4gPmwyX2xlbi8uLi4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkg
YW0gYSBsaXR0bGUgY29uZnVzZWQgYWJvdXQgeW91ciBjb2RlLCBzaW5jZSBpdCBwYXJzZXMgcGFj
a2V0DQo+ID4gYW5kDQo+ID4gPiA+ID4gY2hlY2tzIGlmIHRoZSB2YWx1ZXMgb2YgTUJVRi0+bDJf
bGVuLy4uLiBhcmUgY29ycmVjdC4gSWYgd2UgZG9uJ3QNCj4gPiB1c2UNCj4gPiA+ID4gPiBNQlVG
LT5sMl9sZW4vLi4uIHRvIGdldCBldGhlci9pcHY0L3RjcCBoZWFkZXJzLCB3aHkgc2hvdWxkIHdl
DQo+ID4gY2hlY2sNCj4gPiA+ID4gPiB0aGUgdmFsdWVzIG9mIE1CVUYtPmwyX2xlbi8uLi4/DQo+
ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gQWdyZWUgdGhhdCB3ZSBkb24ndCBuZWVkIGJvdGgu
DQo+ID4gPiA+IE15IHByZWZlcmVuY2Ugd291bGQgYmUgdG8gc3RpY2sgd2l0aCAxKS4NCj4gPiA+
ID4gSW4gbWFueSBjYXNlcyB1c2VyIHdvdWxkIGhhdmUgYWxyZWFkeSBkZXRlcm1pbmVkIGwyL2wz
L2w0IGxlbg0KPiA+ID4gPiBieSB0aGlzIHN0YWdlLg0KPiA+ID4gPiBLb25zdGFudGluDQo+ID4g
Pg0KPiA+ID4gRG8gd2UgaGF2ZSBhIGdlbmVyaWMgcGFja2V0IGhlYWRlciB2YWxpZGF0aW9uIGxp
YnJhcnk/IE90aGVyd2lzZSwNCj4gPiB0aGF0IHdvdWxkIHBlcmhhcHMgYmUgYSBiZXR0ZXIgcGF0
aC4gU3VjaCBhIGxpYnJhcnkgY291bGQgcHJvYmFibHkgdXNlDQo+ID4gPiBzb21lIG9mIHRoZSBm
bGFncyBmcm9tIHRoZSBQTUQgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIHRvIHZhbGlkYXRlIGluDQo+
ID4gc29mdHdhcmUuDQo+ID4NCj4gPiBBRkFJSyAtIHdlIGRvbid0IGhhdmUgYSBnZW5lcmljIGhl
YWRlciBwYXJzaW5nIGxpYnJhcnkuDQo+ID4gWWVzLCBpdCB3b3VsZCBiZSBnb29kIHRvIGhhdmUg
c3VjaCBhYmlsaXR5LCBidXQgSSB0aGluayB0aGF0J3Mgb3V0IG9mDQo+ID4gc2NvcGUgZm9yIHRo
YXQgcGF0Y2guDQo+ID4gQlRXLCB2b2x1bnRlZXJzIGFyZSB3ZWxjb21lIDopDQo+ID4NCj4gPiA+
DQo+ID4gPiBBbmQgaWYgaXQgaXMgYSBkb2N1bWVudGVkIHByZWNvbmRpdGlvbiBvZiB0aGUgR1JP
IGxpYnJhcnkgdGhhdCBtLQ0KPiA+ID5sMl9sZW4vbDNfbGVuLi4uIG11c3QgYmUgc2V0IGFuZCBz
ZW5zaWJsZSwgcGVyaGFwcyBhbiBSVEVfQVNTRVJUKCkNCj4gPiBjb3VsZA0KPiA+ID4gYmUgY29u
c2lkZXJlZCBpbnN0ZWFkIG9mIGdyYWNlZnVsbHkgcmV0dXJuaW5nIC0xPw0KPiA+DQo+ID4gSSBz
dXBwb3NlIHRoYXQncyB0b28gZXh0cmVtZS4NCj4gPiBXaGF0J3Mgd3Jvbmcgd2l0aCBjaGVja2lu
ZyBpbnB1dCBwYXJhbWV0ZXJzIGFuZCByZXR1cm4gYW4gZXJyb3IgaWYgdGhleQ0KPiA+IGFyZSBp
bnZhbGlkPw0KPiA+IEtvbnN0YW50aW4NCj4gPg0KPiBJdCBpcyBleHRyZW1lLCBhbmQgaXQgd2Fz
IHBhcnRseSBtZWFudCBhcyBhIHByb3ZvY2F0aW9uIHRvIHRoaW5rIGRlZXBlcg0KPiBhYm91dCBp
dDogRG8gd2UgcmVhbGx5IG5lZWQgdG8gZm9sbG93IFBvc3RlbCdzIGxhdw0KPiAoaHR0cHM6Ly9l
bi53aWtpcGVkaWEub3JnL3dpa2kvUm9idXN0bmVzc19wcmluY2lwbGUpIGluIGZ1bmN0aW9ucyB3
aGVyZSB3ZQ0KPiBhcmUgaW4gZnVsbCBjb250cm9sIG91cnNlbHZlcz8NCj4gDQo+IEhlcmUncyB3
aGF0J3Mgd3Jvbmcgd2l0aCBpdDogSWYgZWFjaCBmdW5jdGlvbiBhIHBhY2tldCBwYXNzZXMgdGhy
b3VnaCBoYXMgdG8NCj4gcGFyc2UgdGhlIHBhY2tldCBoZWFkZXJzIGFuZCB2YWxpZGF0ZSB0aGUg
bWJ1ZiBwYXJhbWV0ZXJzIGZyb20gc2NyYXRjaCwgaXQNCj4gd2lsbCBoYXZlIGFuIHVubmVjZXNz
YXJ5IHBlcmZvcm1hbmNlIGNvc3QuIEl0IHNob3VsZCBiZSBkb25lIG9ubHkgb25jZSBpbg0KPiB0
aGUgZmFzdCBwYXRoLCBhbmQgc3Vic2VxdWVudCBmdW5jdGlvbnMgc2hvdWxkIGJlIGFibGUgdG8g
cmVseSBvbiB0aGUgcmVzdWx0DQo+IG9mIHRoYXQuDQo+IA0KPiBHZW5lcmFsbHksIHdlIHNob3Vs
ZCBiZSBhYmxlIHRvIHJlbHkgb24gYXNzdW1wdGlvbnMvcHJlY29uZGl0aW9ucy4gQW5kDQo+IHdo
ZW4gYSBmdW5jdGlvbiByZWxpZXMgb24gc29tZXRoaW5nLCBpdCBpcyBhIGdvb2QgdGhpbmcgdG8g
ZGVzY3JpYmUgc3VjaA0KPiBwcmVjb25kaXRpb25zIGluIHRoZSBmdW5jdGlvbidzIGRvY3VtZW50
YXRpb24uDQo+IA0KPiBGcm9tIGEgaGlnaCBsZXZlbCBwZXJzcGVjdGl2ZSwgRFBESyBDb3JlIHNo
b3VsZCBub3QgYmUgYSBidW5jaCBvZg0KPiBjb21wbGV0ZWx5IGluZGVwZW5kZW50IGxpYnJhcmll
cywgYnV0IGEgY29uc2lzdGVudCBsaWJyYXJ5IHdoZXJlIGl0cw0KPiBmdW5jdGlvbnMgY2FuIHJl
bHkgb24gcHJlY29uZGl0aW9ucyBhbmQgcG9zdGNvbmRpdGlvbnMgb2YgaXRzIG90aGVyDQo+IGZ1
bmN0aW9ucyBhbmQgdGhlaXIgaW50ZW5kZWQgdXNlIGluIHRoZSBmYXN0IHBhdGguDQoNCkdvb2Qg
cG9pbnQuDQoNCj4gDQo+IFJlZ2FyZGluZyBkb2N1bWVudGF0aW9uLCBpdCBtaWdodCBhbHNvIGJl
IHdvcnRoIG1lbnRpb25pbmcgdGhhdCB0aGUgbS0NCj4gPmwyX2xlbi8uLi4gZmllbGRzIGFyZSBk
ZXNjcmliZWQgYXMgImZpZWxkcyB0byBzdXBwb3J0IFRYIG9mZmxvYWRzIiBpbg0KPiBydGVfbWJ1
Zi5oLiBTbyB3aGVuIFJYIG9mZmxvYWQgZmVhdHVyZXMgLSBzdWNoIGFzIEdSTyAtIHJlbHkgb24g
dGhlc2UgZmllbGRzLA0KPiBwZXJoYXBzIHRoZSBkZXNjcmlwdGlvbiBpbiBydGVfbWJ1Zi5oIHNo
b3VsZCBiZSB1cGRhdGVkIGFjY29yZGluZ2x5Lg0KDQpZZXMsIGJvdGggSVAgcmVhc3NlbWJseSBh
bmQgR1JPIHVzZSB0aG9zZSBmaWVsZHMuIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBkZXNjcmlwdGlv
bi4NCg0KVGhhbmtzLA0KSmlheXUNCj4gDQo+IA0KPiBNZWQgdmVubGlnIGhpbHNlbiAvIGtpbmQg
cmVnYXJkcw0KPiAtIE1vcnRlbiBCcsO4cnVwDQoNCg==