From mboxrd@z Thu Jan 1 00:00:00 1970 From: Allen Samuels Subject: RE: Adding compression support for bluestore. Date: Mon, 21 Mar 2016 21:14:55 +0000 Message-ID: References: <56C1FCF3.4030505@mirantis.com> <56C3BAA3.3070804@mirantis.com> <56CDF40C.9060405@mirantis.com> <56D08E30.20308@mirantis.com> <56E9A727.1030400@mirantis.com> <56EACAAD.90002@mirantis.com> <56EC248E.3060502@mirantis.com> <56F00022.9020307@mirantis.com> <56F022ED.6000909@mirantis.com> <56F03DF7.7030708@mirantis.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-bn1on0077.outbound.protection.outlook.com ([157.56.110.77]:55616 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1758191AbcCUVPA (ORCPT ); Mon, 21 Mar 2016 17:15:00 -0400 In-Reply-To: <56F03DF7.7030708@mirantis.com> Content-Language: en-US Sender: ceph-devel-owner@vger.kernel.org List-ID: To: Igor Fedotov , Sage Weil Cc: ceph-devel PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJZ29yIEZlZG90b3YgW21haWx0 bzppZmVkb3RvdkBtaXJhbnRpcy5jb21dDQo+IFNlbnQ6IE1vbmRheSwgTWFyY2ggMjEsIDIwMTYg MTE6MzEgQU0NCj4gVG86IEFsbGVuIFNhbXVlbHMgPEFsbGVuLlNhbXVlbHNAc2FuZGlzay5jb20+ OyBTYWdlIFdlaWwNCj4gPHNhZ2VAbmV3ZHJlYW0ubmV0Pg0KPiBDYzogY2VwaC1kZXZlbCA8Y2Vw aC1kZXZlbEB2Z2VyLmtlcm5lbC5vcmc+DQo+IFN1YmplY3Q6IFJlOiBBZGRpbmcgY29tcHJlc3Np b24gc3VwcG9ydCBmb3IgYmx1ZXN0b3JlLg0KPiANCj4gDQo+IA0KPiBPbiAyMS4wMy4yMDE2IDIw OjE0LCBBbGxlbiBTYW11ZWxzIHdyb3RlOg0KPiA+IEFmdGVyIHJlYWRpbmcgeW91ciBwcm9wb3Nh bCBhbmQgU2FnZSdzIHJlc3BvbnNlLCBJIGhhdmUgYSBoeWJyaWQgcHJvcG9zYWwNCj4gdGhhdCBJ IHRoaW5rIGlzIEJPQlcuLi4NCj4gPg0KPiA+IFRoaXMgcHJvcG9zYWwgaXMgYmFzZWQgb24gU2Fn ZSdzIGNvbW1lbnRzIGFib3V0IHRoZXJlIGJlaW5nIHR3byBkaWZmZXJlbnQNCj4gc3RydWN0dXJl cy4NCj4gPg0KPiA+IExldmVyYWdpbmcgbXkgcHJvcG9zYWwgZm9yIGEgdW5pZmllZCBleHRlbnQg KGluY2x1ZGVkIGJ5IHJlZmVyZW5jZSkuIEZvcg0KPiBvdXIgcHVycG9zZSBlYWNoIGV4dGVudCBp cyBmdWxseSBzZWxmLWNvbnRhaW5lZCwgaS5lLiwgbG9naWNhbCBhZGRyZXNzL3NpemUsDQo+IHBo eXNpY2FsIGFkZHJlc3Mvc2l6ZSwgY2hlY2tzdW1zLCBmbGFncywgZXRjLi4uLg0KPiBJdCBzZWVt cyB3ZSBkb24ndCBuZWVkIGxvZ2ljYWwgYWRkci9zaXplIGluIHRoaXMgc3RydWN0dXJlIGFueSBt b3JlIC0gaXQgc2hvdWxkDQo+IGJlIHdpdGhpbiB0aGUgbG9naWNhbCBibG9jayBtYXAuIFNlZSBi ZWxvdy4uLg0KPiA+IFRoZSBvbm9kZSB2YWx1ZSAoaS5lLiwgdGhlIG9uZSBpbiB0aGUgS1Ygc3Rv cmFnZSkgY29udGFpbnMgb25seSAgTElTVCBvZg0KPiBleHRlbnRzICh5ZXMgYSBsaXN0LCByZWFk IG9uISkuIFRoZSBsaXN0IGlzIG9yZGVyZWQgdGVtcG9yYWxseSwgdGhpcyBwcm92aWRlcyB0aGUN Cj4gbmVjZXNzYXJ5IG9yZGVyaW5nIGluZm9ybWF0aW9uIHRvIGRpc2FtYmlndWF0ZSBiZXR3ZWVu IHR3byBleHRlbnRzIHRoYXQNCj4gb3ZlcmxhcC9vY2NsdWRlIHRoZSBzYW1lIGxvZ2ljYWwgYWRk cmVzcyByYW5nZS4NCj4gQW5kIEknbSBub3Qgc3VyZSBpZiB3ZSBuZWVkIGFueSB0ZW1wb3JhbCBv cmRlciBpbiB0aGlzIGV4dGVudCBsaXN0IElmIGxvZ2ljYWwNCj4gYmxvY2sgbWFwIGlzIG1haW50 YWluZWQgcHJvcGVybHksIGkuZS4gcHJvcGVyIGVudHJpZXMgYXJlIGluc2VydGVkIG9uDQo+IG92 ZXJ3cml0ZSBhbmQgb3ZlcndyaXR0ZW4gb25lcyBhcmUgdXBkYXRlZC4gV2UganVzdCBuZWVkIGEN Cj4gKGltcGxpY2l0PykgY29sbGVjdGlvbiBvZiBzdWNoIGV4dGVudHMgYW5kIGFuIGFiaWxpdHkg dG8gcmVmZXJlbmNlIGl0cycNCj4gc3BlY2lmaWMgZW50cmllcy4NCj4gVW5kZXIgImltcGxpY2l0 IiBjb2xsZWN0aW9uIEkgbWVhbiB3ZSBkb24ndCBuZWVkIHRvIGNvbGxlY3QgdGhlbSB3aXRoaW4g YQ0KPiBzaW5nbGUgZGF0YSBzdHJ1Y3R1cmUgKCBtYXAsIGxpc3QsIGFycmF5LCB3aGF0ZXZlci4u KSAtIHdlIGp1c3QgbmVlZCBzb21lDQo+IHJlZmVyZW5jZSB0byB0aGUgZW50cnkgZnJvbSBsb2dp Y2FsIGJsb2NrIG1hcCBhbmQgY29ycmVzcG9uZGluZyByZWZlcmVuY2UNCj4gY291bnRpbmcgbWVj aGFuaWNzLg0KPiBTZXJpYWxpemluZyB0byBiZSBjb25zaWRlcmVkIHRob3VnaC4uLg0KDQpZZXMs IGlmIHlvdSBzZXJpYWxpemUgYm90aCBkYXRhIHN0cnVjdHVyZXMgeW91IGNhbiBlbGltaW5hdGUg dGhlIGR1cGxpY2F0ZSBpbmZvcm1hdGlvbiBhbmQgcmVtb3ZlIGFueSBvcmRlcmluZyBjb25zdHJh aW50IG9uIHRoZSBleHRlbnQgbGlzdC9tYXAuIA0KDQpJdCdzIG5vdCBjbGVhciB0byBtZSBpZiB0 aGVyZSBhcmUgYW55IHNwYWNlIG9yIHRpbWUgYWR2YW50YWdlcy9kaXNhZHZhbnRhZ2VzIHRvIGVp dGhlciBzY2hlbWUuDQoNCkkgaGF2ZSBhIG1pbGQgcHJlZmVyZW5jZSBmb3IgbXkgcmVidWlsZGlu ZyBzY2hlbWUgYmVjYXVzZSBpdCBzaW1wbGlmaWVzIHRoZSBvbi1kaXNrICh3ZWxsLCBpbi1LViA7 LSkgZGF0YSBzdHJ1Y3R1cmUsIGVsaW1pbmF0aW5nIGEgbG90IG9mIGNvbXBsaWNhdGVkIGludGVy bmFsIGxpbmtzIGFuZCBjb25zaXN0ZW5jeSBjaGVja3MgdGhhdCB3aWxsIGJlIHJlcXVpcmVkIGZv ciB0aGUgInNlcmlhbGl6ZSBib3RoIHN0cnVjdHVyZXMiIGFwcHJvYWNoIChjaGVjayBhbGwgcmVm ZXJlbmNlIGNvdW50cywgY2hlY2sgZm9yIG9ycGhhbiBleHRlbnRzLCBldGMuKS4gQnV0IGl0IHNl ZW1zIHRvIG1lIHRoYXQgdGhlIGNob2ljZSBpcyBwcmltYXJpbHkgZXN0aGV0aWMgYW5kIHNob3Vs ZCBiZSBtYWRlIGJ5IHdob2V2ZXIgYWN0dWFsbHkgZG9lcyB0aGUgaW1wbGVtZW50YXRpb24uDQoN Cj4gDQo+ID4gVGhlIGluLW1lbW9yeSBvbm9kZSBjb250YWlucyBhbiBhdXhpbGxpYXJ5IG1hcCB0 aGF0J3Mgb3JkZXJlZCBieSBsb2dpY2FsDQo+IGFkZHJlc3MuIEVudHJpZXMgaW4gdGhlIG1hcCBw b2ludCB0byB0aGUgZXh0ZW50IHRoYXQgcHJvdmlkZXMgdGhlIGRhdGEgZm9yDQo+IHRoYXQgbG9n aWNhbCBhZGRyZXNzIHJhbmdlLiBUaGVyZSBjYW4gYmUgbXVsdGlwbGUgZW50cmllcyBpbiB0aGUg bWFwIHRoYXQNCj4gcmVmZXJlbmNlIHRoZSBzYW1lIGVsZW1lbnQgb2YgdGhlIGxpc3QuIFRoaXMg bWFwIGNoZWFwbHkgZGlzYW1iaWd1YXRlcw0KPiBiZXR3ZWVuIG11bHRpcGxlIGV4dGVudHMgdGhh dCBvdmVybGFwIGluIGxvZ2ljYWwgYWRkcmVzcyBzcGFjZS4gVGhpcyBpcyB0aGUNCj4gY2FzZSB0 aGF0IFNhZ2UgcG9pbnRlZCBvdXQgY2F1c2VzIHByb2JsZW1zIGZvciB0aGUgZGF0YSBzdHJ1Y3R1 cmUgdGhhdCB5b3UNCj4gcHJvcG9zZS4gSW4gbXkgcHJvcG9zYWwsIHlvdSdsbCBoYXZlIHR3byBl bnRyaWVzIGluIHRoZSBsb2dpY2FsIG1hcCBwb2ludGluZyB0bw0KPiB0aGUgc2FtZSBlbnRyeSBp biB0aGUgZXh0ZW50IG1hcC4NCj4gPg0KPiA+IFdlIHJlZmVyZW5jZSBjb3VudCBiZXR3ZWVuIHRo ZSBsb2dpY2FsIG1hcCBhbmQgdGhlIGV4dGVudCBsaXN0IHRvIGtub3cNCj4gd2hlbiBhbiBleHRl bnQgbm8gbG9uZ2VyIGNvbnRyaWJ1dGVzIGRhdGEgdG8gdGhpcyBvYmplY3QgKGFuZCBoZW5jZSBj YW4gYmUNCj4gcmVtb3ZlZCBmcm9tIHRoZSBsaXN0IGFuZCBwb3RlbnRpYWxseSBoYXZlIGl0J3Mg c3BhY2UgcmVjb3ZlcmVkKS4NCj4gWWVzLiBBbmQgc3VjaCBhIG1hcCAoIEFLQSBsb2dpY2FsIGJs b2NrIG1hcCApIGhhcyB0byBjb250YWluIChsb2dpY2FsPykNCj4gYWRkcmVzcy9zaXplICggSSdk IHByZWZlciB0byBuYW1lIGl0IGEgcG9pbnRlciBvciBkZXNjcmlwdG9yIGZvciBhIHJlZ2lvbiB3 aXRoaW4NCj4gYSBwaHlzaWNhbCBleHRlbnQgKSBhbmQgYSByZWZlcmVuY2UgdG8gYW4gZXh0ZW50 LiBFeGFjdGx5IGFzIGluIFNhZ2Uncw0KPiBjb21tZW50Lg0KPiANCj4gVGh1cyBTYWdlIHByb3Bv c2FsIHRvIGJlIHNpbXBseSBleHRlbmRlZCB3aXRoIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgcmF3 DQo+IGV4dGVudHMuDQo+IA0KPiA+IENvc3RzIGZvciB0aGlzIGR1YWwgZGF0YSBzdHJ1Y3R1cmUg YXJlOg0KPiA+DQo+ID4gTG9va3VwLCBpbnNlcnQgYW5kIGRlbGV0ZSBhcmUgYWxsIE8obG9nMiBO KSBhbmQgYXJlIGVzc2VudGlhbGx5IGVxdWl2YWxlbnQgdG8NCj4gdGhlIGludGVydmFsX3NldCAo d2l0aCBzb21lIGV4dHJhIGxvZ2ljIGZvciB0aGUgcmVmZXJlbmNlIGNvdW50ZWQgZXh0ZW50cyku DQo+ID4NCj4gPiBDb25zdHJ1Y3Rpb24gb2YgdGhlIGxvZ2ljYWwgbWFwIHdoZW4gYW4gb25vZGUg aXMgZGUtc2VyaWFsaXplZCBpcyBqdXN0IE8oTikNCj4gaW5zZXJ0cyBvZiBhbiBlbXB0eSBsaXN0 IC0tIHNvbWV0aGluZyBsaWtlIE8obG9nIE4rMSksIGJ1dCBub3QgZXhhY3RseS4gSSB0aGluaw0K PiBpdCdzIHNvbWV0aGluZyBsaWtlIGxvZygxKSArIGxvZygyKSArIGxvZygzKSArIGxvZyg0KS4u Li4uIE5vdCByZWFsbHkgc3VyZSB3aGF0IHRoYXQNCj4gYWRkcyB1cCB0bywgYnV0IGl0J3Mgd2Fh YXkgbGVzcyB0aGFuIE8oTikuDQo+ID4NCj4gPiBUaGVyZSBtYXkgYmUgYWRkaXRpb25hbCBwb3Rl bnRpYWwgYmVuZWZpdHMgdG8gaGF2aW5nIHRoZSBleHRlbnQgbGlzdCBiZQ0KPiB0ZW1wb3JhbGx5 IG9yZGVyZWQuIFlvdSBtaWdodCBiZSBhYmxlIHRvIGluZmVyIGFsbCBzb3J0cyBvZiBiZWhhdmlv cmFsDQo+IGluZm9ybWF0aW9uIGJ5IGV4YW1pbmluZyB0aGF0IGxpc3QuLi4NCj4gPg0KPiA+DQo+ ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IElnb3IgRmVkb3RvdiBb bWFpbHRvOmlmZWRvdG92QG1pcmFudGlzLmNvbV0NCj4gPj4gU2VudDogTW9uZGF5LCBNYXJjaCAy MSwgMjAxNiA5OjM2IEFNDQo+ID4+IFRvOiBBbGxlbiBTYW11ZWxzIDxBbGxlbi5TYW11ZWxzQHNh bmRpc2suY29tPjsgU2FnZSBXZWlsDQo+ID4+IDxzYWdlQG5ld2RyZWFtLm5ldD4NCj4gPj4gQ2M6 IGNlcGgtZGV2ZWwgPGNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnPg0KPiA+PiBTdWJqZWN0OiBS ZTogQWRkaW5nIGNvbXByZXNzaW9uIHN1cHBvcnQgZm9yIGJsdWVzdG9yZS4NCj4gPj4NCj4gPj4N Cj4gPj4NCj4gPj4gT24gMjEuMDMuMjAxNiAxODoxNCwgQWxsZW4gU2FtdWVscyB3cm90ZToNCj4g Pj4+PiBUaGF0J3MgYW4gaW50ZXJlc3RpbmcgcHJvcG9zYWwgYnV0IEkgY2FuIHNlZSBmb2xsb3dp bmcgY2F2ZWF0cyBoZXJlDQo+ID4+Pj4gKEkgYmVnIHBhcmRvbiBJICBtaXN1bmRlcnN0b29kIHNv bWV0aGluZyk6DQo+ID4+Pj4gMSkgUG90ZW50aWFsbHkgdW5jb250cm9sbGVkIGV4dGVudCBtYXAg Z3Jvd3RoIHdoZW4gZXh0ZW5zaXZlDQo+ID4+Pj4gKG92ZXIpd3JpdGluZyB0YWtlcyBwbGFjZS4N Cj4gPj4+IFllcywgYSBuYcOvdmUgaW5zZXJ0aW9uIHBvbGljeSBjb3VsZCBsZWFkIHRvIHVuY29u dHJvbGxlZCBncm93dGgsIGJ1dA0KPiA+Pj4gSSBkb24ndA0KPiA+PiB0aGluayB0aGlzIG5lZWRz IHRvIGJlIHRoZSBjYXNlLiBJIGFzc3VtZSB0aGF0IHdoZW4geW91IGFkZCBhbg0KPiA+PiAiZXh0 ZW50IiwgeW91IHdvbid0IGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBhcnJheSB1bm5lY2Vzc2Fy aWx5LA0KPiA+PiBpLmUuLCBpZiB0aGUgbmV3IGV4dGVudCBkb2Vzbid0IG92ZXJsYXAgYW4gZXhp c3RpbmcgZXh0ZW50IHRoZW4NCj4gPj4gdGhlcmUncyBubyByZWFzb24gdG8gaW5jcmVhc2UgdGhl IHNpemUgb2YgdGhlIG1hcCBhcnJheSAtLSBhY3R1YWxseQ0KPiA+PiB5b3Ugd2FudCB0byBpbnNl cnQgdGhlIG5ldyBleHRlbnQgYXQgdGhlIDxzbWFsbGVzdD4gYXJyYXkgaW5kZXggdGhhdA0KPiA+ PiBkb2Vzbid0IG92ZXJsYXAsIG9ubHkgaW5jcmVhc2luZyB0aGUgYXJyYXkgc2l6ZSB3aGVuIHRo YXQncyBub3QNCj4gPj4gcG9zc2libGUuIEknbSBub3QgMTAwJSBjZXJ0YWluIG9mIHRoZSB3b3Jz dCBjYXNlLCBidXQgSSBiZWxpZXZlIHRoYXQNCj4gPj4gaXQncyBsaW1pdGVkIHRvIHRoZSByYXRp byBiZXR3ZWVuIHRoZSBsYXJnZXN0IGV4dGVudCBhbmQgdGhlIHNtYWxsZXN0DQo+ID4+IGV4dGVu dC4gKGkuZS4sIGlmIHdlIGFzc3VtZSB3cml0ZXMgYXJlIG5vIGxhcmdlciB0aGFuIC0tIHNheSAt LSAxTUIgYW5kIHRoZQ0KPiBzbWFsbGVzdCBhcmUgNEssIHRoZW4gSSB0aGluayB0aGUgbWF4IGRl cHRoIG9mIHRoZSBhcnJheSBpcyAxTS80SyA9PiAyXjgsIDI1Ni4NCj4gPj4gV2hpY2ggaXMgdWds eSBidXQgbm90IGF3ZnVsIC0tIHNpbmNlIHRoaXMgaXMgcHJvYmFibHkgYSBjb250cml2ZWQNCj4g Pj4gY2FzZS4gVGhpcyBtaWdodCBiZSBhIHJlYXNvbiB0byBsaW1pdCB0aGUgbGFyZ2VzdCBleHRl bnQgc2l6ZSB0bw0KPiA+PiBzb21ldGhpbmcgYSBiaXQgc21hbGxlciAoc2F5IDI1NkspLi4uDQo+ ID4+IEl0IGxvb2tzIGxpa2UgSSBtaXN1bmRlcnN0b29kIHNvbWV0aGluZy4uLiBJdCBzZWVtZWQg dG8gbWUgdGhhdCB5b3VyDQo+ID4+IGFycmF5IGdyb3dzIGRlcGVuZGluZyBvbiB0aGUgbWF4aW11 bSBhbW91bnQgb2YgYmxvY2sgdmVyc2lvbnMuDQo+ID4+IEltYWdpbmUgeW91IGhhdmUgMTAwMCB3 cml0ZXMgMH40SyBhbmQgMTAwMCB3cml0ZXMgOEt+NEsgSSBzdXBwb3NlZA0KPiA+PiB0aGF0IHRo aXMgd2lsbCBjcmVhdGUgZm9sbG93aW5nIGFycmF5Og0KPiA+PiBbDQo+ID4+IDA6IDwwOnsuLi4s NEt9LCA4Szp7Li4uNEt9PiwNCj4gPj4gLi4uDQo+ID4+IDk5OTogPDA6ey4uLiw0S30sIDhLOnsu Li40S30+LA0KPiA+PiBdDQo+ID4+DQo+ID4+IHdoYXQncyBoYXBwZW5pbmcgaW4geW91ciBjYXNl Pw0KPiA+Pg0KPiA+Pj4+IDIpIFJlYWQvTG9va3VwIGFsZ29yaXRobWljIGNvbXBsZXhpdHkuIFRv IGZpbmQgdmFsaWQgYmxvY2sgKG9yDQo+ID4+Pj4gZGV0ZWN0DQo+ID4+Pj4gb3ZlcndyaXRlKSBv bmUgc2hvdWxkIHNlcXVlbnRpYWxseSBlbnVtZXJhdGUgdGhlIGZ1bGwgYXJyYXkuIEdpdmVuDQo+ ID4+Pj4gMSkgdGhhdCBtaWdodCBiZSB2ZXJ5IGluZWZmZWN0aXZlLg0KPiA+Pj4gT25seSByZXF1 aXJlcyBvbmUgbG9nMiBsb29rdXAgZm9yIGVhY2ggaW5kZXggb2YgdGhlIGFycmF5Lg0KPiA+PiBU aGlzIGRlcGVuZHMgb24gMSkgdGh1cyBzdGlsbCB1bmNsZWFyIGF0IHRoZSBtb21lbnQuDQo+ID4+ Pj4gMykgSXQncyBub3QgZGVhbGluZyB3aXRoIHVuYWxpZ25lZCBvdmVyd3JpdGVzLiBXaGF0IGhh cHBlbnMgd2hlbg0KPiA+Pj4+IHNvbWUgYmxvY2sgaXMgcGFydGlhbGx5IG92ZXJ3cml0dGVuPw0K PiA+Pj4gSSdtIG5vdCBzdXJlIEkgdW5kZXJzdGFuZCB3aGF0IGNhc2VzIHlvdSdyZSByZWZlcnJp bmcgdG8uIENhbiB5b3UNCj4gPj4+IGdpdmUgYW4NCj4gPj4gZXhhbXBsZT8NCj4gPj4gV2VsbCwg YXMgZmFyIGFzIEkgdW5kZXJzdGFuZCBpbiB0aGUgcHJvcG9zYWwgYWJvdmUgeW91IHdlcmUgb3Bl cmF0aW5nDQo+ID4+IHRoZSBlbnRpcmUgYmxvY2tzIChpLmUuIDRLIGRhdGEpIFRodXMgb3Zlcndy aXRpbmcgdGhlIGJsb2NrIGlzIGENCj4gPj4gc2ltcGxlIGNhc2UgLSB5b3UganVzdCBuZWVkIHRv IGNyZWF0ZSBhIG5ldyBibG9jayAidmVyc2lvbiIgYW5kIGluc2VydCBpdA0KPiBpbnRvIGFuIGFy cmF5Lg0KPiA+PiBCdXQgcmVhbCB1c2VyIHdyaXRlcyBzZWVtcyB0byBiZSB1bmFsaWduZWQgdG8g YmxvY2sgc2l6ZS4NCj4gPj4gRS5nLg0KPiA+PiB3cml0ZSAwfjIwNDgNCj4gPj4gd3JpdGUgMTAy NH4zMDcyDQo+ID4+DQo+ID4+IHlvdSBoYXZlIHRvIGVpdGhlciB0cmFjayBib3RoIGJsb2NrcyBv ciBtZXJnZSB0aGVtLiBUaGUgbGF0dGVyIGlzIGENCj4gPj4gYml0IHRyaWNreSBmb3IgdGhlIGNv bXByZXNzaW9uIGNhc2UuDQo+ID4+DQo+ID4+DQo+ID4+DQoNCg==