Return-Path: Delivered-To: apmail-hadoop-hbase-dev-archive@minotaur.apache.org Received: (qmail 2902 invoked from network); 29 May 2009 05:22:20 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 29 May 2009 05:22:20 -0000 Received: (qmail 72740 invoked by uid 500); 29 May 2009 05:22:32 -0000 Delivered-To: apmail-hadoop-hbase-dev-archive@hadoop.apache.org Received: (qmail 72694 invoked by uid 500); 29 May 2009 05:22:32 -0000 Mailing-List: contact hbase-dev-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hbase-dev@hadoop.apache.org Delivered-To: mailing list hbase-dev@hadoop.apache.org Received: (qmail 72682 invoked by uid 99); 29 May 2009 05:22:32 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 May 2009 05:22:32 +0000 X-ASF-Spam-Status: No, hits=-1.2 required=10.0 tests=MIME_BASE64_TEXT,RCVD_IN_DNSWL_MED,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of SRS0=ywMvUW=BZ=jpox.org=erik@srs.bis.eu.blackberry.com designates 216.9.253.50 as permitted sender) Received: from [216.9.253.50] (HELO smtp03.bis.eu.blackberry.com) (216.9.253.50) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 May 2009 05:22:22 +0000 Received: from bxe1058.bisx.produk.on.blackberry (bxe1058.bisx.produk.on.blackberry [172.24.204.73]) by srs.bis.eu.blackberry.com (8.13.7 TEAMON/8.13.7) with ESMTP id n4T5CwwC005543 for hbase-dev@hadoop.apache.org; Fri, 29 May 2009 05:21:58 GMT X-rim-org-msg-ref-id: 1348816878 Message-ID: <1348816878-1243574518-cardhu_decombobulator_blackberry.rim.net-561052818-@bxe1058.bisx.produk.on.blackberry> Content-Transfer-Encoding: base64 Reply-To: erik@jpox.org X-Priority: Normal References: <78568af10905262328l1dece02ey3f4d921f3e4c7cb6@mail.gmail.com> <64346.173.55.7.221.1243406381.squirrel@webmail.streamy.com> <78568af10905270006j277a8c60uc92bc780f596a6cc@mail.gmail.com> <374780.43054.qm@web65508.mail.ac4.yahoo.com> <78568af10905280026g7e559a8fl77fac6ae42af8908@mail.gmail.com> In-Reply-To: Sensitivity: Normal Importance: Normal To: hbase-dev@hadoop.apache.org Subject: Re: Filter use cases From: "Erik Bengtson" Date: Fri, 29 May 2009 05:22:25 +0000 Content-Type: text/plain; charset="Windows-1252" MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org DQotLSAgIEJsYWNrQmVycnmuIGZyb20gTW9iaXN0YXIgICAgLS0tDQoNCi0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQpGcm9tOiBDbGludCBNb3JnYW4gPGNsaW50Lm1vcmdhbkB0cm9vdmUubmV0 Pg0KDQpEYXRlOiBUaHUsIDI4IE1heSAyMDA5IDEzOjQ1OjU3IA0KVG86IDxoYmFzZS1kZXZAaGFk b29wLmFwYWNoZS5vcmc+DQpTdWJqZWN0OiBSZTogRmlsdGVyIHVzZSBjYXNlcw0KDQoNCkxvb2tz IGdvb2QgdG8gbWUuICsxDQoNCg0KT24gVGh1LCBNYXkgMjgsIDIwMDkgYXQgMTI6MjYgQU0sIFJ5 YW4gUmF3c29uIDxyeWFub2JqY0BnbWFpbC5jb20+IHdyb3RlOg0KDQo+IFRoYW5rcyBhbGwsDQo+ DQo+IFRoZSBvbGQgUm93RmlsdGVySW50ZXJmYWNlIHdpbGwgX3NvcnQgb2ZfIHdvcmsuICBUaGUg bmV3IGNvZGUgd2lsbCBjYWxsDQo+IGZpbHRlclJvd0tleShieXRlW10saW50LGludCkgYW5kIGZp bHRlckFsbFJlbWFpbmluZygpLiAgSSB1bml0IHRlc3RlZCB0aGUNCj4gUm93SW5jbHVzaXZlU3Rv cCwgYW5kIFByZWZpeCBmaWx0ZXJzIGFsb25nIHdpdGggdGhlIFdoaWxlTWF0Y2hSb3dGaWx0ZXIg dG8NCj4gd3JhcCB0aGVtLiAgVGVzdHMgcGFzcy4NCj4NCj4gTW9yZSBjb21wbGV4IGZpbHRlcnMg c3VjaCBhcyBDb2x1bW5NYXRjaEZpbHRlciB3b24ndCB3b3JrLCBhbmQgbmVlZCB0byBiZQ0KPiBw b3J0ZWQgdG8gdGhlIG5ldyBBUEkgYmVmb3JlIDAuMjAgKG1heWJlIHRvbW9ycm93LCBlaD8pLiAg IFN0b3AgZmlsdGVyIGlzDQo+IG5vdCBuZWNlc3NhcnkgYXMgYSBzdG9wLXJvdyBpcyBidWlsdCBp bnRvIHRoZSBTY2FuIHNwZWNpZmljYXRpb24gbm93Lg0KPg0KPiBXZSBtaWdodCBuZWVkIHRvIHdy YXAgc29tZSBvZiB0aGUgY2xpZW50LUFQSSB0byB0YWtlIGV4aXN0aW5nIHVzZSBjYXNlcyBhbmQN Cj4gdHJhbnNsYXRlIHRoZW0gaW50byB0aGUgbmV3IGNvZGUuICBFZzogZGV0ZWN0IGEgc3RvcC1y b3ctZmlsdGVyIGFuZCB1c2UgdGhlDQo+IFNjYW4oc3RhcnQsZW5kKSBuZXctQVBJIGluc3RlYWQs IGV0YywgZXRjLg0KPg0KPg0KPg0KPiBPbiBXZWQsIE1heSAyNywgMjAwOSBhdCA0OjM1IFBNLCBB bmRyZXcgUHVydGVsbCA8YXB1cnRlbGxAYXBhY2hlLm9yZz4NCj4gd3JvdGU6DQo+DQo+ID4gKzEg b24gdGhpcyBBUEkuIExvb2tzIGdvb2QuDQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IEZyb206IFJ5YW4gUmF3c29uIDxyeWFub2Jq Y0BnbWFpbC5jb20+DQo+ID4gVG86IGhiYXNlLWRldkBoYWRvb3AuYXBhY2hlLm9yZzsgamxpc3RA c3RyZWFteS5jb20NCj4gPiBTZW50OiBXZWRuZXNkYXksIE1heSAyNywgMjAwOSAxMjowNjozMSBB TQ0KPiA+IFN1YmplY3Q6IFJlOiBGaWx0ZXIgdXNlIGNhc2VzDQo+ID4NCj4gPiBIZXJlIGlzIGEg c3VnZ2VzdGVkIEFQSS4gIEkgaW5jbHVkZWQgdGhlIGNhbGwgZmxvdyBpbiB0aGUgaW50ZXJmYWNl IGRvY3MNCj4gYXMNCj4gPiB3ZWxsLg0KPiA+DQo+ID4gSSBkcm9wcGVkIHJvd1Byb2Nlc3NlZCgp IHNpbmNlIG9ubHkgUGFnZVJvd0ZpbHRlciB1c2VkIGl0LCBhbmQgaXQgY2FuIGdldA0KPiA+IHRo ZSBkYXRhIGVsc2V3YXkuICBJIGFsc28gZHJvcHBlZCBwcm9jZXNzQWx3YXlzKCkgYXMgd2VsbC4g IFRoaXMgc2VlbXMNCj4gbGlrZQ0KPiA+IGludGVybmFsIHdvcmtpbmdzIHRvIFJvd0ZpbHRlclNl dCwgYW5kIHNob3VsZCBpZGVhbGx5IGJlIG1haW50YWluZWQNCj4gdGhlcmUuDQo+ID4NCj4gPiBU aGlzIHJvdyBmaWx0ZXIgaW50ZXJmYWNlIHN1cHBvcnRzIDEgZmVhdHVyZSB3ZSBjYW4ndCByaWdo dCBub3c6DQo+ID4gLSBmaWx0ZXIgdXB0byBOIGNvbHVtbnMsIHNraXAgdGhlIHJlc3QuDQo+ID4N Cj4gPiBSaWdodCBub3cgd2UgY2FuIGRvIHRoYXQsIGJ1dCBub3QgZWZmaWNpZW50bHkuDQo+ID4N Cj4gPiBSZW1lbWJlciwgYXMgd2Ugd3JpdGUgZmlsdGVycywgY29sdW1ucyBhcmUgc2VlbiBpbiBz b3J0ZWQgb3JkZXIuICBUbyBiZQ0KPiA+IGVmZmljaWVudCwgYXQgYWxsIHN0ZXBzIHdlIG5lZWQg dG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHNvcnRlZCBvcmRlciBvZg0KPiA+IHRoaW5ncy4NCj4g Pg0KPiA+IC8qKg0KPiA+ICogSW50ZXJmYWNlIGZvciByb3cgYW5kIGNvbHVtbiBmaWx0ZXJzIGRp cmVjdGx5IGFwcGxpZWQgd2l0aGluIHRoZQ0KPiA+IHJlZ2lvbnNlcnZlci4NCj4gPiAqIEEgZmls dGVyIGNhbiBleHBlY3QgdGhlIGZvbGxvd2luZyBjYWxsIHNlcXVlbmNlOg0KPiA+ICoNCj4gPiAq IC0gcmVzZXQoKTsNCj4gPiAqIC0gZmlsdGVyQWxsUmVtYWluaW5nKCkgLT4gdHJ1ZSBpbmRpY2F0 ZXMgc2NhbiBpcyBvdmVyLCBmYWxzZSwga2VlcA0KPiBnb2luZw0KPiA+IG9uLg0KPiA+ICogLSBm aWx0ZXJSb3dLZXkoYnl0ZVtdLGludCxpbnQpOyAtPiB0cnVlIHRvIGRyb3AgdGhpcyByb3cNCj4g PiAqIGlmIGZhbHNlLCB3ZSB3aWxsIGFsc28gY2FsbDoNCj4gPiAqIC0gZmlsdGVyVmFsdWUoS2V5 VmFsdWUpOyAtPiB0cnVlIHRvIGRyb3AgdGhpcyBrZXkvdmFsdWUNCj4gPiAqIC0gZmlsdGVyUm93 KCk7IC0+IGxhc3QgY2hhbmNlIHRvIGRyb3AgZW50aXJlIHJvdyBiYXNlZCBvbiB0aGUgc2VxdWVu Y2UNCj4gb2YNCj4gPiAqIGZpbHRlclZhbHVlKCkgY2FsbHMuIEVnOiBmaWx0ZXIgYSByb3cgaWYg aXQgZG9lc24ndCBjb250YWluIGEgc3BlY2lmaWVkDQo+ID4gY29sdW1uLg0KPiA+ICoNCj4gPiAq IEZpbHRlciBpbnN0YW5jZXMgYXJlIGNyZWF0ZWQgb25lIHBlciByZWdpb24vc2Nhbi4NCj4gPiAq Lw0KPiA+IHB1YmxpYyBpbnRlcmZhY2UgTmV3Um93RmlsdGVySW50ZXJmYWNlIGV4dGVuZHMgV3Jp dGFibGUgew0KPiA+ICAvKioNCj4gPiAgICogUmVzZXQgdGhlIHN0YXRlIG9mIHRoZSBmaWx0ZXIg YmV0d2VlbiByb3dzLg0KPiA+ICAgKi8NCj4gPiAgcHVibGljIHZvaWQgcmVzZXQoKTsNCj4gPg0K PiA+ICAvKioNCj4gPiAgICogRmlsdGVycyBhIHJvdyBiYXNlZCBvbiB0aGUgcm93IGtleS4gSWYg dGhpcyByZXR1cm5zIHRydWUsIHRoZSBlbnRpcmUNCj4gPiAgICogcm93IHdpbGwgYmUgZXhjbHVk ZWQuICBJZiBmYWxzZSwgZWFjaCBLZXlWYWx1ZSBpbiB0aGUgcm93IHdpbGwgYmUNCj4gPiAgICog cGFzc2VkIHRvIGZpbHRlclZhbHVlKCkgYmVsb3cuDQo+ID4gICAqDQo+ID4gICAqIEBwYXJhbSBi dWZmZXIgYnVmZmVyIGNvbnRhaW5pbmcgcm93IGtleQ0KPiA+ICAgKiBAcGFyYW0gb2Zmc2V0IG9m ZnNldCBpbnRvIGJ1ZmZlciB3aGVyZSByb3cga2V5IHN0YXJ0cw0KPiA+ICAgKiBAcGFyYW0gbGVu Z3RoIGxlbmd0aCBvZiB0aGUgcm93IGtleQ0KPiA+ICAgKiBAcmV0dXJuIHRydWUsIHJlbW92ZSBl bnRpcmUgcm93LCBmYWxzZSwgaW5jbHVkZSB0aGUgcm93IChtYXliZSkuDQo+ID4gICAqLw0KPiA+ ICBwdWJsaWMgYm9vbGVhbiBmaWx0ZXJSb3dLZXkoYnl0ZSBbXSBidWZmZXIsIGludCBvZmZzZXQs IGludCBsZW5ndGgpOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBJZiB0aGlzIHJldHVybnMgdHJ1 ZSwgdGhlIHNjYW4gd2lsbCB0ZXJtaW5hdGUuDQo+ID4gICAqDQo+ID4gICAqIEByZXR1cm4gdHJ1 ZSB0byBlbmQgc2NhbiwgZmFsc2UgdG8gY29udGludWUuDQo+ID4gICAqLw0KPiA+ICBwdWJsaWMg Ym9vbGVhbiBmaWx0ZXJBbGxSZW1haW5pbmcoKTsNCj4gPg0KPiA+ICAvKioNCj4gPiAgICogQSB3 YXkgdG8gZmlsdGVyIGJhc2VkIG9uIHRoZSBjb2x1bW4gZmFtaWx5LCBjb2x1bW4gcXVhbGlmaWVy IGFuZC9vcg0KPiB0aGUNCj4gPiAgICogY29sdW1uIHZhbHVlLiBSZXR1cm4gY29kZSBpcyBkZXNj cmliZWQgYmVsb3cuICBUaGlzIGFsbG93cyBmaWx0ZXJzIHRvDQo+ID4gICAqIGZpbHRlciBvbmx5 IGNlcnRhaW4gbnVtYmVyIG9mIGNvbHVtbnMsIHRoZW4gdGVybWluYXRlIHdpdGhvdXQNCj4gbWF0 Y2hpbmcNCj4gPiBldmVyDQo+ID4gICAqIGNvbHVtbi4NCj4gPiAgICoNCj4gPiAgICogQHBhcmFt IHYgdGhlIEtleVZhbHVlIGluIHF1ZXN0aW9uDQo+ID4gICAqIEByZXR1cm4gY29kZSBhcyBkZXNj cmliZWQgYmVsb3cNCj4gPiAgICovDQo+ID4gIHB1YmxpYyBSZXR1cm5Db2RlIGZpbHRlclZhbHVl KEtleVZhbHVlIHYpOw0KPiA+DQo+ID4gIC8qKg0KPiA+ICAgKiBSZXR1cm4gY29kZXMgZm9yIGZp bHRlclZhbHVlKCkuDQo+ID4gICAqLw0KPiA+ICBwdWJsaWMgZW51bSBSZXR1cm5Db2RlIHsNCj4g PiAgICAvKioNCj4gPiAgICAgKiBJbmNsdWRlIHRoZSBLZXlWYWx1ZQ0KPiA+ICAgICAqLw0KPiA+ ICAgIElOQ0xVREUsDQo+ID4gICAgLyoqDQo+ID4gICAgICogU2tpcCB0aGlzIEtleVZhbHVlDQo+ ID4gICAgICovDQo+ID4gICAgU0tJUCwNCj4gPiAgICAvKioNCj4gPiAgICAgKiBEb25lIHdpdGgg Y29sdW1ucywgc2tpcCB0byBuZXh0IHJvdy4gTm90ZSB0aGF0IGZpbHRlclJvdygpIHdpbGwNCj4g PiAgICAgKiBzdGlsbCBiZSBjYWxsZWQuDQo+ID4gICAgICovDQo+ID4gICAgTkVYVF9ST1csDQo+ ID4gIH07DQo+ID4NCj4gPiAgLyoqDQo+ID4gICAqIExhc3QgY2hhbmNlIHRvIHZldG8gcm93IGJh c2VkIG9uIHByZXZpb3VzIGZpbHRlclZhbHVlKCkgY2FsbHMuIFRoZQ0KPiA+IGZpbHRlcg0KPiA+ ICAgKiBuZWVkcyB0byByZXRhaW4gc3RhdGUgdGhlbiByZXR1cm4gYSBwYXJ0aWN1bGFyIHZhbHVl IGZvciB0aGlzIGNhbGwgaWYNCj4gPiB0aGV5DQo+ID4gICAqIHdpc2ggdG8gZXhjbHVkZSBhIHJv dyBpZiBhIGNlcnRhaW4gY29sdW1uIGlzIG1pc3NpbmcgKGZvciBleGFtcGxlKS4NCj4gPiAgICoN Cj4gPiAgICogQHJldHVybiB0cnVlIHRvIGV4Y2x1ZGUgcm93LCBmYWxzZSB0byBpbmNsdWRlIHJv dy4NCj4gPiAgICovDQo+ID4gIHB1YmxpYyBib29sZWFuIGZpbHRlclJvdygpOw0KPiA+DQo+ID4g fQ0KPiA+DQo+ID4NCj4gPiBPbiBUdWUsIE1heSAyNiwgMjAwOSBhdCAxMTozOSBQTSwgSm9uYXRo YW4gR3JheSA8amxpc3RAc3RyZWFteS5jb20+DQo+IHdyb3RlOg0KPiA+DQo+ID4gPiBUaGlzIHNv dW5kcyBsaWtlIGEgZ29vZCBpbml0aWFsIGFwcHJvYWNoIGZvciBhIG5ldyBmaWx0ZXIgaW50ZXJm YWNlLg0KPiA+ID4NCj4gPiA+ICsxIG9uIG1vdmluZyBmb3J3YXJkIHdpdGggd2hhdCB5b3UgcHJv cG9zZSwgYWxsb3dpbmcgZm9yIG1vZGlmaWNhdGlvbnMNCj4gYXMNCj4gPiA+IHdlIHJlaW1wbGVt ZW50IGFuZCBpbnRlZ3JhdGUuDQo+ID4gPg0KPiA+ID4gR29vZCBzdHVmZiwgUnlhbiENCj4gPiA+ DQo+ID4gPiBKRw0KPiA+ID4NCj4gPiA+IE9uIFR1ZSwgTWF5IDI2LCAyMDA5IDExOjI4IHBtLCBS eWFuIFJhd3NvbiB3cm90ZToNCj4gPiA+ID4gSGkgYWxsLA0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ ID4gPiBXaXRoIEhCQVNFLTEzMDQsIGl0J3MgdGltZSB0byBub3JtYWxpemUgYW5kIHJldmlldyBv dXIgZmlsdGVyIEFQSS4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gSGVyZSBhcmUgYSBmZXcg Z2l2ZW5zOg0KPiA+ID4gPiAtIGFsbCBjYWxscyBtdXN0IGJlIGJ5dGVbXSBvZmZzZXQsaW50IG9m ZnNldCwgaW50IGxlbmd0aA0KPiA+ID4gPiAtIG1heWJlIHdlIGNhbiBoYXZlIGNhbGxzIGZvciBL ZXlWYWx1ZSAod2hpY2ggZW5jb2RlcyBhbGwgcGFydHMgb2YNCj4gdGhlDQo+ID4gPiBrZXkNCj4g PiA+ID4gJg0KPiA+ID4gPiB2YWx1ZSBhcyBwZXIgdGhlIG5hbWUpIC0gd2UnZCBsaWtlIHRvIGdl dCByaWQgb2YgdGhlIGNhbGxzOg0KPiA+ID4gPiAtLSAgIGJvb2xlYW4gZmlsdGVyUm93KGZpbmFs IFNvcnRlZE1hcDxieXRlIFtdLCBDZWxsPiBjb2x1bW5zKTsNCj4gPiA+ID4gLS0gICBib29sZWFu IGZpbHRlclJvdyhmaW5hbCBMaXN0PEtleVZhbHVlPiByZXN1bHRzKTsNCj4gPiA+ID4gVGhlc2Ug Y2FsbHMgYXJlIGV4cGVuc2l2ZSwgYW5kIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBoYXZlIHRoZW0u DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEhlcmUgaXMgYSBwcm9wb3NhbCwgaW1hZ2luZSBh IGZpbHRlciB3aWxsIHNlZSB0aGlzIHNlcXVlbmNlIG9mIGNhbGxzOg0KPiA+ID4gPiAtIHJlc2V0 KCkNCj4gPiA+ID4gLSBmaWx0ZXJSb3dLZXkoYnl0ZVtdLGludCxpbnQpIC0gdHJ1ZSB0byBpbmNs dWRlIHJvdywgZmFsc2UgdG8gc2tpcA0KPiB0bw0KPiA+ID4gPiBuZXh0IHJvdyAtIGZpbHRlcktl eVZhbHVlKEtleVZhbHVlKSAtIHRydWUgdG8gaW5jbHVkZSBrZXkvdmFsdWUsDQo+IGZhbHNlDQo+ ID4gdG8NCj4gPiA+ID4gc2tpcCAtLSBjYW4gY2hvb3NlIHRvIGZpbHRlciBvbiBmYW1pbHksIHF1 YWxpZmllciwgdmFsdWUsIGFueXRoaW5nDQo+ID4gPiByZWFsbHkuDQo+ID4gPiA+ICAtIGZpbHRl clJvdygpIC0gdHJ1ZSB0byBpbmNsdWRlIGVudGlyZSByb3csIGZhbHNlIHRvIHBvc3QtaG9jIHZl dG8NCj4gcm93DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEluIHRoaXMgY2FzZSBvbmUgY291 bGQgaW1wbGVtZW50IHRoZSAiZmlsdGVySWZDb2x1bW5NaXNzaW5nIiBmZWF0dXJlDQo+IG9mDQo+ ID4gPiA+IENvbHVtblZhbHVlRmlsdGVyIGJ5IGNhcnJ5aW5nIHN0YXRlIGFuZCByZXR1cm5pbmcg ZmFsc2UgZnJvbQ0KPiA+IGZpbHRlclJvdygpDQo+ID4gPiA+IHRvIHZldG8gdGhlIHJvdyBiYXNl ZCBvbiB0aGUgY29sdW1ucy92YWx1ZXMgd2UgZGlkbid0IHNlZS4NCj4gPiA+ID4NCj4gPiA+ID4g SW4gYW55IG9mIHRoZXNlIGNhc2VzLCBhbGwgdGhlc2UgZnVuY3Rpb25zIHdpbGwgYmUgY2FsbGVk IHF1aXRlDQo+ID4gPiA+IGZyZXF1ZW50bHksIHNvIGVmZmljaWVuY3kgb2YgdGhlIGNvZGUgaXMg cGFyYW1vdW50LiAgSXQncyBwcm9iYWJsZQ0KPiB0aGF0DQo+ID4gPiA+IGZpbHRlclJvd0tleSgp IHdpbGwgYmUgJ2NhY2hlZCcgYnkgdGhlIGNhbGxpbmcgY29kZSwgYnV0DQo+ID4gZmlsdGVyS2V5 VmFsdWUoKQ0KPiA+ID4gPiBpcyBjYWxsZWQgZm9yIG5lYXJseSBldmVyeSBzaW5nbGUgdmFsdWUg d2Ugd291bGQgbm9ybWFsbHkgcmV0dXJuIChpZToNCj4gPiA+IGl0J3MNCj4gPiA+ID4gYXBwbGll ZCBfQUZURVJfIGNvbHVtbiBtYXRjaGluZyBhbmQgdmVyc2lvbiBhbmQgdGltZXN0YW1wIGFuZCBk ZWxldGUNCj4gPiA+ID4gdHJhY2tpbmcpLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgZ29hbCBpcyB0 bzoNCj4gPiA+ID4gKGEpIG1ha2UgdGhlIGltcGxlbWVudGF0aW9uIGVhc3kgYW5kIHBlcmZvcm1h bnQNCj4gPiA+ID4gKGIpIG1ha2UgdGhlIEFQSSBub3JtYXRpdmUgYW5kIGVhc3kgdG8gY29kZSBm b3INCj4gPiA+ID4gKGMpIG1ha2UgZXZlcnl0aGluZyB3b3JrDQo+ID4gPiA+DQo+ID4gPiA+DQo+ ID4gPiA+IFRob3VnaHRzPw0KPiA+ID4gPiAtcnlhbg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4N Cj4gPiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPg0KDQo=