Return-Path: X-Original-To: apmail-hbase-user-archive@www.apache.org Delivered-To: apmail-hbase-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2AEAE1192B for ; Mon, 16 Jun 2014 03:52:09 +0000 (UTC) Received: (qmail 9752 invoked by uid 500); 16 Jun 2014 03:52:07 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 9680 invoked by uid 500); 16 Jun 2014 03:52:07 -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 9669 invoked by uid 99); 16 Jun 2014 03:52:07 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 Jun 2014 03:52:07 +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: local policy) Received: from [202.39.229.15] (HELO wehq.winbond.com) (202.39.229.15) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 16 Jun 2014 03:52:02 +0000 Received: from mail.winbond.com (wectmlhub01.winbond.com [10.6.10.101]) by wehq.winbond.com (Postfix) with ESMTP id 28A8B342411 for ; Mon, 16 Jun 2014 11:51:50 +0800 (CST) From: Henry Hung To: "user@hbase.apache.org" Date: Mon, 16 Jun 2014 11:50:59 +0800 Subject: RE: RegexStringComparator problem: Why pattern "u" has the same result as ".*u.*" ? Thread-Topic: RegexStringComparator problem: Why pattern "u" has the same result as ".*u.*" ? Thread-Index: Ac+JE3SSJO6k5JzDQ2SD4cU+EPBB5AAAPnXQ Message-ID: <53DC189E5FAEFA43BFA1BC02431031DB740B26AD47@WECTMLBOX.winbond.com.tw> References: <53DC189E5FAEFA43BFA1BC02431031DB740B0F5400@WECTMLBOX.winbond.com.tw> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: zh-TW, en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Virus-Checked: Checked by ClamAV on apache.org SSBmb3VuZCBvdXQgdGhlIHByb2JsZW06DQoNCkkgdGhpbmsgSSBrbm93IHdoYXQgaXMgZ29pbmcg b24sIGluc2lkZSB0aGUgUmVnZXhTdHJpbmdDb21wYXJhdG9yLCB0aGUgY29tcGFyZVRvIGlzIHVz aW5nIGZpbmQoKSByYXRoZXIgdGhhbiBtYXRjaGVzKCk6DQoNCiAgcHVibGljIGludCBjb21wYXJl VG8oYnl0ZVtdIHZhbHVlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoKSB7DQogICAgLy8gVXNlIGZp bmQoKSBmb3Igc3Vic2VxdWVuY2UgbWF0Y2ggaW5zdGVhZCBvZiBtYXRjaGVzKCkgKGZ1bGwgc2Vx dWVuY2UNCiAgICAvLyBtYXRjaCkgdG8gYWRoZXJlIHRvIHRoZSBwcmluY2lwbGUgb2YgbGVhc3Qg c3VycHJpc2UuDQogICAgU3RyaW5nIHRtcDsNCiAgICBpZiAobGVuZ3RoIDwgdmFsdWUubGVuZ3Ro IC8gMikgew0KICAgICAgLy8gU2VlIEhCQVNFLTk0MjguIE1ha2UgYSBjb3B5IG9mIHRoZSByZWxl dmFudCBwYXJ0IG9mIHRoZSBieXRlW10sDQogICAgICAvLyBvciB0aGUgSkRLIHdpbGwgY29weSB0 aGUgZW50aXJlIGJ5dGVbXSBkdXJpbmcgU3RyaW5nIGRlY29kZQ0KICAgICAgdG1wID0gbmV3IFN0 cmluZyhBcnJheXMuY29weU9mUmFuZ2UodmFsdWUsIG9mZnNldCwgb2Zmc2V0ICsgbGVuZ3RoKSwg Y2hhcnNldCk7DQogICAgfSBlbHNlIHsNCiAgICAgIHRtcCA9IG5ldyBTdHJpbmcodmFsdWUsIG9m ZnNldCwgbGVuZ3RoLCBjaGFyc2V0KTsNCiAgICB9DQogICAgcmV0dXJuIHBhdHRlcm4ubWF0Y2hl cih0bXApLmZpbmQoKSA/IDAgOiAxOw0KICB9DQoNCg0KSSB1c2UgYSBzaW1wbGUgcHJvZ3JhbSB0 byB0ZXN0IHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbWF0Y2hlcygpIGFuZCBmaW5kKCk6DQoNClN0 cmluZyBzID0gImh1bmciOw0KUGF0dGVybiBwID0gUGF0dGVybi5jb21waWxlKCJ1IiwgUGF0dGVy bi5ET1RBTEwpOw0KTWF0Y2hlciBtID0gcC5tYXRjaGVyKHMpOw0KU3lzdGVtLm91dC5wcmludGxu KG0ubWF0Y2hlcygpKTsgLy8gcmV0dXJuIGZhbHNlDQpTeXN0ZW0ub3V0LnByaW50bG4obS5maW5k KCkpOyAgICAgICAgICAvLyByZXR1cm4gdHJ1ZQ0KDQpwID0gUGF0dGVybi5jb21waWxlKCIuKnUu KiIsIFBhdHRlcm4uRE9UQUxMKTsNCm0gPSBwLm1hdGNoZXIocyk7DQpTeXN0ZW0ub3V0LnByaW50 bG4obS5tYXRjaGVzKCkpOyAvLyByZXR1cm4gdHJ1ZQ0KU3lzdGVtLm91dC5wcmludGxuKG0uZmlu ZCgpKTsgICAgICAgICAgLy8gcmV0dXJuIGZhbHNlDQoNClRoZSBtZXRob2QgbWF0Y2hlcygpIGlz IHdoYXQgSSBuZWVkZWQgcmlnaHQgbm93LCBhbmQgdG8gbWUgaXQgaXMgbW9yZSByZWFzb25hYmxl IHRvIHVzZSwgYnV0IEkgZG9uJ3Qga25vdyBob3cgdG8gY2hhbmdlIGl0IHdpdGhvdXQgbW9kaWZ5 IHRoZSBzb3VyY2UgY29kZS4NCg0KQFRlZDoNCldoYXQgeW91IGFyZSBzdWdnZXN0aW5nIGlzIHRy dWUsIGJ1dCBmb3Igb3VyIHVzZXIgYmFzZSBpdCByYXRoZXIgY291bnRlcmludHVpdGl2ZSwgYmVj YXVzZSB3ZSBhcmUgYWNjdXN0b21lZCB0byBzZWFyY2hpbmcga2V5d29yZCB3aXRoIGV4cHJlc3Np b24gImFiYy4qIiB0byBzZWFyY2ggd2l0aCBwcmVmaXggImFiYyIgcmF0aGVyIHRoYW4gaGF2ZSB0 byBleHBsaWNpdGx5IHVzZSAiXmFiYy4qIi4NCklmIEkgY2FuJ3QgY2hhbmdlIHRoZSBSZWdleFN0 cmluZ0NvbXBhcmF0b3IgIGNvbXBhcmVUbygpIG1ldGhvZCBmcm9tICJmaW5kKCkiIHRvICJtYXRj aGVzKCkiLCB0aGVuIEkgc3VwcG9zZSBJIGNhbiBpbXBsZW1lbnQgYSBoYXJkIGZpeCBieSBhZGRp bmcgIl4iIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2VhcmNoIGtleXdvcmQuDQpUaGFua3MgZm9yIHlv dSBxdWljayByZXNwb25zZXMuDQoNCkJlc3QgcmVnYXJkcywNCkhlbnJ5DQoNCi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBUZWQgWXUgW21haWx0bzp5dXpoaWhvbmdAZ21haWwuY29t XQ0KU2VudDogTW9uZGF5LCBKdW5lIDE2LCAyMDE0IDExOjMyIEFNDQpUbzogdXNlckBoYmFzZS5h cGFjaGUub3JnDQpTdWJqZWN0OiBSZTogUmVnZXhTdHJpbmdDb21wYXJhdG9yIHByb2JsZW06IFdo eSBwYXR0ZXJuICJ1IiBoYXMgdGhlIHNhbWUgcmVzdWx0IGFzICIuKnUuKiIgPw0KDQoidSIgaXMg cGFydCBvZiAiaHVuZyIsIHByb2R1Y2luZyBhIG1hdGNoLg0KDQpEbyB5b3Ugd2FudCB0byBmaW5k IHN0cmluZyB3aG9zZSB2YWx1ZSBpcyAidSIgKG5vdCBhIHN1YnN0cmluZykgPw0KSW4gdGhhdCBj YXNlIHlvdSBjYW4gc3BlY2lmeSAiXnUkIg0KDQpDaGVlcnMNCg0KDQpPbiBTdW4sIEp1biAxNSwg MjAxNCBhdCA4OjIwIFBNLCBIZW5yeSBIdW5nIDxZVEh1bmcxQHdpbmJvbmQuY29tPiB3cm90ZToN Cg0KPg0KPiBJIGhhdmUgdGhpcyBkYXRhIHNldCBhbmQgdGhlIHZhbHVlIEkgd2FudCB0byB0ZXN0 IGlzICJjZjpjIiA9ICJodW5nIjoNCj4NCj4gaGJhc2UobWFpbik6MDAxOjA+IHNjYW4gJ1RFU1Qn DQo+IFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDT0xVTU4rQ0VMTA0KPiBceDAwXHgwMFx4MDBceDAzYWJjXHgwMFx4MDBceDAwXHgw MiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YSwNCj4gdGltZXN0YW1wPTE0MDI2 NDk1MTE5MDksIHZhbHVlPWFiYw0KPiBceDAwXHgwMFx4MDBceDAzYWJjXHgwMFx4MDBceDAwXHgw MiAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YiwNCj4gdGltZXN0YW1wPTE0MDI2 NDk1MTE5MDksIHZhbHVlPVx4MDBceDAwXHgwMFx4MDINCj4gXHgwMFx4MDBceDAwXHgwM2FiY1x4 MDBceDAwXHgwMFx4MDIgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmMsDQo+IHRp bWVzdGFtcD0xNDAyNjQ5NTExOTA5LCB2YWx1ZT1kZWYNCj4gXHgwMFx4MDBceDAwXHgwM2FiY1x4 MDBceDAwXHgwMFx4MDIgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmQsDQo+IHRp bWVzdGFtcD0xNDAyNjQ5NTExOTA5LCB2YWx1ZT1ceDAwXHgwMFx4MDFGXHg5M1x4ODFzXHhBOA0K PiBceDAwXHgwMFx4MDBceDAzYWJjXHgwMFx4MDBceDAwXHgwMyAgICAgICAgICAgICAgICAgICAg ICAgICBjb2x1bW49Y2Y6YSwNCj4gdGltZXN0YW1wPTE0MDI2NDk2MTA1NTcsIHZhbHVlPWFiYw0K PiBceDAwXHgwMFx4MDBceDAzYWJjXHgwMFx4MDBceDAwXHgwMyAgICAgICAgICAgICAgICAgICAg ICAgICBjb2x1bW49Y2Y6YiwNCj4gdGltZXN0YW1wPTE0MDI2NDk2MTA1NTcsIHZhbHVlPVx4MDBc eDAwXHgwMFx4MDMNCj4gXHgwMFx4MDBceDAwXHgwM2FiY1x4MDBceDAwXHgwMFx4MDMgICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmMsDQo+IHRpbWVzdGFtcD0xNDAyNjQ5NjEwNTU3 LCB2YWx1ZT1kZWYNCj4gXHgwMFx4MDBceDAwXHgwM2FiY1x4MDBceDAwXHgwMFx4MDMgICAgICAg ICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmQsDQo+IHRpbWVzdGFtcD0xNDAyNjQ5NjEwNTU3 LCB2YWx1ZT1ceDAwXHgwMFx4MDFGXHg5M1x4ODFzXHhBOA0KPiBceDAwXHgwMFx4MDBceDAzYWJj XHgwMFx4MDBceDAwXHgwNCAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YSwNCj4g dGltZXN0YW1wPTE0MDI2NTAwMTU2MDIsIHZhbHVlPWFiYw0KPiBceDAwXHgwMFx4MDBceDAzYWJj XHgwMFx4MDBceDAwXHgwNCAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YiwNCj4g dGltZXN0YW1wPTE0MDI2NTAwMTU2MDIsIHZhbHVlPVx4MDBceDAwXHgwMFx4MDQNCj4gXHgwMFx4 MDBceDAwXHgwM2FiY1x4MDBceDAwXHgwMFx4MDQgICAgICAgICAgICAgICAgICAgICAgICAgY29s dW1uPWNmOmMsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDE1NjAyLCB2YWx1ZT1kZWYNCj4gXHgwMFx4 MDBceDAwXHgwM2FiY1x4MDBceDAwXHgwMFx4MDQgICAgICAgICAgICAgICAgICAgICAgICAgY29s dW1uPWNmOmQsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDE1NjAyLCB2YWx1ZT1ceDAwXHgwMFx4MDFG XHg5M1x4ODFzXHhBOA0KPiBceDAwXHgwMFx4MDBceDA1aGVucnlceDAwXHgwMFx4MDBceDA2ICAg ICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YSwNCj4gdGltZXN0YW1wPTE0MDI4ODY0MDQ2 OTgsIHZhbHVlPWhlbnJ5DQo+IFx4MDBceDAwXHgwMFx4MDVoZW5yeVx4MDBceDAwXHgwMFx4MDYg ICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbj1jZjpiLA0KPiB0aW1lc3RhbXA9MTQwMjg4NjQw NDY5OCwgdmFsdWU9XHgwMFx4MDBceDAwXHgwNg0KPiBceDAwXHgwMFx4MDBceDA1aGVucnlceDAw XHgwMFx4MDBceDA2ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YywNCj4gdGltZXN0 YW1wPTE0MDI4ODY0MDQ2OTgsIHZhbHVlPWh1bmcNCj4gXHgwMFx4MDBceDAwXHgwNWhlbnJ5XHgw MFx4MDBceDAwXHgwNiAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmQsDQo+IHRpbWVz dGFtcD0xNDAyODg2NDA0Njk4LCB2YWx1ZT1ceDAwXHgwMFx4MDFGXHhBMlx4OEFceEJEXHhBMA0K PiBceDAwXHgwMFx4MDBceDA2YWJjZGVmXHgwMFx4MDBceDAwXHgwMSAgICAgICAgICAgICAgICAg ICAgICBjb2x1bW49Y2Y6YSwNCj4gdGltZXN0YW1wPTE0MDI2NTAwMjI3NTUsIHZhbHVlPWFiY2Rl Zg0KPiBceDAwXHgwMFx4MDBceDA2YWJjZGVmXHgwMFx4MDBceDAwXHgwMSAgICAgICAgICAgICAg ICAgICAgICBjb2x1bW49Y2Y6YiwNCj4gdGltZXN0YW1wPTE0MDI2NTAwMjI3NTUsIHZhbHVlPVx4 MDBceDAwXHgwMFx4MDENCj4gXHgwMFx4MDBceDAwXHgwNmFiY2RlZlx4MDBceDAwXHgwMFx4MDEg ICAgICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmMsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDIy NzU1LCB2YWx1ZT1kZWYNCj4gXHgwMFx4MDBceDAwXHgwNmFiY2RlZlx4MDBceDAwXHgwMFx4MDEg ICAgICAgICAgICAgICAgICAgICAgY29sdW1uPWNmOmQsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDIy NzU1LCB2YWx1ZT1ceDAwXHgwMFx4MDFGXHg5M1x4ODFzXHhBOA0KPiBceDAwXHgwMFx4MDBceDA2 YWJjZGVmXHgwMFx4MDBceDAwXHgwMiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6YSwN Cj4gdGltZXN0YW1wPTE0MDI2NTAwMjU3NjMsIHZhbHVlPWFiY2RlZg0KPiBceDAwXHgwMFx4MDBc eDA2YWJjZGVmXHgwMFx4MDBceDAwXHgwMiAgICAgICAgICAgICAgICAgICAgICBjb2x1bW49Y2Y6 YiwNCj4gdGltZXN0YW1wPTE0MDI2NTAwMjU3NjMsIHZhbHVlPVx4MDBceDAwXHgwMFx4MDINCj4g XHgwMFx4MDBceDAwXHgwNmFiY2RlZlx4MDBceDAwXHgwMFx4MDIgICAgICAgICAgICAgICAgICAg ICAgY29sdW1uPWNmOmMsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDI1NzYzLCB2YWx1ZT1kZWYNCj4g XHgwMFx4MDBceDAwXHgwNmFiY2RlZlx4MDBceDAwXHgwMFx4MDIgICAgICAgICAgICAgICAgICAg ICAgY29sdW1uPWNmOmQsDQo+IHRpbWVzdGFtcD0xNDAyNjUwMDI1NzYzLCB2YWx1ZT1ceDAwXHgw MFx4MDFGXHg5M1x4ODFzXHhBOA0KPiA2IHJvdyhzKSBpbiAwLjEwOTAgc2Vjb25kcw0KPg0KPg0K PiBJIHdyb3RlIHNvbWUgcHJvZ3JhbSB0byB0ZXN0IGl0Og0KPg0KPiBIVGFibGUgY29ubiA9IG5l dyBIVGFibGUoSEJhc2VDb25maWd1cmF0aW9uLmNyZWF0ZSgpLCAiVEVTVCIpOyB0cnkgew0KPiAg ICAgICAgICAgICAgICAgU2NhbiBzY2FuID0gbmV3IFNjYW4oKTsNCj4gICAgICAgICAgICAgICAg IFJlZ2V4U3RyaW5nQ29tcGFyYXRvciBjb21wID0gbmV3DQo+IFJlZ2V4U3RyaW5nQ29tcGFyYXRv cigidSIpOw0KPiAgICAgICAgICAgICAgICAgU2luZ2xlQ29sdW1uVmFsdWVGaWx0ZXIgZmlsdGVy ID1uZXcNCj4gU2luZ2xlQ29sdW1uVmFsdWVGaWx0ZXIoQnl0ZXMudG9CeXRlcygiY2YiKSwgQnl0 ZXMudG9CeXRlcygiYyIpLA0KPiBDb21wYXJlT3AuRVFVQUwsIGNvbXApOw0KPiAgICAgICAgICAg ICAgICAgRmlsdGVyTGlzdCBmaWx0ZXJzID0gbmV3DQo+IEZpbHRlckxpc3QoT3BlcmF0b3IuTVVT VF9QQVNTX0FMTCk7DQo+ICAgICAgICAgICAgICAgICBmaWx0ZXJzLmFkZEZpbHRlcihmaWx0ZXIp Ow0KPiAgICAgICAgICAgICAgICAgc2Nhbi5zZXRGaWx0ZXIoZmlsdGVycyk7DQo+ICAgICAgICAg ICAgICAgICBSZXN1bHRTY2FubmVyIHJzID0gY29ubi5nZXRTY2FubmVyKHNjYW4pOw0KPiAgICAg ICAgICAgICAgICAgdHJ5IHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1 bHQgciA9IHJzLm5leHQoKTsNCj4NCj4gU3lzdGVtLm91dC5wcmludGxuKEJ5dGVzLnRvU3RyaW5n KHIuZ2V0VmFsdWUoQnl0ZXMudG9CeXRlcygiY2YiKSwNCj4gQnl0ZXMudG9CeXRlcygiYyIpKSkp Ow0KPiAgICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgICAgZmluYWxseSB7DQo+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnMuY2xvc2UoKTsNCj4gICAgICAgICAgICAg ICAgIH0NCj4gfQ0KPiBmaW5hbGx5IHsNCj4gICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKTsN Cj4gfQ0KPg0KPiBCZWNhdXNlIEkgdXNlIHJlZ2V4ICJ1IiBhcyB0aGUgdmFsdWUgY29tcGFyYXRv ciwgdGhlIHByb2dyYW0gc2hvdWxkDQo+IHRocm93IGEgbnVsbCB2YWx1ZSBleGNlcHRpb24uDQo+ IEJ1dCB3aGVuIGV4ZWN1dGUgaXQsIHRoZSByZXN1bHQgaXMgImh1bmciLg0KPg0KPiBRdWVzdGlv biBpcyB3aHkgdGhlIFNpbmdsZUNvbHVtblZhbHVlRmlsdGVyIGRvIG5vdCBhYmlkZSB0aGUgcmVn ZXgNCj4gY29tcGFyYXRvcj8gT3Igd2h5IGlzIHJlZ2V4IGNvbXBhcmF0b3IgInUiIGlzIHRoZSBz YW1lIGFzICIuKnUuKiI/DQo+DQo+IEJlc3QgcmVnYXJkcywNCj4gSGVucnkgSHVuZw0KPg0KPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiBUaGUgcHJpdmlsZWdlZCBjb25maWRl bnRpYWwgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoaXMgZW1haWwgaXMNCj4gaW50ZW5kZWQg Zm9yIHVzZSBvbmx5IGJ5IHRoZSBhZGRyZXNzZWVzIGFzIGluZGljYXRlZCBieSB0aGUgb3JpZ2lu YWwNCj4gc2VuZGVyIG9mIHRoaXMgZW1haWwuIElmIHlvdSBhcmUgbm90IHRoZSBhZGRyZXNzZWUg aW5kaWNhdGVkIGluIHRoaXMNCj4gZW1haWwgb3IgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZGVs aXZlcnkgb2YgdGhlIGVtYWlsIHRvIHN1Y2ggYQ0KPiBwZXJzb24sIHBsZWFzZSBraW5kbHkgcmVw bHkgdG8gdGhlIHNlbmRlciBpbmRpY2F0aW5nIHRoaXMgZmFjdCBhbmQNCj4gZGVsZXRlIGFsbCBj b3BpZXMgb2YgaXQgZnJvbSB5b3VyIGNvbXB1dGVyIGFuZCBuZXR3b3JrIHNlcnZlcg0KPiBpbW1l ZGlhdGVseS4gWW91ciBjb29wZXJhdGlvbiBpcyBoaWdobHkgYXBwcmVjaWF0ZWQuIEl0IGlzIGFk dmlzZWQNCj4gdGhhdCBhbnkgdW5hdXRob3JpemVkIHVzZSBvZiBjb25maWRlbnRpYWwgaW5mb3Jt YXRpb24gb2YgV2luYm9uZCBpcw0KPiBzdHJpY3RseSBwcm9oaWJpdGVkOyBhbmQgYW55IGluZm9y bWF0aW9uIGluIHRoaXMgZW1haWwgaXJyZWxldmFudCB0bw0KPiB0aGUgb2ZmaWNpYWwgYnVzaW5l c3Mgb2YgV2luYm9uZCBzaGFsbCBiZSBkZWVtZWQgYXMgbmVpdGhlciBnaXZlbiBub3IgZW5kb3Jz ZWQgYnkgV2luYm9uZC4NCj4NCg0KVGhlIHByaXZpbGVnZWQgY29uZmlkZW50aWFsIGluZm9ybWF0 aW9uIGNvbnRhaW5lZCBpbiB0aGlzIGVtYWlsIGlzIGludGVuZGVkIGZvciB1c2Ugb25seSBieSB0 aGUgYWRkcmVzc2VlcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIG9yaWdpbmFsIHNlbmRlciBvZiB0aGlz IGVtYWlsLiBJZiB5b3UgYXJlIG5vdCB0aGUgYWRkcmVzc2VlIGluZGljYXRlZCBpbiB0aGlzIGVt YWlsIG9yIGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGRlbGl2ZXJ5IG9mIHRoZSBlbWFpbCB0byBz dWNoIGEgcGVyc29uLCBwbGVhc2Uga2luZGx5IHJlcGx5IHRvIHRoZSBzZW5kZXIgaW5kaWNhdGlu ZyB0aGlzIGZhY3QgYW5kIGRlbGV0ZSBhbGwgY29waWVzIG9mIGl0IGZyb20geW91ciBjb21wdXRl ciBhbmQgbmV0d29yayBzZXJ2ZXIgaW1tZWRpYXRlbHkuIFlvdXIgY29vcGVyYXRpb24gaXMgaGln aGx5IGFwcHJlY2lhdGVkLiBJdCBpcyBhZHZpc2VkIHRoYXQgYW55IHVuYXV0aG9yaXplZCB1c2Ug b2YgY29uZmlkZW50aWFsIGluZm9ybWF0aW9uIG9mIFdpbmJvbmQgaXMgc3RyaWN0bHkgcHJvaGli aXRlZDsgYW5kIGFueSBpbmZvcm1hdGlvbiBpbiB0aGlzIGVtYWlsIGlycmVsZXZhbnQgdG8gdGhl IG9mZmljaWFsIGJ1c2luZXNzIG9mIFdpbmJvbmQgc2hhbGwgYmUgZGVlbWVkIGFzIG5laXRoZXIg Z2l2ZW4gbm9yIGVuZG9yc2VkIGJ5IFdpbmJvbmQuDQo=