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 CEA7210766 for ; Fri, 13 Dec 2013 05:47:35 +0000 (UTC) Received: (qmail 61367 invoked by uid 500); 13 Dec 2013 05:47:33 -0000 Delivered-To: apmail-hbase-dev-archive@hbase.apache.org Received: (qmail 60949 invoked by uid 500); 13 Dec 2013 05:47:33 -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 60941 invoked by uid 99); 13 Dec 2013 05:47:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Dec 2013 05:47:32 +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 xieliang@xiaomi.com designates 58.68.235.87 as permitted sender) Received: from [58.68.235.87] (HELO mx1.mxmail.xiaomi.com) (58.68.235.87) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Dec 2013 05:47:27 +0000 Received: from mail.xiaomi.com (unknown [114.255.3.134]) by mx1.mxmail.xiaomi.com (Postfix) with ESMTP id 398AA826A7 for ; Fri, 13 Dec 2013 13:47:05 +0800 (CST) Received: from EX-MBOX1.xiaomi.net ([fe80::39dc:37fc:9d01:b672]) by EX-CAS1.xiaomi.net ([::1]) with mapi id 14.03.0158.001; Fri, 13 Dec 2013 13:47:05 +0800 From: =?utf-8?B?6LCi6Imv?= To: "dev@hbase.apache.org" Subject: =?utf-8?B?562U5aSNOiDnrZTlpI06IFtTaGFkb3cgUmVnaW9ucyAvIFJlYWQgUmVwbGlj?= =?utf-8?Q?as_]?= Thread-Topic: =?utf-8?B?562U5aSNOiBbU2hhZG93IFJlZ2lvbnMgLyBSZWFkIFJlcGxpY2FzIF0=?= Thread-Index: AQHO7+1N5s5PDGS9q02/E6vcqwVe25pCT+YAgAAMTICAAAstgIAAHd6AgAY6kYmAAyQ4AIAFxAZb Date: Fri, 13 Dec 2013 05:47:04 +0000 Message-ID: References: , In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.237.101.15] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org SGkgRW5pcywKClRoYW5rcyBmb3IgcmVwbHkuIEkgaGF2ZSByZWFsaXplZCB0aGF0IHN0aWxsIG5l ZWQgYSByZWFkIHNlY29uZGFyeSBub2RlIGFiaWxpdHkKdG8gYWNoaXZlIGxvd2VyIDk5dGggb3Ig OTkuOXRoIHBlcmNlbnRpbGUgcmVhZCBsYXRlbmN5LCBlLmcuIGJpZyBHQyBvbiBycyBub2RlLgpB bmQgaSBoYXZlIGEgaWRlYSB0aGF0IGltcGxldGVtZW50IHRoaXMgYWJpbGl0eSBmcm9tIGhiYXNl LWNsaWVudCBzaWRlLCB3ZSBjb3VsZAppc3N1ZSBhIHJlYWQgcmVxdWVzdCB0byBzbGF2ZSBjbHVz dGVyLCB0aGF0IHdpbGwgbWFrZSB1czoKMSkgd2FybSB1cCBzbGF2ZSBjbHVzdGVyLCBzbyBtb3Jl IHBlcmZvcm1hbmNlIGNvbmZpZGVuY2UgdG8gc3dpdGNoIHRoZSB0cmFmZmljCnRvIHNsYXZlIGNs dXN0ZXIgaWYgdGhlIGN1cnJlbnQgbWFzdGVyIGNsdXN0ZXIgaXMgc3VmZmVyaW5nIGEgYnJlYWtk b3duIG9yIHN0aC4KMikgd2UgY291bGQgaGF2ZSBhIHZlcnkgcmVhbCBzdHJlc3MgdGVzdGluZyBy ZXN1bHQ6KQpXZSBjb3VsZCBpbXBsZXRlbWVudCBzZXZlcmFsIHBvbGljeSBvbiByZWFkIGp1c3Qg c2ltaWxhciB3aXRoIHlvdXIgZGVzaWduJ3MuCjMpIHRoaXMgYmVoaXZpb3VyIGNvdWxkIGJlIHNp bWlsYXIgd2l0aCB0aGUgdHJhZGl0aW9uYWwgUkRCTVMgb3BlcmF0aW9uOiB3cml0ZSB0bwptYXN0 ZXIsIGFuZCByZWFkIGZyb20gc2xhdmUgb3Igc2xhdmUrbWFzdGVyIDopICBtYWtpbmcgdGhlIHN5 c3RlbSBzY2FsaW5nIHRvIHJlYWQuCgpUaGUgbWFpbmx5IHNob3J0Y29taW5nIG9mIGFib3ZlIGlz IGl0J3Mgc3VpdGFibGUgb25seSBpZiBoYXZpbmcgYSByZXBsaWNhdGlvbiBydW5uaW5nLgpCdXQg aSBzdGlsbCBsaWtlIGl0IGFuZCBpbmRlZWQgYWxzbyBoYXZlIGEgcGxhbiB0byB3cml0ZSBzdGgg dG8gZG8gYSBwcm90b3R5cGUgdGVzdGluZwpuZXh0IHdlZWsuIEkgc3RpbGwga2VlcCB0aGUgc2Ft ZSBjb25jZXJuIGxpa2UgYmVmb3JlOiB0aGUgY29zdCBpcyBoZWF2eSBpZiB5b3UKd2FudCB0byBl bmFibGUgdGhlIHJlYWQgZnJvbSB0aGUgc2Vjb25kYXJ5IFJTIGluIHRoZSBzYW1lIGNsdXN0ZXIs IHdpdGggYmxvY2sgY2FjaGUKd2FybWluZyB1cCBhbHdheXMgdG8gYWNoaXZlIHRoZSBsb3dlciBy ZWFkIGxhdGVuY3kuCgpTb3JyeSBteSB0YWxraW5nIHByb2JhYmx5IGlzIG5vdCBhYm91dCB0aGUg bWFpbmx5IGRlc2lnbiBwb2ludChIQSBmb3IgcmVhZCksIGJ1dCBmb2N1cwpvbiBsYXRlbmN5IHJl bGF0ZWQuCgpUaGFua3MsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K 5Y+R5Lu25Lq6OiBFbmlzIFPDtnp0dXRhciBbZW5pcy5zb3pAZ21haWwuY29tXQrlj5HpgIHml7bp l7Q6IDIwMTPlubQxMuaciDEw5pelIDU6MjQK5pS25Lu25Lq6OiBkZXZAaGJhc2UuYXBhY2hlLm9y ZwrkuLvpopg6IFJlOiDnrZTlpI06IFtTaGFkb3cgUmVnaW9ucyAvIFJlYWQgUmVwbGljYXMgXQoK V2UgYXJlIGFsc28gcHJvcG9zaW5nIHRvIGltcGxlbWVudCBIQkFTRS03NTA5IGFzIGEgcGFydCBv ZiB0aGlzIG1ham9yCnVuZGVydGFraW5nLiBIQkFTRS03NTA5IHdpbGwgaGVscCB3aXRoIEhCYXNl IGluIGdlbmVyYWwgKGV2ZW4gaWYgeW91IGFyZQpub3QgdXNpbmcgSEJBU0UtMTAwNzApLCBhbmQg cG9zc2libHkgc29tZSBvdGhlciBoZGZzIGNsaWVudHMuCkhCQVNFLTEwMDcwIHdpbGwgZ2l2ZSB5 b3Ugc2ltaWxhciBiZW5lZml0cyB0byBIQkFTRS03NTA5IGlmIHlvdXIgdXNlIGNhc2UKbmVlZHMg dGhhdCwgYnV0IG9uIHRoZSBoYmFzZSBsYXllciB3aGljaCB3aWxsIHNpdCBvbiB0b3Agb2YgSEJB U0UtNzUwOS4KCkVuaXMKCgpPbiBTYXQsIERlYyA3LCAyMDEzIGF0IDU6MzkgQU0sIOiwouiJryA8 eGllbGlhbmdAeGlhb21pLmNvbT4gd3JvdGU6Cgo+IEZvciBvbmUgYWR2YW50YWdlIG9mIHRoaXMg ZGVzaWduKGFiaWxpdHkgdG8gZG8gbG93IGxhdGVuY3kgcmVhZHMgd2l0aAo+IDwyMG1zIDk5Ljkl IGxhdGVuY2llcyBmb3Igc3RhbGUgcmVhZHMpLCB0byBtZSwgaSBtb3JlIHByZWZlciB0byBoYmFz ZS03NTA5Cj4gc29sdXRpb24sIFNpbmNlIGlmIHlvdSB3YW50IHRvIGdhbnJhbnRlZSBzaW1pbGFy IGhpZ2ggcGVyZm9ybWFuY2UgcmVhZAo+IGFiaWxpdHkgaW4KPiBzaGFkb3cgcmVnaW9ucywgdGhl biB5b3UgbXVzdCBsZXQgdGhlIHNoYWRvdyBycyB3YXJtdXAgdGhlIHJlbGF0ZWQgaG90Cj4gYmxv Y2tzCj4gaW50byBibG9jayBjYWNoZS4oSW4gZGVlZCwgaSBoYXZlIGEgc2ltaWxhciB3b3JyeSB3 aXRoIFZsYWRpbWlyKS4KPiBJIHRyaWVkIHRvIHRoaW5rIGhvdyB0aGlzIGRlc2lnbiBjb3VsZCBi ZWF0IGhiYXNlLTc1MDkgb24gY3V0dGluZyB0aGUKPiBsYXRlbmN5IHRhaWwsCj4gYnV0IG5vIHJl c3VsdCBzdGlsbC4KPgo+IEVuaXMsIGNvdWxkIHlvdSBzaGFyZSB5b3VyIHRob3VnaHRzIG9uIGl0 PyB0aGFua3MKPgo+IFRoYW5rcywKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiDlj5Hku7bkuro6IEVuaXMgU8O2enR1dGFyIFtlbmlzLnNvekBnbWFpbC5jb21d Cj4g5Y+R6YCB5pe26Ze0OiAyMDEz5bm0MTLmnIg05pelIDY6MTgKPiDmlLbku7bkuro6IGRldkBo YmFzZS5hcGFjaGUub3JnCj4g5Li76aKYOiBSZTogW1NoYWRvdyBSZWdpb25zIC8gUmVhZCBSZXBs aWNhcyBdCj4KPiBPbiBUdWUsIERlYyAzLCAyMDEzIGF0IDEyOjMxIFBNLCBWbGFkaW1pciBSb2Rp b25vdgo+IDx2bGFkcm9kaW9ub3ZAZ21haWwuY29tPndyb3RlOgo+Cj4gPiBUaGUgZG93bnNpZGU6 Cj4gPgo+ID4gLSBEb3VibGUvVHJpcGxlIG1lbXN0b3JlIHVzYWdlCj4gPiAtIEluY3JlYXNlZCBi bG9jayBjYWNoZSB1c2FnZSAoZWZmZWN0aXZlbHksIGJsb2NrIGNhY2hlIHdpbGwgaGF2ZSA1MCUK PiA+IGNhcGFjaXR5IG1heSBiZSBsZXNzKQo+Cj4KPiBUaGVzZSBhcmUgY292ZXJlZCBhdCB0aGUg dHJhZGVvZmYgc2VjdGlvbiBhdCB0aGUgZGVzaWduIGRvYy4KPgo+Cj4gPgo+ID4KPiBUaGVzZSBk b3duc2lkZXMgYXJlIHByZXR0eSBzZXJpb3VzIG9uZXMuIFRoaXMgd2lsbCByZXN1bHQ6Cj4gPgo+ ID4gMS4gaW4gZGVjcmVhc2VkIG92ZXJhbGwgcGVyZm9ybWFuY2UgZHVlIHRvIGRlY3JlYXNlZCBl ZmZpY2llbnQgYmxvY2sKPiBjYWNoZQo+ID4gc2l6ZQo+ID4KPgo+IFlvdSBjYW4gZWxlY3QgdG8g bm90IGZpbGwgdXAgdGhlIGJsb2NrIGNhY2hlIGZvciBzZWNvbmRhcnkgcmVhZHMuIEl0IHdpbGwK PiBiZSBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhbmQgYQo+IHRyYWRlb2ZmIHlvdSBtYXkgb3Ig bWF5IG5vdCB3YW50IHRvIHBheS4gRGV0YWlscyBhcmUgaW4gdGhlIGRvYy4KPgo+Cj4gPiAgMi4g SW4gbW9yZSBmcmVxdWVudCBtZW1zdG9yZSBmbHVzaGVzIC0gdGhpcyB3aWxsIGFmZmVjdCBjb21w YWN0aW9uIGFuZAo+ID4gd3JpdGUgdHB1dC4KPiA+Cj4KPiBNb3JlIGZyZXF1ZW50IGZsdXNoZXMg aXMgbm90IG5lZWRlZCB1bmxlc3MgeW91IGFyZSB1c2luZyByZWdpb24gc25hcHNob3RzCj4gYXBw cm9hY2gsCj4gYW5kIHdhbnQgdG8gYm91bmQgdGhlIGxhZyBiZXR0ZXIuIEl0IGlzIGEgdHJhZGVv ZmYgYmV0d2VlbiBleHBlY3RlZCBsYWcgdnMKPiBtb3JlCj4gd3JpdGUgYW1wbGlmaWNhdGlvbi4K Pgo+Cj4gPgo+ID4gSSBkbyBub3QgYmVsaWV2ZSB0aGF0ICBIQmFzZSAnbGFyZ2UnIE1UVFIgZG9l cyBub3QgYWxsb3cgdG8gbWVldCA5OSUgU0xBLgo+ID4gb2YgMTAtMjBtcyB1bmxlc3MgeW91ciBS U3MgZ28gZG93biAyLTMgdGltZXMgYSBkYXkgZm9yIHNldmVyYWwgbWludXRlcwo+IGVhY2gKPiA+ IHRpbWUuIFlvdSBoYXZlIHRvIGFuYWx5emUgZmlyc3Qgd2h5IGFyZSB5b3UgaGF2aW5nIHNvIGZy ZXF1ZW50IGZhaWx1cmVzLAo+ID4gdGhhbiBmaXggdGhlIHJvb3Qgc291cmNlIG9mIHRoZSBwcm9i bGVtLiBJdHMgcG9zc2libGUgdG8gcmVkdWNlCj4gJ2RldGVjdGlvbicKPiA+IHBoYXNlIGluIE1U VFIgcHJvY2VzcyB0byBjb3VwbGUgc2Vjb25kcyBlaXRoZXIgYnkgdXNpbmcgZXh0ZXJuYWwgYmVh Y29uCj4gPiBwcm9jZXNzIChhcyBJIHN1Z2dlc3RlZCBhbHJlYWR5KSBvciBieSByZXdyaXRpbmcg c29tZSBjb2RlIGluc2lkZSBIQmFzZQo+IGFuZAo+ID4gTmFtZU5vZGUgdG8gbW92ZSBhbGwgZGF0 YSBvdXQgZnJvbSBKYXZhIGhlYXAgdG8gb2ZmLWhlYXAgYW5kIHJlZHVjaW5nCj4gPiBHQy1pbmR1 Y2VkIHRpbWVvdXRzIGZyb20gMzAgc2VjIHRvIDEtMiBzZWMgbWF4LiBJdHMgdG91Z2gsIGJ1dCBk b2FibGUuCj4gVGhlCj4gPiByZXN1bHQ6IHlvdSB3aWxsIGRlY3JlYXNlIE1UVFIgYnkgNTAlIGF0 IGxlYXN0IHcvbyBzYWNyaWZpY2luZyB0aGUKPiBvdmVyYWxsCj4gPiBjbHVzdGVyIHBlcmZvcm1h bmNlLgo+ID4KPiA+IEkgdGhpbmssIGl0cyBSUyBhbmQgTk4gbGFyZ2UgaGVhcHMgICBhbmQgZnJl cXVlbnQgcy10LXcgR0MgIGFjdGl2aXRpZXMKPiA+IHByZXZlbnRzIG1lZXRpbmcgc3RyaWN0IFNM QSAtIG5vdCBvY2Nhc2lvbmFsIHNlcnZlciBmYWlsdXJlcy4KPiA+Cj4KPiBNVFRSIGFuZCB0aGlz IHdvcmsgaXMgb3J0YWdvbmFsLiBJbiBhIGRpc3RyaWJ1dGVkIHN5c3RlbSwgeW91IGNhbm5vdAo+ IGRpZmZlcmVudGlhdGUgYmV0d2Vlbgo+IGEgcHJvY2VzcyBub3QgcmVzcG9uZGluZyBiZWNhdXNl IGl0IGlzIGRvd24gb3IgaXQgaXMgYnVzeSBvciBuZXR3b3JrIGlzCj4gZG93biwgb3Igd2hhdG5v dC4gSGF2aW5nCj4gYSBjb3VwbGUgb2Ygc2Vjb25kcyBkZXRlY3Rpb24gdGltZSBpcyB1bnJlYWxp c3RpYy4gWW91IHdpbGwgZW5kIHVwIGluIGEKPiB2ZXJ5IHVuc3RhYmxlIHN0YXRlIHdoZXJlCj4g eW91IHdpbGwgYmUgZmFpbGluZyBzZXJ2ZXJzIGFsbCBvdmVyIHRoZSBwbGFjZS4gQW4gZXh0ZXJu YWwgYmVhY29uIGFsc28KPiBjYW5ub3QgZGlmZmVyZW50aWF0ZSBiZXR3ZWVuCj4gdGhlIG1haW4g cHJvY2VzcyBub3QgcmVzcG9uZGluZyBiZWNhdXNlIGl0IGlzIGJ1c3ksIG9yIGl0IGlzIGRvd24u IFdoYXQKPiBoYXBwZW5zIHdoeSB0aGVyZSBpcyBhIHRlbXBvcmFyeQo+IG5ldHdvcmsgcGFydGl0 aW9uLgo+Cj4KPgo+ID4KPiA+Cj4gPgo+ID4gT24gVHVlLCBEZWMgMywgMjAxMyBhdCAxMTo1MSBB TSwgSm9uYXRoYW4gSHNpZWggPGpvbkBjbG91ZGVyYS5jb20+Cj4gd3JvdGU6Cj4gPgo+ID4gPiBU byBrZWVwIHRoZSBkaXNjdXNzaW9uIGZvY3VzZWQgb24gdGhlIGRlc2lnbiBnb2FscywgSSdtIGdv aW5nIHN0YXJ0Cj4gPiA+IHJlZmVycmluZyB0byBlbmlzIGFuZCBkZXZlcmFqJ3MgZXZlbnR1YWxs eSBjb25zaXN0ZW50IHJlYWQgcmVwbGljYXMgYXMKPiA+IHRoZQo+ID4gPiAqcmVhZCByZXBsaWNh KiBkZXNpZ24sIGFuZCBjb25zaXN0ZW50IGZhc3QgcmVhZCByZWNvdmVyeSBtZWNoYW5pc20KPiBi YXNlZAo+ID4gb24KPiA+ID4gc2hhZG93aW5nL3RhaWxpbmcgdGhlIHdhbHMgYXMgKnNoYWRvdyBy ZWdpb25zKiBvciAqc2hhZG93IG1lbXN0b3JlcyouCj4gPiAgQ2FuCj4gPiA+IHdlIGFncmVlIG9u IG5vbWVuY2xhdHVyZT8KPiA+ID4KPiA+ID4KPiA+ID4gT24gVHVlLCBEZWMgMywgMjAxMyBhdCAx MTowNyBBTSwgRW5pcyBTw7Z6dHV0YXIgPGVuaXNAYXBhY2hlLm9yZz4KPiB3cm90ZToKPiA+ID4K PiA+ID4gPiBUaGFua3MgSm9uIGZvciBicmluZ2luZyB0aGlzIHRvIGRldkAuCj4gPiA+ID4KPiA+ ID4gPgo+ID4gPiA+IE9uIE1vbiwgRGVjIDIsIDIwMTMgYXQgMTA6MDEgUE0sIEpvbmF0aGFuIEhz aWVoIDxqb25AY2xvdWRlcmEuY29tPgo+ID4gPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+ID4gRnVu ZGFtZW50YWxseSwgSSdkIHByZWZlciBmb2N1c2luZyBvbiBtYWtpbmcgSEJhc2UgIkhCYXNpZXIi Cj4gaW5zdGVhZAo+ID4gb2YKPiA+ID4gPiA+IHRhY2tsaW5nIGEgZmVhdHVyZSB0aGF0IG90aGVy IHN5c3RlbXMgYXJjaGl0ZWN0dXJhbGx5IGNhbiBkbyBiZXR0ZXIKPiA+ID4gPiA+IChpbmNvbnNp c3RlbnQgcmVhZHMpLiAgIEkgY29uc2lkZXIgY29uc2lzdGVudCByZWFkcy93cml0ZXMgYmVpbmcK PiBvbmUKPiA+IG9mCj4gPiA+ID4gPiBIQmFzZSdzIGRlZmluaW5nIGZlYXR1cmVzLiBUaGF0IHNh aWQsIEkgdGhpbmsgcmVhZCByZXBsaWNhcyBtYWtlcwo+ID4gc2Vuc2UKPiA+ID4gPiBhbmQKPiA+ ID4gPiA+IGlzIGEgbmljZSBmZWF0dXJlIHRvIGhhdmUuCj4gPiA+ID4gPgo+ID4gPiA+Cj4gPiA+ ID4gT3VyIGRlc2lnbiBwcm9wb3NhbCBoYXMgYSBzcGVjaWZpYyB1c2UgY2FzZSBnb2FsLCBhbmQg aG9wZWZ1bGx5IHdlCj4gY2FuCj4gPiA+ID4gZGVtb25zdHJhdGUgdGhlCj4gPiA+ID4gYmVuZWZp dHMgb2YgaGF2aW5nIHRoaXMgaW4gSEJhc2Ugc28gdGhhdCBldmVuIG1vcmUgcGllY2VzIGNhbiBi ZQo+IGJ1aWx0Cj4gPiBvbgo+ID4gPiA+IHRvcCBvZiB0aGlzLiBQbHVzIEkgaW1hZ2luZSB0aGlz IHdpbGwKPiA+ID4gPiBiZSBhIHdpZGVseSB1c2VkIGZlYXR1cmUgZm9yIHJlYWQtb25seSB0YWJs ZXMgb3IgYnVsayBsb2FkZWQgdGFibGVzLgo+IFdlCj4gPiA+IGFyZQo+ID4gPiA+IG5vdAo+ID4g PiA+IHByb3Bvc2luZyBvZiByZXdvcmtpbmcgc3Ryb25nIGNvbnNpc3RlbmN5IHNlbWFudGljcyBv ciBtYWpvcgo+ID4gPiBhcmNoaXRlY3R1cmFsCj4gPiA+ID4gY2hhbmdlcy4gSSB0aGluayBieQo+ ID4gPiA+IGhhdmluZyB0aGUgdGFibGVzIHRvIGJlIGRlZmluZWQgd2l0aCByZXBsaWNhdGlvbiBj b3VudCwgYW5kIHRoZQo+ID4gcHJvcG9zZWQKPiA+ID4gPiBjbGllbnQgQVBJIGNoYW5nZXMgKENv bnNpc3RlbmN5IGRlZmluaXRpb24pCj4gPiA+ID4gcGx1Z3Mgd2VsbCBpbnRvIHRoZSBIQmFzZSBt b2RlbCByYXRoZXIgd2VsbC4KPiA+ID4gPgo+ID4gPiA+Cj4gPiA+IEkgZG8gYWdyZWUgdGhpbmsg dGhhdCB3aXRob3V0IGFueSByZWNlbnQgdXBkYXRpbmcgbWVjaGFuaXNtLCB3ZSBhcmUKPiA+ID4g bGltaXRpbmcgdGhpcyB1c2VmdWxuZXNzIG9mIHRoaXMgZmVhdHVyZSB0byBlc3NlbnRpYWxseSAq b25seSogdGhlCj4gPiA+IHJlYWQtb25seSBvciBidWxrIGxvYWQgb25seSB0YWJsZXMuICBSZWNl bmN5IGlmIHRoZXJlIHdlcmUgYW55Cj4gPiA+IGVkaXRzL3VwZGF0ZXMgd291bGQgYmUgc2V2ZXJl bHkgbGFnZ2luZyAoYnkgZGVmYXVsdCBwb3RlbnRpYWxseSBhbgo+IGhvdXIpCj4gPiA+IGVzcGVj aWFsbHkgaW4gY2FzZXMgd2hlcmUgdGhlcmUgYXJlIG9ubHkgYSBmZXcgZWRpdHMgdG8gYSBwcmlt YXJpbHkKPiBidWxrCj4gPiA+IGxvYWRlZCB0YWJsZS4gIFRoaXMgbGltaXRhdGlvbiBpcyBub3Qg bWVudGlvbmVkIGluIHRoZSB0cmFkZW9mZnMgb3IKPiA+ID4gcmVxdWlyZW1lbnRzIChvciBhIG5v bi1yZXF1aXJlbWVudHMgc2VjdGlvbikgZGVmaW5pdGVseSBzaG91bGQgYmUKPiBsaXN0ZWQKPiA+ ID4gdGhlcmUuCj4gPiA+Cj4gPiA+IFdpdGggdGhlIGN1cnJlbnQgZGVzaWduIGl0IG1pZ2h0IGJl IGJlc3QgdG8gaGF2ZSBhIGZsYWcgb24gdGhlIHRhYmxlCj4gPiB3aGljaAo+ID4gPiBtYXJrcyBp dCByZWFkLW9ubHkgb3IgYnVsay1sb2FkIG9ubHkgc28gdGhhdCBpdCBvbmx5IGdldHMgdXNlZCBi eSB1c2Vycwo+ID4gPiB3aGVuIHRoZSB0YWJsZSBpcyBpbiB0aGF0IG1vZGU/ICAoYW5kIG1heWJl IGFuICJlc2NhcGUgaGF0Y2giIGZvciBwb3dlcgo+ID4gPiB1c2VycykuCj4gPiA+Cj4gPiA+IFtz bmlwXQo+ID4gPiA+Cj4gPiA+ID4gLSBJIHRoaW5rIHRoZSB0d28gZ29hbHMgYXJlIGJvdGggd29y dGh5IG9uIHRoZWlyIG93biBlYWNoIHdpdGggdGhlaXIKPiA+IG93bgo+ID4gPiA+ID4gb3B0aW1h bCBwb2ludHMuICBXZSBzaG91bGQgaW4gdGhlIGRlc2lnbiBtYWtlcyBzdXJlIHRoYXQgd2UgY2Fu Cj4gPiBzdXBwb3J0Cj4gPiA+ID4gPiBib3RoIGdvYWxzLgo+ID4gPiA+ID4KPiA+ID4gPgo+ID4g PiA+IEkgdGhpbmsgb3VyIHByb3Bvc2FsIGlzIGNvbnNpc3RlbnQgd2l0aCB5b3VyIGRvYywgYW5k IHdlIGhhdmUKPiA+IGNvbnNpZGVyZWQKPiA+ID4gPiBzZWNvbmRhcnkgcmVnaW9uIHByb21vdGlv bgo+ID4gPiA+IGluIHRoZSBmdXR1cmUgc2VjdGlvbi4gSXQgd291bGQgYmUgZ29vZCBpZiB5b3Ug Y2FuIHJldmlldyBhbmQgY29tbWVudAo+ID4gb24KPiA+ID4gPiB3aGV0aGVyIHlvdSBzZWUgYW55 IHBvaW50cwo+ID4gPiA+IG1pc3NpbmcuCj4gPiA+ID4KPiA+ID4gPgo+ID4gPiA+IEkgZGVmaW5p dGVseSB3aWxsLiBBdCB0aGUgbW9tZW50LCBJIHRoaW5rIHRoZSBoeWJyaWQgZm9yIHRoZQo+ID4g d2Fscy9obG9ncyBJCj4gPiA+IHN1Z2dlc3RlZCBpbiB0aGUgb3RoZXIgdGhyZWFkIHNlZW1zIHRv IGJlIGFuIG9wdGltYWwgc29sdXRpb24KPiBjb25zaWRlcmluZwo+ID4gPiBsb2NhbGl0eS4gIFRo b3VnaCBmZWFzaWJsZSBpcyBvYnZpb3VzbHkgbW9yZSBjb21wbGV4IHRoYW4ganVzdCBvbmUKPiA+ IGFwcHJvYWNoCj4gPiA+IGFsb25lLgo+ID4gPgo+ID4gPgo+ID4gPiA+ID4gLSBJIHdhbnQgdG8g bWFraW5nIHN1cmUgdGhlIHByb3Bvc2VkIGRlc2lnbiBoYXZlIGEgcGF0aCBmb3Igb3B0aW1hbAo+ ID4gPiA+ID4gZmFzdC1jb25zaXN0ZW50IHJlYWQtcmVjb3ZlcnkuCj4gPiA+ID4gPgo+ID4gPiA+ Cj4gPiA+ID4gV2UgdGhpbmsgdGhhdCBpdCBpcywgYnV0IGl0IGlzIGEgc2Vjb25kYXJ5IGdvYWwg Zm9yIHRoZSBpbml0aWFsCj4gd29yay4gSQo+ID4gPiA+IGRvbid0IHNlZSBhbnkgcmVhc29uIHdo eSBzZWNvbmRhcnkKPiA+ID4gPiBwcm9tb3Rpb24gY2Fubm90IGJlIGJ1aWxkIG9uIHRvcCBvZiB0 aGlzLCBvbmNlIHRoZSBicmFuY2ggaXMgaW4gYQo+ID4gYmV0dGVyCj4gPiA+ID4gc3RhdGUuCj4g PiA+ID4KPiA+ID4KPiA+ID4gQmFzZWQgb24gdGhlIGRldGFpbCBpbiB0aGUgZGVzaWduIGRvYyBh bmQgdGhpcyBzdGF0ZW1lbnQgaXQgc291bmRzIGxpa2UKPiA+IHlvdQo+ID4gPiBoYXZlIGEgcHJv dG90eXBlIGJyYW5jaCBhbHJlYWR5PyAgSXMgdGhpcyB0aGUgY2FzZT8KPiA+ID4KPiA+ID4gLS0K PiA+ID4gLy8gSm9uYXRoYW4gSHNpZWggKHNoYXkpCj4gPiA+IC8vIFNvZnR3YXJlIEVuZ2luZWVy LCBDbG91ZGVyYQo+ID4gPiAvLyBqb25AY2xvdWRlcmEuY29tCj4gPiA+Cj4gPgo+Cg==