Return-Path: X-Original-To: apmail-hbase-dev-archive@www.apache.org Delivered-To: apmail-hbase-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D35789E3C for ; Mon, 9 Jan 2012 19:43:20 +0000 (UTC) Received: (qmail 33996 invoked by uid 500); 9 Jan 2012 19:43:20 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 33932 invoked by uid 500); 9 Jan 2012 19:43:19 -0000 Mailing-List: contact dev-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@hbase.apache.org Delivered-To: mailing list dev@hbase.apache.org Received: (qmail 33924 invoked by uid 99); 9 Jan 2012 19:43:19 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Jan 2012 19:43:19 +0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of nspiegelberg@fb.com designates 67.231.153.30 as permitted sender) Received: from [67.231.153.30] (HELO mx0a-00082601.pphosted.com) (67.231.153.30) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 09 Jan 2012 19:43:11 +0000 Received: from pps.filterd (m0004003 [127.0.0.1]) by mx0b-00082601.pphosted.com (8.14.4/8.14.4) with SMTP id q09JcRJE005202 for ; Mon, 9 Jan 2012 11:42:50 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=from : to : subject : date : message-id : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=facebook; bh=eGV1uye76F2ifrWa4h86WILE4FCTjQaq5oFaCXPIVTg=; b=Vb6SZBUP0VSycDfa8PhiO1kWKXAwiGvUbI3qaQXgWAVe21hYqNNC2ACizX/be6ZslJVc IXJ8vNU71PA+nLdG6C5XwnoGZWnz7o68EW+iphVBTGlFAaOzTNR1lWuUvufAY9QVd2Un KbU5tChB7kH1ltfzk2rfJlvzRxRF/y6FIik= Received: from mail.thefacebook.com (corpout1.snc1.tfbnw.net [66.220.144.38]) by mx0b-00082601.pphosted.com with ESMTP id 127wc7rm2k-2 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NOT) for ; Mon, 09 Jan 2012 11:42:50 -0800 Received: from SC-MBX01-4.TheFacebook.com ([fe80::6c2c:b681:4e19:7b5f]) by sc-hub04.TheFacebook.com ([192.168.18.212]) with mapi id 14.01.0355.002; Mon, 9 Jan 2012 11:42:45 -0800 From: Nicolas Spiegelberg To: "dev@hbase.apache.org" Subject: Re: Major Compaction Concerns Thread-Topic: Major Compaction Concerns Thread-Index: AQHMzhnHeCi7Hnph7kiZNdX6xEJOmZYEXBcAgACaFAD//3tWgA== Date: Mon, 9 Jan 2012 19:42:44 +0000 Message-ID: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/14.14.0.111121 x-originating-ip: [192.168.18.252] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.5.7110,1.0.211,0.0.0000 definitions=2012-01-09_06:2012-01-09,2012-01-09,1970-01-01 signatures=0 X-Proofpoint-Spam-Reason: safe X-Virus-Checked: Checked by ClamAV on apache.org U2lnbmlmaWNhbnQgY29tcGFjdGlvbiBKSVJBczoNCiAtIEhCQVNFLTI0NjIgOiBvcmlnaW5hbCBm b3JtdWxhdGlvbiBvZiBjdXJyZW50IGNvbXBhY3Rpb24gYWxnb3JpdGhtDQogLSBIQkFTRS0zMjA5 IDogaW1wbGVtZW50YXRpb24NCiAtIEhCQVNFLTE0NzYgOiBtdWx0aXRocmVhZGVkIGNvbXBhY3Rp b25zDQogLSBIQkFTRS0zNzk3IDogc3RvcmVmaWxlLWJhc2VkIGNvbXBhY3Rpb24gc2VsZWN0aW9u DQoNCg0KT24gMS85LzEyIDExOjM3IEFNLCAiVGVkIFl1IiA8eXV6aGlob25nQGdtYWlsLmNvbT4g d3JvdGU6DQoNCj5OaWNvbGFzOg0KPlRoYW5rcyBmb3IgeW91ciBpbnNpZ2h0Lg0KPg0KPkNhbiB5 b3UgcG9pbnQgTWlrYWVsIHRvIGEgZmV3IG9mIHRoZSBKSVJBcyB3aGVyZSBhbGdvcml0aG0gbWVu dGlvbmVkIGluICMxDQo+d2FzIGltcGxlbWVudGVkID8NCj4NCj5PbiBNb24sIEphbiA5LCAyMDEy IGF0IDEwOjU1IEFNLCBOaWNvbGFzIFNwaWVnZWxiZXJnDQo+PG5zcGllZ2VsYmVyZ0BmYi5jb20+ d3JvdGU6DQo+DQo+PiBNaWthZWwsDQo+Pg0KPj4gSGksIEkgd3JvdGUgdGhlIGN1cnJlbnQgY29t cGFjdGlvbiBhbGdvcml0aG0sIHNvIEkgc2hvdWxkIGJlIGFibGUgdG8NCj4+IGFuc3dlciBtb3N0 IHF1ZXN0aW9ucyB0aGF0IHlvdSBoYXZlIGFib3V0IHRoZSBmZWF0dXJlLiAgSXQgc291bmRzIGxp a2UNCj4+IHlvdSdyZSBjcmVhdGluZyBxdWl0ZSBhIHRhc2sgbGlzdCBvZiB3b3JrIHRvIGRvLCBi dXQgSSBkb24ndCB1bmRlcnN0YW5kDQo+PiB3aGF0IHlvdXIgdXNlIGNhc2UgaXMgc28gYSBsb3Qg b2YgdGhhdCB3b3JrIG1heSBiZSBub3QgYmUgY3JpdGljYWwgYW5kDQo+PnlvdQ0KPj4gY2FuIGxl dmVyYWdlIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkuICBBIGJldHRlciBkZXNjcmlwdGlvbiBvZiB5 b3VyDQo+PnN5c3RlbQ0KPj4gcmVxdWlyZW1lbnRzIGlzIGEgbXVzdCB0byBnZXR0aW5nIGEgZ29v ZCBzb2x1dGlvbi4NCj4+DQo+PiAxLiBNYWpvciBjb21wYWN0aW9ucyBhcmUgdHJpZ2dlcmVkIGJ5 IDMgbWV0aG9kczogdXNlciBpc3N1ZWQsIHRpbWVkLCBhbmQNCj4+IHNpemUtYmFzZWQuICBZb3Ug YXJlIHByb2JhYmx5IGhpdHRpbmcgc2l6ZS1iYXNlZCBjb21wYWN0aW9ucyB3aGVyZSB5b3VyDQo+ PiBjb25maWcgaXMgZGlzYWJsaW5nIHRpbWUtYmFzZWQgY29tcGFjdGlvbnMuICBNaW5vciBjb21w YWN0aW9ucyBhcmUNCj4+aXNzdWVkDQo+PiBvbiBhIHNpemUtYmFzZWQgdGhyZXNob2xkLiAgVGhl IGFsZ29yaXRobSBzZWVzIGlmIHN1bShmaWxlWzA6aV0gKg0KPj5yYXRpbykgPg0KPj4gZmlsZVtp KzFdIGFuZCBpbmNsdWRlcyBmaWxlWzA6aSsxXSBpZiBzby4gIFRoaXMgaXMgYSByZXZlcnNlIGl0 ZXJhdGlvbiwNCj4+c28NCj4+IHRoZSBoaWdoZXN0ICdpJyB2YWx1ZSBpcyB1c2VkLiAgSWYgYWxs IGZpbGVzIG1hdGNoLCB0aGVuIHlvdSBjYW4gcmVtb3ZlDQo+PiBkZWxldGUgbWFya2VycyBbd2hp Y2ggaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIG1ham9yIGFuZCBtaW5vcg0KPj4gY29tcGFj dGlvbl0uICBNYWpvciBjb21wYWN0aW9ucyBhcmVuJ3QgYSBiYWQgb3IgdGltZS1pbnRlbnNpdmUg dGhpbmcsDQo+Pml0J3MNCj4+IGp1c3QgZGVsZXRlIG1hcmtlciByZW1vdmFsLg0KPj4NCj4+IEFz IGEgbm90ZSwgd2UgdXNlIHRpbWVkIG1ham9ycyBpbiBhbiBPTFRQIHByb2R1Y3Rpb24gZW52aXJv bm1lbnQuICBUaGV5DQo+PiBhcmUgbGVzcyB1c2VmdWwgaWYgeW91J3JlIGRvaW5nIGJ1bGsgaW1w b3J0cyBvciBoYXZlIGFuIE9MQVAgZW52aXJvbm1lbnQNCj4+IHdoZXJlIHlvdSdyZSBlaXRoZXIg cnVubmluZyBhIHJlYWQtaW50ZW5zaXZlIHRlc3Qgb3IgdGhlIGNsdXN0ZXIgaXMNCj4+aWRsZS4N Cj4+IEluIHRoYXQgY2FzZSwgaXQncyBkZWZpbml0ZWx5IGJlc3QgdG8gZGlzYWJsZSBjb21wYWN0 aW9ucyBhbmQgcnVuIHRoZW0NCj4+IHdoZW4geW91J3JlIG5vdCB1c2luZyB0aGUgY2x1c3RlciB2 ZXJ5IG11Y2guDQo+Pg0KPj4gMi4gU2VlIEhCQVNFLTQ0MTggZm9yIHNob3dpbmcgYWxsIGNvbmZp Z3VyYXRpb24gb3B0aW9ucyBpbiB0aGUgV2ViIFVJLg0KPj4gVGhpcyBpcyBpbiAwLjkyIGhvd2V2 ZXIuDQo+Pg0KPj4gNC4gVGhlIGNvbXBhY3Rpb24gcXVldWUgc2hvd3MgY29tcGFjdGlvbnMgdGhh dCBhcmUgd2FpdGluZyB0byBoYXBwZW4uDQo+PklmDQo+PiB5b3UgaW52b2tlIGEgY29tcGFjdGlv biBhbmQgdGhlIHF1ZXVlIGlzIGVtcHR5LCB0aGUgdGhyZWFkIHdpbGwNCj4+IGltbWVkaWF0ZWx5 IHBpY2sgdXAgeW91ciByZXF1ZXN0IGFuZCB0aGUgcXVldWUgd2lsbCByZW1haW4gZW1wdHkuDQo+ Pg0KPj4gOC4gQSBwYXRjaCBmb3IgcGx1Z2dhYmxlIGNvbXBhY3Rpb25zIGhhZCBiZWVuIHRocm93 biB1cCBpbiB0aGUgcGFzdC4gIEl0DQo+PiB3YXMgbm90IHdlbGwtdGVzdGVkIGFuZCB0aGUgY29t cGFjdGlvbiBhbGdvcml0aG0gd2FzIHVuZGVyZ29pbmcgbWFqb3INCj4+IGRlc2lnbiBjaGFuZ2Vz IGF0IHRoZSB0aW1lIHRoYXQgY2xhc2hlZCB3aXRoIHRoZSBwYXRjaC4gIEkgdGhpbmsgaXQncw0K Pj5iZWVuDQo+PiBhIGxvdyBwcmlvcml0eSBiZWNhdXNlIHRoZXJlIGFyZSBtYW55IG90aGVyIHdh eXMgdG8gZ2V0IGJpZyBwZXJmb3JtYW5jZQ0KPj4gd2lucyBmcm9tIEhCYXNlIG91dHNpZGUgb2Yg cGx1Z2dhYmxlIGNvbXBhY3Rpb25zLiAgTW9zdCBwZW9wbGUgZG9uJ3QNCj4+IHVuZGVyc3RhbmQg aG93IHRvIG9wdGltaXplIHRoZSBjdXJyZW50IGFsZ29yaXRobSwgd2hpY2ggaXMgd2VsbC1rbm93 bg0KPj4gKHZlcnkgc2ltaWxhciB0byBCaWdUYWJsZSdzKS4gIEkgdGhpbmsgYmlnZ2VyIHdpbnMg Y2FuIGNvbWUgZnJvbQ0KPj5jb3JyZWN0bHkNCj4+IGxheWluZyBvdXQgYSBnb29kIHNjaGVtYSBh bmQgdW5kZXJzdGFuZGluZyB0aGUgY29uZmlnIGtub2JzIGN1cnJlbnRseSBhdA0KPj4gb3VyIGRp c3Bvc2FsLg0KPj4NCj4+DQo+Pg0KPj4gT24gMS84LzEyIDc6MjUgQU0sICJNaWthZWwgU2l0cnVr IiA8bWlrYWVsLnNpdHJ1a0BnbWFpbC5jb20+IHdyb3RlOg0KPj4NCj4+ID5IaQ0KPj4gPg0KPj4g Pg0KPj4gPg0KPj4gPkkgaGF2ZSBzb21lIGNvbmNlcm4gcmVnYXJkaW5nIG1ham9yIGNvbXBhY3Rp b25zIGJlbG93Li4uDQo+PiA+DQo+PiA+DQo+PiA+ICAgMS4gQWNjb3JkaW5nIHRvIGJlc3QgcHJh Y3RpY2VzIGZyb20gdGhlIG1haWxpbmcgbGlzdCBhbmQgZnJvbSB0aGUNCj4+Ym9vaywNCj4+ID4g ICBhdXRvbWF0aWMgbWFqb3IgY29tcGFjdGlvbiBzaG91bGQgYmUgZGlzYWJsZWQuIFRoaXMgY2Fu IGJlIGRvbmUgYnkNCj4+ID5zZXR0aW5nDQo+PiA+ICAgdGhlIHByb3BlcnR5IMWSaGJhc2UuaHJl Z2lvbi5tYWpvcmNvbXBhY3Rpb27CuSB0byDFkjDCuS4gTmV2ZXJodGVsZXNzDQo+PmV2ZW4NCj4+ ID4gICBhZnRlciBoYXZpbmcgZG9pbmcgdGhpcyBJIFNUSUxMIHNlZSDCs21ham9yIGNvbXBhY3Rp b27CsiBtZXNzYWdlcyBpbg0KPj4gPmxvZ3MuDQo+PiA+ICAgdGhlcmVmb3JlIGl0IGlzIHVuY2xl YXIgaG93IGNhbiBJIG1hbmFnZSBtYWpvciBjb21wYWN0aW9ucy4gKFRoZQ0KPj4gPnN5c3RlbSBo YXMNCj4+ID4gICBoZWF2eSBpbnNlcnQgLSB1bmlmb3JtbHkgb24gdGhlIGNsdXN0ZXIsIGFuZCBt YWpvciBjb21wYWN0aW9uIGFmZmVjdA0KPj4gPnRoZQ0KPj4gPiAgIHBlcmZvcm1hbmNlIG9mIHRo ZSBzeXN0ZW0pLg0KPj4gPiAgIElmIEknbSBub3Qgd3JvbmcgaXQgc2VlbXMgZnJvbSB0aGUgY29k ZSB0aGF0OiBldmVuIGlmIG5vdCByZXF1ZXN0ZWQNCj4+YW5kDQo+PiA+ICAgZXZlbiBpZiB0aGUg aW5kaWNhdG9yIGlzIHNldCB0byAnMCcgKG5vIGF1dG9tYXRpYyBtYWpvciBjb21wYWN0aW9uKSwN Cj4+ID5tYWpvcg0KPj4gPiAgIGNvbXBhY3Rpb24gY2FuIGJlIHRyaWdnZXJlZCBieSB0aGUgY29k ZSBpbiBjYXNlIGFsbCBzdG9yZSBmaWxlcyBhcmUNCj4+ID4gICBjYW5kaWRhdGUgZm9yIGEgY29t cGFjdGlvbiAoZnJvbSBTdG9yZS5jb21wYWN0KGZpbmFsIGJvb2xlYW4NCj4+ID5mb3JjZU1ham9y KSkuDQo+PiA+ICAgU2hvdWxkbid0IHRoZSBjb2RlIGFkZCBhIGNvbmRpdGlvbiB0aGF0IGF1dG9t YXRpYyBtYWpvciBjb21wYWN0aW9uDQo+PmlzDQo+PiA+ICAgZGlzYWJsZWQ/Pw0KPj4gPg0KPj4g PiAgIDIuIEkgdHJpZWQgdG8gY2hlY2sgdGhlIHBhcmFtZXRlciAgxZJoYmFzZS5ocmVnaW9uLm1h am9yY29tcGFjdGlvbsK5DQo+PmF0DQo+PiA+ICAgcnVudGltZSB1c2luZyBzZXZlcmFsIGFwcHJv YWNoZXMgLSB0byB2YWxpZGF0ZSB0aGF0IHRoZSBzZXJ2ZXINCj4+aW5kZWVkDQo+PiA+ICAgbG9h ZGVkIHRoZSBwYXJhbWV0ZXIuDQo+PiA+DQo+PiA+YS4gVXNpbmcgYSBjb25uZWN0aW9uIGNyZWF0 ZWQgZnJvbSBsb2NhbCBjb25maWcNCj4+ID4NCj4+ID4qY29ubiA9IChIQ29ubmVjdGlvbikgSENv bm5lY3Rpb25NYW5hZ2VyLmdldENvbm5lY3Rpb24obV9oYkNvbmZpZyk7Kg0KPj4gPg0KPj4gPipj b25uLmdldENvbmZpZ3VyYXRpb24oKS5nZXRTdHJpbmcowrNoYmFzZS5ocmVnaW9uLm1ham9yY29t cGFjdGlvbsKyKSoNCj4+ID4NCj4+ID5yZXR1cm5zIHRoZSBwYXJhbWV0ZXIgZnJvbSBsb2NhbCBj b25maWcgYW5kIG5vdCBmcm9tIGNsdXN0ZXIuIElzIGl0IGENCj4+YnVnPw0KPj4gPklmIEkgc2V0 IHRoZSBwcm9wZXJ0eSB2aWEgdGhlIGNvbmZpZ3VyYXRpb24gc2hvdWxkbsK5dCBhbGwgdGhlIGNs dXN0ZXINCj4+YmUNCj4+ID5hd2FyZSBvZj8gKHN1cHBvc2luZyB0aGF0IHRoZSBjb25uZWN0aW9u IGluZGVlZCBjb25uZWN0ZWQgdG8gdGhlDQo+PmNsdXN0ZXIpDQo+PiA+DQo+PiA+Yi4gIGZldGNo aW5nIHRoZSBwcm9wZXJ0eSBmcm9tIHRoZSB0YWJsZSBkZXNjcmlwdG9yDQo+PiA+DQo+PiA+KkhU YWJsZURlc2NyaXB0b3IgaFRhYmxlRGVzY3JpcHRvciA9DQo+PiA+Y29ubi5nZXRIVGFibGVEZXNj cmlwdG9yKEJ5dGVzLnRvQnl0ZXMoIm15IHRhYmxlIikpOyoNCj4+ID4NCj4+ID4qaFRhYmxlRGVz Y3JpcHRvci5nZXRWYWx1ZSgiaGJhc2UuaHJlZ2lvbi5tYWpvcmNvbXBhY3Rpb24iKSoNCj4+ID4N Cj4+ID5UaGlzIHdpbGwgcmV0dXJucyB0aGUgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWUgKDEgZGF5 KSBub3QgdGhlIHBhcmFtZXRlcg0KPj4gPmZyb20gdGhlIGNvbmZpZ3VyYXRpb24gKG9uIHRoZSBj bHVzdGVyKS4gSXQgc2VlbXMgdG8gYmUgYSBidWcsIGlzbsK5dA0KPj5pdD8NCj4+ID4odGhlIHBh cmFtZXRlciBmcm9tIHRoZSBjb25maWcsIHNob3VsZCBiZSB0aGUgZGVmYXVsdCBpZiBub3Qgc2V0 IGF0IHRoZQ0KPj4gPnRhYmxlIGxldmVsKQ0KPj4gPg0KPj4gPmMuIFRoZSBvbmx5IHdheSBJIGNv dWxkIHNldCB0aGUgcGFyYW1ldGVyIHRvIDAgYW5kIHJlYWxseSBzZWUgaXQgaXMgdmlhDQo+PiA+ dGhlDQo+PiA+QWRtaW4gQVBJLCB1cGRhdGluZyB0aGUgdGFibGUgZGVzY3JpcHRvciBvciB0aGUg Y29sdW1uIGRlc2NyaXB0b3IuIE5vdw0KPj5JDQo+PiA+Y291bGQgc2VlIHRoZSBwYXJhbWV0ZXIg b24gdGhlIHdlYiBVSS4gU28gaXMgaXQgdGhlIG9ubHkgd2F5IHRvIHNldA0KPj4gPmNvcnJlY3Rs eSB0aGUgcGFyYW1ldGVyPyBJZiBzZXR0aW5nIHRoZSBwYXJhbWV0ZXIgdmlhIHRoZSBjb25maWd1 cmF0aW9uDQo+PiA+ZmlsZSwgc2hvdWxkbsK5dCB0aGUgd2ViVUkgc2hvdyB0aGlzIG9uIGFueSB0 YWJsZSBjcmVhdGVkPw0KPj4gPg0KPj4gPmQuIEkgdHJpZWQgYWxzbyB0byBzZXR1cCB0aGUgcGFy YW1ldGVyIHZpYSBoYmFzZSBzaGVsbCBidXQgc2V0dGluZyBzdWNoDQo+PiA+cHJvcGVydGllcyBp cyBub3Qgc3VwcG9ydGVkLiAoZG8geW91IHBsYW4gdG8gYWRkIHN1Y2ggc3VwcG9ydCB2aWEgdGhl DQo+PiA+c2hlbGw/KQ0KPj4gPg0KPj4gPmUuIEdlbmVyYWxseSBpcyBpdCBwb3NzaWJsZSB0byBn ZXQgdmlhIEFQSSB0aGUgY29uZmlndXJhdGlvbiB1c2VkIGJ5DQo+PnRoZQ0KPj4gPnNlcnZlcnM/ IChhdCBjbHVzdGVyL3NlcnZlciBsZXZlbCkNCj4+ID4NCj4+ID4gICAgMy4gIEkgcmFuIGJvdGgg bWFqb3IgY29tcGFjdGlvbiAgcmVxdWVzdHMgZnJvbSB0aGUgc2hlbGwgb3IgZnJvbQ0KPj5BUEkN Cj4+ID5idXQgc2luY2UgYm90aCBhcmUgYXN5bmMgdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgaW5kaWNh dGlvbi4gTmVpdGhlciB0aGUNCj4+Sk1YDQo+PiA+bm9yIHRoZSBXZWIgd2lsbCBoZWxwIGhlcmUg c2luY2UgeW91IGRvbsK5dCBrbm93IGlmIGEgY29tcGFjdGlvbiB0YXNrIGlzDQo+PiA+cnVubmlu Zy4gVGFpbGxpbmcgdGhlIGxvZ3MgaXMgbm90IGFuIGVmZmljaWVudCB3YXkgdG8gZG8gdGhpcyBu ZWl0aGVyLg0KPj5UaGUNCj4+ID5wb2ludCBpcyB0aGF0IEkgd291bGQgbGlrZSB0byBhdXRvbWF0 ZSB0aGUgcHJvY2VzcyBhbmQgYXZvaWQgY29tcGFjdGlvbg0KPj4gPnN0b3JtLiBTbyBJIHdhbnQg dG8gZG8gdGhhdCByZWdpb24sIHJlZ2lvbiwgYnV0IGlmIEkgZG9uwrl0IGtub3cgd2hlbiBhDQo+ PiA+Y29tcGFjdGlvbiBzdGFydGVkL2VuZGVkIEkgY2Fuwrl0IGF1dG9tYXRlIGl0Lg0KPj4gPg0K Pj4gPjQuICAgICAgIEluIGNhc2UgdGhlcmUgaXMgbm8gY29tcGFjdGlvbiBmaWxlcyBpbiBxdWV1 ZSAoYnV0IHN0aWxsIHlvdQ0KPj5oYXZlDQo+PiA+bW9yZSB0aGFuIDEgc3RvcmVmaWxlIHBlciBz dG9yZSBlLmcuIG1pbm9yIGNvbXBhY3Rpb24ganVzdCBmaW5pc2hlZCkNCj4+dGhlbg0KPj4gPmlu dm9raW5nIG1ham9yX2NvbXBhY3Qgd2lsbCBpbmRlZWQgZGVjcmVhc2UgdGhlIG51bWJlciBvZiBz dG9yZSBmaWxlcywNCj4+YnV0DQo+PiA+dGhlIGNvbXBhY3Rpb24gcXVldWUgd2lsbCByZW1haW4g dG8gMCBkdXJpbmcgdGhlIGNvbXBhY3Rpb24gdGFzaw0KPj4gPihzaG91bGRuwrl0DQo+PiA+dGhl IGNvbXBhY3Rpb24gcXVldWUgaW5jcmVhc2UgYnkgdGhlIG51bWJlciBvZiBmaWxlIHRvIGNvbXBh Y3QgYW5kIGJlDQo+PiA+cmVkdWNlZCB3aGVuIHRoZSB0YXNrIGVuZGVkPykNCj4+ID4NCj4+ID4N Cj4+ID41LiAgICAgICBJIHNhdyBhbHJlYWR5IEhCQVNFLTM5NjUgZm9yIGdldHRpbmcgc3RhdHVz IG9mIG1ham9yDQo+PmNvbXBhY3Rpb24sDQo+PiA+bmV2ZXJ0aGVsZXNzIGl0IGhhcyBiZSByZW1v dmVkIGZyb20gMC45MiwgaXMgaXQgcG9zc2libGUgdG8gcHV0IGl0DQo+PmJhY2s/DQo+PiA+RXZl biBzb29uZXIgdGhhbiAwLjkyPw0KPj4gPg0KPj4gPjYuICAgICAgIEluIGNhc2UgYSBjb21wYWN0 aW9uIChtYWpvcikgaXMgcnVubmluZyBpdCBzZWVtcyB0aGVyZSBpcyBubw0KPj53YXkNCj4+ID50 byBzdG9wLWl0LiBEbyB5b3UgcGxhbiB0byBhZGQgc3VjaCBmZWF0dXJlPw0KPj4gPg0KPj4gPjcu ICAgICAgIERvIHlvdSBwbGFuIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHZpYSBKTVggKHN0YXJ0aW5n L3N0b3BwaW5nDQo+PiA+Y29tcGFjdGlvbiwgc3BsaXR0aW5nLi4uLikNCj4+ID4NCj4+ID44LiAg ICAgICBGaW5hbGx5IHRoZXJlIHdlcmUgc29tZSByZXF1ZXN0IGZvciBhbGxvd2luZyBjdXN0b20N Cj4+Y29tcGFjdGlvbiwNCj4+ID5wYXJ0IG9mIHRoaXMgd2FzIGdpdmVuIHZpYSB0aGUgUmVnaW9u T2JzZXJ2ZXIgaW4gSEJBU0UtMjAwMSwNCj4+bmV2ZXJ0aGVsZXNzDQo+PiA+ZG8geW91IGNvbnNp ZGVyIGFkZGluZyBzdXBwb3J0IGZvciBjdXN0b20gY29tcGFjdGlvbiAocHJvdmlkaW5nIHJlYWwN Cj4+ID5wbHVnZ2FibGUgY29tcGFjdGlvbiBzdGF0ZWd5IG5vdCBqdXN0IG9ic2VydmVyKT8NCj4+ ID4NCj4+ID4NCj4+ID5SZWdhcmRzLA0KPj4gPk1pa2FlbC5TDQo+Pg0KPj4NCg0K