From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 70C3CA04DD; Fri, 23 Oct 2020 15:23:47 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3DDB1A957; Fri, 23 Oct 2020 15:23:46 +0200 (CEST) Received: from m13144.mail.163.com (m13144.mail.163.com [220.181.13.144]) by dpdk.org (Postfix) with ESMTP id 58901A948; Fri, 23 Oct 2020 15:23:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=Date:From:Subject:MIME-Version:Message-ID; bh=gXvB6 y4mDNzDPkk22uAwzI9lTSWWlR2osx3ZmaLRAP0=; b=f8R7hFCeqaeKnNWiEoBmY MqNRPgG6KBFBOEj5BPumY49qTpIAUaw4c5BRFkDz66I0RrcTNwdBKBGK8QKiBaBE Bbe6HjsfNTS1RH8vi50jScdoyfR+Wmm8yLoq1ugk+lDJPyCYS08jhMB02kpmZ9xT ilvPgEiwoleKv3IABWizAg= Received: from yang_y_yi$163.com ( [61.48.209.104] ) by ajax-webmail-wmsvr144 (Coremail) ; Fri, 23 Oct 2020 21:23:40 +0800 (CST) X-Originating-IP: [61.48.209.104] Date: Fri, 23 Oct 2020 21:23:40 +0800 (CST) From: yang_y_yi To: "Hu, Jiayu" Cc: "Ananyev, Konstantin" , "dev@dpdk.org" , "techboard@dpdk.org" , "thomas@monjalon.net" , "yangyi01@inspur.com" X-Priority: 3 X-Mailer: Coremail Webmail Server Version XT5.0.10 build 20190724(ac680a23) Copyright (c) 2002-2020 www.mailtech.cn 163com In-Reply-To: <7641e6e7237542419a89316e946b0ad9@intel.com> References: <20201022065151.10108-1-yang_y_yi@163.com> <7641e6e7237542419a89316e946b0ad9@intel.com> X-CM-CTRLDATA: tfKof2Zvb3Rlcl9odG09OTI5ODo1Ng== MIME-Version: 1.0 Message-ID: <606fea1b.74f6.17555a10fa4.Coremail.yang_y_yi@163.com> X-Coremail-Locale: zh_CN X-CM-TRANSID: kMGowACndk1c2ZJfl0KLAA--.47753W X-CM-SenderInfo: 51dqwsp1b1xqqrwthudrp/1tbiqAHGi1c7SVN8zwABsg X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: Re: [dpdk-dev] [PATCH v2] gso: fix free issue of mbuf gso segments attach to X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" QXQgMjAyMC0xMC0yMyAwODo1NzoxNSwgIkh1LCBKaWF5dSIgPGppYXl1Lmh1QGludGVsLmNvbT4g d3JvdGU6Cj4KPgo+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBBbmFueWV2 LCBLb25zdGFudGluIDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPgo+PiBTZW50OiBUaHVy c2RheSwgT2N0b2JlciAyMiwgMjAyMCAxMTozNCBQTQo+PiBUbzogeWFuZ195X3lpQDE2My5jb207 IGRldkBkcGRrLm9yZwo+PiBDYzogSHUsIEppYXl1IDxqaWF5dS5odUBpbnRlbC5jb20+OyB0ZWNo Ym9hcmRAZHBkay5vcmc7Cj4+IHRob21hc0Btb25qYWxvbi5uZXQ7IHlhbmd5aTAxQGluc3B1ci5j b20KPj4gU3ViamVjdDogUkU6IFtQQVRDSCB2Ml0gZ3NvOiBmaXggZnJlZSBpc3N1ZSBvZiBtYnVm IGdzbyBzZWdtZW50cyBhdHRhY2ggdG8KPj4gCj4+IAo+PiA+ID4KPj4gPiA+IHJ0ZV9nc29fc2Vn bWVudCBkZWNyZWFzZWQgcmVmY250IG9mIHBrdCBieSBvbmUsIGJ1dAo+PiA+ID4gaXQgaXMgd3Jv bmcgaWYgcGt0IGlzIGV4dGVybmFsIG1idWYsIHBrdCB3b24ndCBiZQo+PiA+ID4gZnJlZWQgYmVj YXVzZSBvZiBpbmNvcnJlY3QgcmVmY250LCB0aGUgcmVzdWx0IGlzCj4+ID4gPiBhcHBsaWNhdGlv biBjYW4ndCBhbGxvY2F0ZSBtYnVmIGZyb20gbWVtcG9vbCBiZWNhdXNlCj4+ID4gPiBtYnVmcyBp biBtZW1wb29sIGFyZSBydW4gb3V0IG9mLgo+PiA+ID4KPj4gPiA+IE9uZSBjb3JyZWN0IHdheSBp cyBhcHBsaWNhdGlvbiBzaG91bGQgY2FsbAo+PiA+ID4gcnRlX3BrdG1idWZfZnJlZSBhZnRlciBj YWxsaW5nIHJ0ZV9nc29fc2VnbWVudCB0byBmcmVlCj4+ID4gPiBwa3QgZXhwbGljaXRseS4gcnRl X2dzb19zZWdtZW50IG11c3RuJ3QgaGFuZGxlIGl0LCB0aGlzCj4+ID4gPiBzaG91bGQgYmUgcmVz cG9uc2liaWxpdHkgb2YgYXBwbGljYXRpb24uCj4+ID4KPj4gPiBQcm9iYWJseSBuZWVkcyB0byBi ZSBzdGF0ZWQgY2xlYXJseToKPj4gPiBJdCBpcyBhIGNoYW5nZSBpbiBmdW5jdGlvbmFsIGJlaGF2 aW91ci4KPj4gPiBXaXRob3V0IGRlcHJlY2F0aW9uIG5vdGUgaW4gYWR2YW5jZS4KPj4gPiBUQiBt ZW1iZXJzOiBwbGVhc2UgcHJvdmlkZSB5b3VyIG9waW5pb24gb24gdGhhdCBwYXRjaC4KPj4gPgo+ PiA+ID4KPj4gPiA+IEZpeGVzOiAxMTk1ODM3OTdiNmEgKCJnc286IHN1cHBvcnQgVENQL0lQdjQg R1NPIikKPj4gPiA+IFNpZ25lZC1vZmYtYnk6IFlpIFlhbmcgPHlhbmd5aTAxQGluc3B1ci5jb20+ Cj4+ID4gPiAtLS0KPj4gPiA+IENoYW5nZWxvZzoKPj4gPiA+Cj4+ID4gPiB2MS0+djI6Cj4+ID4g PiAgIC0gdXBkYXRlIGRlc2NyaXB0aW9uIG9mIHJ0ZV9nc29fc2VnbWVudCgpLgo+PiA+ID4gICAt IGNoYW5nZSBjb2RlIHdoaWNoIGNhbGxzIHJ0ZV9nc29fc2VnbWVudCgpIHRvCj4+ID4gPiAgICAg Zml4IGZyZWUgaXNzdWUuCj4+ID4gPgo+PiA+ID4gLS0tCj4+ID4gPiAgYXBwL3Rlc3QtcG1kL2Nz dW1vbmx5LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgKystCj4+ID4g PiAgZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2dlbmVyaWNfc2VnbWVudGF0aW9uX29mZmxvYWRfbGli LnJzdCB8IDcgKysrKystCj4+IC0KPj4gPgo+PiA+IEkgdGhpbmsgcmVsZWFzZSBub3RlcyBhbHNv IGhhdmUgdG8gYmUgdXBkYXRlZC4KPj4gPgo+PiA+ID4gIGxpYi9saWJydGVfZ3NvL3J0ZV9nc28u YyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA5ICstLS0tLS0tLQo+PiA+ID4g IGxpYi9saWJydGVfZ3NvL3J0ZV9nc28uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCA3ICsrKysrLS0KPj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyks IDEzIGRlbGV0aW9ucygtKQo+PiA+ID4KPj4gPiA+IGRpZmYgLS1naXQgYS9hcHAvdGVzdC1wbWQv Y3N1bW9ubHkuYyBiL2FwcC90ZXN0LXBtZC9jc3Vtb25seS5jCj4+ID4gPiBpbmRleCAzZDdkMjQ0 Li44MjllMDdmIDEwMDY0NAo+PiA+ID4gLS0tIGEvYXBwL3Rlc3QtcG1kL2NzdW1vbmx5LmMKPj4g PiA+ICsrKyBiL2FwcC90ZXN0LXBtZC9jc3Vtb25seS5jCj4+ID4gPiBAQCAtMTA4MCwxMSArMTA4 MCwxMiBAQCBzdHJ1Y3Qgc2ltcGxlX2dyZV9oZHIgewo+PiA+ID4gIHJldCA9IHJ0ZV9nc29fc2Vn bWVudChwa3RzX2J1cnN0W2ldLCBnc29fY3R4LAo+PiA+ID4gICZnc29fc2VnbWVudHNbbmJfc2Vn bWVudHNdLAo+PiA+ID4gIEdTT19NQVhfUEtUX0JVUlNUIC0gbmJfc2VnbWVudHMpOwo+PiA+ID4g Ky8qIHBrdHNfYnVyc3RbaV0gY2FuIGJlIGZyZWVkIHNhZmVseSBoZXJlLiAqLwo+PiA+ID4gK3J0 ZV9wa3RtYnVmX2ZyZWUocGt0c19idXJzdFtpXSk7Cj4+ID4KPj4gPiBJdCBkb2Vzbid0IGxvb2sg Y29ycmVjdCB0byBtZS4KPj4gPiBJIHRoaW5rIGl0IHNob3VsZCBiZToKPj4gPiBJZiAocmV0ID4g MSkgcnRlX3BrdG1idWZfZnJlZShwa3RzX2J1cnN0W2ldKTsKPj4gPgo+PiA+ID4gIGlmIChyZXQg Pj0gMCkKPj4gPiA+ICBuYl9zZWdtZW50cyArPSByZXQ7Cj4+ID4gPiAgZWxzZSB7Cj4+ID4gPiAg VEVTVFBNRF9MT0coREVCVUcsICJVbmFibGUgdG8gc2VnbWVudCBwYWNrZXQiKTsKPj4gPiA+IC1y dGVfcGt0bWJ1Zl9mcmVlKHBrdHNfYnVyc3RbaV0pOwo+PiA+ID4gIH0KPj4gPiA+ICB9Cj4+ID4K Pj4gPgo+PiA+IEFib3V0IGRyaXZlcnMvbmV0L3RhcC9ydGVfZXRoX3RhcC5jOgo+PiA+IEkgdGhp bmsgaXQgaGFzIHRvIGJlIG1vZGlmaWVkIHRvbywgYXMgaGVyZToKPj4gPgo+PiA+IC8qIGZyZWUg b3JpZ2luYWwgbWJ1ZiAqLwo+PiA+ICAgICAgICAgICAgICAgICBydGVfcGt0bWJ1Zl9mcmVlKG1i dWZfaW4pOwo+PiA+ICAgICAgICAgICAgICAgICAvKiBmcmVlIHRzbyBtYnVmcyAqLwo+PiA+ICAg ICAgICAgICAgICAgICBpZiAobnVtX3Rzb19tYnVmcyA+IDApCj4+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgcnRlX3BrdG1idWZfZnJlZV9idWxrKG1idWYsIG51bV90c29fbWJ1ZnMpOwo+PiA+ Cj4+ID4gaWYgbWJ1ZlswXSA9PSBtYnVmX2luCj4+ID4gV2lsbCBoYXZlIGEgZG91YmxlIGZyZWUo KSBmb3IgdGhlIHNhbWUgbWJ1Zi4KPj4gPgo+PiA+ID4KPj4gPiA+IGRpZmYgLS1naXQgYS9kb2Mv Z3VpZGVzL3Byb2dfZ3VpZGUvZ2VuZXJpY19zZWdtZW50YXRpb25fb2ZmbG9hZF9saWIucnN0Cj4+ ID4gYi9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvZ2VuZXJpY19zZWdtZW50YXRpb25fb2ZmbG9hZF9s aWIucnN0Cj4+ID4gPiBpbmRleCAyMDVjYjhhLi44NTc3NTcyIDEwMDY0NAo+PiA+ID4gLS0tIGEv ZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2dlbmVyaWNfc2VnbWVudGF0aW9uX29mZmxvYWRfbGliLnJz dAo+PiA+ID4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL2dlbmVyaWNfc2VnbWVudGF0aW9u X29mZmxvYWRfbGliLnJzdAo+PiA+ID4gQEAgLTI1LDggKzI1LDkgQEAgQmVhcmluZyB0aGF0IGlu IG1pbmQsIHRoZSBHU08gbGlicmFyeSBlbmFibGVzIERQREsKPj4gYXBwbGljYXRpb25zIHRvIHNl Z21lbnQKPj4gPiA+ICBwYWNrZXRzIGluIHNvZnR3YXJlLiBOb3RlIGhvd2V2ZXIsIHRoYXQgR1NP IGlzIGltcGxlbWVudGVkIGFzIGEKPj4gc3RhbmRhbG9uZQo+PiA+ID4gIGxpYnJhcnksIGFuZCBu b3QgdmlhIGEgJ2ZhbGxiYWNrJyBtZWNoYW5pc20gKGkuZS4gZm9yIHdoZW4gVFNPIGlzCj4+IHVu c3VwcG9ydGVkCj4+ID4gPiAgaW4gdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUpOyB0aGF0IGlzLCBh cHBsaWNhdGlvbnMgbXVzdCBleHBsaWNpdGx5IGludm9rZQo+PiB0aGUKPj4gPiA+IC1HU08gbGli cmFyeSB0byBzZWdtZW50IHBhY2tldHMuIFRoZSBzaXplIG9mIEdTTyBzZWdtZW50cyBgYChzZWdz eilgYCBpcwo+PiA+ID4gLWNvbmZpZ3VyYWJsZSBieSB0aGUgYXBwbGljYXRpb24uCj4+ID4gPiAr R1NPIGxpYnJhcnkgdG8gc2VnbWVudCBwYWNrZXRzLCB0aGV5IGFsc28gbXVzdCBjYWxsCj4+IGBg cnRlX3BrdG1idWZfZnJlZSgpYGAgdG8KPj4gPiA+ICtmcmVlIG1idWYgR1NPIHNlZ21lbnRzIGF0 dGFjaCB0byBhZnRlciBjYWxsaW5nIGBgcnRlX2dzb19zZWdtZW50KClgYC4KPj4gPgo+PiA+IFBy b2JhYmx5IHdvcnRoIHRvIG1lbnRpb24gdGhhdCBpZiByZXR1cm4gY29kZSA9PSAxLCB0aGVuCj4+ ID4gb3V0cHV0IG1idWYgd2lsbCBwb2ludCB0byBpbnB1dCBtYnVmIGFuZCBleHRyYSBjYXJlIHdp dGggZnJlZSgpIGlzIHJlcXVpcmVkLgo+PiAKPj4gQW5vdGhlciBwb3NzaWJpbGl0eSAtIGNoYW5n ZSBnc29fc2VnbWVudCgpIGJlaGF2aW91ciBldmVuIGZ1cnRoZXIsCj4+IGFuZCBkb24ndCBwdXQg aW5wdXRfcGt0IGludG8gcGt0X291dFtdIHdoZW4gbm8gc2VnbWVudGF0aW9uIGhhcHBlbmVkLgo+ PiBNaWdodCBiZSBldmVuIGEgYml0IGNsZWFuZXIgYW5kIGxlc3MgZXJyb3IgcHJvbmUuCj4KPkFn cmVlLiBQa3RzX291dFtdIGJldHRlciBub3QgdG8gY29udGFpbiBpbnB1dF9wa3Qgd2hlbiBHU08g ZG9lc24ndCBoYXBwZW4uCj4KPkJUVywgQFlpLCB5b3UgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUg Y29tbWVudCBvZiBkZXNjcmliaW5nIHdoYXQgcnRlX2dzb19zZWdtZW50KCkKPnJldHVybnMgaW4g cnRlX2dzby5oLgo+Cj5UaGFua3MsCj5KaWF5dQoKVGhhbmtzIEppYXl1LCBJJ2xsIGFkZCB0aGlz IGluICBuZXh0IHZlcnNpb24uCgo+PiAKPj4gPgo+PiA+ID4gVGhlIHNpemUKPj4gPiA+ICtvZiBH U08gc2VnbWVudHMgYGAoc2Vnc3opYGAgaXMgY29uZmlndXJhYmxlIGJ5IHRoZSBhcHBsaWNhdGlv bi4KPj4gPiA+Cj4+ID4gPiAgTGltaXRhdGlvbnMKPj4gPiA+ICAtLS0tLS0tLS0tLQo+PiA+ID4g QEAgLTIzMyw2ICsyMzQsOCBAQCBUbyBzZWdtZW50IGFuIG91dGdvaW5nIHBhY2tldCwgYW4gYXBw bGljYXRpb24KPj4gbXVzdDoKPj4gPiA+Cj4+ID4gPiAgIy4gSW52b2tlIHRoZSBHU08gc2VnbWVu dGF0aW9uIEFQSSwgYGBydGVfZ3NvX3NlZ21lbnQoKWBgLgo+PiA+ID4KPj4gPiA+ICsjLiBDYWxs IGBgcnRlX3BrdG1idWZfZnJlZSgpYGAgdG8gZnJlZSBtYnVmIGBgcnRlX2dzb19zZWdtZW50KClg YAo+PiBzZWdtZW50cy4KPj4gPiA+ICsKPj4gPiA+ICAjLiBJZiByZXF1aXJlZCwgdXBkYXRlIHRo ZSBMMyBhbmQgTDQgY2hlY2tzdW1zIG9mIHRoZSBuZXdseS1jcmVhdGVkCj4+IHNlZ21lbnRzLgo+ PiA+ID4gICAgIEZvciB0dW5uZWxlZCBwYWNrZXRzLCB0aGUgb3V0ZXIgSVB2NCBoZWFkZXJzJyBj aGVja3N1bXMgc2hvdWxkIGFsc28KPj4gYmUKPj4gPiA+ICAgICB1cGRhdGVkLiBBbHRlcm5hdGl2 ZWx5LCB0aGUgYXBwbGljYXRpb24gbWF5IG9mZmxvYWQgY2hlY2tzdW0KPj4gY2FsY3VsYXRpb24K Pj4gPiA+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2dzby9ydGVfZ3NvLmMgYi9saWIvbGlicnRl X2dzby9ydGVfZ3NvLmMKPj4gPiA+IGluZGV4IDc1MWI1YjYuLjBkNmNhZTUgMTAwNjQ0Cj4+ID4g PiAtLS0gYS9saWIvbGlicnRlX2dzby9ydGVfZ3NvLmMKPj4gPiA+ICsrKyBiL2xpYi9saWJydGVf Z3NvL3J0ZV9nc28uYwo+PiA+ID4gQEAgLTMwLDcgKzMwLDYgQEAKPj4gPiA+ICB1aW50MTZfdCBu Yl9wa3RzX291dCkKPj4gPiA+ICB7Cj4+ID4gPiAgc3RydWN0IHJ0ZV9tZW1wb29sICpkaXJlY3Rf cG9vbCwgKmluZGlyZWN0X3Bvb2w7Cj4+ID4gPiAtc3RydWN0IHJ0ZV9tYnVmICpwa3Rfc2VnOwo+ PiA+ID4gIHVpbnQ2NF90IG9sX2ZsYWdzOwo+PiA+ID4gIHVpbnQxNl90IGdzb19zaXplOwo+PiA+ ID4gIHVpbnQ4X3QgaXBpZF9kZWx0YTsKPj4gPiA+IEBAIC04MCwxMyArNzksNyBAQAo+PiA+ID4g IHJldHVybiAxOwo+PiA+ID4gIH0KPj4gPiA+Cj4+ID4gPiAtaWYgKHJldCA+IDEpIHsKPj4gPiA+ IC1wa3Rfc2VnID0gcGt0Owo+PiA+ID4gLXdoaWxlIChwa3Rfc2VnKSB7Cj4+ID4gPiAtcnRlX21i dWZfcmVmY250X3VwZGF0ZShwa3Rfc2VnLCAtMSk7Cj4+ID4gPiAtcGt0X3NlZyA9IHBrdF9zZWct Pm5leHQ7Cj4+ID4gPiAtfQo+PiA+ID4gLX0gZWxzZSBpZiAocmV0IDwgMCkgewo+PiA+ID4gK2lm IChyZXQgPCAwKSB7Cj4+ID4gPiAgLyogUmV2ZXJ0IHRoZSBvbF9mbGFncyBpbiB0aGUgZXZlbnQg b2YgZmFpbHVyZS4gKi8KPj4gPiA+ICBwa3QtPm9sX2ZsYWdzID0gb2xfZmxhZ3M7Cj4+ID4gPiAg fQo+PiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZ3NvL3J0ZV9nc28uaCBiL2xpYi9saWJy dGVfZ3NvL3J0ZV9nc28uaAo+PiA+ID4gaW5kZXggM2FhYjI5Ny4uZjY2OTRmOSAxMDA2NDQKPj4g PiA+IC0tLSBhL2xpYi9saWJydGVfZ3NvL3J0ZV9nc28uaAo+PiA+ID4gKysrIGIvbGliL2xpYnJ0 ZV9nc28vcnRlX2dzby5oCj4+ID4gPiBAQCAtODksOCArODksMTEgQEAgc3RydWN0IHJ0ZV9nc29f Y3R4IHsKPj4gPiA+ICAgKiB0aGUgR1NPIHNlZ21lbnRzIGFyZSBzZW50IHRvIHNob3VsZCBzdXBw b3J0IHRyYW5zbWlzc2lvbiBvZiBtdWx0aS0KPj4gc2VnbWVudAo+PiA+ID4gICAqIHBhY2tldHMu Cj4+ID4gPiAgICoKPj4gPiA+IC0gKiBJZiB0aGUgaW5wdXQgcGFja2V0IGlzIEdTTydkLCBpdHMg bWJ1ZiByZWZjbnQgcmVkdWNlcyBieSAxLiBUaGVyZWZvcmUsCj4+ID4gPiAtICogd2hlbiBhbGwg R1NPIHNlZ21lbnRzIGFyZSBmcmVlZCwgdGhlIGlucHV0IHBhY2tldCBpcyBmcmVlZAo+PiBhdXRv bWF0aWNhbGx5Lgo+PiA+ID4gKyAqIElmIHRoZSBpbnB1dCBwYWNrZXQgaXMgR1NPJ2QsIGFsbCB0 aGUgaW5kaXJlY3Qgc2VnbWVudHMgYXJlIGF0dGFjaGVkIHRvCj4+IHRoZQo+PiA+ID4gKyAqIGlu cHV0IHBhY2tldC4KPj4gPiA+ICsgKgo+PiA+ID4gKyAqIHJ0ZV9nc29fc2VnbWVudCgpIHdpbGwg bm90IGZyZWUgdGhlIGlucHV0IHBhY2tldCBubyBtYXR0ZXIgd2hldGhlciBpdAo+PiBpcwo+PiA+ ID4gKyAqIEdTTydkIG9yIG5vdCwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBmcmVlIGl0IGFmdGVy IGNhbGwKPj4gcnRlX2dzb19zZWdtZW50KCkuCj4+ID4gPiAgICoKPj4gPiA+ICAgKiBJZiB0aGUg bWVtb3J5IHNwYWNlIGluIHBrdHNfb3V0IG9yIE1CVUYgcG9vbHMgaXMgaW5zdWZmaWNpZW50LCB0 aGlzCj4+ID4gPiAgICogZnVuY3Rpb24gZmFpbHMsIGFuZCBpdCByZXR1cm5zICgtMSkgKiBlcnJu by4gT3RoZXJ3aXNlLCBHU08gc3VjY2VlZHMsCj4+ID4gPiAtLQo+PiA+ID4gMS44LjMuMQo+PiAK Cgo=