Return-Path: Delivered-To: apmail-hbase-user-archive@www.apache.org Received: (qmail 61659 invoked from network); 31 Jan 2011 16:45:46 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 31 Jan 2011 16:45:46 -0000 Received: (qmail 37669 invoked by uid 500); 31 Jan 2011 16:45:45 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 37514 invoked by uid 500); 31 Jan 2011 16:45:43 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 37506 invoked by uid 99); 31 Jan 2011 16:45:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Jan 2011 16:45:42 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=5.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of phaidinyak@local.com designates 70.183.28.5 as permitted sender) Received: from [70.183.28.5] (HELO mail11.local.com) (70.183.28.5) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 31 Jan 2011 16:45:38 +0000 Received: from IRV1HUBCAS01.eLiberation.com (10.1.190.40) by mail11.local.com (10.1.230.41) with Microsoft SMTP Server (TLS) id 8.3.83.0; Mon, 31 Jan 2011 08:45:19 -0800 Received: from IRV1EXMB01.eLiberation.com ([fe80::895:3aed:8948:77ab]) by IRV1HUBCAS01.eLiberation.com ([fe80::7853:3c40:9449:94df%13]) with mapi; Mon, 31 Jan 2011 08:45:17 -0800 From: Peter Haidinyak To: "user@hbase.apache.org" Date: Mon, 31 Jan 2011 08:45:14 -0800 Subject: RE: Row Keys Thread-Topic: Row Keys Thread-Index: AcvBDSNbeC4bYb+fRZOZ5jGPZxrnbAAWRBJg Message-ID: <321C2E54215EEB41A581FDD9DAECBC5DFCD06DF2@IRV1EXMB01.eLiberation.com> References: <321C2E54215EEB41A581FDD9DAECBC5DFCD06D7A@IRV1EXMB01.eLiberation.com> <321C2E54215EEB41A581FDD9DAECBC5DFCD06D7F@IRV1EXMB01.eLiberation.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 R3JlYXQgc3R1ZmYsIHRoYW5rcy4NCg0KLVBldGUNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCkZyb206IExhcnMgR2VvcmdlIFttYWlsdG86bGFycy5nZW9yZ2VAZ21haWwuY29tXSANClNl bnQ6IFN1bmRheSwgSmFudWFyeSAzMCwgMjAxMSAxMDowNyBQTQ0KVG86IHVzZXJAaGJhc2UuYXBh Y2hlLm9yZw0KU3ViamVjdDogUmU6IFJvdyBLZXlzDQoNCkhpIFBldGUsDQoNCkxvb2sgaW50byB0 aGUgTW96aWxsYSBTb2NvcnJvIHByb2plY3QNCihodHRwOi8vY29kZS5nb29nbGUuY29tL3Avc29j b3Jyby8pIGZvciBob3cgdG8gInNhbHQiIHRoZSBrZXlzIHRvIGdldA0KYmV0dGVyIGxvYWQgYmFs YW5jaW5nIGFjcm9zcyBzZXF1ZW50aWFsIGtleXMuIFRoZSBwcmluY2lwbGUgaXMgdG8gYWRkDQph IHNhbHQsIGluIHRoaXMgY2FzZSBhIG51bWJlciByZWZsZWN0aW5nIHRoZSBudW1iZXIgb2Ygc2Vy dmVycw0KYXZhaWxhYmxlIChzb21lIG11bHRpcGxlIG9mIHRoYXQgdG8gYWxsb3cgZm9yIGdyb3d0 aCkgYW5kIHRoZW4gcHJlZml4DQp0aGUgc2VxdWVudGlhbCBrZXkgd2l0aCBpdCBzbyB0aGF0IHdy aXRlcyBhcmUgc3ByZWFkIGFjcm9zcyBhbGwNCnNlcnZlcnMuIEZvciBleGFtcGxlICI8c2FsdD4t PHl5eXlNTWRkaGhtbT4iLiBXaGVuIHJlYWRpbmcgeW91IG5lZWQgdG8NCm9wZW4gTiBzY2FubmVy cyB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgZGlzdGluY3Qgc2FsdCB2YWx1ZXMgYW5kIHNjYW4N CmVhY2ggc3Vic2V0IHdpdGggdGhlbSB3aGlsZSBldmVudHVhbGx5IGNvbWJpbmluZyB0aGUgcmVz dWx0IGluIGNsaWVudA0KY29kZS4gQXNzdW1pbmcgeW91IHdhbnQgdG8gc2NhbiBhbGwgdmFsdWVz IGluIEphbnVhcnkgYW5kIHlvdSBoYXZlIGENCnNhbHQgMCwgMSwgMiwgMywgNCwgYW5kIDUgeW91 IGhhdmUgc2Nhbm5lciBmb3IgIjAtMjAxMTAxMDEwMDAwIiB0bw0KIjAtMjAxMTAyMDEwMDAwIiwg dGhlbiBhbm90aGVyIGZvciAiMS0yMDExMDEwMTAwMDAiIHRvDQoiMS0yMDExMDIwMTAwMDAiIGFu ZCBzbyBvbi4gVGhlbiBkbyB0aGUgc2NhbnMgKG11bHRpdGhyZWFkZWQgZm9yDQpleGFtcGxlKSBh bmQgY29tYmluZSB0aGUgcmVzdWx0cyBjbGllbnQgc2lkZS4gVGhlIFNvY29ycm8gY29kZSBzaG93 cw0Kb25lIHdheSB0byBpbXBsZW1lbnQgdGhpcy4NCg0KTGFycw0KDQoNCk9uIE1vbiwgSmFuIDMx LCAyMDExIGF0IDY6MjAgQU0sIFBldGUgSGFpZGlueWFrIDxqYXZhbWFubkBjb3gubmV0PiB3cm90 ZToNCj4gU29ycnkgbXkgaWQgaXMgJzxkYXRlPnw8aWQ+JyB3aXRoIGRhdGUgYmVpbmcgaW4gdGhl IGZvcm1hdCAnWVlZWS1NTS1ERCcNCj4gTXkgc3RhcnQgcm93IGlzICc8ZGF0ZT58PGlkPnwgJyAo d2l0aCBhIHNwYWNlIGFzY2lpIDMyKSBhbmQgZW5kIHJvdyBpcw0KPiAnPGRhdGU+fDxpZD58ficg KHRpbGRlIGNoYXJhY3RlcikgYW5kIHRoaXMgaGFzIHdvcmtlZCBmb3IgbXkgZGF0YSBzZXQuDQo+ IFVuZm9ydHVuYXRlbHkgdGhlIGtleSBpcyBub3QgZGlzdHJpYnV0ZWQgdmVyeSB3ZWxsLiBUaGF0 IGlzIHdoeSBJIHdhcw0KPiB3b25kZXJpbmcgaG93IHlvdSBkbyBhIHNjYW4gKHVzaW5nIHN0YXJ0 IGFuZCBlbmQgcm93KSB3aXRoIGEgcmFuZG9tIHJvdyBrZXkuDQo+DQo+IFRoYW5rcw0KPg0KPiAt UGV0ZQ0KPg0KPiBQUy4gSSB1c2UgPGRhdGU+fDxpZD4gc2luY2UgdGhlIGlkIGlzIHZhcmlhYmxl IGxlbmd0aCBhbmQgdGhpcyB3YXMgbXkgZmlyc3QNCj4gYXR0ZW1wdC4gSSBrbm93IGhhdmUgYSBt b250aHMgd29ydGggb2YgZGF0YSBhbmQgZm9yIG15IG5leHQgcGhhc2UgSSB3aWxsDQo+IHByb2Jh Ymx5IHJldmVyc2UgdGhlIDxkYXRlPiA8aWQ+IG9yZGVyIHNpbmNlIGl0IHdpbGwgd29yayBlaXRo ZXIgd2F5Lg0KPg0KPg0KPiBPbiBTYXQsIDI5IEphbiAyMDExIDIxOjUwOjE2IC0wODAwLCBSeWFu IFJhd3NvbiA8cnlhbm9iamNAZ21haWwuY29tPiB3cm90ZToNCj4NCj4+IEhleSwNCj4+DQo+PiBT byB2YXJpYWJsZSBsZW5ndGgga2V5cyBhbmQgbGV4b2dyYXBoaWNhbCBzb3J0aW5nIG1ha2VzIGl0 IGEgbGl0dGxlDQo+PiB0cmlja3kgdG8gZG8gU2NhbnMgYW5kIGdldCBleGFjdGx5IHdoYXQgeW91 IHdhbnQuIMKgVGhpcyBoYXMgYSBsb3QgdG8NCj4+IGRvIHdpdGggdGhlIGFzY2lpIHRhYmxlIHRv bywgYW5kIHRoZSBudW1lcmljYWwgdmFsdWVzLiDCoExldCBjb25zdWx0DQo+PiAoaHR0cDovL3d3 dy5hc2NpaXRhYmxlLmNvbS8pIHdoaWxlIHdlIHdvcmsgdGhpcyBleGFtcGxlIHRocm91Z2g6DQo+ Pg0KPj4gVGFrZSBhIHNlcGFyYXRpb24gY2hhcmFjdGVyIG9mIHwgYXMgeW91ciBjb2RlIHVzZXMu IMKgVGhpcyBpcyBkZWNpbWFsDQo+PiAxMjQsIHBsYWNpbmcgaXQgd2F5IGFib3ZlIGJvdGggdGhl IGxvd2VyIGFuZCB1cHBlciBjYXNlIGxldHRlcnMgQU5EDQo+PiBudW1iZXJzLCB0aGF0IGlzIGdv b2QuDQo+Pg0KPj4gTm93IHlvdSBoYXZlIHNvbWV0aGluZyBsaWtlIHRoaXM6DQo+Pg0KPj4gMTIz NHxhX3N0cmluZw0KPj4gMTIzNHxvdGhlcl9zdHJpbmcNCj4+DQo+PiBub3cgd2Ugd2FudCB0byBm aW5kIGFsbCByb3dzICJiZWxvbmdpbmcgdG8iIDEyMzQsIHNvIHdlIGRvIGEgc3RhcnQgcm93DQo+ PiBvZiAnMTIzNHwnLCBidXQgd2hhdCBmb3IgdGhlIGVuZCBrZXk/IFdlbGwsIGxldCdzIHRyeS4u LiAnMTIzNH0nLCB0aGF0DQo+PiBtaWdodCB3b3JrLCBvaCB3YWl0LCBoZXJlIGlzIGFub3RoZXIg a2V5Og0KPj4NCj4+IDEyMzQ1fGZvbw0KPj4NCj4+IG9rIHNvICc1JyA8ICd8JyBzbyBpdCBzaG91 bGQgc2hvcnQgbGlrZSBzbzoNCj4+IDEyMzR8YV9zdHJpbmcNCj4+IDEyMzR8b3RoZXJfc3RyaW5n DQo+PiAxMjM0NXxmb28NCj4+DQo+PiBobW0gd2VsbCBob3cgZG9lcyBvdXIgZW5kIHJvdyBjb21w YXJlPyB3ZWxsICc1JyA8ICd9JyBzbyAnMTIzNH0nIGlzDQo+PiBzdGlsbCAibGFyZ2VyIiB0aGFu ICcxMjM0NXxmb28nIHNvIHRoYXQgcm93IHdvdWxkIGJlIGluY29ycmVjdGx5DQo+PiBpbmNsdWRl ZCBpbiB0aGUgc2NhbiByZXN1bHRzIGFzc3VtaW5nIHdlIG9ubHkgd2FudCAnMTIzNCcgcmVsYXRl ZA0KPj4gcm93cy4NCj4+DQo+PiBPaywgd2VsbCBtYXliZSBhIGJldHRlciBzb2x1dGlvbiBpcyB0 byBwaWNrIGEgbG93ZXIgYXNjaWk/IMKgV2VsbA0KPj4gb3V0c2lkZSBvZiB0aGUgY29udHJvbCBj aGFyYWN0ZXJzLCBzcGFjZSBpcyB0aGUgbG93ZXN0IGNoYXJhY3RlciBhdA0KPj4gMzIsIDMzIGlz ICchJyBzbyBwZXJoYXBzICEgd291bGQgYmUgYSBiZXR0ZXIgY2hvaWNlLiDCoFNvIHlvdSBjb3Vs ZA0KPj4gY2hvb3NlIGFuIGVuZCBkb3VibGUgcXVvdGUgYXMgaW4gJzEyMzQiJyB0byBkZWZpbmUg eW91ciAnc3RvcCByb3cnLg0KPj4gTm93IHlvdSB3b3VsZCBiZSBwcm9oaWJpdGVkIGZyb20gdXNp bmcgYW55IGNoYXJhY3RlciBzbWFsbGVyIHRoYW4gJzMzJw0KPj4gaW4geW91ciBzdHJpbmdzLCB3 aGljaCBpcyBraW5kIG9mIGEgbm9uIGlkZWFsIHNvbHV0aW9uLg0KPj4NCj4+IFRoaXMgaXMgYWxs IHByZXR0eSBjbHVtc3ksIGFuZCBkb2VzbnQgd29yayBncmVhdCBpbiB0aGVzZSB2YXJpYWJsZQ0K Pj4gbGVuZ3RoIHNlcGFyYXRlZCBzdHJpbmdzLg0KPj4NCj4+IFRoZSB1bHRpbWF0ZSBzb2x1dGlv biBpcyB0byB1c2UgdGhlIFByZWZpeEZpbHRlciwgd2hpY2ggaXMgY29uZmlndXJlZCBhcw0KPj4g c3VjaDoNCj4+IGJ5dGVbXSBzdGFydF9yb3cgPSBCeXRlcy50b0J5dGVzKCIxMjM0fCIpOw0KPj4g U2NhbiBzID0gbmV3IFNjYW4oc3RhcnRfcm93KTsNCj4+IHMuc2V0RmlsdGVyKG5ldyBQcmVmaXhG aWx0ZXIoc3RhcnRfcm93KSk7DQo+PiAvLyBkbyBzY2FuLg0KPj4NCj4+IHRoYXQgd2F5IG5vIG1h dHRlciB3aGF0IHNvcnRhYmlsaXR5IHlvdXIgc2VwYXJhdG9yIGlzLCB5b3Ugd2lsbCBnZXQNCj4+ IHRoZSBhbnN3ZXIgeW91IHdhbnQgZXZlcnkgdGltZS4NCj4+DQo+Pg0KPj4NCj4+IEFub3RoZXIg d2F5IHRvIGRvIGNvbXBvdW5kIGtleXMgaXMgdG8gZ28gcHVyZS1iaW5hcnkuIMKgRm9yIGV4YW1w bGUgSQ0KPj4gd2FudCBhIGtleSB0aGF0IGlzIDIgaW50ZWdlcnMsIHNvIEkgY2FuIGRvIHRoaXM6 DQo+PiBpbnQgcGFydDEgPSAuLi4gOw0KPj4gaW50IHBhcnQyID0gLi4uIDsNCj4+IGJ5dGVbXSBy b3dfa2V5ID0gQnl0ZXMuYWRkKEJ5dGVzLnRvQnl0ZXMocGFydDEpLCBCeXRlcy50b0J5dGVzKHBh cnQyKSk7DQo+Pg0KPj4gTm93IHlvdSBjYW4gYWxzbyBzZWFyY2ggZm9yIGFsbCByb3dzIHN0YXJ0 aW5nIHdpdGggJ3RhcmdldCcgbGlrZSBzdWNoOg0KPj4gaW50IHRhcmdldCA9IC4uLiA7DQo+PiAv LyBzdGFydCBrZXkgaXMgJ3RhcmdldCcsIHN0b3Aga2V5IGlzICd0YXJnZXQrMScNCj4+IFNjYW4g cyA9IG5ldyBTY2FuKEJ5dGVzLnRvQnl0ZXModGFyZ2V0KSwgQnl0ZXMudG9CeXRlcyh0YXJnZXQr MSkpOw0KPj4NCj4+IEFuZCB5b3UgZ2V0IGV4YWN0bHkgd2hhdCB5b3Ugd2FudCwgbm90aGluZyBt b3JlIG9yIGxlc3MgKGFsbCByb3dzDQo+PiBzdGFydGluZyB3aXRoICd0YXJnZXQnKS4NCj4+DQo+ PiBUaGUgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uIGlzIHZlcnkgdHJpY2t5IHNvbWV0aW1lcy4g T25lIHF1aWNrIHRpcA0KPj4gaXMgdGhhdCBpZiB5b3VyIG51bWJlcnMgKGxvbmdzLCBpbnRzKSBh cmUgYmlnIGVuZGlhbiBlbmNvZGVkIChhbGwgdGhlDQo+PiB1dGlsaXRpZXMgaW4gQnl0ZXMuamF2 YSBkbyBzbyksIHRoZW4gdGhlIGxleGljb2dyYXBoaWMgc29ydGluZyBpcw0KPj4gZXF1YWwgdG8g dGhlIG51bWVyaWMgc29ydGluZy4gwqBPdGhlcndpc2UgaWYgeW91IGRvIHN0cmluZ3MgeW91IGVu ZCB1cA0KPj4gd2l0aDoNCj4+IDENCj4+IDExDQo+PiAyDQo+PiAzDQo+Pg0KPj4gYW5kIHRoaW5n cyBhcmUgJ291dCBvZiBvcmRlcicuLi4gaWYgdGhhdCBpcyBpbXBvcnRhbnQsIHlvdSBjYW4gcGFk IGl0DQo+PiB3aXRoIDBzIC0gZG9udCBmb3JnZXQgdG8gdXNlIHRoZSBwcm9wZXIgYW1vdW50LCB3 aGljaCBpcyAxMCBkaWdpdHMgZm9yDQo+PiBpbnRzLCBhbmQgMTkgZm9yIGxvbmdzLiDCoE9yIGNv bnNpZGVyIHVzaW5nIGJpbmFyeSBlbmNvZGluZyBhcyBhYm92ZS4NCj4+DQo+PiAtcnlhbg0KPj4N Cj4+IE9uIFNhdCwgSmFuIDI5LCAyMDExIGF0IDEyOjUwIEFNLCBUYXRzdXlhIEthd2FubyA8dGF0 c3V5YTY1MDJAZ21haWwuY29tPg0KPj4gd3JvdGU6DQo+Pj4NCj4+PiBIaSBQZXRlLA0KPj4+DQo+ Pj4gWW91J3JlIHJpZ2h0LiBJZiB5b3UgdXNlIHJhbmRvbSBrZXlzLCB5b3Ugd2lsbCBuZXZlciBr bm93IHRoZSBzdGFydCAvDQo+Pj4gZW5kIGtleXMgZm9yIHNjYW4uIFdoYXQgeW91IHJlYWxseSB3 YW50IHRvIGRvIGlzIHRvIGRlaWduIHRoZSBrZXkgdGhhdA0KPj4+IHdpbGwgZGlzdHJpYnV0ZSB3 ZWxsIGZvciB3cml0ZXMgYnV0IGFsc28gaGFzIHRoZSBjZXJ0YWluIGxvY2FsaXR5IGZvcg0KPj4+ IHNjYW5zLg0KPj4+DQo+Pj4gWW91IHByb2JhYmx5IGhhdmUgdGhlIGlkZWFsIGtleSBhbHJlYWR5 IChJRHxEYXRlKS4gSWYgeW91IGRvbid0IG1ha2UNCj4+PiBlbnRpcmUga2V5IHRvIGJlIHJhbmRv bSBidXQganVzdCB0aGUgSUQgcGFydCwgeW91IGNvdWxkIGdldCBhIGdvb2QNCj4+PiBkaXN0cmli dXRpb24gYXQgd3JpdGUgdGltZSBiZWNhdXNlIHdyaXRlcyBmb3IgZGlmZmVyZW50IElEcyB3aWxs IGJlDQo+Pj4gZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSByZWdpb25zLCBhbmQgeW91IGFsc28gY291 bGQgZ2V0IGEgZ29vZCBzY2FuDQo+Pj4gcGVyZm9ybWFuY2Ugd2hlbiB5b3Ugc2NhbiBiZXR3ZWVu IGNlcnRhaW4gZGF0ZXMgZm9yIGEgc3BlY2lmaWMgSUQNCj4+PiBiZWNhdXNlIHJvd3MgZm9yIHRo ZSBJRCB3aWxsIGJlIHN0b3JlZCB0b2dldGhlciBpbiBvbmUgcmVnaW9uLg0KPj4+DQo+Pj4gVGhh bmtzLA0KPj4+IFRhdHN1eWENCj4+Pg0KPj4+DQo+Pj4gMjAxMS8xLzI5IFBldGVyIEhhaWRpbnlh ayA8cGhhaWRpbnlha0Bsb2NhbC5jb20+Og0KPj4+Pg0KPj4+PiBJIGtub3cgdGhleSBhcmUgYWx3 YXlzIHNvcnRlZCBidXQgaWYgdGhleSBhcmUgaG93IGRvIHlvdSBrbm93IHdoaWNoIHJvdw0KPj4+ PiBrZXkgYmVsb25nIHRvIHdoaWNoIGRhdGE/IEN1cnJlbnRseSBJIHVzZSBhIHJvdyBrZXkgb2Yg SUR8RGF0ZSBzbyBJIGFsd2F5cw0KPj4+PiBrbm93IHdoYXQgdGhlIHN0YXJ0cm93IGFuZCBlbmRy b3cgc2hvdWxkIGJlLiBJIGtub3cgSSdtIG1pc3Npbmcgc29tZXRoaW5nDQo+Pj4+IHJlYWxseSBm dW5kYW1lbnRhbCBoZXJlLiA6LSgNCj4+Pj4NCj4+Pj4gVGhhbmtzDQo+Pj4+DQo+Pj4+IC1QZXRl DQo+Pj4+DQo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4+IEZyb206IHRzdW5h IFttYWlsdG86dHN1bmFuZXRAZ21haWwuY29tXQ0KPj4+PiBTZW50OiBGcmlkYXksIEphbnVhcnkg MjgsIDIwMTEgMTI6MTQgUE0NCj4+Pj4gVG86IHVzZXJAaGJhc2UuYXBhY2hlLm9yZw0KPj4+PiBT dWJqZWN0OiBSZTogUm93IEtleXMNCj4+Pj4NCj4+Pj4gT24gRnJpLCBKYW4gMjgsIDIwMTEgYXQg MTI6MDkgUE0sIFBldGVyIEhhaWRpbnlhayA8cGhhaWRpbnlha0Bsb2NhbC5jb20+DQo+Pj4+IHdy b3RlOg0KPj4+Pj4NCj4+Pj4+IMKgIMKgIMKgIFRoaXMgaXMgZ29pbmcgdG8gc2VlbSBsaWtlIGEg ZHVtYiBxdWVzdGlvbiBidXQgaXQgaXMgcmVjb21tZW5kZWQNCj4+Pj4+IHRoYXQgeW91IHVzZSBh IHJhbmRvbSBrZXkgdG8gc3ByZWFkIHRoZSBpbnNlcnQvcmVhZCBsb2FkIGFtb25nIHlvdXIgcmVn aW9uDQo+Pj4+PiBzZXJ2ZXJzLiBNeSBxdWVzdGlvbiBpcyBpZiBJIGFtIHVzaW5nIGEgc2NhbiB3 aXRoIHN0YXJ0cm93IGFuZCBlbmRyb3cgwqBob3cNCj4+Pj4+IGRvZXMgdGhhdCB3b3JrIHdpdGgg cmFuZG9tIHJvdyBrZXlzPw0KPj4+Pg0KPj4+PiBUaGUga2V5cyBhcmUgYWx3YXlzIHNvcnRlZC4g wqBTbyBpZiB5b3UgZ2VuZXJhdGUgcmFuZG9tIGtleXMsIHlvdSdsbA0KPj4+PiBnZXQgeW91ciBk YXRhIGJhY2sgaW4gYSByYW5kb20gb3JkZXIuDQo+Pj4+IFdoYXQgaXMgcmVjb21tZW5kZWQgZGVw ZW5kcyBvbiB0aGUgc3BlY2lmaWMgcHJvYmxlbSB5b3UncmUgdHJ5aW5nIHRvDQo+Pj4+IHNvbHZl LiDCoEJ1dCBnZW5lcmFsbHksIG9uZSBvZiB0aGUgc3RyZW5ndGhzIG9mIEhCYXNlIGlzIHRoYXQg dGhlIHJvd3MNCj4+Pj4gYXJlIHNvcnRlZCwgc28gc2VxdWVudGlhbCBzY2FubmluZyBpcyBlZmZp Y2llbnQgKHRoYW5rcyB0byBkYXRhDQo+Pj4+IGxvY2FsaXR5KS4NCj4+Pj4NCj4+Pj4gLS0NCj4+ Pj4gQmVub2l0ICJ0c3VuYSIgU2lnb3VyZQ0KPj4+PiBTb2Z0d2FyZSBFbmdpbmVlciBAIHd3dy5T dHVtYmxlVXBvbi5jb20NCj4+Pj4NCj4+Pg0KPj4+DQo+Pj4NCj4+PiAtLQ0KPj4+IOays+mHjiDp gZTkuZ8NCj4+PiBUYXRzdXlhIEthd2FubyAoTXIuKQ0KPj4+IFRva3lvLCBKYXBhbg0KPj4+DQo+ Pj4gdHdpdHRlcjogaHR0cDovL3R3aXR0ZXIuY29tL3RhdHN1eWE2NTAyDQo+Pj4NCj4NCj4NCg==