From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 85C9837A6 for ; Fri, 30 Jun 2017 14:56:05 +0200 (CEST) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jun 2017 05:56:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,286,1496127600"; d="scan'208";a="103159237" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga004.jf.intel.com with ESMTP; 30 Jun 2017 05:56:03 -0700 Received: from irsmsx109.ger.corp.intel.com ([169.254.13.115]) by IRSMSX106.ger.corp.intel.com ([169.254.8.236]) with mapi id 14.03.0319.002; Fri, 30 Jun 2017 13:56:01 +0100 From: "Ananyev, Konstantin" To: Jain Ashish-B46179 , "dev@dpdk.org" CC: Hemant Agrawal Thread-Topic: [PATCH v2] example/ip_fragmentation: add fragmentation size support Thread-Index: AQHS8Zr0EDiugWr66ky6QFx/X5Y3p6I9Vu/w///z6gCAABFC4A== Date: Fri, 30 Jun 2017 12:56:00 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772583FB18671@IRSMSX109.ger.corp.intel.com> References: <1492672688-3571-1-git-send-email-ashish.jain@nxp.com> <1498825083-21117-1-git-send-email-ashish.jain@nxp.com> <2601191342CEEE43887BDE71AB9772583FB18610@IRSMSX109.ger.corp.intel.com> <266be278-dfe0-c93a-a11d-458f3fe072c5@nxp.com> In-Reply-To: <266be278-dfe0-c93a-a11d-458f3fe072c5@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 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 v2] example/ip_fragmentation: add fragmentation size support 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: , X-List-Received-Date: Fri, 30 Jun 2017 12:56:06 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSmFpbiBBc2hpc2gtQjQ2 MTc5IFttYWlsdG86YXNoaXNoLmphaW5AbnhwLmNvbV0NCj4gU2VudDogRnJpZGF5LCBKdW5lIDMw LCAyMDE3IDE6NTAgUE0NCj4gVG86IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50aW4uYW5h bnlldkBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IEhlbWFudCBBZ3Jhd2FsIDxoZW1h bnQuYWdyYXdhbEBueHAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYyXSBleGFtcGxlL2lw X2ZyYWdtZW50YXRpb246IGFkZCBmcmFnbWVudGF0aW9uIHNpemUgc3VwcG9ydA0KPiANCj4gT24g Ni8zMC8yMDE3IDY6MDQgUE0sIEFuYW55ZXYsIEtvbnN0YW50aW4gd3JvdGU6DQo+ID4NCj4gPg0K PiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBBc2hpc2ggSmFpbiBb bWFpbHRvOmFzaGlzaC5qYWluQG54cC5jb21dDQo+ID4+IFNlbnQ6IEZyaWRheSwgSnVuZSAzMCwg MjAxNyAxOjE4IFBNDQo+ID4+IFRvOiBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFu YW55ZXZAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBBc2hpc2ggSmFpbiA8YXNo aXNoLmphaW5AbnhwLmNvbT47IEhlbWFudCBBZ3Jhd2FsIDxoZW1hbnQuYWdyYXdhbEBueHAuY29t Pg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggdjJdIGV4YW1wbGUvaXBfZnJhZ21lbnRhdGlvbjogYWRk IGZyYWdtZW50YXRpb24gc2l6ZSBzdXBwb3J0DQo+ID4+DQo+ID4+IEFkZGluZyBzdXBwb3J0IGZv ciBkZXRlcm1pbmluZyBmcmFnbWVudGF0aW9uIHNpemUgZm9yIGJvdGgNCj4gPj4gaXB2NCBhbmQg aXB2NiB0cmFmZmljIGR5bmFtaWNhbGx5IHRocm91Z2ggY29tbWFuZCBsaW5lLg0KPiA+PiBJdCBp cyBoZWxwZnVsIGluIHRlc3RpbmcgdG8gY29uZmlndXJlIGRpZmZlcmVudCBmcmFnbWVudGF0aW9u DQo+ID4+IHNpemVzIGFuZCB2YWxpZGF0ZSB0aGUgcGFja2V0cy4NCj4gPj4NCj4gPj4gU2lnbmVk LW9mZi1ieTogQXNoaXNoIEphaW4gPGFzaGlzaC5qYWluQG54cC5jb20+DQo+ID4+IFNpZ25lZC1v ZmYtYnk6IEhlbWFudCBBZ3Jhd2FsIDxoZW1hbnQuYWdyYXdhbEBueHAuY29tPg0KPiA+PiAtLS0N Cj4gPj4gQ2hhbmdlcyBpbiB2MjoNCj4gPj4gKiB1c2VkIHN0cm5jbXAgd2hpbGUgYXNzb2NpYXRp bmcgbG9uZyBvcHRpb25zIHdpdGggc2hvcnQgb25lcw0KPiA+PiAqIGFkZGVkIGRldGFpbGVkIHVz YWdlIGZvciBuZXcgYWRkZWQgcGFyYW1zDQo+ID4+DQo+ID4+ICAgZXhhbXBsZXMvaXBfZnJhZ21l bnRhdGlvbi9tYWluLmMgfCA5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0tDQo+ID4+ICAgMSBmaWxlIGNoYW5nZWQsIDg4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQgYS9leGFtcGxlcy9pcF9mcmFnbWVudGF0aW9uL21h aW4uYyBiL2V4YW1wbGVzL2lwX2ZyYWdtZW50YXRpb24vbWFpbi5jDQo+ID4+IGluZGV4IDJmNDUy NjQuLmMwYjM2Y2QgMTAwNjQ0DQo+ID4+IC0tLSBhL2V4YW1wbGVzL2lwX2ZyYWdtZW50YXRpb24v bWFpbi5jDQo+ID4+ICsrKyBiL2V4YW1wbGVzL2lwX2ZyYWdtZW50YXRpb24vbWFpbi5jDQo+ID4+ IEBAIC05NSw2ICs5NSwxNiBAQA0KPiA+PiAgICNkZWZpbmUJSVBWNl9ERUZBVUxUX1BBWUxPQUQJ KElQVjZfTVRVX0RFRkFVTFQgLSBzaXplb2Yoc3RydWN0IGlwdjZfaGRyKSkNCj4gPj4NCj4gPj4g ICAvKg0KPiA+PiArICogQ29uZmlndXJlIGZyYWdtZW50YXRpb24gc2l6ZSBmb3IgSVB2NCBhbmQg SVB2NiBwYWNrZXRzDQo+ID4+ICsgKi8NCj4gPj4gK3N0YXRpYyB1aW50MzJfdCBmcmFnX3NpemVf djQgPSBJUFY0X01UVV9ERUZBVUxUOw0KPiA+PiArc3RhdGljIHVpbnQzMl90IGZyYWdfc2l6ZV92 NiA9IElQVjZfTVRVX0RFRkFVTFQ7DQo+ID4+ICsjZGVmaW5lIE1JTl9JUFY0X0ZSQUdfU0laRSA2 NA0KPiA+PiArI2RlZmluZSBNQVhfSVBWNF9GUkFHX1NJWkUgOTYwMA0KPiA+PiArI2RlZmluZSBN SU5fSVBWNl9GUkFHX1NJWkUgMTI4MA0KPiA+PiArI2RlZmluZSBNQVhfSVBWNl9GUkFHX1NJWkUg OTYwMA0KPiA+PiArDQo+ID4+ICsvKg0KPiA+PiAgICAqIE1heCBudW1iZXIgb2YgZnJhZ21lbnRz IHBlciBwYWNrZXQgZXhwZWN0ZWQgLSBkZWZpbmVkIGJ5IGNvbmZpZyBmaWxlLg0KPiA+PiAgICAq Lw0KPiA+PiAgICNkZWZpbmUJTUFYX1BBQ0tFVF9GUkFHIFJURV9MSUJSVEVfSVBfRlJBR19NQVhf RlJBRw0KPiA+PiBAQCAtMTM5LDYgKzE0OSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZXRoZXJfYWRkciBw b3J0c19ldGhfYWRkcltSVEVfTUFYX0VUSFBPUlRTXTsNCj4gPj4NCj4gPj4gICAjZGVmaW5lIElQ VjZfQUREUl9MRU4gMTYNCj4gPj4NCj4gPj4gKyNkZWZpbmUgQ01EX0xJTkVfT1BUX0lQVjRfRlJB R19TSVpFICJmcmFnX3NpemVfdjQiDQo+ID4+ICsjZGVmaW5lIENNRF9MSU5FX09QVF9JUFY2X0ZS QUdfU0laRSAiZnJhZ19zaXplX3Y2Ig0KPiA+PiArDQo+ID4+ICAgLyogbWFzayBvZiBlbmFibGVk IHBvcnRzICovDQo+ID4+ICAgc3RhdGljIGludCBlbmFibGVkX3BvcnRfbWFzayA9IDA7DQo+ID4+ DQo+ID4+IEBAIC0zMDAsMTQgKzMxMywxNCBAQCBsM2Z3ZF9zaW1wbGVfZm9yd2FyZChzdHJ1Y3Qg cnRlX21idWYgKm0sIHN0cnVjdCBsY29yZV9xdWV1ZV9jb25mICpxY29uZiwNCj4gPj4gICAJCX0N Cj4gPj4NCj4gPj4gICAJCS8qIGlmIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IGZyYWdtZW50YXRp b24gKi8NCj4gPj4gLQkJaWYgKGxpa2VseSAoSVBWNF9NVFVfREVGQVVMVCA+PSBtLT5wa3RfbGVu KSkgew0KPiA+PiArCQlpZiAobGlrZWx5KGZyYWdfc2l6ZV92NCA+PSBtLT5wa3RfbGVuKSkgew0K PiA+PiAgIAkJCXFjb25mLT50eF9tYnVmc1twb3J0X291dF0ubV90YWJsZVtsZW5dID0gbTsNCj4g Pj4gICAJCQlsZW4yID0gMTsNCj4gPj4gICAJCX0gZWxzZSB7DQo+ID4+ICAgCQkJbGVuMiA9IHJ0 ZV9pcHY0X2ZyYWdtZW50X3BhY2tldChtLA0KPiA+PiAgIAkJCQkmcWNvbmYtPnR4X21idWZzW3Bv cnRfb3V0XS5tX3RhYmxlW2xlbl0sDQo+ID4+ICAgCQkJCSh1aW50MTZfdCkoTUJVRl9UQUJMRV9T SVpFIC0gbGVuKSwNCj4gPj4gLQkJCQlJUFY0X01UVV9ERUZBVUxULA0KPiA+PiArCQkJCWZyYWdf c2l6ZV92NCwNCj4gPj4gICAJCQkJcnhxLT5kaXJlY3RfcG9vbCwgcnhxLT5pbmRpcmVjdF9wb29s KTsNCj4gPj4NCj4gPj4gICAJCQkvKiBGcmVlIGlucHV0IHBhY2tldCAqLw0KPiA+PiBAQCAtMzM2 LDE0ICszNDksMTQgQEAgbDNmd2Rfc2ltcGxlX2ZvcndhcmQoc3RydWN0IHJ0ZV9tYnVmICptLCBz dHJ1Y3QgbGNvcmVfcXVldWVfY29uZiAqcWNvbmYsDQo+ID4+ICAgCQl9DQo+ID4+DQo+ID4+ICAg CQkvKiBpZiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBmcmFnbWVudGF0aW9uICovDQo+ID4+IC0J CWlmIChsaWtlbHkgKElQVjZfTVRVX0RFRkFVTFQgPj0gbS0+cGt0X2xlbikpIHsNCj4gPj4gKwkJ aWYgKGxpa2VseShmcmFnX3NpemVfdjYgPj0gbS0+cGt0X2xlbikpIHsNCj4gPj4gICAJCQlxY29u Zi0+dHhfbWJ1ZnNbcG9ydF9vdXRdLm1fdGFibGVbbGVuXSA9IG07DQo+ID4+ICAgCQkJbGVuMiA9 IDE7DQo+ID4+ICAgCQl9IGVsc2Ugew0KPiA+PiAgIAkJCWxlbjIgPSBydGVfaXB2Nl9mcmFnbWVu dF9wYWNrZXQobSwNCj4gPj4gICAJCQkJJnFjb25mLT50eF9tYnVmc1twb3J0X291dF0ubV90YWJs ZVtsZW5dLA0KPiA+PiAgIAkJCQkodWludDE2X3QpKE1CVUZfVEFCTEVfU0laRSAtIGxlbiksDQo+ ID4+IC0JCQkJSVBWNl9NVFVfREVGQVVMVCwNCj4gPj4gKwkJCQlmcmFnX3NpemVfdjYsDQo+ID4+ ICAgCQkJCXJ4cS0+ZGlyZWN0X3Bvb2wsIHJ4cS0+aW5kaXJlY3RfcG9vbCk7DQo+ID4+DQo+ID4+ ICAgCQkJLyogRnJlZSBpbnB1dCBwYWNrZXQgKi8NCj4gPj4gQEAgLTQ4OSw4ICs1MDIsMTYgQEAg cHJpbnRfdXNhZ2UoY29uc3QgY2hhciAqcHJnbmFtZSkNCj4gPj4gICB7DQo+ID4+ICAgCXByaW50 ZigiJXMgW0VBTCBvcHRpb25zXSAtLSAtcCBQT1JUTUFTSyBbLXEgTlFdXG4iDQo+ID4+ICAgCSAg ICAgICAiICAtcCBQT1JUTUFTSzogaGV4YWRlY2ltYWwgYml0bWFzayBvZiBwb3J0cyB0byBjb25m aWd1cmVcbiINCj4gPj4gLQkgICAgICAgIiAgLXEgTlE6IG51bWJlciBvZiBxdWV1ZSAoPXBvcnRz KSBwZXIgbGNvcmUgKGRlZmF1bHQgaXMgMSlcbiIsDQo+ID4+IC0JICAgICAgIHByZ25hbWUpOw0K PiA+PiArCSAgICAgICAiICAtcSBOUTogbnVtYmVyIG9mIHF1ZXVlICg9cG9ydHMpIHBlciBsY29y ZSAoZGVmYXVsdCBpcyAxKVxuIg0KPiA+PiArCSAgICAgICAiICAtLWZyYWdfc2l6ZV92ND08bnVt Pjogb3B0aW9uYWwsICBJUHY0IGZyYWdtZW50IHNpemUgaW4gZGVjaW1hbCxcbiINCj4gPj4gKwkg ICAgICAgIlx0IENvbmRpdGlvbjooZnJhZ19zaXplX3Y0IC0gMjApIHNob3VsZCBiZSBhIG11bHRp cGxlIG9mIDhcbiINCj4gPj4gKwkgICAgICAgIlx0IE1pbiB2YWx1ZTogJWQgLCBNYXggdmFsdWU6 ICVkLCBkZWZhdWx0IGlzICVkIFxuIg0KPiA+PiArCSAgICAgICAiICAtLWZyYWdfc2l6ZV92Nj08 bnVtPjogb3B0aW9uYWwsICBJUHY2IGZyYWdtZW50IHNpemUgaW4gZGVjaW1hbCxcbiINCj4gPj4g KwkgICAgICAgIlx0IENvbmRpdGlvbjooZnJhZ19zaXplX3Y2IC0gNDApIHNob3VsZCBiZSBhIG11 bHRpcGxlIG9mIDhcbiINCj4gPj4gKwkgICAgICAgIlx0IE1pbiB2YWx1ZTogJWQgLCBNYXggdmFs dWU6ICVkLCBkZWZhdWx0IGlzICVkIFxuIiwNCj4gPj4gKwkgICAgICAgcHJnbmFtZSwgTUlOX0lQ VjRfRlJBR19TSVpFLCBNQVhfSVBWNF9GUkFHX1NJWkUsDQo+ID4+ICsJICAgICAgIElQVjRfTVRV X0RFRkFVTFQsIE1JTl9JUFY2X0ZSQUdfU0laRSwgTUFYX0lQVjZfRlJBR19TSVpFLA0KPiA+PiAr CSAgICAgICBJUFY2X01UVV9ERUZBVUxUKTsNCj4gPj4gICB9DQo+ID4+DQo+ID4+ICAgc3RhdGlj IGludA0KPiA+PiBAQCAtNTI4LDYgKzU0OSwyOSBAQCBwYXJzZV9ucXVldWUoY29uc3QgY2hhciAq cV9hcmcpDQo+ID4+ICAgCXJldHVybiBuOw0KPiA+PiAgIH0NCj4gPj4NCj4gPj4gK3N0YXRpYyBp bnQNCj4gPj4gK3BhcnNlX2ZyYWdfc2l6ZShjb25zdCBjaGFyICpzdHIsIHVpbnQzMl90IG1pbiwg dWludDMyX3QgbWF4LA0KPiA+PiArCQl1aW50OF90IGhkcl9zaXplLCB1aW50MzJfdCAqdmFsKQ0K PiA+PiArew0KPiA+PiArCWNoYXIgKmVuZDsNCj4gPj4gKwl1aW50NjRfdCB2Ow0KPiA+PiArDQo+ ID4+ICsJLyogcGFyc2UgZGVjaW1hbCBzdHJpbmcgKi8NCj4gPj4gKwllcnJubyA9IDA7DQo+ID4+ ICsJdiA9IHN0cnRvdWwoc3RyLCAmZW5kLCAxMCk7DQo+ID4+ICsJaWYgKGVycm5vICE9IDAgfHwg KmVuZCAhPSAnXDAnKQ0KPiA+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPj4gKw0KPiA+PiArCWlm ICh2IDwgbWluIHx8IHYgPiBtYXgpDQo+ID4+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+PiArDQo+ ID4+ICsJaWYgKCh2IC0gaGRyX3NpemUpICUgOCkNCj4gPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ID4+ICsNCj4gPj4gKwkqdmFsID0gKHVpbnQzMl90KXY7DQo+ID4+ICsJcmV0dXJuIDA7DQo+ID4+ ICt9DQo+ID4+ICsNCj4gPj4gICAvKiBQYXJzZSB0aGUgYXJndW1lbnQgZ2l2ZW4gaW4gdGhlIGNv bW1hbmQgbGluZSBvZiB0aGUgYXBwbGljYXRpb24gKi8NCj4gPj4gICBzdGF0aWMgaW50DQo+ID4+ ICAgcGFyc2VfYXJncyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4+IEBAIC01MzcsNiArNTgx LDggQEAgcGFyc2VfYXJncyhpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQo+ID4+ICAgCWludCBvcHRp b25faW5kZXg7DQo+ID4+ICAgCWNoYXIgKnByZ25hbWUgPSBhcmd2WzBdOw0KPiA+PiAgIAlzdGF0 aWMgc3RydWN0IG9wdGlvbiBsZ29wdHNbXSA9IHsNCj4gPj4gKwkJeyJmcmFnX3NpemVfdjQiLCAx LCAwLCAwfSwNCj4gPj4gKwkJeyJmcmFnX3NpemVfdjYiLCAxLCAwLCAwfSwNCj4gPj4gICAJCXtO VUxMLCAwLCAwLCAwfQ0KPiA+PiAgIAl9Ow0KPiA+Pg0KPiA+PiBAQCAtNTY4LDggKzYxNCw0MiBA QCBwYXJzZV9hcmdzKGludCBhcmdjLCBjaGFyICoqYXJndikNCj4gPj4NCj4gPj4gICAJCS8qIGxv bmcgb3B0aW9ucyAqLw0KPiA+PiAgIAkJY2FzZSAwOg0KPiA+PiAtCQkJcHJpbnRfdXNhZ2UocHJn bmFtZSk7DQo+ID4+IC0JCQlyZXR1cm4gLTE7DQo+ID4+ICsJCQlpZiAoIXN0cm5jbXAobGdvcHRz W29wdGlvbl9pbmRleF0ubmFtZSwNCj4gPj4gKwkJCQlDTURfTElORV9PUFRfSVBWNF9GUkFHX1NJ WkUsDQo+ID4+ICsJCQkJc2l6ZW9mKENNRF9MSU5FX09QVF9JUFY0X0ZSQUdfU0laRSkpKSB7DQo+ ID4+ICsJCQkJcmV0ID0gcGFyc2VfZnJhZ19zaXplKG9wdGFyZywNCj4gPj4gKwkJCQkJCU1JTl9J UFY0X0ZSQUdfU0laRSwNCj4gPj4gKwkJCQkJCU1BWF9JUFY0X0ZSQUdfU0laRSwNCj4gPj4gKwkJ CQkJCXNpemVvZihzdHJ1Y3QgaXB2NF9oZHIpLA0KPiA+PiArCQkJCQkJJmZyYWdfc2l6ZV92NCk7 DQo+ID4+ICsJCQkJaWYgKHJldCkgew0KPiA+PiArCQkJCQlwcmludGYoImludmFsaWQgdmFsdWU6 IFwiJXNcIiBmb3IgIg0KPiA+PiArCQkJCQkJInBhcmFtZXRlciAlc1xuIiwNCj4gPj4gKwkJCQkJ CW9wdGFyZywNCj4gPj4gKwkJCQkJCWxnb3B0c1tvcHRpb25faW5kZXhdLm5hbWUpOw0KPiA+PiAr CQkJCQlwcmludF91c2FnZShwcmduYW1lKTsNCj4gPj4gKwkJCQkJcmV0dXJuIHJldDsNCj4gPj4g KwkJCQl9DQo+ID4+ICsJCQl9DQo+ID4+ICsJCQlpZiAoIXN0cm5jbXAobGdvcHRzW29wdGlvbl9p bmRleF0ubmFtZSwNCj4gPj4gKwkJCQlDTURfTElORV9PUFRfSVBWNl9GUkFHX1NJWkUsDQo+ID4+ ICsJCQkJc2l6ZW9mKENNRF9MSU5FX09QVF9JUFY2X0ZSQUdfU0laRSkpKSB7DQo+ID4+ICsJCQkJ cmV0ID0gcGFyc2VfZnJhZ19zaXplKG9wdGFyZywNCj4gPj4gKwkJCQkJCU1JTl9JUFY2X0ZSQUdf U0laRSwNCj4gPj4gKwkJCQkJCU1BWF9JUFY2X0ZSQUdfU0laRSwNCj4gPj4gKwkJCQkJCXNpemVv ZihzdHJ1Y3QgaXB2Nl9oZHIpLA0KPiA+PiArCQkJCQkJJmZyYWdfc2l6ZV92Nik7DQo+ID4+ICsJ CQkJaWYgKHJldCkgew0KPiA+PiArCQkJCQlwcmludGYoImludmFsaWQgdmFsdWU6IFwiJXNcIiBm b3IgIg0KPiA+PiArCQkJCQkJInBhcmFtZXRlciAlc1xuIiwNCj4gPj4gKwkJCQkJCW9wdGFyZywN Cj4gPj4gKwkJCQkJCWxnb3B0c1tvcHRpb25faW5kZXhdLm5hbWUpOw0KPiA+PiArCQkJCQlwcmlu dF91c2FnZShwcmduYW1lKTsNCj4gPj4gKwkJCQkJcmV0dXJuIHJldDsNCj4gPj4gKwkJCQl9DQo+ ID4+ICsJCQl9DQo+ID4+ICsNCj4gPj4gKwkJCWJyZWFrOw0KPiA+DQo+ID4gU2VlbXMgeW91IGln bm9yZWQgbXkgY29tbWVudHMgZm9yIHYxPw0KPiA+IEtvbnN0YW50aW4NCj4gU29ycnksIEkgZm9y Z290IHRvIHJlcGx5IHRvIHRoaXMgY29tbWVudC4NCj4gJ2JyZWFrJyBoZXJlIGlzIG5lZWRlZCB0 byBhdm9pZCBmYWxsIHRocm91Z2ggdG8gdGhlIGRlZmF1bHQgY2FzZS4NCj4gSWYgYW55IG90aGVy IGxvbmcgb3B0aW9uIGlzIHBhc3NlZCBpbiBjb21tYW5kIGxpbmUgdGhlbiBhcHBsaWNhdGlvbg0K PiBzaG91bGQgZXhpdC4NCg0KUGxlYXNlIHJlYWQgbXkgcHJldmlvdXMgY29tbW5ldHM6DQpodHRw Oi8vZHBkay5vcmcvZGV2L3BhdGNod29yay9wYXRjaC8yMzc3NS8NCmFuZCBlaXRoZXIgYWRkcmVz cyB0aGVtIGluIGEgcHJvcGVyIG1hbm5lciwgb3IgZXhwbGFpbiB3aHkgZG8geW91IHRoaW5rDQp0 aGV5IGFyZSBpbmFwcHJvcHJpYXRlLg0KVGlsbCB0aGVuIC0gTkFDSy4NCktvbnN0YW50aW4NCg0K DQo+IEFzaGlzaA0KPiA+DQo+ID4+DQo+ID4+ICAgCQlkZWZhdWx0Og0KPiA+PiAgIAkJCXByaW50 X3VzYWdlKHByZ25hbWUpOw0KPiA+PiAtLQ0KPiA+PiAyLjcuNA0KPiA+DQo+ID4NCj4gDQoNCg==