From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by dpdk.org (Postfix) with ESMTP id 79F9B1BCB3 for ; Thu, 20 Dec 2018 15:06:35 +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 fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 Dec 2018 06:06:34 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,377,1539673200"; d="scan'208";a="127662224" Received: from irsmsx107.ger.corp.intel.com ([163.33.3.99]) by fmsmga002.fm.intel.com with ESMTP; 20 Dec 2018 06:06:33 -0800 Received: from irsmsx106.ger.corp.intel.com ([169.254.8.227]) by IRSMSX107.ger.corp.intel.com ([169.254.10.125]) with mapi id 14.03.0415.000; Thu, 20 Dec 2018 14:06:32 +0000 From: "Ananyev, Konstantin" To: Akhil Goyal , "dev@dpdk.org" CC: Thomas Monjalon , "Awal, Mohammad Abdul" Thread-Topic: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library Thread-Index: AQHUk8ldEHLuRhaSk02pTIMUWJzJ0qWF/3mAgAGispA= Date: Thu, 20 Dec 2018 14:06:32 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258010D8BD421@IRSMSX106.ger.corp.intel.com> References: <1544110714-4514-2-git-send-email-konstantin.ananyev@intel.com> <1544804589-10338-4-git-send-email-konstantin.ananyev@intel.com> <82f62109-a584-13e9-12ec-c9984a60567a@nxp.com> In-Reply-To: <82f62109-a584-13e9-12ec-c9984a60567a@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGIyOTkzNjgtMDhlZS00OWU1LTlkOGMtNjMwNzEwYjIwYjBmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiM3NcL085dnVyRUtzSnFLUFByYUtpK3VrVnFNelFYdzVXdGVDQ3o1QlgwVHFzWE1KdGNKYnJYenBuSzB5YVEzbnIifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 04/10] lib: introduce ipsec library 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: Thu, 20 Dec 2018 14:06:36 -0000 DQoNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL2xpYnJ0ZV9pcHNlYy9tZXNvbi5idWlsZCBiL2xpYi9s aWJydGVfaXBzZWMvbWVzb24uYnVpbGQNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGlu ZGV4IDAwMDAwMDAwMC4uNTJjNzhlYWViDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2xp Yi9saWJydGVfaXBzZWMvbWVzb24uYnVpbGQNCj4gPiBAQCAtMCwwICsxLDEwIEBADQo+ID4gKyMg U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPiA+ICsjIENvcHlyaWdodChj KSAyMDE4IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKw0KPiA+ICthbGxvd19leHBlcmltZW50YWxf YXBpcyA9IHRydWUNCj4gPiArDQo+ID4gK3NvdXJjZXM9ZmlsZXMoJ3NhLmMnKQ0KPiA+ICsNCj4g PiAraW5zdGFsbF9oZWFkZXJzID0gZmlsZXMoJ3J0ZV9pcHNlY19zYS5oJykNCj4gPiArDQo+ID4g K2RlcHMgKz0gWydtYnVmJywgJ25ldCcsICdjcnlwdG9kZXYnLCAnc2VjdXJpdHknXQ0KPiB3ZSBu ZWVkIG5ldCBpbiBtZXNvbiBhbmQgbm90IGluIE1ha2VmaWxlID8NCg0KSSBzdXBwb3NlIHdlIG5l ZWQgaXQgYm90aCwgd2lsbCB1cGRhdGUuDQoNCj4gPiArDQo+ID4gK2VudW0gew0KPiA+ICsJUlRF X1NBVFBfTE9HX0lQViwNCj4gPiArCVJURV9TQVRQX0xPR19QUk9UTywNCj4gPiArCVJURV9TQVRQ X0xPR19ESVIsDQo+ID4gKwlSVEVfU0FUUF9MT0dfTU9ERSwNCj4gPiArCVJURV9TQVRQX0xPR19O VU0NCj4gPiArfTsNCj4gd2hhdCBpcyB0aGUgc2lnbmlmaWNhbmNlIG9mIExPRyBoZXJlLg0KDQpf TE9HXyBpcyBmb3IgbG9nYXJpdGhtIG9mIDIgaGVyZS4NCg0KPiANCj4gPiBkaWZmIC0tZ2l0IGEv bGliL2xpYnJ0ZV9pcHNlYy9zYS5jIGIvbGliL2xpYnJ0ZV9pcHNlYy9zYS5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAuLmY5MjdhODJiZg0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9saWIvbGlicnRlX2lwc2VjL3NhLmMNCj4gPiBAQCAtMCwwICsx LDMyNyBAQA0KPiA+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+ ID4gKyAqIENvcHlyaWdodChjKSAyMDE4IEludGVsIENvcnBvcmF0aW9uDQo+ID4gKyAqLw0KPiA+ ICsNCj4gPiArI2luY2x1ZGUgPHJ0ZV9pcHNlY19zYS5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2Vz cC5oPg0KPiA+ICsjaW5jbHVkZSA8cnRlX2lwLmg+DQo+ID4gKyNpbmNsdWRlIDxydGVfZXJybm8u aD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJzYS5oIg0KPiA+ICsjaW5jbHVkZSAiaXBzZWNfc3Fu LmgiDQo+ID4gKw0KPiA+ICsvKiBzb21lIGhlbHBlciBzdHJ1Y3R1cmVzICovDQo+ID4gK3N0cnVj dCBjcnlwdG9feGZvcm0gew0KPiA+ICsJc3RydWN0IHJ0ZV9jcnlwdG9fYXV0aF94Zm9ybSAqYXV0 aDsNCj4gPiArCXN0cnVjdCBydGVfY3J5cHRvX2NpcGhlcl94Zm9ybSAqY2lwaGVyOw0KPiA+ICsJ c3RydWN0IHJ0ZV9jcnlwdG9fYWVhZF94Zm9ybSAqYWVhZDsNCj4gPiArfTsNCj4gc2hvdWxkbid0 IHRoaXMgYmUgdW5pb24gYXMgYWVhZCBjYW5ub3QgYmUgd2l0aCBjaXBoZXIgYW5kIGF1dGggY2Fz ZXMuDQoNClRoYXQncyB1c2VkIGludGVybmFsbHkgdG8gY29sbGVjdC9hbmFseXplIHhmb3JtcyBw cm92aWRlZCBieSBwcm0tPmNyeXB0b194Zm9ybS4NCg0KDQo+IA0KPiBleHRyYSBsaW5lDQo+ID4g Kw0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtjaGVja19jcnlwdG9feGZvcm0oc3RydWN0 IGNyeXB0b194Zm9ybSAqeGZvcm0pDQo+ID4gK3sNCj4gPiArCXVpbnRwdHJfdCBwOw0KPiA+ICsN Cj4gPiArCXAgPSAodWludHB0cl90KXhmb3JtLT5hdXRoIHwgKHVpbnRwdHJfdCl4Zm9ybS0+Y2lw aGVyOw0KPiB3aGF0IGlzIHRoZSBpbnRlbnQgb2YgdGhpcz8NCg0KSXQgaXMgdXNlZCBiZWxvdyB0 byBjaGVjayB0aGF0IGlmIGFlYWQgaXMgcHJlc2VudCBib3RoIGNpcGhlciBhbmQgYXV0aA0KYXJl ICBub3QuDQoNCj4gPiArDQo+ID4gKwkvKiBlaXRoZXIgYWVhZCBvciBib3RoIGF1dGggYW5kIGNp cGhlciBzaG91bGQgYmUgbm90IE5VTExzICovDQo+ID4gKwlpZiAoeGZvcm0tPmFlYWQpIHsNCj4g PiArCQlpZiAocCkNCj4gPiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwl9IGVsc2UgaWYgKHAg PT0gKHVpbnRwdHJfdCl4Zm9ybS0+YXV0aCkgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ ICsJfQ0KPiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGxvb2sgZ29vZC4gSXQgd2lsbCBtaXNzIHRo ZSBjYXNlIG9mIGNpcGhlciBvbmx5DQoNCkNpcGhlciBvbmx5IGlzIG5vdCBzdXBwb3J0ZWQgcmln aHQgbm93IGFuZCAgSSBhbSBub3QgYXdhcmUgYWJvdXQgcGxhbnMNCnRvIHN1cHBvcnQgaXQgaW4g ZnV0dXJlLg0KSWYgc29tZW9uZSB3b3VsZCBsaWtlIHRvIGFkZCBjaXBoZXIgb25sLHRoZW4geWVz IGhlL3NoZSBwcm9iYWJseSB3b3VsZA0KaGF2ZSB0byB1cGRhdGUgdGhpcyBmdW5jdGlvbi4NCg0K PiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50DQo+ ID4gK2ZpbGxfY3J5cHRvX3hmb3JtKHN0cnVjdCBjcnlwdG9feGZvcm0gKnhmb3JtLA0KPiA+ICsJ Y29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19zYV9wcm0gKnBybSkNCj4gPiArew0KPiA+ICsJc3RydWN0 IHJ0ZV9jcnlwdG9fc3ltX3hmb3JtICp4ZjsNCj4gPiArDQo+ID4gKwltZW1zZXQoeGZvcm0sIDAs IHNpemVvZigqeGZvcm0pKTsNCj4gPiArDQo+ID4gKwlmb3IgKHhmID0gcHJtLT5jcnlwdG9feGZv cm07IHhmICE9IE5VTEw7IHhmID0geGYtPm5leHQpIHsNCj4gPiArCQlpZiAoeGYtPnR5cGUgPT0g UlRFX0NSWVBUT19TWU1fWEZPUk1fQVVUSCkgew0KPiA+ICsJCQlpZiAoeGZvcm0tPmF1dGggIT0g TlVMTCkNCj4gPiArCQkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJCQl4Zm9ybS0+YXV0aCA9ICZ4 Zi0+YXV0aDsNCj4gPiArCQl9IGVsc2UgaWYgKHhmLT50eXBlID09IFJURV9DUllQVE9fU1lNX1hG T1JNX0NJUEhFUikgew0KPiA+ICsJCQlpZiAoeGZvcm0tPmNpcGhlciAhPSBOVUxMKQ0KPiA+ICsJ CQkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKwkJCXhmb3JtLT5jaXBoZXIgPSAmeGYtPmNpcGhlcjsN Cj4gPiArCQl9IGVsc2UgaWYgKHhmLT50eXBlID09IFJURV9DUllQVE9fU1lNX1hGT1JNX0FFQUQp IHsNCj4gPiArCQkJaWYgKHhmb3JtLT5hZWFkICE9IE5VTEwpDQo+ID4gKwkJCQlyZXR1cm4gLUVJ TlZBTDsNCj4gPiArCQkJeGZvcm0tPmFlYWQgPSAmeGYtPmFlYWQ7DQo+ID4gKwkJfSBlbHNlDQo+ ID4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBjaGVj a19jcnlwdG9feGZvcm0oeGZvcm0pOw0KPiA+ICt9DQo+IGhvdyBpcyB0aGlzIGZ1bmN0aW9uIGhh bmRsaW5nIHRoZSBpbmJvdW5kIGFuZCBvdXRib3VuZCBjYXNlcy4NCj4gSW4gaW5ib3VuZCBmaXJz dCB4Zm9ybSBpcyBhdXRoIGFuZCB0aGVuIGNpcGhlci4NCj4gSW4gb3V0Ym91bmQgZmlyc3QgaXMg Y2lwaGVyIGFuZCB0aGVuIGF1dGguIEkgdGhpbmsgdGhpcyBzaG91bGQgYmUNCj4gY2hlY2tlZCBp biB0aGUgbGliLg0KDQpJbnRlcmVzdGluZywgSSBkaWRuJ3Qga25vdyBhYm91dCBzdWNoIGxpbWl0 YXRpb24uDQpNeSB1bmRlcnN0YW5kaW5nIHdhcyB0aGF0IHRoZSBhbnkgb3JkZXIgKDxhdXRoLGNp cGhlcj4sIDxjaXBoZXIsYXV0aD4pDQpmb3IgYm90aCBpbmJvdW5kIGFuZCBvdXRib3VuZCBpcyBh Y2NlcHRhYmxlLg0KSXMgdGhhdCBvcmRlciByZXN0cmljdGlvbiBpcyBkb2N1bWVudGVkIHNvbWV3 aGVyZT8NCg0KPiBIZXJlIGZvciBsb29wIHNob3VsZCBub3QgYmUgdGhlcmUsIGFzIHRoZXJlIHdv dWxkIGJlIGF0IG1heCBvbmx5IDIgeGZvcm1zLg0KPiA+ICsNCj4gPiArdWludDY0X3QgX19ydGVf ZXhwZXJpbWVudGFsDQo+ID4gK3J0ZV9pcHNlY19zYV90eXBlKGNvbnN0IHN0cnVjdCBydGVfaXBz ZWNfc2EgKnNhKQ0KPiA+ICt7DQo+ID4gKwlyZXR1cm4gc2EtPnR5cGU7DQo+ID4gK30NCj4gPiAr DQo+ID4gK3N0YXRpYyBpbnQzMl90DQo+ID4gK2lwc2VjX3NhX3NpemUodWludDMyX3Qgd3N6LCB1 aW50NjRfdCB0eXBlLCB1aW50MzJfdCAqbmJfYnVja2V0KQ0KPiA+ICt7DQo+ID4gKwl1aW50MzJf dCBuLCBzejsNCj4gPiArDQo+ID4gKwluID0gMDsNCj4gPiArCWlmICh3c3ogIT0gMCAmJiAodHlw ZSAmIFJURV9JUFNFQ19TQVRQX0RJUl9NQVNLKSA9PQ0KPiA+ICsJCQlSVEVfSVBTRUNfU0FUUF9E SVJfSUIpDQo+ID4gKwkJbiA9IHJlcGxheV9udW1fYnVja2V0KHdzeik7DQo+ID4gKw0KPiA+ICsJ aWYgKG4gPiBXSU5ET1dfQlVDS0VUX01BWCkNCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiAr DQo+ID4gKwkqbmJfYnVja2V0ID0gbjsNCj4gPiArDQo+ID4gKwlzeiA9IHJzbl9zaXplKG4pOw0K PiA+ICsJc3ogKz0gc2l6ZW9mKHN0cnVjdCBydGVfaXBzZWNfc2EpOw0KPiA+ICsJcmV0dXJuIHN6 Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIF9fcnRlX2V4cGVyaW1lbnRhbA0KPiA+ICtydGVf aXBzZWNfc2FfZmluaShzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSkNCj4gPiArew0KPiA+ICsJbWVt c2V0KHNhLCAwLCBzYS0+c2l6ZSk7DQo+ID4gK30NCj4gV2hlcmUgaXMgdGhlIG1lbW9yeSBvZiAi c2EiIGdldHRpbmcgaW5pdGlhbGl6ZWQ/DQoNCk5vdCBzdXJlIEkgdW5kZXJzdGFuZCB5b3VyIHF1 ZXN0aW9uLi4uDQpEbyB5b3UgbWVhbiB3ZSBtaXNzZWQgbWVtc2V0KHNhLCAwLCBzaXplKQ0KaW4g cnRlX2lwc2VjX3NhX2luaXQoKT8NCg0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtlc3Bf c2FfaW5pdChzdHJ1Y3QgcnRlX2lwc2VjX3NhICpzYSwgY29uc3Qgc3RydWN0IHJ0ZV9pcHNlY19z YV9wcm0gKnBybSwNCj4gPiArCWNvbnN0IHN0cnVjdCBjcnlwdG9feGZvcm0gKmN4ZikNCj4gPiAr ew0KPiA+ICsJc3RhdGljIGNvbnN0IHVpbnQ2NF90IG1zayA9IFJURV9JUFNFQ19TQVRQX0RJUl9N QVNLIHwNCj4gPiArCQkJCVJURV9JUFNFQ19TQVRQX01PREVfTUFTSzsNCj4gPiArDQo+ID4gKwlp ZiAoY3hmLT5hZWFkICE9IE5VTEwpIHsNCj4gPiArCQkvKiBSRkMgNDEwNiAqLw0KPiA+ICsJCWlm IChjeGYtPmFlYWQtPmFsZ28gIT0gUlRFX0NSWVBUT19BRUFEX0FFU19HQ00pDQo+ID4gKwkJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJCXNhLT5pY3ZfbGVuID0gY3hmLT5hZWFkLT5kaWdlc3RfbGVu Z3RoOw0KPiA+ICsJCXNhLT5pdl9vZnMgPSBjeGYtPmFlYWQtPml2Lm9mZnNldDsNCj4gPiArCQlz YS0+aXZfbGVuID0gc2l6ZW9mKHVpbnQ2NF90KTsNCj4gPiArCQlzYS0+cGFkX2FsaWduID0gNDsN Cj4gaGFyZCBjb2RpbmcgPz8NCg0KV2lsbCBhZGQgc29tZSBkZWZpbmUgb3IgZW51bS4NCg0KDQo+ ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXNhLT5pY3ZfbGVuID0gY3hmLT5hdXRoLT5kaWdlc3RfbGVu Z3RoOw0KPiA+ICsJCXNhLT5pdl9vZnMgPSBjeGYtPmNpcGhlci0+aXYub2Zmc2V0Ow0KPiA+ICsJ CXNhLT5zcWhfbGVuID0gSVNfRVNOKHNhKSA/IHNpemVvZih1aW50MzJfdCkgOiAwOw0KPiA+ICsJ CWlmIChjeGYtPmNpcGhlci0+YWxnbyA9PSBSVEVfQ1JZUFRPX0NJUEhFUl9OVUxMKSB7DQo+ID4g KwkJCXNhLT5wYWRfYWxpZ24gPSA0Ow0KPiA+ICsJCQlzYS0+aXZfbGVuID0gMDsNCj4gPiArCQl9 IGVsc2UgaWYgKGN4Zi0+Y2lwaGVyLT5hbGdvID09IFJURV9DUllQVE9fQ0lQSEVSX0FFU19DQkMp IHsNCj4gPiArCQkJc2EtPnBhZF9hbGlnbiA9IElQU0VDX01BWF9JVl9TSVpFOw0KPiA+ICsJCQlz YS0+aXZfbGVuID0gSVBTRUNfTUFYX0lWX1NJWkU7DQo+ID4gKwkJfSBlbHNlDQo+ID4gKwkJCXJl dHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCg0KDQo+ID4gKw0KPiA+ICtpbnQgX19ydGVf ZXhwZXJpbWVudGFsDQo+ID4gK3J0ZV9pcHNlY19zYV9pbml0KHN0cnVjdCBydGVfaXBzZWNfc2Eg KnNhLCBjb25zdCBzdHJ1Y3QgcnRlX2lwc2VjX3NhX3BybSAqcHJtLA0KPiA+ICsJdWludDMyX3Qg c2l6ZSkNCj4gPiArew0KPiA+ICsJaW50MzJfdCByYywgc3o7DQo+ID4gKwl1aW50MzJfdCBuYjsN Cj4gPiArCXVpbnQ2NF90IHR5cGU7DQo+ID4gKwlzdHJ1Y3QgY3J5cHRvX3hmb3JtIGN4ZjsNCj4g PiArDQo+ID4gKwlpZiAoc2EgPT0gTlVMTCB8fCBwcm0gPT0gTlVMTCkNCj4gPiArCQlyZXR1cm4g LUVJTlZBTDsNCj4gPiArDQo+ID4gKwkvKiBkZXRlcm1pbmUgU0EgdHlwZSAqLw0KPiA+ICsJcmMg PSBmaWxsX3NhX3R5cGUocHJtLCAmdHlwZSk7DQo+ID4gKwlpZiAocmMgIT0gMCkNCj4gPiArCQly ZXR1cm4gcmM7DQo+ID4gKw0KPiA+ICsJLyogZGV0ZXJtaW5lIHJlcXVpcmVkIHNpemUgKi8NCj4g PiArCXN6ID0gaXBzZWNfc2Ffc2l6ZShwcm0tPnJlcGxheV93aW5fc3osIHR5cGUsICZuYik7DQo+ ID4gKwlpZiAoc3ogPCAwKQ0KPiA+ICsJCXJldHVybiBzejsNCj4gPiArCWVsc2UgaWYgKHNpemUg PCAodWludDMyX3Qpc3opDQo+ID4gKwkJcmV0dXJuIC1FTk9TUEM7DQo+ID4gKw0KPiA+ICsJLyog b25seSBlc3AgaXMgc3VwcG9ydGVkIHJpZ2h0IG5vdyAqLw0KPiA+ICsJaWYgKHBybS0+aXBzZWNf eGZvcm0ucHJvdG8gIT0gUlRFX1NFQ1VSSVRZX0lQU0VDX1NBX1BST1RPX0VTUCkNCj4gPiArCQly ZXR1cm4gLUVJTlZBTDsNCj4gPiArDQo+ID4gKwlpZiAocHJtLT5pcHNlY194Zm9ybS5tb2RlID09 IFJURV9TRUNVUklUWV9JUFNFQ19TQV9NT0RFX1RVTk5FTCAmJg0KPiA+ICsJCQlwcm0tPnR1bi5o ZHJfbGVuID4gc2l6ZW9mKHNhLT5oZHIpKQ0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsN Cj4gPiArCXJjID0gZmlsbF9jcnlwdG9feGZvcm0oJmN4ZiwgcHJtKTsNCj4gPiArCWlmIChyYyAh PSAwKQ0KPiA+ICsJCXJldHVybiByYzsNCj4gPiArDQo+ID4gKwlzYS0+dHlwZSA9IHR5cGU7DQo+ ID4gKwlzYS0+c2l6ZSA9IHN6Ow0KPiA+ICsNCj4gPiArCS8qIGNoZWNrIGZvciBFU04gZmxhZyAq Lw0KPiA+ICsJc2EtPnNxbl9tYXNrID0gKHBybS0+aXBzZWNfeGZvcm0ub3B0aW9ucy5lc24gPT0g MCkgPw0KPiA+ICsJCVVJTlQzMl9NQVggOiBVSU5UNjRfTUFYOw0KPiA+ICsNCj4gPiArCXJjID0g ZXNwX3NhX2luaXQoc2EsIHBybSwgJmN4Zik7DQo+ID4gKwlpZiAocmMgIT0gMCkNCj4gPiArCQly dGVfaXBzZWNfc2FfZmluaShzYSk7DQo+ID4gKw0KPiA+ICsJLyogZmlsbCByZXBsYXkgd2luZG93 IHJlbGF0ZWQgZmllbGRzICovDQo+ID4gKwlpZiAobmIgIT0gMCkgew0KPiBtb3ZlIHRoaXMgd2hl cmUgbmIgaXMgZ2V0dGluZyB1cGRhdGVkLg0KDQpJIGRvbid0IHRoaW5rIGl0IGlzIGEgZ29vZCBp ZGVhLg0KV2UgY2FsdWxhdGUgbmIgZmlyc3QgYW5kIHJlcXVpcmVkIHNhIHNpemUgZmlyc3Qgd2l0 aG91dCB1cGRhdGluZyBwcm92aWRlZCBtZW1vcnkgYnVmZmVyLg0KSWYgdGhlIGJ1ZmZlciBpcyBu b3QgYmlnIGVub3VnaCwgd2lsbCByZXR1cm4gYW4gZXJyb3Igd2l0aG91dCB1cGRhdGluZyB0aGUg YnVmZmVyLg0KQ2xlYW5lciBhbmQgc2FmZXIgdG8ga2VlcCBpdCBhcyBpdCBpcy4NCg0KPiA+ICsJ CXNhLT5yZXBsYXkud2luX3N6ID0gcHJtLT5yZXBsYXlfd2luX3N6Ow0KPiA+ICsJCXNhLT5yZXBs YXkubmJfYnVja2V0ID0gbmI7DQo+ID4gKwkJc2EtPnJlcGxheS5idWNrZXRfaW5kZXhfbWFzayA9 IHNhLT5yZXBsYXkubmJfYnVja2V0IC0gMTsNCj4gPiArCQlzYS0+c3FuLmluYiA9IChzdHJ1Y3Qg cmVwbGF5X3NxbiAqKShzYSArIDEpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiBzejsN Cj4gPiArfQ0K