Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92445 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 28563 invoked from network); 19 Apr 2016 09:41:47 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Apr 2016 09:41:47 -0000 Authentication-Results: pb1.pair.com smtp.mail=zeev@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=zeev@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 65.55.169.105 as permitted sender) X-PHP-List-Original-Sender: zeev@zend.com X-Host-Fingerprint: 65.55.169.105 mail-bl2on0105.outbound.protection.outlook.com Received: from [65.55.169.105] ([65.55.169.105:52384] helo=na01-bl2-obe.outbound.protection.outlook.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 71/A0-24636-95DF5175 for ; Tue, 19 Apr 2016 05:41:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=RWSoftware.onmicrosoft.com; s=selector1-zend-com; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=aWuKr0Hxphq2PO1XXHZ6ZmYopCEF4fmDuSaMUZy7b9w=; b=EBdc1Mdy+j0vntjwgw656D75PrwHcLs6kXcG/yBKWWXHLe/TTri+QqqLzluzU32DKdw370dJ4XQM5tKDDEdOzrOnjfEbz6NdGYik+vkH9iFQlr4s/gn62eJ9YQy+F/KjZvzjdh8wIKEPfuWYGa71iJwj9WQZM9Vv0A9C30+FwmU= Received: from BY2PR02MB298.namprd02.prod.outlook.com (10.141.140.21) by BY2PR02MB298.namprd02.prod.outlook.com (10.141.140.21) with Microsoft SMTP Server (TLS) id 15.1.466.19; Tue, 19 Apr 2016 09:41:40 +0000 Received: from BY2PR02MB298.namprd02.prod.outlook.com ([10.141.140.21]) by BY2PR02MB298.namprd02.prod.outlook.com ([10.141.140.21]) with mapi id 15.01.0466.022; Tue, 19 Apr 2016 09:41:40 +0000 To: Larry Garfield CC: "internals@lists.php.net" Thread-Topic: [PHP-DEV] Re: Improving PHP's type system Thread-Index: AQHRlaUHEc+doe0x5E+u9VwQHuu4UJ+IRQcAgAANKICAAAFxgIAABh6AgAANpACAACnEH4AAm82AgAAMSgCAADMsgIAAVaeAgAASTYCAAVJIAIAACMmAgAAdwQCAAAxwgIAFsEHQ Date: Tue, 19 Apr 2016 09:41:39 +0000 Message-ID: References: <570E99AC.3090804@fleshgrinder.com> <570EA5EB.8090501@fleshgrinder.com> <570EAB0D.6080706@gmail.com> <570EB67E.8010908@garfieldtech.com> <5B147E88-CC0A-4CBC-A49D-C7FE3BF557C0@zend.com> <6F.C3.12455.94C5F075@pb1.pair.com> <20160414094440.GF19347@phcomp.co.uk> <570FD94F.90703@fleshgrinder.com> <570FE8A9.4020809@gmail.com> <20.53.29891.17401175@pb1.pair.com> <57110BCD.5030009@garfieldtech.com> <571124C2.9040606@gmx.de> <57112F31.8070209@garfieldtech.com> In-Reply-To: <57112F31.8070209@garfieldtech.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: garfieldtech.com; dkim=none (message not signed) header.d=none;garfieldtech.com; dmarc=none action=none header.from=zend.com; x-originating-ip: [212.199.177.67] x-ms-office365-filtering-correlation-id: 50b7ce8c-86d3-4f35-b234-08d36836cf34 x-microsoft-exchange-diagnostics: 1;BY2PR02MB298;5:TpxS1UjdxzprXvuPlhQgqtcF2R6zGUAYs09Vel2uJDeZCDlEVNvNVa0o6Dz3972FLj6XCrRXENnZ7bfbF1m597yjsKJs8PJjaQLRkh4mcuTiEkPU6M786kzJAV/bW6xE0/7WNzOwUK7THiMCW0wzegsVsS81eGV6yn+E1z73L1NQCRtr2m+jeuW1ShDoZ4bU;24:FH5KGvj9Kt0tcEH7GXPLD0+ZmHe+d8dxScr+NfmdJWWLxY/MXJh89DX3WAhAZ8suLPgXrK62rglbaB4/4oaz3DdCFMoy8eecu1ysS8mDgzs=;7:TbI9/E4AWbHO09L/KRc8BekAvF5+ON0pFQ1cbNkzC/I0Q+rivbjuNH+yhwNNW/FfG1oBRxLGT7P+iO2g3kk0ScfrUkvCnafhw1FRkeOdwt1DOiQKtpdeIWKeLyTwt3GKn1RAIsiY452y68x0u0uGbaSPzRZO8bJHPEfijBtyMn6PbfVXLv1wxmFzVMt+iHvihuF2JQifIJYx7MnNkLa4EFZkG25RIhAA1xbg4xYnNfE= x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR02MB298; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(9101521026)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001);SRVR:BY2PR02MB298;BCL:0;PCL:0;RULEID:;SRVR:BY2PR02MB298; x-forefront-prvs: 0917DFAC67 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(6009001)(24454002)(13464003)(377454003)(2906002)(11100500001)(5003600100002)(3280700002)(50986999)(189998001)(106116001)(586003)(99286002)(76176999)(1220700001)(93886004)(54356999)(19580395003)(3846002)(86362001)(19580405001)(3660700001)(1096002)(81166005)(102836003)(6116002)(122556002)(74316001)(2900100001)(2950100001)(5002640100001)(92566002)(66066001)(9686002)(87936001)(10400500002)(77096005)(76576001)(5008740100001)(33656002)(110136002)(5004730100002)(4326007);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR02MB298;H:BY2PR02MB298.namprd02.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; spamdiagnosticoutput: 1:23 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: zend.com X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Apr 2016 09:41:39.7762 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 32210298-c08b-4829-8097-6b12c025a892 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR02MB298 Subject: RE: [PHP-DEV] Re: Improving PHP's type system From: zeev@zend.com (Zeev Suraski) DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFycnkgR2FyZmllbGQg W21haWx0bzpsYXJyeUBnYXJmaWVsZHRlY2guY29tXQ0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDE1 LCAyMDE2IDk6MTMgUE0NCj4gVG86IGludGVybmFsc0BsaXN0cy5waHAubmV0DQo+IFN1YmplY3Q6 IFJlOiBbUEhQLURFVl0gUmU6IEltcHJvdmluZyBQSFAncyB0eXBlIHN5c3RlbQ0KPiANCj4gT24g NC8xNS8xNiAxMjoyOCBQTSwgQ2hyaXN0b3BoIEJlY2tlciB3cm90ZToNCj4gPiBPbiAxNS4wNC4y MDE2IGF0IDE3OjQyLCBMYXJyeSBHYXJmaWVsZCB3cm90ZToNCj4gPg0KPiA+PiBJIHRoaW5rIHRo ZXJlJ3MgMiBnZW5lcmFsIHVzZSBjYXNlcyBmb3IgdW5pb24gdHlwZXMgdGhhdCB3b3VsZCBiZQ0K PiA+PiAiZ29vZCB0aGluZ3MiLCB3aGljaCBhcmUgZGlmZmVyZW50IGZvciAmIGFuZCB8LCBhbmQg aGF2ZSB2ZXJ5IGxpdHRsZS4uLg0KPiA+PiBpbnRlcnNlY3Rpb24uICAoKnlhYWFhYWFhISopDQo+ ID4+DQo+ID4+IFRoZSBPUiBjYXNlIGlzIGZvciBjYXNlcyB3aGVyZSB0aGUgbGFuZ3VhZ2UgZG9l c24ndCBzdXBwb3J0IGEgdW5pZmllZA0KPiA+PiBjYXNlIGF0IGFsbC4gIFRoZSBtb3N0IG9idmlv dXMgZXhhbXBsZSBoZXJlIGlzIGFycmF5fFRyYXZlcnNhYmxlLiAgSWYNCj4gPj4gSSB3YW50ICJh IHRoaW5nIEkgY2FuIGZvcmVhY2goKSIsIHRoZW4gUEhQIHJpZ2h0IG5vdyBoYXMgbm8gd2F5IG9m DQo+ID4+IHNheWluZyB0aGF0IHN5bnRhY3RpY2FsbHkuICBZb3UgaGF2ZSB0byB0eXBlIG9uIGFy cmF5LCBvcg0KPiA+PiBUcmF2ZXJzYWJsZSwgb3Igbm90IHR5cGUgYXQgYWxsLiAgYXJyYXl8VHJh dmVyc2FibGUgaXMgd2hhdCB5b3UNCj4gPj4gcmVhbGx5IHdhbnQsDQo+ID4gSXQgaXMgbm90IHdo YXQgSSB3b3VsZCB3YW50LCB0aG91Z2guDQo+ID4NCj4gPj4gYmVjYXVzZSB0aG9zZQ0KPiA+PiBE TyBoYXZlIGFuIG92ZXJsYXAgKGZvcmVhY2gtYWJsaWxpdHkpLCBQSFAgaXMganVzdCBpbmNhcGFi bGUgb2YNCj4gPj4gcmVwcmVzZW50aW5nIHRoYXQgb3RoZXJ3aXNlLg0KPiA+IE1heWJlIHdlIHNo b3VsZCBjb25zaWRlciB0byBhY2NlcHQgYW4gYXJyYXkgYXMgVHJhdmVyc2FibGU/ICBBY3R1YWxs eSwNCj4gPiBJIHdvbmRlciB3aHkgdGhhdCdzIG5vdCBhbHJlYWR5IHRoZSBjYXNlLg0KPiANCj4g SXQncyBiZWVuIGFza2VkIGEgZmV3IGRvemVuIHRpbWVzLCBidXQgbmV2ZXIgd2VudCBhbnl3aGVy ZS4gIE1haW5seSwgSSB0aGluaywNCj4gVHJhdmVyc2FibGUgaW1wbGllcyBvYmplY3QsIHdoaWNo IGltcGxpZXMgY2VydGFpbiBwYXNzaW5nIHNlbWFudGljcy4gIEFycmF5IGlzDQo+IGEgcHJpbWl0 aXZlLCBzbyBoYXMgZGlmZmVyZW50IHBhc3Npbmcgc2VtYW50aWNzLg0KPiBUaGVyZSdzIHByb2Jh Ymx5IG90aGVyIHN1YnRsZSBpc3N1ZXMgbGlrZSB0aGF0IHdoaWNoIGhhdmUga2VwdCB0aGUgZW5n aW5lLQ0KPiBndXJ1cyBmcm9tIHRyeWluZyB0byBtYWtlIGl0IHdvcmsuDQo+IA0KPiBNeSBhc3N1 bXB0aW9uIGhlcmUgaXMgImlmIGl0IHdlcmUgdGhhdCBlYXN5IHNvbWVvbmUgd291bGQgaGF2ZSBk b25lIGl0DQo+IGFscmVhZHkiLiAgKFdoaWNoIG1heSBub3QgYmUgYW4gZW50aXJlbHkgYWNjdXJh dGUgYXNzdW1wdGlvbiwgYnV0IHNlZW1zDQo+IGxvZ2ljYWwgZ2l2ZW4gaG93IG9mdGVuIGl0J3Mg YmVlbiBhc2tlZCBmb3IuKQ0KPiANCj4gPj4gQSBzaW1pbGFyIGV4YW1wbGUgd291bGQgYmUgY2Fs bGFibGV8U29tZUludGVyZmFjZS4gIEFuIGludGVyZmFjZSBjYW4NCj4gPj4gc3BlY2lmeSBhIHNp Z25hdHVyZSBmb3IgX19pbnZva2UoKSwgd2hpY2ggZ2l2ZXMgeW91IGRvY3VtZW50YXRpb24gb24N Cj4gPj4gdGhlIGZvcm1hdCB0aGF0IGlzIGV4cGVjdGVkIGZvciBhIGNhbGxhYmxlLiAgSG93ZXZl ciwgeW91IGNhbid0DQo+ID4+IHN0cmljdGx5IGVuZm9yY2UgdGhhdCBiZWNhdXNlIHRoZW4geW91 IGRvbid0IGFsbG93IGZvciBhIGZ1bmN0aW9uIG9yDQo+ID4+IGNsb3N1cmUgdGhhdCBmaXRzIHRo ZSBzYW1lIG1ldGhvZCBzaWduYXR1cmUuICBUaGF0IG1lYW5zIHlvdSBoYXZlIHRvDQo+ID4+IGxl YXZlIGl0IHVudHlwZWQuICBUaGlzLCBJIGFyZ3VlLCB3b3VsZCBiZSBiZXR0ZXIgKmFuZCogcmVh c29uYWJseSB0eXBlIHNhZmU6DQo+ID4+DQo+ID4+IGludGVyZmFjZSBNaWRkbGV3YXJlSW50ZXJm YWNlIHsNCj4gPj4gICAgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxLCBS ZXNwb25zZUludGVyZmFjZSAkcmVzKTsNCj4gPj4gfQ0KPiA+Pg0KPiA+PiBmdW5jdGlvbiBtaWRk bGV3YXJlX2J1aWxkZXIoY2FsbGFibGV8TWlkZGxld2FyZUludGVyZmFjZSAkbSkgew0KPiA+PiAg ICAvLyAuLi4NCj4gPj4gfQ0KPiA+Pg0KPiA+PiBBcyB0aGF0IHNlbGYtZG9jdW1lbnRzIHRoYXQg TWlkZGxld2FyZUludGVyZmFjZSBpcyB0aGUgY2FsbGFibGUNCj4gPj4gc2lnbmF0dXJlIHdlIG5l ZWQsIGJ1dCBzdGlsbCBhbGxvd3MgYW4gYXJiaXRyYXJ5IGNhbGxhYmxlIHRvIGJlIHBhc3NlZC4N Cj4gPj4gSXQncyBub3QgcGVyZmVjdCAoSSBjb3VsZCBwYXNzIGEgc3RyaW5nIG9mIGEgZnVuY3Rp b24gbmFtZSB0aGF0DQo+ID4+IGRvZXNuJ3QgaGF2ZSB0aGF0IGludGVyZmFjZSBhbmQgaXQgd291 bGQgc3RpbGwgZXhwbG9kZSksIGJ1dCBpdCBpcyBhbg0KPiA+PiBpbXByb3ZlbWVudCBvdmVyIG1p ZGRsZXdhcmVfYnVpbGRlcigpIGhhdmluZyBubyB0eXBlIHNwZWNpZmljYXRpb24gYXQNCj4gPj4g YWxsLCBhcyBpcyB0aGUgY2FzZSB0b2RheS4NCj4gPiBJbiBteSBvcGluaW9uLCBgY2FsbGFibGUn IGlzIHRvIHdlYWsgYSB0eXBlIGhpbnQgdG8gYmUgcmVhbGx5IHVzZWZ1bCwNCj4gPiBhbmQgaXQg d291bGQgYmUgYmV0dGVyIGlmIHdlIHdvdWxkIGltcHJvdmUgdGhhdCAoZ2VuZXJpY3MgY29tZSB0 byBtaW5kKS4NCj4gPiAgIFRoZW4geW91IHdvdWxkbid0IG5lZWQgTWlkZGxld2FyZUludGVyZmFj ZSBhdCBhbGwgYW5kIGJlIG5vdCBhZnJhaWQNCj4gPiB0aGF0IHNvbWVib2R5IHBhc3NlcyBpbiBh biBpbmNvbXBhdGlibGUgZnVuY3Rpb24uDQo+IA0KPiBPbmUgb2YgdGhlIGtleSBsYW5ndWFnZSBk ZXNpZ24gcG9pbnRzIEkgdGhpbmsgd2Ugc2hvdWxkIGJlIGtlZXBpbmcgaW4gbWluZCBpcw0KPiB0 aGF0LCBvbiB0aGUgd2hvbGUsIHNpbmdsZS1wdXJwb3NlIGZlYXR1cmVzIGFyZSBpbmZlcmlvciB0 byBtb3JlIGdlbmVyYWwNCj4gY2FwYWJpbGl0aWVzIHRoYXQgaW1wbGljaXRseSBncmFudCB0aGUg c2FtZSBjYXBhYmlsaXR5Lg0KDQpJdCdzIGEgZ29vZCBydWxlLW9mLXRodW1iLCBidXQgSSBkb24n dCB0aGluayBpdCBtYWtlcyBhIGxvdCBvZiBzZW5zZSBoZXJlLg0KDQpDb21wYXJlZCB0byB0aGUg aGFuZGZ1bCAob3IgbGVzcykgb2Ygc2l0dWF0aW9ucyB3aGVyZSB0d28gZGlmZmVyZW50IHR5cGVz IG9mIG9iamVjdHMgaW4gZmFjdCBoYXZlIHNpbWlsYXIgc2lnbmF0dXJlcywgYW5kIGxpa2UgQ2hy aXN0b3BoIHN1Z2dlc3RlZCAtIGFyZ3VhYmx5LCBvbmUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSBw YXJ0IG9mIHRoZSBvdGhlciAtIGluIHRoZSB2YXN0IG1ham9yaXR5IG9mIGNhc2VzLCBsdW1waW5n IHRvZ2V0aGVyIHR3byBvciBtb3JlIGNsYXNzIHR5cGVzIG1ha2VzIG5vIHNlbnNlLiAgVW5mb3J0 dW5hdGVseSwgSSdtIG11Y2ggbGVzcyBvcHRpbWlzdGljIHRoYW4geW91IGFyZSBhYm91dCBpdCBu b3QtYmVpbmctdXNlZC1iZWNhdXNlLWl0LW1ha2VzLW5vLXNlbnNlLg0KDQpGb3IgdW5jb21tb24g YnV0IGV4aXN0ZW50IGNhc2VzIGxpa2UgdGhlIFN5bWZvbnkgUmVxdWVzdCBzY2VuYXJpbyB5b3Ug ZGVzY3JpYmVkLCBpdCdzIGVudGlyZWx5IHJlYXNvbmFibGUgdG8gY29uZHVjdCB0aGUgdHlwZSBj aGVjayBpbiB1c2VybGFuZCBjb2RlLg0KDQpDcmVhdGluZyBhIGdlbmVyaWMgZmVhdHVyZSB0aGF0 IG1ha2VzIHNlbnNlIGluIGEgaGFuZGZ1bCBvZiBzaXR1YXRpb25zLCB3aGlsZSBhdCB0aGUgc2Ft ZSB0aW1lIGJlaW5nIG9uZSB0aGF0J3Mgd2FpdGluZy10by1iZS1hYnVzZWQgaW4gdGhlIHZhc3Qg bWFqb3JpdHkgb2YgdGhlIHJlc3QgKG9yIGFzIFRvbSBwdXQgaXQsIGEgJ2Zvb3RndW4nKSBpcyBh IHByZXR0eSBwb29yIGJhcmdhaW4gSU1ITy4NCg0KPiBPbiB0aGUgZmxpcHNpZGUsIHRoZSAmIGlz IG1vc3RseSB1c2VmdWwgZm9yIHdoZXJlIHlvdSBuZWVkIG11bHRpcGxlIGludGVyZmFjZXMNCj4g Zm9yIHNvbWV0aGluZy4gIEZvciBpbnN0YW5jZSwgdGhlcmUncyB0aGUgUFNSLTcgUmVzcG9uc2VJ bnRlcmZhY2UuICBEcnVwYWwNCj4gYWxzbyBoYXMgYSBudW1iZXIgb2YgaW50ZXJmYWNlcyBmb3Ig dmFsdWUgb2JqZWN0cyB0byBpbmRpY2F0ZSB0aGVpciBjYWNoZWFiaWxpdHkNCj4gbWV0YWRhdGEs IHN1Y2ggYXMgQ2FjaGVhYmxlTWV0YWRhdGFJbnRlcmZhY2UuICBCdXQgdGhhdCBhcHBsaWVzIHRv IG1vcmUNCj4gdGhhbiBqdXN0IFJlc3BvbnNlcywgb2YgY291cnNlLCBzbyBoYXZpbmcgaXQgZXh0 ZW5kIFJlc3BvbnNlSW50ZXJmYWNlIGlzIG5vdA0KPiBnb29kLiAgU28gaG93IGNhbiBJIHNwZWNp ZnkgdGhhdCBJIG5lZWQgYW4gb2JqZWN0IHRoYXQgaXMgQk9USA0KPiBSZXNwb25zZUludGVyZmFj ZSBBTkQgQ2FjaGVhYmxlTWV0ZGF0YUludGVyZmFjZT8gIFRoYXQncyBhbiBlbnRpcmVseQ0KPiBy ZWFzb25hYmxlIHRoaW5nIHRvIGRvLCBidXQgY3VycmVudGx5IFBIUCBkb2Vzbid0IGFsbG93IGZv ciBpdCBhdCBhbGwuDQo+IEV2ZW4gaGF2aW5nIGEgY3VzdG9tIGludGVyZmFjZSB0aGF0IGV4dGVu ZHMgYm90aCBvZiB0aG9zZSBkb2Vzbid0IGhlbHAsDQo+IGJlY2F1c2UgdGhlbiBteSBjbGFzcyBu ZWVkcyB0byBpbXBsZW1lbnQgdGhlIGNoaWxkIGludGVyZmFjZSwgbm90IGJvdGgNCj4gcGFyZW50 cy4NCg0KSXQgY291bGQgYWN0dWFsbHkgaW1wbGVtZW50IGFsbCBvZiB0aGVtIC0gdGhlIHR3byBw YXJlbnRzLCBhbmQgdGhlIGNoaWxkLiAgVGhhdCBzb3VuZHMgbGlrZSBhIHByZXR0eSBnb29kLCBl eHBsaWNpdCB3YXkgdGhhdCByZXF1aXJlcyBubyBpbnRyb2R1Y3Rpb24gb2YgYW55IG5ldyBzeW50 YXgsIGNvbmNlcHRzIG9yIGVuZ2luZSBjb21wbGV4aXR5IGluIG9yZGVyIHRvIGRvIHdoYXQgeW91 J3JlIGRlc2NyaWJpbmcuICBUaGlzIHdvcmtzIGZpbmU6DQoNCmludGVyZmFjZSBmb28geyBmdW5j dGlvbiBmb28oKTsgfQ0KaW50ZXJmYWNlIGJhciB7IGZ1bmN0aW9uIGJhcigpOyB9DQppbnRlcmZh Y2UgYmF6IGV4dGVuZHMgZm9vLGJhciB7fQ0KDQpjbGFzcyBpbXBsIGltcGxlbWVudHMgZm9vLCBi YXIsIGJheiB7DQogIGZ1bmN0aW9uIGZvbygpe30NCiAgZnVuY3Rpb24gYmFyKCl7fQ0KfQ0KDQpm dW5jdGlvbiBzdGgoYmF6ICRiKXt9DQoNCk9uZSB0aGluZyB3ZSBjb3VsZCBjb25zaWRlciBpcyBh ZGRpbmcgc29tZSBpbnRlbGxpZ2VuY2UgZm9yIHRoZXNlIGNhc2VzLCBhbmQgZm9yIGludGVyZmFj ZXMgdGhhdCBvbmx5IGV4dGVuZCBvdGhlciBpbnRlcmZhY2VzICh3aXRob3V0IGFkZGluZyBuZXcg c2lnbmF0dXJlcykgLSBhIGNsYXNzIHdvdWxkIGJlIGNvbnNpZGVyZWQgdG8gaW1wbGVtZW50IHRo YXQgaW50ZXJmYWNlIGlmIGl0IGltcGxlbWVudHMgYWxsIG9mIHRoZSAncGFyZW50JyBpbnRlcmZh Y2VzIHRoYXQgdGhlIGNoaWxkIGludGVyZmFjZSBleHRlbmRzOiANCg0KY2xhc3MgaW1wbCBpbXBs ZW1lbnRzIGZvbywgYmFyIHsNCiAgZnVuY3Rpb24gZm9vKCl7fQ0KICBmdW5jdGlvbiBiYXIoKXt9 DQp9DQoNCmZ1bmN0aW9uIHN0aChiYXogJGIpe30gICA8LS0gd291bGQgd29yaywgYXMgaW1wbCBp bXBsZW1lbnRzIGJvdGggZm9vIGFuZCBiYXIsIGFuZCBiYXogZG9lcyBub3RoaW5nIGJ1dCBleHRl bmRpbmcgdGhvc2UuDQoNCkknbSBub3Qgc3VyZSB0aGF0J3MgbmVjZXNzYXJ5LCBhbmQgYmVsaWV2 ZSB0aGUgY3VycmVudCBtZWNoYW5pc21zIGFuZCBzeW50YXggc2F0aXNmeSB0aGVzZSB1c2UgY2Fz ZXMgYWxyZWFkeSwgYnV0IGl0J3MgcHJvYmFibHkgYSBwb3NzaWJpbGl0eS4NCg0KWmVldg0KDQo=