Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:33818 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 48501 invoked by uid 1010); 7 Dec 2007 05:18:05 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 48486 invoked from network); 7 Dec 2007 05:18:05 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 Dec 2007 05:18:05 -0000 Authentication-Results: pb1.pair.com smtp.mail=andi@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=andi@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 212.25.124.162 as permitted sender) X-PHP-List-Original-Sender: andi@zend.com X-Host-Fingerprint: 212.25.124.162 mail.zend.com Windows 2000 SP4, XP SP1 Received: from [212.25.124.162] ([212.25.124.162:57027] helo=mx1.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 30/DB-15167-B87D8574 for ; Fri, 07 Dec 2007 00:18:05 -0500 Received: from us-ex1.zend.com ([192.168.16.5]) by mx1.zend.com with Microsoft SMTPSVC(6.0.3790.3959); Fri, 7 Dec 2007 07:18:00 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 x-cr-hashedpuzzle: BuYO CA2g GykL IFmI MuL8 MvIe O0PM Sbsf Sx1o U2Qv Xn+1 Yj3O ZBH+ Zyox fH+T idLr;3;ZABlAHIAaQBjAGsAQABwAGgAcAAuAG4AZQB0ADsAZwByAGUAZwBAAGMAaABpAGEAcgBhAHEAdQBhAHIAdABlAHQALgBuAGUAdAA7AGkAbgB0AGUAcgBuAGEAbABzAEAAbABpAHMAdABzAC4AcABoAHAALgBuAGUAdAA=;Sosha1_v1;7;{78FBD6FF-2AFE-4D3A-846C-562770D0E92B};YQBuAGQAaQBAAHoAZQBuAGQALgBjAG8AbQA=;Fri, 07 Dec 2007 05:17:45 GMT;UgBFADoAIABbAFAASABQAC0ARABFAFYAXQAgAEEAIAByAGUAYgB1AHQAdABhAGwAIAB0AG8AIABSAGUAOgAgAFIARgBDADoAIABEAHIAbwBwAHAAaQBuAGcAIABOAGEAbQBlAHMAcABhAGMAZQA= X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message Date: Thu, 6 Dec 2007 21:17:45 -0800 x-cr-puzzleid: {78FBD6FF-2AFE-4D3A-846C-562770D0E92B} Message-ID: <698DE66518E7CA45812BD18E807866CE0100C51D@us-ex1.zend.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PHP-DEV] A rebuttal to Re: RFC: Dropping Namespace Thread-Index: Acg4ceqPNngOS1XvTb+geRTY9IlncAAHmJjA References: <4758A390.4040402@chiaraquartet.net> To: "Gregory Beaver" , "Derick Rethans" Cc: "PHP Developers Mailing List" X-OriginalArrivalTime: 07 Dec 2007 05:18:00.0574 (UTC) FILETIME=[890B89E0:01C83890] Subject: RE: [PHP-DEV] A rebuttal to Re: RFC: Dropping Namespace From: andi@zend.com ("Andi Gutmans") SGkgR3JlZywNCg0KVGhhbmtzIGZvciB0aGUgZGV0YWlsZWQgdGhvdWdodHMuDQpHdWlkZXMgJiBl eGFtcGxlcyByZWdhcmRpbmcgdXNlLWNhc2VzIHdpbGwgZGVmaW5pdGVseSBiZSBpbXBvcnRhbnQg Zm9yIHRoZSBjb21tdW5pdHkuIEkgYW0gc3VyZSBqdXN0IHRoaXMgZW1haWwgaGFzIGFscmVhZHkg YmVlbiB2ZXJ5IGhlbHBmdWwgdG8gbWFueSBvbiB0aGlzIGxpc3QuDQoNCkFuZGkNCg0KPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHcmVnb3J5IEJlYXZlciBbbWFpbHRvOmdy ZWdAY2hpYXJhcXVhcnRldC5uZXRdDQo+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciAwNiwgMjAw NyA1OjM2IFBNDQo+IFRvOiBEZXJpY2sgUmV0aGFucw0KPiBDYzogUEhQIERldmVsb3BlcnMgTWFp bGluZyBMaXN0DQo+IFN1YmplY3Q6IFtQSFAtREVWXSBBIHJlYnV0dGFsIHRvIFJlOiBSRkM6IERy b3BwaW5nIE5hbWVzcGFjZQ0KPiANCj4gSGkgRGVyaWNrLA0KPiANCj4gSSd2ZSBiZWVuIHRoaW5r aW5nIGEgKmxvdCogYWJvdXQgeW91ciBwcm92b2NhdGl2ZSBlbWFpbCBpbiB0aGUgcGFzdA0KPiBj b3VwbGUgb2YgZGF5cywgYW5kIGhhdmUgY29tZSB0byBhIGRpZmZlcmVudCBjb25jbHVzaW9uIGZy b20gbXkNCj4gb3JpZ2luYWwNCj4gcmVwbHkgKHdoaWNoLCBhcyBhIHJlbWluZGVyIHN0YXRlZCBJ IHNhdyBubyBwcm9ibGVtIHdpdGggcmVtb3ZpbmcNCj4gbmFtZXNwYWNlcyBhcyBsb25nIGFzIHdl IGtlcHQgdGhlIGltcG9ydCBmYWNpbGl0eSB0byBhbGlhcyBjbGFzc2VzIHZpYQ0KPiB1c2UpLiAg QWZ0ZXIgYSBmZXcgaG91cnMgb2YgdGhpbmtpbmcgcHJhY3RpY2FsbHkgYWJvdXQgdGhlDQo+IGlt cGxlbWVudGF0aW9uLCBJIHJlYWxpemVkIHRoYXQgdGhpcyB3b3VsZCBiZSBpbXBvc3NpYmxlIGZv ciB0aGUgc2FtZQ0KPiByZWFzb25zIGFzIHlvdXIgZmlyc3QgYXJndW1lbnQuICBTbywgSSBzZXQg b3V0IHRvIGZpbmQgYSBzb2x1dGlvbiB0aGF0DQo+IGtlZXBzIG5hbWVzcGFjZXMgYW5kIHNvbHZl cyB0aGUgcHJvYmxlbXMuDQo+IA0KPiBJIGhhdmUgZm91bmQgdGhlIHNvbHV0aW9ucyB0byBldmVy eSBwcm9ibGVtIEkgY291bGQgZmluZCwgYW5kIHRvIG15DQo+IHN1cnByaXNlLCBldmVuIGFmdGVy IGNyYWZ0aW5nIGEgbmV3IHBhdGNoIHRvIHNvbHZlIHNvbWUgb2YgdGhlbSwgaGF2ZQ0KPiBmb3Vu ZCBhIHdheSB0byBzb2x2ZSBhbGwgb2YgdGhlIHByb2JsZW1zIHdpdGhpbiB0aGUgZXhpc3RpbmcN Cj4gaW1wbGVtZW50YXRpb24gKHdpdGggYSBmZXcgdHdlYWtzLCBidXQgbm90aGluZyBtYWpvciBj aGFuZ2VkKSBvciBieQ0KPiBzcGVjaWZ5aW5nIG5ldyBjb2RpbmcgY29udmVudGlvbnMuDQo+IA0K PiBTdW1tYXJ5Og0KPiANCj4gMSkgcmVjb21tZW5kIGFsbCBnbG9iYWwgbm9uLW5hbWVzcGFjZWQg Y29kZSB0aGF0IHdpc2hlcyB0byBpbXBvcnQNCj4gbmFtZXNwYWNlZCBjb2RlIHZpYSAidXNlIE5h bWVzcGFjZTo6Q2xhc3NuYW1lIiBhZGQgYSAibmFtZXNwYWNlDQo+IF9fcGhwX187IiBhdCB0aGUg dG9wIG9mIHRoZSBmaWxlLCBhbmQgdGhhdCB0aGUgX19waHBfXyBuYW1lc3BhY2UgYmUNCj4gcmVz ZXJ2ZWQgZm9yIHVzZSBieSBlbmQtdXNlciBhcHBsaWNhdGlvbnMuDQo+IDIpIHVzZSBOYW1lOjoq OyBpcyB0ZWNobmljYWxseSBpbXBvc3NpYmxlIHdpdGhvdXQgc29tZSBraW5kIG9mDQo+IGF1dG9s b2FkaW5nIG1lY2hhbmlzbSwgYnV0IGNhbiBiZSByZWFzb25hYmx5IGFwcHJveGltYXRlZCBieSBp bXBvcnRpbmcNCj4gYQ0KPiBsb25nIG5hbWVzcGFjZSBuYW1lIGFzIGEgc2hvcnRlciBvbmUuICAi dXNlIFBFQVIyOjpSZWFsbHk6Okxvbmc6Ok5hbWUNCj4gYXMNCj4gYTsiIHRoZW4gYWxsb3dzIHJl ZmVycmluZyB0byBQRUFSMjo6UmVhbGx5OjpMb25nOjpOYW1lOjpDbGFzc25hbWUgYXMNCj4gYTo6 Q2xhc3NuYW1lLCBhbmQgUEVBUjI6OlJlYWxseTo6TG9uZzo6U3VibmFtZXNwYWNlOjpDbGFzc25h bWUgYXMNCj4gYTo6U3VibmFtZXNwYWNlOjpDbGFzc25hbWUuDQo+IDMpIG11bHRpcGxlIG5hbWVz cGFjZXMgcGVyIGZpbGUgc2hvdWxkIGJlIGFsbG93ZWQsIGJ1dCBzdHJvbmdseQ0KPiBkaXNjb3Vy YWdlZCBhcyBhIGNvZGluZyBwcmFjdGljZSBvZiBsYXN0IHJlc29ydCBmb3IgbW9zdCB1c2Vycy4N Cj4gNCkgYnJhY2tldHMgZm9yIG5hbWVzcGFjZXMgaXMgbW9zdCBuZWNlc3NhcnkgZm9yIGhpZXJh cmNoaWNhbCBuYW1lc3BhY2UNCj4gaW1wbGVtZW50YXRpb25zLiAgVGhpcyBpcyBub3Qgc3VjaCBh biBpbXBsZW1lbnRhdGlvbiwgYW5kIGFzIHN1Y2gNCj4gYnJhY2tldHMgZG8gbm90IGFkZCBjbGFy aXR5IGJ1dCBkbyBzbG93IGRvd24gdGhlIGltcGxlbWVudGF0aW9uLg0KPiA1KSBuYW1lc3BhY2Vz IHByb3ZpZGUgdGhlc2UgYmVuZWZpdHMgdGhhdCBhcmUgbm90IGF2YWlsYWJsZSBpbiBQSFA6DQo+ ICAgIGEpIHNob3J0LCB1bnF1YWxpZmllZCBkZXNjcmlwdGl2ZSBjbGFzcyBuYW1lcyBjYW4gYmUg dXNlZCB3aXRob3V0DQo+IGZlYXIgb2YgY29uZmxpY3Rpbmcgd2l0aCBhbiBpbnRlcm5hbCBjbGFz cw0KPiAgICBiKSBhIGNsZWFyLCB1bmlmb3JtIGNvZGluZyBjb252ZW50aW9uIG9uIGhvdyB0byBh dm9pZCBjb25mbGljdHMNCj4gYmV0d2VlbiB5b3VyIGNvZGUgYW5kIG90aGVycyB0aGF0IHdpbGwg aGVscCB0aG9zZSB3aG8gaGF2ZSB0byBtYWludGFpbg0KPiB0aGUgY29kZSBvZiBvdGhlcnMuDQo+ ICAgIGMpIGEgd2F5IHRvIGFsaWFzIGxvbmdlciBuYW1lcyB0byBpbmNyZWFzZSByZWFkYWJpbGl0 eSBhbmQNCj4gbWFpbnRhaW5hYmlsaXR5IG9mIGNvZGUuDQo+IDYpIFRoZXJlIGFyZSBzb21lIGRh bmdlcnMgd2hlbiB1c2luZyBuYW1lc3BhY2VzIHdpdGggYXV0b2xvYWQsIGJ1dA0KPiBzaW1wbGUg d2F5cyBvZiB0aHdhcnRpbmcgdGhvc2UgZGFuZ2Vycy4gIEFsc28gZGFuZ2Vyb3VzIGlzIHRydXN0 aW5nDQo+IGV4dGVybmFsIGNvZGUgdGhhdCBpcyBpbiB0aGUgc2FtZSBuYW1lc3BhY2UsIGFzIGZ1 bmN0aW9ucyBjYW4gYmUNCj4gcmVkZWZpbmVkLg0KPiANCj4gRGV0YWlsZWQgYW5zd2VyczoNCj4g DQo+IERlcmljayBSZXRoYW5zIHdyb3RlOg0KPiA+IDEuIEFzIGl0IGlzIGltcG9zc2libGUgdG8g ZG8gInVzZSBYWFggYXMgTmF0aXZlQ2xhc3MiIHdlIGdldCB0byB0aGUNCj4gPHNuaXA+DQo+ID4g ICAgZXh0ZW5zaW9uIChEYXRlVGltZSwgRGF0ZVRpbWVab25lKS4gSG93ZXZlciBpbnRyb2R1Y2lu ZyB0aGUgbmV3DQo+IGNsYXNzDQo+ID4gICAgRGF0ZVRpbWVTcGFuIG1pZ2h0IGJyZWFrIHBlb3Bs ZSdzIGNvZGUgdGhhdCBkbyB0aGluZ3MgbGlrZToNCj4gPg0KPiA+IAk8P3BocA0KPiA+IAl1c2Ug bXlOYW1lc3BhY2U6OkRhdGVUaW1lWm9uZSBhcyBEYXRlVGltZVpvbmU7DQo+ID4gCT8+DQo+IA0K PiBUaGlzIGlzIGluZGVlZCB0aGUgYmlnZ2VzdCBwcm9ibGVtLiAgSG93ZXZlciwgaXQgb25seSBl eGlzdHMgaW4gdGhlDQo+IGdsb2JhbCAibmFtZXNwYWNlIiAobm9uLW5hbWVzcGFjZWQgY29kZSku ICBBbiBleGFtcGxlIHNjcmlwdCB1c2luZyB0aGUNCj4gbm9uLWV4aXN0aW5nIGh5cG90aGV0aWNh bCBQRUFSMjo6RGF0ZVRpbWUgY2xhc3M6DQo+IA0KPiA8P3BocA0KPiBpbmNsdWRlICdQRUFSMi9B dXRvbG9hZC5waHAnOw0KPiB1c2UgUEVBUjI6OkRhdGVUaW1lOyAvLyBmYXRhbCBlcnJvciAtIHVz ZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGludGVybmFsDQo+IGNsYXNzDQo+ICRhID0gbmV3IERhdGVU aW1lOw0KPiA/Pg0KPiANCj4gSG93ZXZlciwgdGhlIGFuc3dlciBpcyBzaW1wbGUgYW5kIGVsZWdh bnQuICBQSFAgYXBwbGljYXRpb25zIHRoYXQgdGFrZQ0KPiBhZHZhbnRhZ2Ugb2YgbmFtZXNwYWNl cyBzaG91bGQgdXNlIGEgbmFtZXNwYWNlICppbiB0aGUgYXBwbGljYXRpb24NCj4gZ2xvYmFsIGNv ZGUqIHRoYXQgaXMgcmVzZXJ2ZWQgZm9yIGFwcGxpY2F0aW9uIGNvZGUsIGxpa2UgX19waHBfXy4N Cj4gDQo+IDw/cGhwDQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiBpbmNsdWRlICdQRUFSMi9BdXRv bG9hZC5waHAnOw0KPiB1c2UgUEVBUjI6OkRhdGVUaW1lOw0KPiAkYSA9IG5ldyBEYXRlVGltZTsg Ly8gJGEgaXMgYW4gb2JqZWN0IG9mIGNsYXNzIFBFQVIyOjpEYXRlVGltZSBhZnRlcg0KPiBhdXRv bG9hZGluZywgb3IgaWYgYSBwcmV2aW91c2x5IGluY2x1ZGVkIGZpbGUgaGFzIGRlY2xhcmVkIGNs YXNzDQo+IERhdGVUaW1lIGluIG5hbWVzcGFjZSBQRUFSDQo+ID8+DQo+IA0KPiBOb3RlIHRoYXQg dGhlIG9ubHkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoZSBhZGRpdGlvbiBvZiAxIGxpbmUgb2YgY29k ZSBhdA0KPiB0aGUgdG9wIG9mIHRoZSBmaWxlLiAgT24gdGhlIHNhbWUgdG9rZW4sIHRoaXMgY29k ZToNCj4gDQo+IDw/cGhwDQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiAkYSA9IG5ldyBEYXRlVGlt ZTsgLy8gJGEgaXMgYW4gb2JqZWN0IG9mIGNsYXNzIDo6RGF0ZVRpbWUNCj4gPz4NCj4gDQo+IHdv cmtzIGFzIGV4cGVjdGVkLCBhY2Nlc3NpbmcgdGhlIGludGVybmFsIERhdGVUaW1lIGNsYXNzIGRp cmVjdGx5Lg0KPiANCj4gSW4gb3RoZXIgd29yZHMsIDEgbGluZSBvZiBjb2RlIGlzIG5lZWRlZCB0 byB0YWtlIGFkdmFudGFnZSBvZg0KPiBuYW1lc3BhY2UncyBmdWxsIHByb3RlY3Rpb24gYW5kIGFi aWxpdHkgdG8gaW1wb3J0IGNvbmZsaWN0aW5nIGNsYXNzDQo+IG5hbWVzIGludG8gdGhlICJnbG9i YWwiIChpbiB0aGlzIGNhc2UgdW5xdWFsaWZpZWQsIG5vdCBjb250YWluaW5nIDo6IGluDQo+IHRo ZSBuYW1lKSBzY29wZSwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBwcmVzZXJ2aW5nIEJDIHdpdGgg ZXhpc3RpbmcNCj4gY29kZQ0KPiAobm8gbW9kaWZpY2F0aW9uIG5lZWRlZCBiZXlvbmQgYWRkaXRp b24gb2YgIm5hbWVzcGFjZSBfX3BocF9fOyIpLg0KPiANCj4gSSByZWNvbW1lbmQgdGhhdCB0aGUg bWFudWFsIHNwZWNpZnkgdGhpcyBjb252ZW50aW9uLCBhbmQgd2lsbCBoYXBwaWx5DQo+IHRha2Ug b24gdGhlIGRvY3VtZW50YXRpb24gb2YgaXQuDQo+IA0KPiA+IDIuIFlvdSBoYXZlIHRvIGltcG9y dCBldmVyeSBjbGFzcyB5b3Vyc2VsZi4gWW91IGNhbiBjdXJyZW50bHkgbm90IGRvOg0KPiA+DQo+ ID4gICAgIHVzZSBteU5hbWVzcGFjZTo6KiBhcyAqOyAvLyBvciBzaW1pbGFyIHN5bnRheA0KPiAN Cj4gQWN0dWFsbHksIDo6KiB3b3VsZCBvbmx5IGJlIGRldGVybWluaXN0aWMgaWYgdXNlIHBlcmZv cm1lZCBzb21lIGtpbmQgb2YNCj4gYXV0b2xvYWRpbmcsIGl0J3Mgbm90IGEgcXVlc3Rpb24gb2Yg cnVudGltZSB2ZXJzdXMgY29tcGlsZS10aW1lIC0gaXQncw0KPiBzaW1wbHkgbm90IHBvc3NpYmxl IHRvIGRldGVybWluZSB3aGljaCBjbGFzcyBpcyBpbnRlbmRlZCBpZiBtb3JlIHRoYW4NCj4gb25l IDo6KiBpcyB1c2VkIHVubGVzcyB0aGUgYW5zd2VyIGlzIGRldGVybWluZWQgYnkgY29kZSBsb2Fk aW5nLCB0aGlzDQo+IGlzDQo+IHdoeSBKYXZhL1B5dGhvbiBpbXBvcnQgYWN0dWFsbHkgbG9hZHMg Y29kZSBhcyB3ZWxsIGFzIGFsaWFzaW5nDQo+IGlkZW50aWZpZXJzLg0KPiANCj4gVGhlcmUgYXJl IHdheXMgb2Ygc2ltdWxhdGluZyAidXNlIG15TmFtZXNwYWNlOjoqIGFzICo7IiB0aGF0IGFyZSBh bG1vc3QNCj4gYXMgY29tcGxldGUgYW5kIGFyZSBhY3R1YWxseSBiZXR0ZXIgZm9yIGxvbmctdGVy bSBtYWludGVuYW5jZS4gIEZvcg0KPiBpbnN0YW5jZSwgbGV0J3Mgc2F5IHlvdSB3YW50IHRvIHVz ZSBzZXZlcmFsIGNsYXNzZXMgZnJvbQ0KPiBQRUFSMjo6VWx0cmE6Okxvbmc6OlBhY2thZ2U6Ok5h bWUuICBZb3UgZG9uJ3QgbmVlZCB0byB1c2UgZWFjaCBjbGFzcw0KPiBpbmRpdmlkdWFsbHksIHlv dSBjYW4gaW1wb3J0IHRoZSBlbnRpcmUgbmFtZXNwYWNlOg0KPiANCj4gPD9waHANCj4gbmFtZXNw YWNlIF9fcGhwX187DQo+IHVzZSBQRUFSMjo6VWx0cmE6Okxvbmc6OlBhY2thZ2U6Ok5hbWU7DQo+ ICRhID0gbmV3IE5hbWU6OkV4YW1wbGVDbGFzczsNCj4gJGIgPSBuZXcgTmFtZTo6U2Vjb25kVGhp bmc7DQo+ICRjID0gbmV3IE5hbWU6OlRoaXJkVGhpbmc7DQo+ID8+DQo+IA0KPiBvciB0aGUgdWx0 cmEtYnJpZWYgbWV0aG9kLCByZXF1aXJpbmcgMyBleHRyYSBjaGFyYWN0ZXJzIG92ZXIgYW4NCj4g dW5xdWFsaWZpZWQgbmFtZToNCj4gDQo+IDw/cGhwDQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiB1 c2UgUEVBUjI6OlVsdHJhOjpMb25nOjpQYWNrYWdlOjpOYW1lIGFzIGE7DQo+ICRhID0gbmV3IGE6 OkV4YW1wbGVDbGFzczsNCj4gJGIgPSBuZXcgYTo6U2Vjb25kVGhpbmc7DQo+ICRjID0gbmV3IGE6 OlRoaXJkVGhpbmc7DQo+ID8+DQo+IA0KPiBFdmVuIG1vcmUgc2lnbmlmaWNhbnQsIHlvdSBjYW4g dXNlIHN1Yi1uYW1lc3BhY2VzIHdpdGggdGhpcyBzeXN0ZW0sDQo+IGVhY2gNCj4gbmFtZXNwYWNl IGRvZXMgbm90IG5lZWQgdG8gYmUgaW1wb3J0ZWQgc2VwYXJhdGVseToNCj4gDQo+IDw/cGhwDQo+ IG5hbWVzcGFjZSBfX3BocF9fOw0KPiB1c2UgUEVBUjI6OlVsdHJhOjpMb25nOjpQYWNrYWdlOjpO YW1lIGFzIGE7DQo+ICRhID0gbmV3IGE6OkV4YW1wbGVDbGFzczsNCj4gJGIgPSBuZXcgYTo6U2Vj b25kVGhpbmc7DQo+ICRjID0gbmV3IGE6OlRoaXJkVGhpbmc7DQo+ICRkID0gbmV3IGE6OnN1Ym5h bWVzcGFjZTo6TXlDbGFzczsgLy8gJGQgaXMgYW4gb2JqZWN0IG9mIGNsYXNzDQo+IFBFQVIyOjpV bHRyYTo6TG9uZzo6UGFja2FnZTo6TmFtZTo6c3VibmFtZXNwYWNlOjpNeUNsYXNzDQo+ID8+DQo+ IA0KPiBUaGlzIGlzIGRyYW1hdGljYWxseSBlYXNpZXIgdG8gZGVidWcgdGhhbiB0aGUgZXF1aXZh bGVudCBpbXBvcnQgb2YgOjoqDQo+ICh3aXRoIGFuIGFkZGVkIG5hbWVzcGFjZSBmb3IgZHJhbWF0 aWMgZWZmZWN0KToNCj4gDQo+IDw/cGhwDQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiB1c2UgUEVB UjI6OlVsdHJhOjpMb25nOjpQYWNrYWdlOjpOYW1lOjoqOw0KPiB1c2UgU3ltZm9ueTo6U29tZXRo aW5nOjoqOw0KPiAkYSA9IG5ldyBFeGFtcGxlQ2xhc3M7DQo+ICRiID0gbmV3IFNlY29uZFRoaW5n Ow0KPiAkYyA9IG5ldyBUaGlyZFRoaW5nOw0KPiAkZCA9IG5ldyBzdWJuYW1lc3BhY2U6Ok15Q2xh c3M7DQo+ICRlID0gbmV3IENvbnRyb2xsZXI7IC8vIHdoaWNoIHBhY2thZ2UgaXMgdGhpcyBjbGFz cyBmcm9tPw0KPiA/Pg0KPiANCj4gTG9va2luZyBhdCB0aGUgY29kZSwgaXQgaXMgaW1wb3NzaWJs ZSB0byBkZXRlcm1pbmUgd2hpY2ggcGFja2FnZSB0aGUNCj4gY2xhc3NlcyBjb21lIGZyb20uICBI ZXJlIGlzIHRoZSBzYW1lIGV4YW1wbGUgd2l0aCBjdXJyZW50IHN5bnRheDoNCj4gDQo+IDw/cGhw DQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiB1c2UgUEVBUjI6OlVsdHJhOjpMb25nOjpQYWNrYWdl OjpOYW1lIGFzIGE7DQo+IHVzZSBTeW1mb255OjpTb21ldGhpbmcgYXMgczsNCj4gJGEgPSBuZXcg YTo6RXhhbXBsZUNsYXNzOw0KPiAkYiA9IG5ldyBhOjpTZWNvbmRUaGluZzsNCj4gJGMgPSBuZXcg YTo6VGhpcmRUaGluZzsNCj4gJGQgPSBuZXcgYTo6c3VibmFtZXNwYWNlOjpNeUNsYXNzOw0KPiAk ZSA9IG5ldyBzOjpDb250cm9sbGVyOyAvLyBub3cgd2Uga25vdyBmb3IgY2VydGFpbiB0aGlzIGlz IGZyb20gU3ltZm9ueQ0KPiA/Pg0KPiANCj4gPiAzLiBXZSBrZWVwIGJpY2tlcmluZyBvdmVyIHVz aW5nIHsgfSBvciBub3QsIG11bHRpcGxlIG5hbWVzcGFjZXMgaW4gYQ0KPiA+ICAgIGZpbGUgb3Ig bm90Li4uIGV0Yy4gSSB1bmRlcnN0YW5kIHRoYXQgcGVvcGxlIHdhbnQgbW9yZQ0KPiBmbGV4aWJp bGl0eSwNCj4gPiAgICBidXQgYWxzbyB3ZSBuZWVkIGEgKnNpbXBsZSogdG8gZXhwbGFpbiBpbXBs ZW1lbnRhdGlvbi4gV2l0aCB0aGUNCj4gPiAgICBjdXJyZW50IGltcGxlbWVudGF0aW9uIEkgc2Vl IHRoZSBmb2xsb3dpbmcgcHJvYmxlbXMgaGVyZToNCj4gPg0KPiA+ICAgIC0gWW91IGNhbid0IHN0 aWNrIG11bHRpcGxlIG5hbWVzcGFjZXMgaW4gb25lIGZpbGUNCj4gPiAgICAtIFVubGlrZSBvdGhl ciBjb25zdHJ1Y3RzIGluIFBIUCB0aGF0IG1hcmsgZXhlY3V0YWJsZSBibG9ja3MsDQo+ID4gICAg ICBuYW1lc3BhY2VzIGRvbid0IHVzZSB7IH0uDQo+ID4gICAgLSBUaGUgIm5hbWVzcGFjZSIga2V5 d29yZCBhdCB0aGUgc3RhcnQgb2YgYSBmaWxlIGlzIHNvbWV3aGF0DQo+IG1hZ2ljLA0KPiA+ICAg ICAgYmVjYXVzZSBpdCBjYW4gb25seSBhcHBlYXIgYXMgZmlyc3QgZWxlbWVudCBpbiB5b3VyIHNj cmlwdC4NCj4gDQo+IEkgaGF2ZSB3cmVzdGxlZCB3aXRoIHRoaXMgbWFueSB0aW1lcywgYW5kIHRo ZSBiZXN0IGNvbmNsdXNpb24gSSBjYW4NCj4gcmVhY2ggaXMgdGhhdCAoMSkgd2UgbmVlZCB0aGUg ZmxleGliaWxpdHkgb2YgbXVsdGlwbGUgbmFtZXNwYWNlcyBwZXINCj4gZmlsZSwgYnV0IHRoYXQg KDIpIHdlIG5lZWQgdG8gKnN0cm9uZ2x5KiBkaXNjb3VyYWdlIGl0IGZvciB0aGUgcmVhc29uDQo+ IHRoYXQgaXQgaXMgZ29pbmcgdG8gbWFrZSBkZWJ1Z2dpbmcgaGFyZGVyLiAgVGhlcmUgYXJlIHR3 byB2YWxpZCB1c2UNCj4gY2FzZXMgZm9yIG11bHRpcGxlIG5hbWVzcGFjZXMgcGVyIGZpbGUgdGhh dCBJIGhhdmUgZW5jb3VudGVyZWQ6DQo+IA0KPiAxKSBwZXJmb3JtYW5jZS4gIFBIUCBpcyBzbGln aHRseSBzbG93ZXIgd2hlbiBleGVjdXRpbmcgc3R1ZmYgaW4NCj4gbXVsdGlwbGUNCj4gZmlsZXMN Cj4gMikgR1RLMi4gIEl0J3MgYWx3YXlzIG5pY2UgdG8gYmUgYWJsZSB0byBwdXQgYSBHVEsyIGFw cCBpbiBhIHNpbmdsZQ0KPiBmaWxlDQo+IGFuZCB0aGlzIGlzIGFuIGFsdGVybmF0aXZlIHRvIHVz aW5nIGEgcGhhciBhcmNoaXZlLg0KPiANCj4gVGhlcmUgYXJlIHR3byBwaGlsb3NvcGhpZXMgYmVo aW5kIG5hbWVzcGFjZXMgb3V0IHRoZXJlLCBoaWVyYXJjaGljYWwNCj4gYW5kDQo+IG5vbi1oaWVy YXJjaGljYWwuICBJbiBoaWVyYXJjaGljYWwgbGFuZ3VhZ2VzIGxpa2UgQysrIGFuZCBDIywgbmVz dGVkDQo+IG5hbWVzcGFjZXMgY2FuIGJlIGRlZmluZWQsIGFuZCBzdWItbmFtZXNwYWNlcyBjYW4g YmUgZGVmaW5lZCB1c2luZw0KPiBuZXN0ZWQgY29kZSBibG9ja3MuICBPdGhlciBpbXBsZW1lbnRh dGlvbnMgc2ltcGx5IGRvbid0IGRvIHRoaXMuICBUaGUNCj4gYmVzdCBkZXNjcmlwdGlvbiBJJ3Zl IHNlZW4gaXMgZnJvbSBhIHNpdGUgb24gUGVybCBuYW1lc3BhY2VzOg0KPiANCj4gIklzYWFjIE5l d3RvbiBpcyBub3QgcmVsYXRlZCB0byBPbGl2aWEgTmV3dG9uLUpvaG4sIGFuZCBOZXd0b246Oklz YWFjDQo+IGlzDQo+IG5vdCByZWxhdGVkIHRvIE5ld3Rvbjo6Sm9objo6T2xpdmlhLiINCj4gDQo+ IFBlcmwsIGluY2lkZW50YWxseSwgdXNlcyB0aGUgcGFja2FnZSBrZXl3b3JkIGFzIGEgY29tYmlu YXRpb24gb2YNCj4gZGVjbGFyYXRpb24gYW5kIGFsaWFzLCBpbiB0aGF0IHRoZXJlIGlzIG5vIGVx dWl2YWxlbnQgdG8gUEhQJ3MgdXNlLg0KPiANCj4gUEhQJ3MgaW1wbGVtZW50YXRpb24gaXMgYSBt aXh0dXJlIG9mIHRoZXNlIGFwcHJvYWNoZXMuICBCZWNhdXNlIGl0IGlzDQo+IGNsb3NlciB0byBQ ZXJsJ3MgaW1wbGVtZW50YXRpb24gb2YgcGFja2FnZSwgYnV0IGNvbnRhaW5zIHRoZSBpbXBvcnQN Cj4gc3RhdGVtZW50IGZyb20gY29tcGlsZWQgbGFuZ3VhZ2VzIGxpa2UgQysrLCB3ZSBoYXZlIHRv IGZvcmdlIGEgbmV3DQo+IHBhdGguDQo+IA0KPiBIYXZpbmcgbmFtZXNwYWNlIGFzIHRoZSBzdGFy dCBvZiB0aGUgZmlsZSBpcyBnb29kIGJlY2F1c2UgaXQgZW5mb3JjZXMgYQ0KPiBkZWNsYXJhdGlv biAidGFrZSBub3RlOiB0aGlzIGZpbGUgdXNlcyBuYW1lc3BhY2VzIiB0aGF0IG1pZ2h0IG90aGVy d2lzZQ0KPiBiZSBsb3N0Lg0KPiANCj4gSSBoYXZlIG5vIHN0cm9uZyBvcGluaW9uIG9uIHt9LCBi dXQgSSBkbyBzZWUgYSBjb21wZWxsaW5nIGFyZ3VtZW50IGluDQo+IGZhdm9yIG9mIG5vdCB1c2lu ZyB7fSBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBpZiB5b3UncmUgb25seSBnb2luZyB0bw0KPiB1 c2UgMSBuYW1lc3BhY2UgcGVyIGZpbGUgZXhjZXB0IGluIGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3Rh bmNlcy4NCj4gDQo+ID4gNC4gV2hhdCBpcyB3cm9uZyB3aXRoIHNpbXBsZSBwcmVmaXhlcyBpbiB0 aGUgZmlyc3QgcGxhY2U/IEJvdGgNCj4gUEVBUl8qLA0KPiA+ICAgIFplbmRfKiwgZXpjKiwgYW5k IGV6cCogYXJlIHBlcmZlY3RseSBhY2NlcHRhYmxlIG1hcmtlcnMgZm9yDQo+IGRpZmZlcmVudA0K PiA+ICAgICduYW1lc3BhY2VzJy4gIFdlIGNvdWxkIG9wdGlvbmFsbHkgY3JlYXRlIGEgcmVnaXN0 cnkgb24gcGhwLm5ldA0KPiBmb3INCj4gPiAgICB0aGlzIHRvIGF2b2lkIGNvbmZsaWN0cy4NCj4g DQo+IFRoZSBvbmx5IG5hbWluZyBjb25mbGljdHMgd2UndmUgaGFkIGhhdmUgYmVlbiB3aXRoIGlu dGVybmFsIGNsYXNzZXMNCj4gdGh1cw0KPiBmYXIsIGJ1dCB0aGVyZSBpcyBubyBjb2RpbmcgY29u dmVudGlvbiBpbiBwbGFjZS4gIE5hbWVzcGFjZXMgd291bGQNCj4gcHJvdmlkZSBhIHRlY2huaWNh bCBzb2x1dGlvbiB0byBhIHBvbGl0aWNhbCBwcm9ibGVtLCBzb21ldGhpbmcgdGhhdA0KPiBjYXJy aWVzIHdpdGggaXQgaW50cmluc2ljIHJpc2tzLiAgRm9ydHVuYXRlbHksIG90aGVyIGxhbmd1YWdl cyBoYXZlDQo+IHRha2VuIHRoaXMgcmlzayBiZWZvcmUgUEhQIGFuZCBub3QgaGFkIG1ham9yIHBy b2JsZW1zLCBzbyB3ZSBoYXZlIGENCj4gcmVhc29uYWJsZSBleHBlY3RhdGlvbiBvZiBzdWNjZXNz LiAgVGhlIGltcGxlbWVudGF0aW9ucyBvZiBuYW1lc3BhY2luZw0KPiB2YXJ5IHNvIHdpZGVseSwg aXQncyBraW5kIG9mIGltcG9zc2libGUgdG8gZ2VuZXJhbGl6ZSBvbiBob3cgdGhleSBkbw0KPiBp dCwNCj4gYnV0IGRpZmZlcmVuY2UgYmV0d2VlbiBwcmVmaXhpbmcgYW5kIG5hbWVzcGFjZXMgY2Fu IGJlIGV4ZW1wbGlmaWVkIGJ5DQo+IG9uZSBjb25zdHJ1Y3Q6IHVzZS4NCj4gDQo+IDw/cGhwDQo+ IC8vIGFzc3VtZSB3ZSd2ZSBsb2FkZWQgY29kZSBmb3IgYnJldml0eQ0KPiAkYSA9IFplbmRfTG9u Z19DbGFzc19OYW1lOjpzaW5nbGV0b24oWmVuZF9Mb25nX0NsYXNzX05hbWU6OkNPTlNUKTsNCj4g JGIgPSBuZXcgUEVBUjJfTG9uZ19DbGFzc19OYW1lKCk7DQo+IFplbmRfTG9uZ19DbGFzc19OYW1l OjokdmFyID0gMjsNCj4gPz4NCj4gDQo+IDw/cGhwDQo+IG5hbWVzcGFjZSBfX3BocF9fOw0KPiB1 c2UgWmVuZDo6TG9uZzo6Q2xhc3MgYXMgYTsNCj4gdXNlIFBFQVIyOjpMb25nOjpDbGFzcyBhcyBi Ow0KPiAkYSA9IGE6Ok5hbWU6OnNpbmdsZXRvbihhOjpOYW1lOjpDT05TVCk7DQo+ICRiID0gbmV3 IGI6Ok5hbWUoKTsNCj4gYTo6TmFtZTo6JHZhciA9IDI7DQo+ID8+DQo+IA0KPiBBbHNvIHBvc3Np YmxlIHdpdGggbmFtZXNwYWNlcyBpcyBzd2l0Y2hpbmcgb3V0IGFuIGltcGxlbWVudGF0aW9uIHdp dGggYQ0KPiBzaW1pbGFyIEFQSSB3aXRob3V0IHNlYXJjaC9yZXBsYWNlIChhc3N1bWluZyBubyBk eW5hbWljIGNsYXNzDQo+IHJlZmVyZW5jZXMNCj4gYXJlIHVzZWQpDQo+IA0KPiA8P3BocA0KPiAv LyBiZWZvcmUNCj4gbmFtZXNwYWNlIF9fcGhwX187DQo+IHVzZSBaZW5kOjpUaGluZzo6SW1wbGVt ZW50YXRpb247DQo+ICRhID0gbmV3IEltcGxlbWVudGF0aW9uOw0KPiA/Pg0KPiANCj4gPD9waHAN Cj4gLy8gYWZ0ZXINCj4gbmFtZXNwYWNlIF9fcGhwX187DQo+IHVzZSBQRUFSMjo6RG9lczo6U2Ft ZTo6VGhpbmcgYXMgSW1wbGVtZW50YXRpb247DQo+ICRhID0gbmV3IEltcGxlbWVudGF0aW9uOw0K PiA/Pg0KPiANCj4gPiBXaXRoIGFsbCB0aGUgYWJvdmUgY29uc2lkZXJhdGlvbnMsIGVzcGVjaWFs bHkgbXkgZmlyc3QgcG9pbnQsIEkgc3RpbGwNCj4gaGF2ZSBub3QNCj4gPiBoZWFyZCBhbnkgZ29v ZCByZWFzb24gd2h5IG5hbWVzcGFjZXMgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24NCj4g YXJlIGFjdHVhbGx5DQo+ID4gdXNlZnVsIC0gb3Igd2hhdCBwYXJ0aWN1bGFyIGNhc2UgdGhleSBz b2x2ZS4uLiBzbyBJIGFtIHdvbmRlcmluZywgYXJlDQo+IHRoZXkNCj4gPiByZWFsbHkgdXNlZnVs PyBJIGNvbWUgbm93IHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgdGhleSBhcmUgbm90LCBhbmQNCj4g Zm9yIG15c2VsZg0KPiA+IChhbmQgbW9zdCBsaWtlbHkgbXkgd29yayBwcm9qZWN0cykgSSB3b3Vs ZCBoYXZlIHRvIGRlY2lkZSBub3QgdG8gZ28NCj4gd2l0aA0KPiA+IG5hbWVzcGFjZXMsIGJ1dCBp bnN0ZWFkIHN0aWNrIHdpdGggdGhlIDMgbGV0dGVyIHByZWZpeGluZy4gIFNvbWV0aGluZw0KPiB0 aGF0IEkNCj4gPiBoYXZlIHRvdGFsbHkgbm8gcHJvYmxlbSB3aXRoLCBhcyBpdCBpcyBuaWNlIGFu ZCBlYXN5Lg0KPiANCj4gMSkgVGhlIGFiaWxpdHkgdG8gZ3VhcmFudGVlIHNob3J0IG5hbWVzIGNh biBiZSB1c2VkIHdpdGhvdXQgZGFuZ2VyIG9mDQo+IGNvbmZsaWN0aW5nIHdpdGggYSBnbG9iYWwg bmFtZS4gIFRoaXMgaXMgcG9zc2libGUgaW5zaWRlIGFueSBuYW1lc3BhY2UNCj4gZGVjbGFyYXRp b24sIGJ1dCBub3QgaW4gZ2xvYmFsIHNjb3BlLg0KPiANCj4gMikgcmVhZGFiaWxpdHksIGFuZCB0 aGVyZWZvcmUgbWFpbnRhaW5hYmlsaXR5IGluY3JlYXNlcyBhcyByZWR1bmRhbnQNCj4gcGFydHMg b2YgaWRlbnRpZmllcnMgYXJlIHJlbW92ZWQgYnkgdXNlIGFsaWFzaW5nLiAgVGhpcyBsaW5lOg0K PiANCj4gPD9waHANCj4gICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUEVBUjJfUHlydXNfUGFj a2FnZUZpbGVfdjJJdGVyYXRvcl9GaWxlKA0KPiAgICAgICAgICAgICAgICAgICAgICAgICBuZXcN Cj4gUEVBUjJfUHlydXNfUGFja2FnZUZpbGVfdjJJdGVyYXRvcl9GaWxlQXR0cmlic0ZpbHRlcigN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3DQo+IFBFQVIyX1B5cnVzX1BhY2thZ2VGaWxl X3YySXRlcmF0b3JfRmlsZUNvbnRlbnRzKA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JHRoaXMtPnBhY2thZ2VJbmZvWydjb250ZW50cyddLCAnY29udGVudHMnLA0KPiAkdGhpcykpLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6 TEVBVkVTX09OTFkpOw0KPiA/Pg0KPiANCj4gYmVjb21lczoNCj4gDQo+IDw/cGhwDQo+IHVzZSBQ RUFSMjo6UHlydXM6OlBhY2thZ2VGaWxlOjp2Mkl0ZXJhdG9yIGFzIGkyOw0KPiB1c2UgOjpSZWN1 cnNpdmVJdGVyYXRvckl0ZXJhdG9yIGFzIHJpOyAvLyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIGlu IENWUw0KPiBidXQgSSBoYXZlIGEgcGF0Y2guLi4NCj4gLy8gLi4uDQo+IA0KPiAgICAgICAgICAg ICAgICAgcmV0dXJuIG5ldyBpMjo6RmlsZSgNCj4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3 IGkyOjpGaWxlQXR0cmlic0ZpbHRlcigNCj4gICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGky OjpGaWxlQ29udGVudHMoDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cGFj a2FnZUluZm9bJ2NvbnRlbnRzJ10sICdjb250ZW50cycsDQo+ICR0aGlzKSksDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByaTo6TEVBVkVTX09OTFkpOw0KPiA/Pg0KPiANCj4gVGhlIGFy Z3VtZW50IGhhcyBiZWVuIG1hZGUgdGhhdCBuYW1lc3BhY2VzIGNhbiBhY3R1YWxseSBpbmNyZWFz ZSBjb2RlDQo+IHNpemUgYmVjYXVzZSBjbGFzcyBuYW1lcyBhcmUgc28gcmFyZWx5IHVzZWQuICBU aGlzIGlzIG5vdCB0cnVlIGluIG15DQo+IGNvZGluZyBleHBlcmllbmNlLiAgQXMgYW4gZXhhbXBs ZSwgYSBzaW5nbGUgZmlsZSBpbiBQRUFSMl9QeXJ1cyBoYXMgMjUNCj4gdXNlcyBvZiB0aGUgY2xh c3NuYW1lIFBFQVIyX1B5cnVzX1BhY2thZ2VGaWxlX0V4Y2VwdGlvbi4gIEFueSBjbGFzcw0KPiBt YWtpbmcgdXNlIG9mIGNsYXNzIGNvbnN0YW50cyB1c2VkIGJ5IGFub3RoZXIgY2xhc3Mgd2lsbCBi ZSB1c2luZyB0aGUNCj4gZnVsbCBjbGFzc25hbWUgYSBsb3QuDQo+IA0KPiAzKSBBYmlsaXR5IHRv IHVzZSBjb21tb24gc2hvcnQgbmFtZXMgKGxpa2UgRmlsZSwgRXhjZXB0aW9uLCBEYXRlKSBhcw0K PiBjbGFzcyBuYW1lcyB3aXRoaW4gYSBuYW1lc3BhY2UgaW5jcmVhc2VzIHRoZSBsb2dpY2FsIGRl c2NyaXB0aXZlDQo+IHF1YWxpdGllcyBvZiB0aGUgY29kZSwgbWFraW5nIGl0IGVhc2llciB0byB1 bmRlcnN0YW5kIHdpdGhvdXQNCj4gZG9jdW1lbnRhdGlvbiAoc2VsZi1kb2N1bWVudGluZyBjb2Rl KS4gIEZvciBleGFtcGxlLCBpbiB0aGUgY2xhc3NuYW1lDQo+IFBFQVIyOjpQeXJ1czo6Q29uZmln LCB0aGUgb25seSBwYXJ0IHRoYXQgcmVhbGx5IGRlc2NyaWJlcyBhbnl0aGluZw0KPiBpbXBvcnRh bnQgZm9yIHRoZSB1c2VyIHRvIGtub3cgYWJvdXQgaXMgIkNvbmZpZyIsIHRoZSByZXN0IGlzDQo+ IHJlZHVuZGFudC4NCj4gDQo+IEluIHRlcm1zIG9mIHRoZSBkYW5nZXIgb2YgdXNpbmcgbmFtZXNw YWNlZCBjbGFzc2VzIHdpdGggYXV0b2xvYWQsIHRoZQ0KPiBiaWdnZXN0IGRhbmdlciBpcyB0aGlz IGNvZGU6DQo+IA0KPiA8P3BocA0KPiBuYW1lc3BhY2UgQmxhaDsNCj4gJGEgPSBuZXcgRXhjZXB0 aW9uKCdoaScpOw0KPiA/Pg0KPiANCj4gSW4gdGhpcyBjYXNlLCB0aGUgOjpFeGNlcHRpb24gY2xh c3MgaXMgaW5zdGFudGlhdGVkLg0KPiANCj4gPD9waHANCj4gbmFtZXNwYWNlIEJsYWg7DQo+IHVz ZSBCbGFoOjpFeGNlcHRpb247DQo+ICRhID0gbmV3IEV4Y2VwdGlvbignaGknKTsNCj4gPz4NCj4g DQo+IE5vdyB3ZSBndWFyYW50ZWUgdGhlIGNvcnJlY3QgY2xhc3MgaXMgbG9hZGVkLiAgQWx0aG91 Z2ggdGhpcyBzZWVtZWQNCj4gb25lcm91cyB0byBtZSBhdCBmaXJzdCwgb24gcmVmbGVjdGlvbiwg dGhlcmUgYXJlIHZlcnkgZmV3IGludGVybmFsDQo+IGNsYXNzZXMgdGhhdCBhcmUgbGlrZWx5IHRv IGJlIG92ZXJyaWRkZW4gYnkgYSBwYWNrYWdlIChvbmx5IDk4IGV4aXN0IGluDQo+IG15IDUuMyBi dWlsZCksIHByb2JhYmx5IGF0IG1vc3QgMiBpbiBhbnkgZ2l2ZW4gcGFja2FnZSwgc28gdGhpcyBp cyBub3QNCj4gYQ0KPiBodWdlIGJ1cmRlbi4NCj4gDQo+IEEgbGFyZ2VyIGRhbmdlciBpcyB0aGlz IGV4YW1wbGU6DQo+IA0KPiA8P3BocA0KPiBuYW1lc3BhY2UgZm9vOw0KPiBlY2hvIHN0cmxlbign aGknKTsNCj4gaW5jbHVkZSAnbWFsaWNpb3VzZmlsZS5waHAnOw0KPiBlY2hvIHN0cmxlbignaGkn KTsNCj4gPz4NCj4gDQo+IG1hbGljaW91c2ZpbGUucGhwOg0KPiA8P3BocA0KPiBuYW1lc3BhY2Ug Zm9vOw0KPiBmdW5jdGlvbiBzdHJsZW4oJGEpDQo+IHsNCj4gICAgIC8vIGRvIGJhZCBzdHVmZg0K PiAgICAgZWNobyAiSSdtIGV2aWwiDQo+ICAgICByZXR1cm4gOjpzdHJsZW4oJGEpOw0KPiB9DQo+ ID8+DQo+IA0KPiBUaGUgYWJvdmUgc2NyaXB0IG91dHB1dHMgIjJJJ20gZXZpbDIiIC0gZm9vOjpz dHJsZW4oKSBpcyBjYWxsZWQgZm9yIHRoZQ0KPiBzZWNvbmQgY2FsbCB0byBzdHJsZW4oKS4gIEFw cGxpY2F0aW9uIGF1dGhvcnMgbGlrZSBibG9ncyB0aGF0IHJ1bg0KPiBwbHVnaW5zIG11c3QgYmUg ZXh0cmVtZWx5IGNhdXRpb3VzIHRoYXQgcGx1Z2lucyBmcm9tIHRoaXJkIHBhcnRpZXMNCj4gY2Fu bm90IGNvbnRhaW4gcmVkZWZpbml0aW9ucyBvZiBjb3JlIGZ1bmN0aW9ucyBpbnNpZGUgdGhlIGJs b2cncw0KPiBuYW1lc3BhY2UuICBPZiBjb3Vyc2UsIGFueSB0aGlyZC1wYXJ0eSBjb2RlIGlzIGRh bmdlcm91cyByZWdhcmRsZXNzIG9mDQo+IGxhbmd1YWdlIGNvbnN0cnVjdCwgYnV0IHRoaXMgaXMg YSBzdWJ0bGUgdmVjdG9yIHRoYXQgY291bGQgYmUgdXNlZCBhbmQNCj4gd291bGQgbm90IGJlIGNh dWdodCBieSBhIGNvZGUgc2Nhbm5lciB1bmxlc3MgY29uc2Npb3VzbHkgY29kZWQgaW4gdG8NCj4g d2F0Y2ggZm9yIGEgIm5hbWVzcGFjZSBmb287IiBkZWNsYXJhdGlvbi4NCj4gDQo+IEkgaG9wZSB0 aGlzIGlzIGhlbHBmdWwgLSBieSBkaWdnaW5nIGRlZXBseSBpbnRvIHRoZSBzb3VyY2UgYW5kIHRh bGtpbmcNCj4gdG8gbG90cyBvZiBkZXZzLCBJIGhhdmUgbGVhcm5lZCBhIGxvdCBhYm91dCBQSFAn cyBuYW1lc3BhY2UNCj4gaW1wbGVtZW50YXRpb24gaW4gdGhlIHBhc3QgMiBkYXlzLCBhbmQgSSdt IGNlcnRhaW4gd2UgaGF2ZSBhIG11Y2gNCj4gYmV0dGVyDQo+IGltcGxlbWVudGF0aW9uIHRoYW4g SSB0aG91Z2h0IHdlIGRpZCAyIGRheXMgYWdvLCBhbmQgd2lsbCBiZSB3cml0aW5nIHVwDQo+IGEg ImhvdyB0byBuYW1lc3BhY2UiIGFuZCAiaG93IG5vdCB0byBuYW1lc3BhY2UiIGd1aWRlIGJhc2Vk IG9uIHRoZQ0KPiBwaXRmYWxscyBJJ3ZlIGRpc2NvdmVyZWQgaW4gdGhpcyBxdWVzdCBhcyB3ZWxs IGFzIGNvbnRyaWJ1dGluZyB0byB0aGUNCj4gZG9jdW1lbnRhdGlvbiB3aGVuIHRoaW5ncyBzZXR0 bGUuDQo+IA0KPiBHcmVnDQo+IA0KPiAtLQ0KPiBQSFAgSW50ZXJuYWxzIC0gUEhQIFJ1bnRpbWUg RGV2ZWxvcG1lbnQgTWFpbGluZyBMaXN0DQo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdDogaHR0cDov L3d3dy5waHAubmV0L3Vuc3ViLnBocA0KDQo=