From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <konstantin.ananyev@intel.com>
Received: from mga09.intel.com (mga09.intel.com [134.134.136.24])
 by dpdk.org (Postfix) with ESMTP id 7162C5920
 for <dev@dpdk.org>; Fri, 21 Dec 2018 16:16:40 +0100 (CET)
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga001.jf.intel.com ([10.7.209.18])
 by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;
 21 Dec 2018 07:16:39 -0800
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.56,381,1539673200"; d="scan'208";a="120736685"
Received: from irsmsx110.ger.corp.intel.com ([163.33.3.25])
 by orsmga001.jf.intel.com with ESMTP; 21 Dec 2018 07:16:38 -0800
Received: from irsmsx106.ger.corp.intel.com ([169.254.8.227]) by
 irsmsx110.ger.corp.intel.com ([169.254.15.233]) with mapi id 14.03.0415.000;
 Fri, 21 Dec 2018 15:16:37 +0000
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: Akhil Goyal <akhil.goyal@nxp.com>, "dev@dpdk.org" <dev@dpdk.org>
CC: Thomas Monjalon <thomas@monjalon.net>, "Awal, Mohammad Abdul"
 <mohammad.abdul.awal@intel.com>, "olivier.matz@6wind.com"
 <olivier.matz@6wind.com>
Thread-Topic: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API
Thread-Index: AQHUk8ldrSWfZFSbPEuOMTQvJMD8EaWGOHSAgAFbV8CAAZgXAIAAF7uwgAAOCwCAAAPmUA==
Date: Fri, 21 Dec 2018 15:16:36 +0000
Message-ID: <2601191342CEEE43887BDE71AB977258010D8BDCA3@IRSMSX106.ger.corp.intel.com>
References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com>
 <1544804589-10338-6-git-send-email-konstantin.ananyev@intel.com>
 <c627d8d1-fa0f-697f-7231-71d1c10ca356@nxp.com>
 <2601191342CEEE43887BDE71AB977258010D8BD33A@IRSMSX106.ger.corp.intel.com>
 <c550d952-fd91-ce35-d2ac-861e4832b6f2@nxp.com>
 <2601191342CEEE43887BDE71AB977258010D8BDC1A@IRSMSX106.ger.corp.intel.com>
 <9293d643-a467-06f9-8269-9aa989c497fc@nxp.com>
In-Reply-To: <9293d643-a467-06f9-8269-9aa989c497fc@nxp.com>
Accept-Language: en-IE, en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmE0ZDgwNjUtOGY0OC00OWYwLTk1MjctMjY4ZWEyZTI4NzgxIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidUhWMTNrelNucFduVUkyMlZDamI0djcyRXJVR2R2M3pkT0ViY2w5eU5Ldkd6cElVRDBYdzQ3WXd5ZlhLZFdWayJ9
x-ctpclassification: CTP_NT
dlp-product: dlpe-windows
dlp-version: 11.0.400.15
dlp-reaction: no-action
x-originating-ip: [163.33.239.181]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Subject: Re: [dpdk-dev] [PATCH v4 06/10] ipsec: implement SA data-path API
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 21 Dec 2018 15:16:41 -0000

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWtoaWwgR295YWwgW21h
aWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDIxLCAy
MDE4IDI6NTEgUE0NCj4gVG86IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5hbnll
dkBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IFRob21hcyBNb25qYWxvbiA8dGhvbWFz
QG1vbmphbG9uLm5ldD47IEF3YWwsIE1vaGFtbWFkIEFiZHVsIDxtb2hhbW1hZC5hYmR1bC5hd2Fs
QGludGVsLmNvbT47IG9saXZpZXIubWF0ekA2d2luZC5jb20NCj4gU3ViamVjdDogUmU6IFtkcGRr
LWRldl0gW1BBVENIIHY0IDA2LzEwXSBpcHNlYzogaW1wbGVtZW50IFNBIGRhdGEtcGF0aCBBUEkN
Cj4gDQo+IA0KPiANCj4gT24gMTIvMjEvMjAxOCA3OjU3IFBNLCBBbmFueWV2LCBLb25zdGFudGlu
IHdyb3RlOg0KPiA+Pj4+PiArICovDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsg
KiBNb3ZlIHByZWNlZGluZyAoTDMpIGhlYWRlcnMgZG93biB0byByZW1vdmUgRVNQIGhlYWRlciBh
bmQgSVYuDQo+ID4+Pj4+ICsgKi8NCj4gPj4+PiB3aHkgY2FudCB3ZSB1c2UgcnRlX21idWYgQVBJ
cyB0byBhcHBlbmQvcHJlcGVuZC90cmltL2FkanVzdCBsZW5ndGhzLg0KPiA+Pj4gV2UgZG8gdXNl
IHJ0ZV9tYnVmIGFwcGVuZC90cmltLCBldGMuIGFkanVzdCBtYnVmJ3MgZGF0YV9vZnMgYW5kIGRh
dGFfbGVuLg0KPiA+Pj4gQnV0IGFwYXJ0IGZyb20gdGhhdCBmb3IgdHJhbnNwb3J0IG1vZGUgd2Ug
aGF2ZSB0byBtb3ZlIGFjdHVhbCBwYWNrZXQgaGVhZGVycy4NCj4gPj4+IExldCBzYXkgZm9yIGlu
Ym91bmQgd2UgaGF2ZSB0byBnZXQgcmlkIG9mIEVTUCBoZWFkZXIgKHdoaWNoIGlzIGFmdGVyIElQ
IGhlYWRlciksDQo+ID4+PiBidXQgcHJlc2VydmUgSVAgaGVhZGVyLCBzbyB3ZSBtb3ZpbmcgTDIv
TDMgaGVhZGVycyBkb3duLCBvdmVyd3JpdGluZyBFU1AgaGVhZGVyLg0KPiA+PiBvayBnb3QgeW91
ciBwb2ludA0KPiA+Pj4+IEkgYmVsaWV2ZSB0aGVzZSBhZGp1c3RtZW50cyBhcmUgaGFwcGVuaW5n
IGluIHRoZSBtYnVmIGl0c2VsZi4NCj4gPj4+PiBNb3Jlb3ZlciB0aGVzZSBBUElzIGFyZSBub3Qg
c3BlY2lmaWMgdG8gZXNwIGhlYWRlcnMuDQo+ID4+PiBJIGRpZG4ndCBnZXQgeW91ciBsYXN0IHNl
bnRlbmNlOiB0aGF0IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIGVzcCBoZWFkZXINCj4gPj4+
IChzZWUgYWJvdmUpIC0gdGhhdCdzIHdoeSBJIG5hbWVkIGl0IHRoYXQgd2F5Lg0KPiA+PiBUaGVz
ZSBjYW4gYmUgdXNlZCB0byByZW1vdmUgYW55IGhlYWRlciBhbmQgbm90IHNwZWNpZmljYWxseSBl
c3AuIFNvIHRoaXMNCj4gPj4gQVBJIGNvdWxkIGJlIGdlbmVyaWMgaW4gcnRlX21idWYuDQo+ID4g
VGhhdCBmdW5jdGlvbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIG1idWYgaW4gZ2VuZXJhbC4NCj4g
PiBJdCBqdXN0IGNvcGllcyBieXRlcyBiZXR3ZWVuIG92ZXJsYXBwaW5nIGluIGNlcnRhaW4gd2F5
IGJ1ZmZlcnMNCj4gPiAoc3JjLnN0YXJ0IDwgZHN0LnN0YXJ0IDwgc3JjLmVuZCA8IGRzdC5lbmQp
Lg0KPiA+IFJpZ2h0IG5vdyBpdCBpcyB2ZXJ5IHByaW1pdGl2ZSAtIGNvcGllcyBvbiBieXRlIGF0
IGEgdGltZSBpbg0KPiA+IGRlc2NlbmRpbmcgb3JkZXIuDQo+ID4gV3JvdGUgaXQganVzdCB0byBh
dm9pZCB1c2luZyBtZW1tb3ZlKCkuDQo+ID4gSSBkb24ndCB0aGluayB0aGVyZSBpcyBhbnkgcG9p
bnQgdG8gaGF2ZSBzdWNoIGR1bW15IGZ1bmN0aW9uIGluIHRoZSBsaWIvZWFsLg0KPiBJZiB0aGlz
IGlzIGJldHRlciB0aGFuIG1lbW1vdmUsIHRoZW4gcHJvYmFibHkgaXQgaXMgYSBjYW5kaWRhdGUg
dG8gYQ0KPiBmdW5jdGlvbiBpbiBsaWIuDQoNCklmIGl0IHdvdWxkIGJlIHNvbWV0aGluZyByZWFs
bHkgc21hcnQgLSBJIHdvdWxkIHRyeSB0byBwdXNoIGl0IGludG8gdGhlIEVBTCBteXNlbGYuDQpC
dXQgaXQgaXMgYSBkdW1iIGZvcigpIGxvb3AsIG5vdGhpbmcgbW9yZS4NCg0KPiBJIHRoaW5rIFRo
b21hcy8gT2xpdmllciBjYW4gYmV0dGVyIGNvbW1lbnQgb24gdGhpcw0KPiA+DQo+ID4+Pj4+ICtz
dGF0aWMgaW5saW5lIHZvaWQNCj4gPj4+Pj4gK3JlbW92ZV9lc3BoKGNoYXIgKm5wLCBjaGFyICpv
cCwgdWludDMyX3QgaGxlbikNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKwl1aW50MzJfdCBpOw0KPiA+
Pj4+PiArDQo+ID4+Pj4+ICsJZm9yIChpID0gaGxlbjsgaS0tICE9IDA7IG5wW2ldID0gb3BbaV0p
DQo+ID4+Pj4+ICsJCTsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoNCj4gPj4+
Pj4gKw0KPiA+Pj4+PiArLyogdXBkYXRlIG9yaWdpbmFsIGFuZCBuZXcgaXAgaGVhZGVyIGZpZWxk
cyBmb3IgdHVubmVsIGNhc2UgKi8NCj4gPj4+Pj4gK3N0YXRpYyBpbmxpbmUgdm9pZA0KPiA+Pj4+
PiArdXBkYXRlX3R1bl9sM2hkcihjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgdm9pZCAq
cCwgdWludDMyX3QgcGxlbiwNCj4gPj4+Pj4gKwkJdWludDMyX3QgbDJsZW4sIHJ0ZV9iZTE2X3Qg
cGlkKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArCXN0cnVjdCBpcHY0X2hkciAqdjRoOw0KPiA+Pj4+
PiArCXN0cnVjdCBpcHY2X2hkciAqdjZoOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsJaWYgKHNhLT50
eXBlICYgUlRFX0lQU0VDX1NBVFBfTU9ERV9UVU5MVjQpIHsNCj4gPj4+Pj4gKwkJdjRoID0gcDsN
Cj4gPj4+Pj4gKwkJdjRoLT5wYWNrZXRfaWQgPSBwaWQ7DQo+ID4+Pj4+ICsJCXY0aC0+dG90YWxf
bGVuZ3RoID0gcnRlX2NwdV90b19iZV8xNihwbGVuIC0gbDJsZW4pOw0KPiA+Pj4+IHdoZXJlIGFy
ZSB3ZSB1cGRhdGluZyB0aGUgcmVzdCBvZiB0aGUgZmllbGRzLCBsaWtlIHR0bCwgY2hlY2tzdW0s
IGlwDQo+ID4+Pj4gYWRkcmVzc2VzLCBldGMNCj4gPj4+IFRUTCwgaXAgYWRkcmVzc2VzIGFuZCBv
dGhlciBmaWxlZHMgc3VwcG9zZWQgdG8gYmUgc2V0dXBlZCBieSB1c2VyDQo+ID4+PiBhbmQgcHJv
dmlkZWQgdmlhIHJ0ZV9pcHNlY19zYV9pbml0KCk6DQo+ID4+PiBzdHJ1Y3QgcnRlX2lwc2VjX3Nh
X3BybS50dW4uaGRyICBzaG91bGQgY29udGFpbiBwcmVwYXJlZCB0ZW1wbGF0ZQ0KPiA+Pj4gZm9y
IEwzKGFuZCBMMiBpZiB1c2VyIHdhbnRzIHRvKSBoZWFkZXIuDQo+ID4+PiBDaGVja3N1bSBjYWxj
dWxhdGlvbiBpcyBub3QgZG9uZSBpbnNpZGUgdGhlIGxpYiByaWdodCBub3cgLQ0KPiA+Pj4gaXQg
aXMgYSB1c2VyIHJlc3BvbnNpYmlsaXR5IHRvIGNhY2x1Y2F0ZS9zZXQgaXQgYWZ0ZXIgbGlicnRl
X2lwc2VjDQo+ID4+PiBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBwYWNrZXQuDQo+ID4+IEkgYmVs
aWV2ZSBzdGF0aWMgZmllbGRzIGFyZSB1cGRhdGVkIGR1cmluZyBzYSBpbml0IGJ1dCBzb21lIGZp
ZWxkcyBsaWtlDQo+ID4+IHR0bCBhbmQgY2hlY2tzdW0sDQo+ID4+IGNhbiBiZSB1cGRhdGVkIGlu
IHRoZSBsaWJyYXJ5IGl0c2VsZiB3aGljaCBpcyB1cGRhdGVkIGZvciBldmVyeSBwYWNrZXQuDQo+
ID4+IChodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTYyNCkNCj4gPiBBYm91dCBjaGVj
a3N1bSAtIHRoZXJlIGlzIG5vIHBvaW50IHRvIGNhbGN1bGF0ZSBja3N1bSBpdCBpbiB0aGUgbGli
LA0KPiA+IGFzIHVzZXIgbWF5IGNob29zZSB0byB1c2UgSFcgY2hrc3VtIG9mZmxvYWQuDQo+ID4g
QWxsIG90aGVyIGxpYnJhcmllcyBpcF9mcmFnLCBHU08sIGV0Yy4gbGVhdmUgaXQgdG8gdGhlIHVz
ZXIsDQo+ID4gSSBkb24ndCBzZWUgd2h5IGlwc2VjIHNob3VsZCBiZSBkaWZmZXJlbnQgaGVyZS4N
Cj4gPiBBYm91dCBUVEwgYW5kIG90aGVyIGZpZWxkcyAtIEkgc3VwcG9zZSB5b3UgcmVmZXIgdG86
DQo+ID4gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzQzMDEjc2VjdGlvbi01LjEuMg0K
PiA+IEhlYWRlciBDb25zdHJ1Y3Rpb24gZm9yIFR1bm5lbCBNb2RlDQo+ID4gcmlnaHQ/DQo+ID4g
U3VyZWx5IHRoYXQgaGFzIHRvIGJlIHN1cHBvcnRlZCwgb25lIHdheSBvciB0aGUgb3RoZXIsDQo+
ID4gYnV0IHdlIGRvbid0IHBsYW4gdG8gaW1wbGVtZW50IGl0IGluIDE5LjAyLg0KPiA+IEN1cnJl
bnQgcGxhbiB0byBhZGQgaXQgaW4gMTkuMDUsIGlmIHRpbWUgcGVybWl0cy4NCj4gSSBhbSBub3Qg
dGFsa2luZyBhYm91dCB0aGUgb3V0ZXIgaXAgY2hlY2tzdW0uDQo+IFNvcnJ5IHRoZSBwbGFjZW1l
bnQgb2YgdGhlDQo+IGNvbW1lbnQgd2FzIG5vdCBxdWl0ZSByaWdodC4gQnV0IEkgZG8gbm90IHNl
ZSB0aGF0IGhhcHBlbmluZy4NCj4gTXkgcXVlc3Rpb24gaXMgd2lsbCB0aGUgZnVuY3Rpb24gaXBp
cF9vdXRib3VuZCBpbiBpcHNlYy1zZWNndyBjYWxsZWQNCj4gZnJvbSB0aGUgYXBwbGljYXRpb24g
b3Igd2lsbCBpdCBiZSBtb3ZlZCBpbnNpZGUgdGhlIGxpYnJhcnkuDQo+IEkgYmVsaWV2ZSB0aGlz
IHNob3VsZCBiZSBpbnNpZGUgdGhlIGxpYi4NCg0KSSB0aGluayB0aGUgc2FtZSAtIHdlIHByb2Jh
Ymx5IG5lZWQgdG8gc3VwcG9ydCBhbGwgZGVzY3JpYmVkIGluIFJGQw0KaGVhZGVyIHVwZGF0ZXMg
aW5zaWRlIHRoZSBwcm9jZXNzL3ByZXBhcmUgbGliIGZ1bmN0aW9ucywNCm9yIGF0IGxlYXN0IHBy
b3ZpZGUgYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgdGhlIHVzZXIgdG8gcGVyZm9ybSB0aGVtLg0K
VGhvdWdoIGFzIEkgc2FpZCBhYm92ZSBpdCBpcyBkZWZpbml0ZWx5IG5vdCBpbiAxOS4wMiBzY29w
ZS4NCg0KPiANCj4gDQo+ID4+Pj4+ICsJfSBlbHNlIHsNCj4gPj4+Pj4gKwkJdjZoID0gcDsNCj4g
Pj4+Pj4gKwkJdjZoLT5wYXlsb2FkX2xlbiA9IHJ0ZV9jcHVfdG9fYmVfMTYocGxlbiAtIGwybGVu
IC0NCj4gPj4+Pj4gKwkJCQlzaXplb2YoKnY2aCkpOw0KPiA+Pj4+PiArCX0NCj4gPj4+Pj4gK30N
Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2VuZGlmIC8qIF9JUEhfSF8gKi8NCj4gPj4+Pj4gZGlmZiAt
LWdpdCBhL2xpYi9saWJydGVfaXBzZWMvaXBzZWNfc3FuLmggYi9saWIvbGlicnRlX2lwc2VjL2lw
c2VjX3Nxbi5oDQo+ID4+Pj4+IGluZGV4IDE5MzVmNmUzMC4uNmUxOGMzNGViIDEwMDY0NA0KPiA+
Pj4+PiAtLS0gYS9saWIvbGlicnRlX2lwc2VjL2lwc2VjX3Nxbi5oDQo+ID4+Pj4+ICsrKyBiL2xp
Yi9saWJydGVfaXBzZWMvaXBzZWNfc3FuLmgNCj4gPj4+Pj4gQEAgLTE1LDYgKzE1LDQ1IEBADQo+
ID4+Pj4+DQo+ID4+Pj4+ICAgICAjZGVmaW5lIElTX0VTTihzYSkJKChzYSktPnNxbl9tYXNrID09
IFVJTlQ2NF9NQVgpDQo+ID4+Pj4+DQo+ID4+Pj4+ICsvKg0KPiA+Pj4+PiArICogZ2V0cyBTUU4u
aGkzMiBiaXRzLCBTUU4gc3VwcG9zZWQgdG8gYmUgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPiA+
Pj4+PiArICovDQo+ID4+Pj4+ICtzdGF0aWMgaW5saW5lIHJ0ZV9iZTMyX3QNCj4gPj4+Pj4gK3Nx
bl9oaTMyKHJ0ZV9iZTY0X3Qgc3FuKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArI2lmIFJURV9CWVRF
X09SREVSID09IFJURV9CSUdfRU5ESUFODQo+ID4+Pj4+ICsJcmV0dXJuIChzcW4gPj4gMzIpOw0K
PiA+Pj4+PiArI2Vsc2UNCj4gPj4+Pj4gKwlyZXR1cm4gc3FuOw0KPiA+Pj4+PiArI2VuZGlmDQo+
ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qDQo+ID4+Pj4+ICsgKiBnZXRzIFNRTi5s
b3czMiBiaXRzLCBTUU4gc3VwcG9zZWQgdG8gYmUgaW4gbmV0d29yayBieXRlIG9yZGVyLg0KPiA+
Pj4+PiArICovDQo+ID4+Pj4+ICtzdGF0aWMgaW5saW5lIHJ0ZV9iZTMyX3QNCj4gPj4+Pj4gK3Nx
bl9sb3czMihydGVfYmU2NF90IHNxbikNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyNpZiBSVEVfQllU
RV9PUkRFUiA9PSBSVEVfQklHX0VORElBTg0KPiA+Pj4+PiArCXJldHVybiBzcW47DQo+ID4+Pj4+
ICsjZWxzZQ0KPiA+Pj4+PiArCXJldHVybiAoc3FuID4+IDMyKTsNCj4gPj4+Pj4gKyNlbmRpZg0K
PiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKg0KPiA+Pj4+PiArICogZ2V0cyBTUU4u
bG93MTYgYml0cywgU1FOIHN1cHBvc2VkIHRvIGJlIGluIG5ldHdvcmsgYnl0ZSBvcmRlci4NCj4g
Pj4+Pj4gKyAqLw0KPiA+Pj4+PiArc3RhdGljIGlubGluZSBydGVfYmUxNl90DQo+ID4+Pj4+ICtz
cW5fbG93MTYocnRlX2JlNjRfdCBzcW4pDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsjaWYgUlRFX0JZ
VEVfT1JERVIgPT0gUlRFX0JJR19FTkRJQU4NCj4gPj4+Pj4gKwlyZXR1cm4gc3FuOw0KPiA+Pj4+
PiArI2Vsc2UNCj4gPj4+Pj4gKwlyZXR1cm4gKHNxbiA+PiA0OCk7DQo+ID4+Pj4+ICsjZW5kaWYN
Cj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+IHNob3VsZG4ndCB3ZSBtb3ZlIHRoZXNlIHNl
cSBudW1iZXIgQVBJcyBpbiBydGVfZXNwLmggYW5kIG1ha2UgdGhlbSBnZW5lcmljDQo+ID4+PiBJ
dCBjb3VsZCBiZSBkb25lLCBidXQgd2hvIHdpbGwgdXNlIHRoZW0gZXhjZXB0IGxpYnJ0ZV9pcHNl
Yz8NCj4gPj4gV2hvZXZlciB1c2VzIHJ0ZV9lc3AuaCBhbmQgbm90IHVzZSBpcHNlYyBsaWIuIFRo
ZSBpbnRlbnQgb2YgcnRlX2VzcC5oIGlzDQo+ID4+IGp1c3QgZm9yIHRoYXQgb25seSwgb3RoZXJ3
aXNlIHdlIGRvbid0IG5lZWQgcnRlX2VzcC5oLCB3ZSBjYW4gaGF2ZSB0aGUNCj4gPj4gY29udGVu
dCBvZiBydGVfZXNwLmggaW4gaXBzZWMgaXRzZWxmLg0KPiA+IEFnYWluIHRoZXNlIGZ1bmN0aW9u
cyBhcmUgdXNlZCBqdXN0IGluc2lkZSB0aGUgbGliIHRvIGhlbHAgYXZvaWQNCj4gPiBleHRyYSBi
eXRlc3dhcHBpbmcgZHVyaW5nIGNyeXB0by1kYXRhL3BhY2tldCBoZWFkZXIgY29uc3RydWN0aW9u
cy4NCj4gQWdyZWVkLCBteSBwb2ludCBpcyB3aHkgYWRkaW5nIGEgbmV3IGZpbGUgZm9yIG1hbmFn
aW5nIHNlcSBudW1iZXJpbmcgaW4NCj4gZXNwIGhlYWRlcnMsIHdoZW4gdGhpcyBjYW4gYmUgZWFz
aWx5IG1vdmVkIHRvIHJ0ZV9lc3AuaC4NCj4gDQo+ID4gSSBkb24ndCBzZWUgaG93IHRoZXkgd2ls
bCBiZSB1c2VmdWwgaW4gZ2VuZXJhbC4NCj4gPiBTdXJlLCBpZiB0aGVyZSB3aWxsIGJlIGRlbWFu
ZCBmcm9tIHVzZXJzIGluIGZ1dHVyZSAtIHdlIGNhbiBtb3ZlIHRoZW0sDQo+ID4gYnV0IHJpZ2h0
IG5vdyBJIGRvbid0IHRoaW5rIHRoYXQgd291bGQgaGFwcGVuLg0KPiBJbiB0aGF0IGNhc2Ugd2Ug
Y2FuIGdldCBhd2F5IHdpdGggZXNwLmggYXMgd2VsbCBhbmQgbW92ZSB0aGF0IGluIHRoaXMNCj4g
bmV3IGZpbGUgYW5kIHNlZSBpZiB1c2VycyBuZWVkIGl0IHNlcGFyYXRlbHksIHRoZW4gd2UgbW92
ZSBpdC4NCg0KZXNwLmggYWxyZWFkeSBleGlzdHMgYW5kIGlzIHVzZWQgaW4gc2V2ZXJhbCBvdGhl
ciBwbGFjZXM6IA0KZmluZCBsaWIgZHJpdmVycyAtdHlwZSBmIHwgeGFyZ3MgZ3JlcCAnPHJ0ZV9l
c3AuaD4nIHwgZ3JlcCBpbmNsdWRlDQpsaWIvbGlicnRlX3BpcGVsaW5lL3J0ZV90YWJsZV9hY3Rp
b24uYzojaW5jbHVkZSA8cnRlX2VzcC5oPg0KbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2Zsb3cuaDoj
aW5jbHVkZSA8cnRlX2VzcC5oPg0KDQpLb25zdGFudGluDQoNCg==