From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6C58F4245A; Sun, 22 Jan 2023 22:17:53 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 19762400EF; Sun, 22 Jan 2023 22:17:53 +0100 (CET) Received: from smartserver.smartsharesystems.com (smartserver.smartsharesystems.com [77.243.40.215]) by mails.dpdk.org (Postfix) with ESMTP id B6262400D4 for ; Sun, 22 Jan 2023 22:17:51 +0100 (CET) Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Subject: RE: [PATCH v5] mempool cache: add zero-copy get and put functions Date: Sun, 22 Jan 2023 22:17:47 +0100 X-MimeOLE: Produced By Microsoft Exchange V6.5 Message-ID: <98CBD80474FA8B44BF855DF32C47DC35D876A3@smartserver.smartshare.dk> In-Reply-To: <60d35262-51bd-3d74-28f8-c2dda50d3400@yandex.ru> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PATCH v5] mempool cache: add zero-copy get and put functions Thread-Index: AdkuoPUwLHTFLOZWS9qt0ydpKGJpngAAMqPA References: <98CBD80474FA8B44BF855DF32C47DC35D87488@smartserver.smartshare.dk> <20221227151700.80887-1-mb@smartsharesystems.com> <60d35262-51bd-3d74-28f8-c2dda50d3400@yandex.ru> From: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= To: "Konstantin Ananyev" , , , , , , , Cc: X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org PiBGcm9tOiBLb25zdGFudGluIEFuYW55ZXYgW21haWx0bzprb25zdGFudGluLnYuYW5hbnlldkB5 YW5kZXgucnVdDQo+IFNlbnQ6IFN1bmRheSwgMjIgSmFudWFyeSAyMDIzIDIxLjM1DQo+IA0KPiBI aSBNb3J0ZW4sDQo+IA0KPiBGZXcgbml0cywgc2VlIGJlbG93Lg0KPiBBbHNvIEkgc3RpbGwgdGhp bmsgd2UgZG8gbmVlZCBhIHRlc3QgY2FzZSBmb3IgX3pjX2dldF8gYmVmb3JlDQo+IGFjY2VwdGlu ZyBpdCBpbiB0aGUgbWFpbmxpbmUuDQoNClBva2luZyBhdCBteSBiYWQgY29uc2NpZW5jZS4uLiA6 LSkNCg0KSXQncyBvbiBteSB0b2RvLWxpc3QuIEFwcGFyZW50bHkgbm90IGhpZ2ggZW5vdWdoLiA7 LSkNCg0KPiBXaXRoIHRoYXQgaW4gcGxhY2U6DQo+IEFja2VkLWJ5OiBLb25zdGFudGluIEFuYW55 ZXYgPGtvbnN0YW50aW4udi5hbmFueWV2QHlhbmRleC5ydT4NCj4gDQo+ID4gWmVyby1jb3B5IGFj Y2VzcyB0byBtZW1wb29sIGNhY2hlcyBpcyBiZW5lZmljaWFsIGZvciBQTUQgcGVyZm9ybWFuY2Us DQo+IGFuZA0KPiA+IG11c3QgYmUgcHJvdmlkZWQgYnkgdGhlIG1lbXBvb2wgbGlicmFyeSB0byBm aXggW0J1ZyAxMDUyXSB3aXRob3V0IGENCj4gPiBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLg0KPiA+ DQo+ID4gW0J1ZyAxMDUyXTogaHR0cHM6Ly9idWdzLmRwZGsub3JnL3Nob3dfYnVnLmNnaT9pZD0x MDUyDQo+ID4NCj4gPiBCdWd6aWxsYSBJRDogMTA1Mg0KPiA+DQo+ID4gdjU6DQo+ID4gKiBCdWdm aXg6IENvbXBhcmUgemVyby1jb3B5IGdldCByZXF1ZXN0IHRvIHRoZSBjYWNoZSBzaXplIGluc3Rl YWQgb2YNCj4gdGhlDQo+ID4gICAgZmx1c2ggdGhyZXNob2xkOyBvdGhlcndpc2UgcmVmaWxsIGNv dWxkIG92ZXJmbG93IHRoZSBtZW1vcnkNCj4gYWxsb2NhdGVkDQo+ID4gICAgZm9yIHRoZSBjYWNo ZS4gKEFuZHJldykNCj4gPiAqIFNwbGl0IHRoZSB6ZXJvLWNvcHkgcHV0IGZ1bmN0aW9uIGludG8g YW4gaW50ZXJuYWwgZnVuY3Rpb24gZG9pbmcNCj4gdGhlDQo+ID4gICAgd29yaywgYW5kIGEgcHVi bGljIGZ1bmN0aW9uIHdpdGggdHJhY2UuDQo+ID4gKiBBdm9pZCBjb2RlIGR1cGxpY2F0aW9uIGJ5 IHJld3JpdGluZyBydGVfbWVtcG9vbF9kb19nZW5lcmljX3B1dCgpIHRvDQo+IHVzZQ0KPiA+ICAg IHRoZSBpbnRlcm5hbCB6ZXJvLWNvcHkgcHV0IGZ1bmN0aW9uLiAoQW5kcmV3KQ0KPiA+ICogQ29y cmVjdGVkIHRoZSByZXR1cm4gdHlwZSBvZiBydGVfbWVtcG9vbF9jYWNoZV96Y19wdXRfYnVsaygp IGZyb20NCj4gdm9pZCAqDQo+ID4gICAgdG8gdm9pZCAqKjsgaXQgcmV0dXJucyBhIHBvaW50ZXIg dG8gYW4gYXJyYXkgb2Ygb2JqZWN0cy4NCj4gPiAqIEZpeCBjb2Rpbmcgc3R5bGU6IEFkZCBtaXNz aW5nIGN1cmx5IGJyYWNrZXRzLiAoQW5kcmV3KQ0KPiA+IHY0Og0KPiA+ICogRml4IGNoZWNrcGF0 Y2ggd2FybmluZ3MuDQo+ID4gdjM6DQo+ID4gKiBCdWdmaXg6IFJlc3BlY3QgdGhlIGNhY2hlIHNp emU7IGNvbXBhcmUgdG8gdGhlIGZsdXNoIHRocmVzaG9sZA0KPiBpbnN0ZWFkDQo+ID4gICAgb2Yg UlRFX01FTVBPT0xfQ0FDSEVfTUFYX1NJWkUuDQo+ID4gKiBBZGRlZCAncmV3aW5kJyBmdW5jdGlv biBmb3IgaW5jb21wbGV0ZSAncHV0JyBvcGVyYXRpb25zLg0KPiAoS29uc3RhbnRpbikNCj4gPiAq IFJlcGxhY2UgUlRFX0FTU0VSVHMgd2l0aCBydW50aW1lIGNoZWNrcyBvZiB0aGUgcmVxdWVzdCBz aXplLg0KPiA+ICAgIEluc3RlYWQgb2YgZmFpbGluZywgcmV0dXJuIE5VTEwgaWYgdGhlIHJlcXVl c3QgaXMgdG9vIGJpZy4NCj4gKEtvbnN0YW50aW4pDQo+ID4gKiBNb2RpZmllZCBjb21wYXJpc29u IHRvIHByZXZlbnQgb3ZlcmZsb3cgaWYgbiBpcyByZWFsbHkgaHVnZSBhbmQgbGVuDQo+IGlzDQo+ ID4gICAgbm9uLXplcm8uDQo+ID4gKiBVcGRhdGVkIHRoZSBjb21tZW50cyBpbiB0aGUgY29kZS4N Cj4gPiB2MjoNCj4gPiAqIEZpeCBjaGVja3BhdGNoIHdhcm5pbmdzLg0KPiA+ICogRml4IG1pc3Np bmcgcmVnaXN0cmF0aW9uIG9mIHRyYWNlIHBvaW50cy4NCj4gPiAqIFRoZSBmdW5jdGlvbnMgYXJl IGlubGluZSwgc28gdGhleSBkb24ndCBnbyBpbnRvIHRoZSBtYXAgZmlsZS4NCj4gPiB2MSBjaGFu Z2VzIGZyb20gdGhlIFJGQzoNCj4gPiAqIFJlbW92ZWQgcnVuLXRpbWUgcGFyYW1ldGVyIGNoZWNr cy4gKEhvbm5hcHBhKQ0KPiA+ICAgIFRoaXMgaXMgYSBob3QgZmFzdCBwYXRoIGZ1bmN0aW9uOyBy ZXF1aXJpbmcgY29ycmVjdCBhcHBsaWNhdGlvbg0KPiA+ICAgIGJlaGF2aW91ciwgaS5lLiBmdW5j dGlvbiBwYXJhbWV0ZXJzIG11c3QgYmUgdmFsaWQuDQo+ID4gKiBBZGRlZCBSVEVfQVNTRVJUIGZv ciBwYXJhbWV0ZXJzIGluc3RlYWQuDQo+ID4gICAgQ29kZSBmb3IgdGhpcyBpcyBvbmx5IGdlbmVy YXRlZCBpZiBidWlsdCB3aXRoIFJURV9FTkFCTEVfQVNTRVJULg0KPiA+ICogUmVtb3ZlZCBmYWxs YmFjayB3aGVuICdjYWNoZScgcGFyYW1ldGVyIGlzIG5vdCBzZXQuIChIb25uYXBwYSkNCj4gPiAq IENob3NlIHRoZSBzaW1wbGUgZ2V0IGZ1bmN0aW9uOyBpLmUuIGRvIG5vdCBtb3ZlIHRoZSBleGlz dGluZw0KPiBvYmplY3RzIGluDQo+ID4gICAgdGhlIGNhY2hlIHRvIHRoZSB0b3Agb2YgdGhlIG5l dyBzdGFjaywganVzdCBsZWF2ZSB0aGVtIGF0IHRoZQ0KPiBib3R0b20uDQo+ID4gKiBSZW5hbWVk IHRoZSBmdW5jdGlvbnMuIE90aGVyIHN1Z2dlc3Rpb25zIGFyZSB3ZWxjb21lLCBvZiBjb3Vyc2Uu IDstDQo+ICkNCj4gPiAqIFVwZGF0ZWQgdGhlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucy4NCj4gPiAq IEFkZGVkIHRoZSBmdW5jdGlvbnMgdG8gdHJhY2VfZnAgYW5kIHZlcnNpb24ubWFwLg0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hhcmVzeXN0ZW1zLmNv bT4NCj4gPiAtLS0NCj4gPiAgIGxpYi9tZW1wb29sL21lbXBvb2xfdHJhY2VfcG9pbnRzLmMgfCAg IDkgKysNCj4gPiAgIGxpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmggICAgICAgICAgfCAyMzcgKysr KysrKysrKysrKysrKysrKysrKysrKy0NCj4gLS0tDQo+ID4gICBsaWIvbWVtcG9vbC9ydGVfbWVt cG9vbF90cmFjZV9mcC5oIHwgIDIzICsrKw0KPiA+ICAgbGliL21lbXBvb2wvdmVyc2lvbi5tYXAg ICAgICAgICAgICB8ICAgNSArDQo+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDI0NSBpbnNlcnRpb25z KCspLCAyOSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9saWIvbWVtcG9vbC9t ZW1wb29sX3RyYWNlX3BvaW50cy5jDQo+IGIvbGliL21lbXBvb2wvbWVtcG9vbF90cmFjZV9wb2lu dHMuYw0KPiA+IGluZGV4IDRhZDc2ZGViMzQuLjgzZDM1M2E3NjQgMTAwNjQ0DQo+ID4gLS0tIGEv bGliL21lbXBvb2wvbWVtcG9vbF90cmFjZV9wb2ludHMuYw0KPiA+ICsrKyBiL2xpYi9tZW1wb29s L21lbXBvb2xfdHJhY2VfcG9pbnRzLmMNCj4gPiBAQCAtNzcsMyArNzcsMTIgQEANCj4gUlRFX1RS QUNFX1BPSU5UX1JFR0lTVEVSKHJ0ZV9tZW1wb29sX3RyYWNlX29wc19mcmVlLA0KPiA+DQo+ID4g ICBSVEVfVFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX21lbXBvb2xfdHJhY2Vfc2V0X29wc19ieW5h bWUsDQo+ID4gICAJbGliLm1lbXBvb2wuc2V0Lm9wcy5ieW5hbWUpDQo+ID4gKw0KPiA+ICtSVEVf VFJBQ0VfUE9JTlRfUkVHSVNURVIocnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X2J1bGss DQo+ID4gKwlsaWIubWVtcG9vbC5jYWNoZS56Yy5wdXQuYnVsaykNCj4gPiArDQo+ID4gK1JURV9U UkFDRV9QT0lOVF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5k LA0KPiA+ICsJbGliLm1lbXBvb2wuY2FjaGUuemMucHV0LnJld2luZCkNCj4gPiArDQo+ID4gK1JU RV9UUkFDRV9QT0lOVF9SRUdJU1RFUihydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19nZXRfYnVs aywNCj4gPiArCWxpYi5tZW1wb29sLmNhY2hlLnpjLmdldC5idWxrKQ0KPiA+IGRpZmYgLS1naXQg YS9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbC5oIGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2wuaA0K PiA+IGluZGV4IDlmNTMwZGIyNGIuLjVlZmQzYzJiNWIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL21l bXBvb2wvcnRlX21lbXBvb2wuaA0KPiA+ICsrKyBiL2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sLmgN Cj4gPiBAQCAtNDcsNiArNDcsNyBAQA0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9yaW5nLmg+DQo+ID4g ICAjaW5jbHVkZSA8cnRlX21lbWNweS5oPg0KPiA+ICAgI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4N Cj4gPiArI2luY2x1ZGUgPHJ0ZV9lcnJuby5oPg0KPiA+DQo+ID4gICAjaW5jbHVkZSAicnRlX21l bXBvb2xfdHJhY2VfZnAuaCINCj4gPg0KPiA+IEBAIC0xMzQ2LDYgKzEzNDcsMTk3IEBAIHJ0ZV9t ZW1wb29sX2NhY2hlX2ZsdXNoKHN0cnVjdA0KPiBydGVfbWVtcG9vbF9jYWNoZSAqY2FjaGUsDQo+ ID4gICAJY2FjaGUtPmxlbiA9IDA7DQo+ID4gICB9DQo+ID4NCj4gPiArLyoqDQo+ID4gKyAqIEBp bnRlcm5hbCB1c2VkIGJ5IHJ0ZV9tZW1wb29sX2NhY2hlX3pjX3B1dF9idWxrKCkgYW5kDQo+IHJ0 ZV9tZW1wb29sX2RvX2dlbmVyaWNfcHV0KCkuDQo+ID4gKyAqDQo+ID4gKyAqIFplcm8tY29weSBw dXQgb2JqZWN0cyBpbiBhIHVzZXItb3duZWQgbWVtcG9vbCBjYWNoZSBiYWNrZWQgYnkgdGhlDQo+ IHNwZWNpZmllZCBtZW1wb29sLg0KPiA+ICsgKg0KPiA+ICsgKiBAcGFyYW0gY2FjaGUNCj4gPiAr ICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gKyAqIEBwYXJhbSBtcA0K PiA+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbC4NCj4gPiArICogQHBhcmFtIG4NCj4g PiArICogICBUaGUgbnVtYmVyIG9mIG9iamVjdHMgdG8gYmUgcHV0IGluIHRoZSBtZW1wb29sIGNh Y2hlLg0KPiA+ICsgKiBAcmV0dXJuDQo+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gd2hlcmUgdG8g cHV0IHRoZSBvYmplY3RzIGluIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ICsgKiAgIE5VTEwgaWYg dGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBjYWNoZSwgaS5lLg0KPiA+ICsg KiAgIGV4Y2VlZHMgdGhlIGNhY2hlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiArICovDQo+ID4gK3N0 YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQgKioNCj4gPiArX19ydGVfbWVtcG9vbF9jYWNo ZV96Y19wdXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ICsJCXN0 cnVjdCBydGVfbWVtcG9vbCAqbXAsDQo+ID4gKwkJdW5zaWduZWQgaW50IG4pDQo+ID4gK3sNCj4g PiArCXZvaWQgKipjYWNoZV9vYmpzOw0KPiA+ICsNCj4gPiArCVJURV9BU1NFUlQoY2FjaGUgIT0g TlVMTCk7DQo+ID4gKwlSVEVfQVNTRVJUKG1wICE9IE5VTEwpOw0KPiA+ICsNCj4gPiArCWlmIChu IDw9IGNhY2hlLT5mbHVzaHRocmVzaCAtIGNhY2hlLT5sZW4pIHsNCj4gPiArCQkvKg0KPiA+ICsJ CSAqIFRoZSBvYmplY3RzIGNhbiBiZSBhZGRlZCB0byB0aGUgY2FjaGUgd2l0aG91dCBjcm9zc2lu Zw0KPiB0aGUNCj4gPiArCQkgKiBmbHVzaCB0aHJlc2hvbGQuDQo+ID4gKwkJICovDQo+ID4gKwkJ Y2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jqc1tjYWNoZS0+bGVuXTsNCj4gPiArCQljYWNoZS0+bGVu ICs9IG47DQo+ID4gKwl9IGVsc2UgaWYgKGxpa2VseShuIDw9IGNhY2hlLT5mbHVzaHRocmVzaCkp IHsNCj4gPiArCQkvKg0KPiA+ICsJCSAqIFRoZSByZXF1ZXN0IGl0c2VsZiBmaXRzIGludG8gdGhl IGNhY2hlLg0KPiA+ICsJCSAqIEJ1dCBmaXJzdCwgdGhlIGNhY2hlIG11c3QgYmUgZmx1c2hlZCB0 byB0aGUgYmFja2VuZCwgc28NCj4gPiArCQkgKiBhZGRpbmcgdGhlIG9iamVjdHMgZG9lcyBub3Qg Y3Jvc3MgdGhlIGZsdXNoIHRocmVzaG9sZC4NCj4gPiArCQkgKi8NCj4gPiArCQljYWNoZV9vYmpz ID0gJmNhY2hlLT5vYmpzWzBdOw0KPiA+ICsJCXJ0ZV9tZW1wb29sX29wc19lbnF1ZXVlX2J1bGso bXAsIGNhY2hlX29ianMsIGNhY2hlLT5sZW4pOw0KPiA+ICsJCWNhY2hlLT5sZW4gPSBuOw0KPiA+ ICsJfSBlbHNlIHsNCj4gPiArCQkvKiBUaGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZyBmb3Ig dGhlIGNhY2hlLiAqLw0KPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBwdXRfYnVsaywgMSk7DQo+ID4gKwlS VEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X29ianMsIG4pOw0KPiA+ICsNCj4g PiArCXJldHVybiBjYWNoZV9vYmpzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog QHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlzIEFQSSBtYXkgY2hhbmdlLCBv ciBiZSByZW1vdmVkLCB3aXRob3V0DQo+IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICog WmVyby1jb3B5IHB1dCBvYmplY3RzIGluIGEgdXNlci1vd25lZCBtZW1wb29sIGNhY2hlIGJhY2tl ZCBieSB0aGUNCj4gc3BlY2lmaWVkIG1lbXBvb2wuDQo+ID4gKyAqDQo+ID4gKyAqIEBwYXJhbSBj YWNoZQ0KPiA+ICsgKiAgIEEgcG9pbnRlciB0byB0aGUgbWVtcG9vbCBjYWNoZS4NCj4gPiArICog QHBhcmFtIG1wDQo+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sLg0KPiA+ICsgKiBA cGFyYW0gbg0KPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb2JqZWN0cyB0byBiZSBwdXQgaW4gdGhl IG1lbXBvb2wgY2FjaGUuDQo+ID4gKyAqIEByZXR1cm4NCj4gPiArICogICBUaGUgcG9pbnRlciB0 byB3aGVyZSB0byBwdXQgdGhlIG9iamVjdHMgaW4gdGhlIG1lbXBvb2wgY2FjaGUuDQo+ID4gKyAq ICAgTlVMTCBpZiB0aGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlLCBp LmUuDQo+ID4gKyAqICAgZXhjZWVkcyB0aGUgY2FjaGUgZmx1c2ggdGhyZXNob2xkLg0KPiA+ICsg Ki8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0YXRpYyBfX3J0ZV9hbHdheXNfaW5s aW5lIHZvaWQgKioNCj4gPiArcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoc3RydWN0IHJ0 ZV9tZW1wb29sX2NhY2hlICpjYWNoZSwNCj4gPiArCQlzdHJ1Y3QgcnRlX21lbXBvb2wgKm1wLA0K PiA+ICsJCXVuc2lnbmVkIGludCBuKQ0KPiA+ICt7DQo+ID4gKwlSVEVfQVNTRVJUKGNhY2hlICE9 IE5VTEwpOw0KPiA+ICsJUlRFX0FTU0VSVChtcCAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKwlydGVf bWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfYnVsayhjYWNoZSwgbXAsIG4pOw0KPiA+ICsJcmV0 dXJuIF9fcnRlX21lbXBvb2xfY2FjaGVfemNfcHV0X2J1bGsoY2FjaGUsIG1wLCBuKTsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIEB3YXJuaW5nDQo+ID4gKyAqIEBiIEVYUEVSSU1F TlRBTDogVGhpcyBBUEkgbWF5IGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCwgd2l0aG91dA0KPiBwcmlv ciBub3RpY2UuDQo+ID4gKyAqDQo+ID4gKyAqIFplcm8tY29weSB1bi1wdXQgb2JqZWN0cyBpbiBh IHVzZXItb3duZWQgbWVtcG9vbCBjYWNoZS4NCj4gPiArICoNCj4gPiArICogQHBhcmFtIGNhY2hl DQo+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ICsgKiBAcGFy YW0gbg0KPiA+ICsgKiAgIFRoZSBudW1iZXIgb2Ygb2JqZWN0cyBub3QgcHV0IGluIHRoZSBtZW1w b29sIGNhY2hlIGFmdGVyDQo+IGNhbGxpbmcNCj4gPiArICogICBydGVfbWVtcG9vbF9jYWNoZV96 Y19wdXRfYnVsaygpLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0 YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQNCj4gPiArcnRlX21lbXBvb2xfY2FjaGVfemNf cHV0X3Jld2luZChzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ICsJCXVuc2ln bmVkIGludCBuKQ0KPiA+ICt7DQo+ID4gKwlSVEVfQVNTRVJUKGNhY2hlICE9IE5VTEwpOw0KPiA+ ICsJUlRFX0FTU0VSVChuIDw9IGNhY2hlLT5sZW4pOw0KPiA+ICsNCj4gPiArCXJ0ZV9tZW1wb29s X3RyYWNlX2NhY2hlX3pjX3B1dF9yZXdpbmQoY2FjaGUsIG4pOw0KPiA+ICsNCj4gPiArCWNhY2hl LT5sZW4gLT0gbjsNCj4gPiArDQo+ID4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNo ZSwgcHV0X29ianMsIChpbnQpLW4pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog QHdhcm5pbmcNCj4gPiArICogQGIgRVhQRVJJTUVOVEFMOiBUaGlzIEFQSSBtYXkgY2hhbmdlLCBv ciBiZSByZW1vdmVkLCB3aXRob3V0DQo+IHByaW9yIG5vdGljZS4NCj4gPiArICoNCj4gPiArICog WmVyby1jb3B5IGdldCBvYmplY3RzIGZyb20gYSB1c2VyLW93bmVkIG1lbXBvb2wgY2FjaGUgYmFj a2VkIGJ5DQo+IHRoZSBzcGVjaWZpZWQgbWVtcG9vbC4NCj4gPiArICoNCj4gPiArICogQHBhcmFt IGNhY2hlDQo+ID4gKyAqICAgQSBwb2ludGVyIHRvIHRoZSBtZW1wb29sIGNhY2hlLg0KPiA+ICsg KiBAcGFyYW0gbXANCj4gPiArICogICBBIHBvaW50ZXIgdG8gdGhlIG1lbXBvb2wuDQo+ID4gKyAq IEBwYXJhbSBuDQo+ID4gKyAqICAgVGhlIG51bWJlciBvZiBvYmplY3RzIHRvIHByZWZldGNoIGlu dG8gdGhlIG1lbXBvb2wgY2FjaGUuDQo+IA0KPiBXaHkgbm90ICdnZXQnIGluc3RlYWQgb2YgJ3By ZWZldGNoJz8NCg0KVGhpcyB3YXMgbXkgdGhpbmtpbmc6DQoNClRoZSBmdW5jdGlvbiAicHJlZmV0 Y2hlcyIgdGhlIG9iamVjdHMgaW50byB0aGUgY2FjaGUuIEl0IGlzIHRoZSBhcHBsaWNhdGlvbiBp dHNlbGYgdGhhdCAiZ2V0cyIgdGhlIG9iamVjdHMgZnJvbSB0aGUgY2FjaGUgYWZ0ZXIgaGF2aW5n IGNhbGxlZCB0aGUgZnVuY3Rpb24uDQpZb3UgbWlnaHQgYWxzbyBub3RpY2UgdGhhdCB0aGUgbiBw YXJhbWV0ZXIgZm9yIHRoZSB6Y19wdXQoKSBmdW5jdGlvbiBpcyBkZXNjcmliZWQgYXMgInRvIGJl IHB1dCIgKGZ1dHVyZSksIG5vdCAidG8gcHV0IiAobm93KSBpbiB0aGUgY2FjaGUuDQoNCk9uIHRo ZSBvdGhlciBoYW5kLCBJIGNob3NlICJaZXJvLWNvcHkgZ2V0IiBmb3IgdGhlIGZ1bmN0aW9uIGhl YWRsaW5lIHRvIGtlZXAgaXQgc2ltcGxlLg0KDQpJZiB5b3UgdGhpbmsgImdldCIgaXMgYSBtb3Jl IGNvcnJlY3QgZGVzY3JpcHRpb24gb2YgdGhlIG4gcGFyYW1ldGVyLCBJIGNhbiBjaGFuZ2UgaXQu DQoNCkFsdGVybmF0aXZlbHksIEkgY2FuIHVzZSB0aGUgc2FtZSBzdHlsZSBhcyB6Y19wdXQoKSwg aS5lLiAidG8gYmUgZ290dGVuIGZyb20gdGhlIG1lbXBvb2wgY2FjaGUiIC0gYnV0IHRoYXQgd291 bGQgcmVxdWlyZSBpbnB1dCBmcm9tIGEgbmF0aXZlbHkgRW5nbGlzaCBzcGVha2luZyBwZXJzb24s IGJlY2F1c2UgRGFuaXNoIGFuZCBFbmdsaXNoIGdyYW1tYXIgaXMgdmVyeSBkaWZmZXJlbnQsIGFu ZCBJIGFtIGhpZ2hseSB1bmNlcnRhaW4gYWJvdXQgbXkgRW5nbGlzaCBncmFtbWFyIGhlcmUhIEkg b3JpZ2luYWxseSBjb25zaWRlcmVkIHRoaXMgcGhyYXNlLCBidXQgY29uY2x1ZGVkIHRoYXQgdGhl ICJwcmVmZXRjaCIgZGVzY3JpcHRpb24gd2FzIGVhc2llciB0byB1bmRlcnN0YW5kIC0gZXNwZWNp YWxseSBmb3Igbm9uLW5hdGl2ZSBFbmdsaXNoIHJlYWRlcnMuDQoNCj4gDQo+IA0KPiA+ICsgKiBA cmV0dXJuDQo+ID4gKyAqICAgVGhlIHBvaW50ZXIgdG8gdGhlIG9iamVjdHMgaW4gdGhlIG1lbXBv b2wgY2FjaGUuDQo+ID4gKyAqICAgTlVMTCBvbiBlcnJvcjsgaS5lLiB0aGUgY2FjaGUgKyB0aGUg cG9vbCBkb2VzIG5vdCBjb250YWluICduJw0KPiBvYmplY3RzLg0KPiA+ICsgKiAgIFdpdGggcnRl X2Vycm5vIHNldCB0byB0aGUgZXJyb3IgY29kZSBvZiB0aGUgbWVtcG9vbCBkZXF1ZXVlDQo+IGZ1 bmN0aW9uLA0KPiA+ICsgKiAgIG9yIEVJTlZBTCBpZiB0aGUgcmVxdWVzdCBpdHNlbGYgaXMgdG9v IGJpZyBmb3IgdGhlIGNhY2hlLCBpLmUuDQo+ID4gKyAqICAgZXhjZWVkcyB0aGUgY2FjaGUgZmx1 c2ggdGhyZXNob2xkLg0KPiA+ICsgKi8NCj4gPiArX19ydGVfZXhwZXJpbWVudGFsDQo+ID4gK3N0 YXRpYyBfX3J0ZV9hbHdheXNfaW5saW5lIHZvaWQgKg0KPiA+ICtydGVfbWVtcG9vbF9jYWNoZV96 Y19nZXRfYnVsayhzdHJ1Y3QgcnRlX21lbXBvb2xfY2FjaGUgKmNhY2hlLA0KPiA+ICsJCXN0cnVj dCBydGVfbWVtcG9vbCAqbXAsDQo+ID4gKwkJdW5zaWduZWQgaW50IG4pDQo+ID4gK3sNCj4gPiAr CXVuc2lnbmVkIGludCBsZW4sIHNpemU7DQo+ID4gKw0KPiA+ICsJUlRFX0FTU0VSVChjYWNoZSAh PSBOVUxMKTsNCj4gPiArCVJURV9BU1NFUlQobXAgIT0gTlVMTCk7DQo+ID4gKw0KPiA+ICsJcnRl X21lbXBvb2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGsoY2FjaGUsIG1wLCBuKTsNCj4gPiArDQo+ ID4gKwlsZW4gPSBjYWNoZS0+bGVuOw0KPiA+ICsJc2l6ZSA9IGNhY2hlLT5zaXplOw0KPiA+ICsN Cj4gPiArCWlmIChuIDw9IGxlbikgew0KPiA+ICsJCS8qIFRoZSByZXF1ZXN0IGNhbiBiZSBzYXRp c2ZpZWQgZnJvbSB0aGUgY2FjaGUgYXMgaXMuICovDQo+ID4gKwkJbGVuIC09IG47DQo+ID4gKwl9 IGVsc2UgaWYgKGxpa2VseShuIDw9IHNpemUpKSB7DQo+ID4gKwkJLyoNCj4gPiArCQkgKiBUaGUg cmVxdWVzdCBpdHNlbGYgY2FuIGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZS4NCj4gPiArCQkg KiBCdXQgZmlyc3QsIHRoZSBjYWNoZSBtdXN0IGJlIGZpbGxlZCBmcm9tIHRoZSBiYWNrZW5kOw0K PiA+ICsJCSAqIGZldGNoIHNpemUgKyByZXF1ZXN0ZWQgLSBsZW4gb2JqZWN0cy4NCj4gPiArCQkg Ki8NCj4gPiArCQlpbnQgcmV0Ow0KPiA+ICsNCj4gPiArCQlyZXQgPSBydGVfbWVtcG9vbF9vcHNf ZGVxdWV1ZV9idWxrKG1wLCAmY2FjaGUtPm9ianNbbGVuXSwNCj4gc2l6ZSArIG4gLSBsZW4pOw0K PiA+ICsJCWlmICh1bmxpa2VseShyZXQgPCAwKSkgew0KPiA+ICsJCQkvKg0KPiA+ICsJCQkgKiBX ZSBhcmUgYnVmZmVyIGNvbnN0cmFpbmVkLg0KPiA+ICsJCQkgKiBEbyBub3QgZmlsbCB0aGUgY2Fj aGUsIGp1c3Qgc2F0aXNmeSB0aGUgcmVxdWVzdC4NCj4gPiArCQkJICovDQo+ID4gKwkJCXJldCA9 IHJ0ZV9tZW1wb29sX29wc19kZXF1ZXVlX2J1bGsobXAsICZjYWNoZS0NCj4gPm9ianNbbGVuXSwg biAtIGxlbik7DQo+ID4gKwkJCWlmICh1bmxpa2VseShyZXQgPCAwKSkgew0KPiA+ICsJCQkJLyog VW5hYmxlIHRvIHNhdGlzZnkgdGhlIHJlcXVlc3QuICovDQo+ID4gKw0KPiA+ICsJCQkJUlRFX01F TVBPT0xfU1RBVF9BREQobXAsIGdldF9mYWlsX2J1bGssIDEpOw0KPiA+ICsJCQkJUlRFX01FTVBP T0xfU1RBVF9BREQobXAsIGdldF9mYWlsX29ianMsIG4pOw0KPiA+ICsNCj4gPiArCQkJCXJ0ZV9l cnJubyA9IC1yZXQ7DQo+ID4gKwkJCQlyZXR1cm4gTlVMTDsNCj4gPiArCQkJfQ0KPiA+ICsNCj4g PiArCQkJbGVuID0gMDsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlsZW4gPSBzaXplOw0KPiA+ ICsJCX0NCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRv byBiaWcgZm9yIHRoZSBjYWNoZS4gKi8NCj4gPiArCQlydGVfZXJybm8gPSBFSU5WQUw7DQo+ID4g KwkJcmV0dXJuIE5VTEw7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJY2FjaGUtPmxlbiA9IGxlbjsN Cj4gPiArDQo+ID4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgZ2V0X3N1Y2Nl c3NfYnVsaywgMSk7DQo+ID4gKwlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgZ2V0 X3N1Y2Nlc3Nfb2Jqcywgbik7DQo+ID4gKw0KPiA+ICsJcmV0dXJuICZjYWNoZS0+b2Jqc1tsZW5d Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyoqDQo+ID4gICAgKiBAaW50ZXJuYWwgUHV0IHNldmVy YWwgb2JqZWN0cyBiYWNrIGluIHRoZSBtZW1wb29sOyB1c2VkDQo+IGludGVybmFsbHkuDQo+ID4g ICAgKiBAcGFyYW0gbXANCj4gPiBAQCAtMTM2NCwzMiArMTU1NiwyNSBAQCBydGVfbWVtcG9vbF9k b19nZW5lcmljX3B1dChzdHJ1Y3QgcnRlX21lbXBvb2wNCj4gKm1wLCB2b2lkICogY29uc3QgKm9i al90YWJsZSwNCj4gPiAgIHsNCj4gPiAgIAl2b2lkICoqY2FjaGVfb2JqczsNCj4gPg0KPiA+IC0J LyogTm8gY2FjaGUgcHJvdmlkZWQgKi8NCj4gPiAtCWlmICh1bmxpa2VseShjYWNoZSA9PSBOVUxM KSkNCj4gPiAtCQlnb3RvIGRyaXZlcl9lbnF1ZXVlOw0KPiA+ICsJLyogTm8gY2FjaGUgcHJvdmlk ZWQ/ICovDQo+ID4gKwlpZiAodW5saWtlbHkoY2FjaGUgPT0gTlVMTCkpIHsNCj4gPiArCQkvKiBJ bmNyZW1lbnQgc3RhdHMgbm93LCBhZGRpbmcgaW4gbWVtcG9vbCBhbHdheXMgc3VjY2VlZHMuDQo+ ICovDQo+ID4gKwkJUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9idWxrLCAxKTsNCj4gPiAr CQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0X29ianMsIG4pOw0KPiA+DQo+ID4gLQkvKiBp bmNyZW1lbnQgc3RhdCBub3csIGFkZGluZyBpbiBtZW1wb29sIGFsd2F5cyBzdWNjZXNzICovDQo+ ID4gLQlSVEVfTUVNUE9PTF9DQUNIRV9TVEFUX0FERChjYWNoZSwgcHV0X2J1bGssIDEpOw0KPiA+ IC0JUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9vYmpzLCBuKTsNCj4gPiAr CQlnb3RvIGRyaXZlcl9lbnF1ZXVlOw0KPiA+ICsJfQ0KPiA+DQo+ID4gLQkvKiBUaGUgcmVxdWVz dCBpdHNlbGYgaXMgdG9vIGJpZyBmb3IgdGhlIGNhY2hlICovDQo+ID4gLQlpZiAodW5saWtlbHko biA+IGNhY2hlLT5mbHVzaHRocmVzaCkpDQo+ID4gLQkJZ290byBkcml2ZXJfZW5xdWV1ZV9zdGF0 c19pbmNyZW1lbnRlZDsNCj4gPiArCS8qIFByZXBhcmUgdG8gYWRkIHRoZSBvYmplY3RzIHRvIHRo ZSBjYWNoZS4gKi8NCj4gPiArCWNhY2hlX29ianMgPSBfX3J0ZV9tZW1wb29sX2NhY2hlX3pjX3B1 dF9idWxrKGNhY2hlLCBtcCwgbik7DQo+ID4NCj4gPiAtCS8qDQo+ID4gLQkgKiBUaGUgY2FjaGUg Zm9sbG93cyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobToNCj4gPiAtCSAqICAgMS4gSWYgdGhlIG9i amVjdHMgY2Fubm90IGJlIGFkZGVkIHRvIHRoZSBjYWNoZSB3aXRob3V0DQo+IGNyb3NzaW5nDQo+ ID4gLQkgKiAgICAgIHRoZSBmbHVzaCB0aHJlc2hvbGQsIGZsdXNoIHRoZSBjYWNoZSB0byB0aGUg YmFja2VuZC4NCj4gPiAtCSAqICAgMi4gQWRkIHRoZSBvYmplY3RzIHRvIHRoZSBjYWNoZS4NCj4g PiAtCSAqLw0KPiA+ICsJLyogVGhlIHJlcXVlc3QgaXRzZWxmIGlzIHRvbyBiaWcgZm9yIHRoZSBj YWNoZT8gKi8NCj4gPiArCWlmICh1bmxpa2VseShjYWNoZV9vYmpzID09IE5VTEwpKSB7DQo+ID4g KwkJLyogSW5jcmVtZW50IHN0YXRzIG5vdywgYWRkaW5nIGluIG1lbXBvb2wgYWx3YXlzIHN1Y2Nl ZWRzLg0KPiAqLw0KPiA+ICsJCVJURV9NRU1QT09MX0NBQ0hFX1NUQVRfQUREKGNhY2hlLCBwdXRf YnVsaywgMSk7DQo+ID4gKwkJUlRFX01FTVBPT0xfQ0FDSEVfU1RBVF9BREQoY2FjaGUsIHB1dF9v YmpzLCBuKTsNCj4gDQo+IFNob3VsZG4ndCBpdCBiZSBSVEVfTUVNUE9PTF9TVEFUX0FERCgpIGhl cmU/DQoNCkkgY2FuIHNlZSB3aHkgeW91IGFyZSB3b25kZXJpbmcsIGJ1dCB0aGUgYW5zd2VyIGlz IG5vLiBUaGUgc3RhdGlzdGljcyBpbiBtZW1wb29sIGNhY2hlIGFyZSBub3QgcmVsYXRlZCB0byB0 aGUgY2FjaGUsIHRoZXkgYXJlIHJlbGF0ZWQgdG8gdGhlIG1lbXBvb2w7IHRoZXkgYXJlIHRoZXJl IHRvIHByb3ZpZGUgZmFzdGVyIHBlci1sY29yZSB1cGRhdGUgYWNjZXNzIFsxXS4NCg0KWzFdOiBo dHRwczovL2VsaXhpci5ib290bGluLmNvbS9kcGRrL3YyMi4xMS4xL3NvdXJjZS9saWIvbWVtcG9v bC9ydGVfbWVtcG9vbC5oI0w5NA0KDQo+IA0KPiA+DQo+ID4gLQlpZiAoY2FjaGUtPmxlbiArIG4g PD0gY2FjaGUtPmZsdXNodGhyZXNoKSB7DQo+ID4gLQkJY2FjaGVfb2JqcyA9ICZjYWNoZS0+b2Jq c1tjYWNoZS0+bGVuXTsNCj4gPiAtCQljYWNoZS0+bGVuICs9IG47DQo+ID4gLQl9IGVsc2Ugew0K PiA+IC0JCWNhY2hlX29ianMgPSAmY2FjaGUtPm9ianNbMF07DQo+ID4gLQkJcnRlX21lbXBvb2xf b3BzX2VucXVldWVfYnVsayhtcCwgY2FjaGVfb2JqcywgY2FjaGUtPmxlbik7DQo+ID4gLQkJY2Fj aGUtPmxlbiA9IG47DQo+ID4gKwkJZ290byBkcml2ZXJfZW5xdWV1ZTsNCj4gPiAgIAl9DQo+ID4N Cj4gPiAgIAkvKiBBZGQgdGhlIG9iamVjdHMgdG8gdGhlIGNhY2hlLiAqLw0KPiA+IEBAIC0xMzk5 LDEzICsxNTg0LDcgQEAgcnRlX21lbXBvb2xfZG9fZ2VuZXJpY19wdXQoc3RydWN0IHJ0ZV9tZW1w b29sDQo+ICptcCwgdm9pZCAqIGNvbnN0ICpvYmpfdGFibGUsDQo+ID4NCj4gPiAgIGRyaXZlcl9l bnF1ZXVlOg0KPiA+DQo+ID4gLQkvKiBpbmNyZW1lbnQgc3RhdCBub3csIGFkZGluZyBpbiBtZW1w b29sIGFsd2F5cyBzdWNjZXNzICovDQo+ID4gLQlSVEVfTUVNUE9PTF9TVEFUX0FERChtcCwgcHV0 X2J1bGssIDEpOw0KPiA+IC0JUlRFX01FTVBPT0xfU1RBVF9BREQobXAsIHB1dF9vYmpzLCBuKTsN Cj4gPiAtDQo+ID4gLWRyaXZlcl9lbnF1ZXVlX3N0YXRzX2luY3JlbWVudGVkOg0KPiA+IC0NCj4g PiAtCS8qIHB1c2ggb2JqZWN0cyB0byB0aGUgYmFja2VuZCAqLw0KPiA+ICsJLyogUHVzaCB0aGUg b2JqZWN0cyB0byB0aGUgYmFja2VuZC4gKi8NCj4gPiAgIAlydGVfbWVtcG9vbF9vcHNfZW5xdWV1 ZV9idWxrKG1wLCBvYmpfdGFibGUsIG4pOw0KPiA+ICAgfQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2xpYi9tZW1wb29sL3J0ZV9tZW1wb29sX3RyYWNlX2ZwLmgNCj4gYi9saWIvbWVtcG9vbC9ydGVf bWVtcG9vbF90cmFjZV9mcC5oDQo+ID4gaW5kZXggZWQwNjBlODg3Yy4uMTQ2NjY0NTdmNyAxMDA2 NDQNCj4gPiAtLS0gYS9saWIvbWVtcG9vbC9ydGVfbWVtcG9vbF90cmFjZV9mcC5oDQo+ID4gKysr IGIvbGliL21lbXBvb2wvcnRlX21lbXBvb2xfdHJhY2VfZnAuaA0KPiA+IEBAIC0xMDksNiArMTA5 LDI5IEBAIFJURV9UUkFDRV9QT0lOVF9GUCgNCj4gPiAgIAlydGVfdHJhY2VfcG9pbnRfZW1pdF9w dHIobWVtcG9vbCk7DQo+ID4gICApDQo+ID4NCj4gPiArUlRFX1RSQUNFX1BPSU5UX0ZQKA0KPiA+ ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfcHV0X2J1bGssDQo+ID4gKwlSVEVfVFJBQ0Vf UE9JTlRfQVJHUyh2b2lkICpjYWNoZSwgdm9pZCAqbWVtcG9vbCwgdWludDMyX3QNCj4gbmJfb2Jq cyksDQo+ID4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIoY2FjaGUpOw0KPiA+ICsJcnRlX3Ry YWNlX3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiA+ICsJcnRlX3RyYWNlX3BvaW50X2VtaXRf dTMyKG5iX29ianMpOw0KPiA+ICspDQo+ID4gKw0KPiA+ICtSVEVfVFJBQ0VfUE9JTlRfRlAoDQo+ ID4gKwlydGVfbWVtcG9vbF90cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5kLA0KPiA+ICsJUlRFX1RS QUNFX1BPSU5UX0FSR1Modm9pZCAqY2FjaGUsIHVpbnQzMl90IG5iX29ianMpLA0KPiA+ICsJcnRl X3RyYWNlX3BvaW50X2VtaXRfcHRyKGNhY2hlKTsNCj4gPiArCXJ0ZV90cmFjZV9wb2ludF9lbWl0 X3UzMihuYl9vYmpzKTsNCj4gPiArKQ0KPiA+ICsNCj4gPiArUlRFX1RSQUNFX1BPSU5UX0ZQKA0K PiA+ICsJcnRlX21lbXBvb2xfdHJhY2VfY2FjaGVfemNfZ2V0X2J1bGssDQo+ID4gKwlSVEVfVFJB Q0VfUE9JTlRfQVJHUyh2b2lkICpjYWNoZSwgdm9pZCAqbWVtcG9vbCwgdWludDMyX3QNCj4gbmJf b2JqcyksDQo+ID4gKwlydGVfdHJhY2VfcG9pbnRfZW1pdF9wdHIoY2FjaGUpOw0KPiA+ICsJcnRl X3RyYWNlX3BvaW50X2VtaXRfcHRyKG1lbXBvb2wpOw0KPiA+ICsJcnRlX3RyYWNlX3BvaW50X2Vt aXRfdTMyKG5iX29ianMpOw0KPiA+ICspDQo+ID4gKw0KPiA+ICAgI2lmZGVmIF9fY3BsdXNwbHVz DQo+ID4gICB9DQo+ID4gICAjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvbGliL21lbXBvb2wvdmVy c2lvbi5tYXAgYi9saWIvbWVtcG9vbC92ZXJzaW9uLm1hcA0KPiA+IGluZGV4IGI2N2Q3YWFjZTcu LjEzODNhZTZkYjIgMTAwNjQ0DQo+ID4gLS0tIGEvbGliL21lbXBvb2wvdmVyc2lvbi5tYXANCj4g PiArKysgYi9saWIvbWVtcG9vbC92ZXJzaW9uLm1hcA0KPiA+IEBAIC02Myw2ICs2MywxMSBAQCBF WFBFUklNRU5UQUwgew0KPiA+ICAgCV9fcnRlX21lbXBvb2xfdHJhY2Vfb3BzX2FsbG9jOw0KPiA+ ICAgCV9fcnRlX21lbXBvb2xfdHJhY2Vfb3BzX2ZyZWU7DQo+ID4gICAJX19ydGVfbWVtcG9vbF90 cmFjZV9zZXRfb3BzX2J5bmFtZTsNCj4gPiArDQo+ID4gKwkjIGFkZGVkIGluIDIzLjAzDQo+ID4g KwlfX3J0ZV9tZW1wb29sX3RyYWNlX2NhY2hlX3pjX3B1dF9idWxrOw0KPiA+ICsJX19ydGVfbWVt cG9vbF90cmFjZV9jYWNoZV96Y19wdXRfcmV3aW5kOw0KPiA+ICsJX19ydGVfbWVtcG9vbF90cmFj ZV9jYWNoZV96Y19nZXRfYnVsazsNCj4gPiAgIH07DQo+ID4NCj4gPiAgIElOVEVSTkFMIHsNCj4g DQoNCg==