From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS4713 221.184.0.0/13 X-Spam-Status: No, score=-3.5 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from neon.ruby-lang.org (neon.ruby-lang.org [221.186.184.75]) by dcvr.yhbt.net (Postfix) with ESMTP id 7097A1F54E for ; Sun, 7 Aug 2022 03:13:34 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=sendgrid.me header.i=@sendgrid.me header.b="g0yLuEaQ"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 07B1E120EAB; Sun, 7 Aug 2022 12:13:23 +0900 (JST) Received: from xtrwkhkc.outbound-mail.sendgrid.net (xtrwkhkc.outbound-mail.sendgrid.net [167.89.16.28]) by neon.ruby-lang.org (Postfix) with ESMTPS id C8307120EA5 for ; Sun, 7 Aug 2022 12:13:20 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.me; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=smtpapi; bh=KxzUK+JeptKE2Pzj5yYYGbSIGr+4UzEs/G885wYnKws=; b=g0yLuEaQpYylU4SKQklj4MZeJzcf+AVWIscPZ2eLfOgVmrCs6VS+O0uccETkMGmENZ9w RSvkwARTS0ZHJlk3SYyma4ra8fux3TmeAS6Y6sznW+8ViNpF2TlHXAFA3p1b6Ci8EuJv99 bkXk0kRo8ZWLN3t0kolGA//DFjAUrDSOQ= Received: by filterdrecv-846bc987b5-7cptn with SMTP id filterdrecv-846bc987b5-7cptn-1-62EF2DCC-4 2022-08-07 03:13:16.166388694 +0000 UTC m=+1408128.358772748 Received: from herokuapp.com (unknown) by geopod-ismtpd-5-3 (SG) with ESMTP id BMSE_QUXRFqtRJp5FphbKQ for ; Sun, 07 Aug 2022 03:13:16.119 +0000 (UTC) Date: Sun, 07 Aug 2022 03:13:16 +0000 (UTC) From: duerst Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18949 X-Redmine-Issue-Author: Eregon X-Redmine-Sender: duerst X-Mailer: Redmine X-Redmine-Host: bugs.ruby-lang.org X-Redmine-Site: Ruby Issue Tracking System X-Auto-Response-Suppress: All Auto-Submitted: auto-generated X-Redmine-MailingListIntegration-Message-Ids: 85848 X-SG-EID: =?us-ascii?Q?sZFLhNnqjcW9Ht8ByfkgOQbWPVETXXFxLuf0UPwpQ=2FbXrx066LnwciY0taRhC1?= =?us-ascii?Q?++A6DTJJ4lt=2FzJkwBQUmmbJXhB+C4nQ033MjSGj?= =?us-ascii?Q?je1hQukyvAdY2SYzao=2FX75Pnvfs6JXs9wihfjVC?= =?us-ascii?Q?2KS=2FOq0TsTgBG0evyQKOzUTpWLRnmLuxS=2F8hWAH?= =?us-ascii?Q?xtqiliKk5CfzNicz4NTHpcFeKQrPoybNV79NL1V?= =?us-ascii?Q?aNHMwU5+bXEZMCmpVSplLZtgCiguj3GRvOj4Poy?= =?us-ascii?Q?l5kh+m59xcc4ZSvPGfp9w=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109440 Subject: [ruby-core:109440] [Ruby master Feature#18949] Deprecate and remove replicate and dummy encodings X-BeenThere: ruby-core@ruby-lang.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Ruby developers List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Reply-To: Ruby developers Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ruby-core-bounces@ruby-lang.org Sender: "ruby-core" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgZHVlcnN0IChNYXJ0aW4gRMO8cnN0KS4N Cg0KDQpFcmVnb24gKEJlbm9pdCBEYWxvemUpIHdyb3RlIGluICNub3RlLTE0Og0KPiB6bnogKEth enVoaXJvIE5JU0hJWUFNQSkgd3JvdGUgaW4gI25vdGUtMTA6DQo+ID4gSSB0aGluayBJU08tMjAy Mi1KUCBpcyB1c2VkIGZvciBtYWlsIGFyY2hpdmVzLCBhbmQgSVJDbmV0IGV2ZW4gbm93Lg0KPiAN Cj4gQUZBSUsgRW5jb2Rpbmc6OklTT18yMDIyX0pQIChpbiBSdWJ5KSBpcyBvbmx5IHVzZWZ1bCB0 byBzYXkgInRoaXMgU3RyaW5nIGlzIGVuY29kZWQgaW4gSVNPLTIwMjItSlAiLCBidXQgUnVieSBj YW4ndCBkbyBhbnl0aGluZyB3aXRoIHRoYXQgZXhjZXB0IFN0cmluZyNlbmNvZGUuDQo+IElzIHRo ZSB1c2UgY2FzZSB0aGVuIHRvIFN0cmluZyNlbmNvZGUgdG8gYW5vdGhlciBlbmNvZGluZyBiZWZv cmUgYW55IFN0cmluZyBvcGVyYXRpb24/DQoNClllcywgZXhhY3RseS4gSSBhbHJlYWR5IHNhaWQg c28gaW4gaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvaXNzdWVzLzE4OTQ5I25vdGUtOC4NCg0K PiBDb3VsZCBpdCBiZSByZXBsYWNlZCBieSB0aGUgQklOQVJZIGVuY29kaW5nIGluIHByb2dyYW1z IHVzaW5nIGl0Pw0KDQpObywgdGhhdCB3b3VsZCBsb3NlIGVuY29kaW5nIGluZm9ybWF0aW9uLg0K DQo+IE9yIGp1c3QgYW4gaW5zdGFuY2UgdmFyaWFibGUgb24gdGhlIFN0cmluZyB0byByZW1lbWJl ciBpdHMgb3JpZ2luYWwgZW5jb2Rpbmc/DQoNClRoZW9yZXRpY2FsbHkgeWVzLCBidXQgdGhhdCB3 b3VsZCBtYWtlIGRlYWxpbmcgd2l0aCBlbmNvZGluZ3MgbW9yZSBjb21wbGV4Lg0KDQo+IE9yIGVh Z2VybHkgY29udmVydGluZyB0byBhIG5vbi1kdW1teSBlbmNvZGluZyBhcyBzb29uIGFzIHJlY2Vp dmluZyBJU08tMjAyMi1KUCBieXRlcyBmcm9tIGFuIGV4dGVybmFsIHNvdXJjZT8NCg0KVGhlb3Jl dGljYWxseSB5ZXMsIGJ1dCB0aGF0IHdvdWxkIGFnYWluIGNvbXBsaWNhdGUgY29kZSBzb21ld2hl cmUuIFdlIGRvbid0IGp1c3Qgd2FudCB0byBtb3ZlIGFyb3VuZCBjb21wbGV4aXR5LCBiZWNhdXNl IGl0IHN0YXlzIHJvdWdobHkgdGhlIHNhbWUsIGFuZCBtb3ZpbmcgaXQgYXJvdW5kIGlzIHdvcmsg YW5kIG1heSBpbnRyb2R1Y2UgYWRkaXRpb25hbCBlcnJvcnMuDQoNCg0KDQoNCkVyZWdvbiAoQmVu b2l0IERhbG96ZSkgd3JvdGUgaW4gI25vdGUtMTM6DQo+IFVzYWdlcyBvZiBFbmNvZGluZzo6VVRG XzMyOg0KKGRldGFpbHMgb21pdHRlZCkNCj4gVXNhZ2VzIG9mIEVuY29kaW5nOjpVVEZfMTY6DQoo ZGV0YWlscyBvbWl0dGVkKQ0KPiBNb3JlIHVzYWdlcywgYnV0IGFsbCB0aGVzZSB1c2FnZXMgc2Vl bSBpbmNvcnJlY3QsIGFuZCBzaG91bGQgdXNlIGVpdGhlciBVVEZfMTZMRSBvciBVVEZfMTZCRS4N Cj4gDQo+IFdoYXQgd2UgcHJvYmFibHkgbmVlZCBoZXJlIGlzIGEgY3VzdG9tIGRlcHJlY2F0aW9u IG1lc3NhZ2VzIGZvciB0aGVzZSB0d28gY29uc3RhbnRzLCB0byB0ZWxsIHRvIHVzZSB0aGUgTEUv QkUgdmFyaWFudHMgaW5zdGVhZC4NCg0KWW91IGFyZSBsb29raW5nIGZvciBFbmNvZGluZzo6VVRG XzMyIGluIGNvZGUsIGJ1dCB3aGF0J3MgbW9yZSByZWxldmFudCBpcyBVVEYtMzIgYW5kIFVURi0x NiBpbiBkYXRhLiBUaGVzZSBhcmUgb2ZmaWNpYWxseSByZWdpc3RlcmVkICdjaGFyc2V0JyBsYWJl bHMsIHNlZSBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyc2V0LXJlZy9jaGFy c2V0LXJlZy54aHRtbC4NCg0KDQpFcmVnb24gKEJlbm9pdCBEYWxvemUpIHdyb3RlIGluICNub3Rl LTEyOg0KPiBUaGlzIGlzIGEgZGlzYXBwb2ludGluZyBhbnN3ZXIsIGl0IHNvdW5kcyBsaWtlIHRo ZXJlIHdhcyBub3QgZW5vdWdoIHRpbWUgYXQgdGhlIGRldiBtZWV0aW5nIHRvIGNvbnNpZGVyIHRo aXMgaXNzdWUgcHJvcGVybHkgbWF5YmU/ICh0aGF0J3MgZmluZSwgYnV0IHRoZW4gZG9uJ3QgcmVq ZWN0IHBsZWFzZSkNCg0KSSB3YXNuJ3QgYXQgdGhlIG1lZXRpbmcsIHNvIEkgY2FuJ3Qgc2F5Lg0K DQo+IEkgcmVvcGVuIGJlY2F1c2UgdGhpcyBpc3N1ZSBpcyBzdGlsbCB2YXN0bHkgdW5hbnN3ZXJl ZC4NCj4gQWxzbyBpdCBmZWVscyBub3Qgc28gcmVzcGVjdGZ1bCB0byBtZSB0byBhbnN3ZXIgd2l0 aCBhIHNpbmdsZSBzaG9ydCB1bmNsZWFyIHNlbnRlbmNlIHRvIGEgY2FyZWZ1bGx5LWNyYWZ0ZWQg aXNzdWUuDQoNCk5hcnVzZS1zYW4gdXN1YWxseSB3cml0ZXMgdmVyeSBzaG9ydCBhbnN3ZXJlcywg YnV0IHRoYXQgZG9lc24ndCBtZWFuIGhlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgbWF0dGVyIGF0 IGhhbmQuDQoNCj4gSSBlc3RpbWF0ZSBJIGhhdmUgYSBsb3Qgb2YgZXhwZXJpZW5jZSBpbiB0aGlz IGFyZWEgc2luY2UgSSByZWltcGxlbWVudGVkIGR1bW15L3JlcGxpY2F0ZSBlbmNvZGluZ3MgaW4g VHJ1ZmZsZVJ1YnkgcmVjZW50bHkuDQoNCihOYXJ1c2Utc2FuIGFuZCBvdGhlcnMgaGF2ZSBhIGxv dCBvZiBleHBlcmllbmNlIGJlY2F1c2UgdGhleSBpbXBsZW1lbnRlZCB0aGVzZSBlbmNvZGluZ3Mg aW4gQ1J1YnkuKQ0KDQo+IFRoZSBkZXYgbWVldGluZyBsb2cgaGFzIG5vIG5vdGVzIGFib3V0IGEg ZGlzY3Vzc2lvbjogaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvZGV2LW1lZXRpbmctbG9nL2Jsb2Iv bWFzdGVyL0Rldk1lZXRpbmctMjAyMi0wNy0yMS5tZCNmZWF0dXJlLTE4OTQ5LWRlcHJlY2F0ZS1h bmQtcmVtb3ZlLXJlcGxpY2F0ZS1hbmQtZHVtbXktZW5jb2RpbmdzLWVyZWdvbg0KPiANCj4gbmFy dXNlIChZdWkgTkFSVVNFKSB3cm90ZSBpbiAjbm90ZS0xMToNCj4gPiBTdHJpbmcgaXMgYSBjb250 YWluZXIgYW5kIGFuIGVuY29kaW5nIGlzIGEgbGFiZWwgb2YgaXQuIFdoaWxlIGRhdGEgd2hvc2Ug ZW5jb2RpbmcgaXMgYW4gZW5jb2RpbmcgY2F0ZWdvcml6ZWQgaW4gZHVtbXkgZW5jb2RpbmdzIGlu IFJ1YnksIHdlIGNhbm5vdCBhdm9pZCBzdWNoIGVuY29kaW5ncy4NCj4gDQo+IFNvLCB0aGVyZSBh cmUgMyB0aGluZ3Mgd2UgY2FuIGRlY2lkZSwgd2hpY2ggSSBwb2ludGVkIG91dCBpbiBodHRwczov L2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg5NDkjbm90ZS02DQo+IEl0IHNlZW1zIHlvdSBh cmUgYWdhaW5zdCAiMy4gRGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBvdGhlciBkdW1teSBlbmNv ZGluZ3MiLg0KPiBXaGF0IGFib3V0IHRoZSBvdGhlciBwb2ludHMsIDEuIGFuZCAyLj8NCg0KRm9y IHBvaW50IDIsIHBsZWFzZSBzZWUgYWJvdmUuIEZvciAxLCB0aGVzZSBmdW5jdGlvbnMgYXJlIGlu dGVybmFsLCBhbmQgSSBndWVzcyB0aGUgc2FtZSB0aGluZyBjb3VsZCBiZSBkb25lIHdpdGggc29t ZSBkaWZmZXJlbnQgZnVuY3Rpb25zLCBidXQgYXMgZmFyIGFzIEkgdW5kZXJzdGFuZCwgdGhlIGZ1 bmN0aW9uYWxpdHkgaXMgbmVlZGVkIGZvciBSdWJ5IGl0c2VsZi4gQW5kIEkgZG9uJ3Qgc2VlIHRo ZSBwb2ludCBvZiBhIGZpeGVkIG51bWJlciBvZiBlbmNvZGluZ3MuIFRoYXQgaXQgaXMgcG9zc2li bGUgdG8gc3VwcG9ydCBuZXcgZW5jb2RpbmdzIG1heSBubyBsb25nZXIgYmUgYXMgaW1wb3J0YW50 IGFzIGl0IHdhcyAxMCBvciAyMCB5ZWFycyBhZ28sIGJ1dCBtYXkgY29tZSBpbiBoYW5keSBhbnl3 YXkuDQoNCj4gQ291bGQgeW91IGV4cGxhaW4geW91ciBwb2ludCBvZiB2aWV3IGJldHRlcj8NCj4g V2hvIHVzZXMgZHVtbXkgZW5jb2RpbmdzIGFuZCB3aGF0IGZvcj8gU2luY2Ugbm8gc3RyaW5nIG9w ZXJhdGlvbnMgcmVhbGx5IHdvcmtzIG9uIHRoZW0sIHRoZXkgYXJlIGluZGVlZCBub3RoaW5nIG1v cmUgdGhhbiBhIGxhYmVsICsgdGhlIHRyYW5zY29kaW5nIHRhYmxlLg0KDQpZZXMuIFRoYXQncyBl eGFjdGx5IHdoYXQgdGhleSBhcmUuIEFuZCBJIGhhdmUgZGlmZmljdWx0aWVzIHVuZGVyc3RhbmRp bmcgd2h5IHRoZXJlIHdvdWxkIGJlIGEgcHJvYmxlbSB3aXRoIHRoaXMuIFN1cHBvcnRpbmcgYSBy ZWFsIGVuY29kaW5nIGlzIHJlYWwgd29yay4gQnV0IHN1cHBvcnRpbmcgZHVtbXkgZW5jb2Rpbmdz IGNhbid0IGJlIHRoYXQgbXVjaCB3b3JrLCBiZWNhdXNlIHRoZXJlIGlzbid0IG11Y2ggZnVuY3Rp b25hbGl0eS4NCg0KPiBJIGFncmVlIDMuIGlzIG1vcmUgZGlmZmljdWx0LCBhbmQgaXMgbGVzcyBp bXBvcnRhbnQgdGhhbiAxLi8yLi4NCj4gMS4gc2VlbXMgc3RyYWlnaHRmb3J3YXJkLCB0aGVyZSBz ZWVtcyB0byBiZSBleHRyZW1lbHkgZmV3IHVzYWdlcyBvZiBpdCwgYW5kIHRoZXkgY2FuIGJlIHJl cGxhY2VkIGJ5IEVuY29kaW5nOjpCSU5BUlkgZWFzaWx5Lg0KPiAgICBJbiBmYWN0IGBFbmNvZGlu ZyNyZXBsaWNhdGVgIGlzIHVzZWQgaW4gemVybyBnZW1zLCBzbyBJIHRoaW5rIGl0J3MgZmFpciBl bm91Z2ggdG8gZGVwcmVjYXRlIGFuZCB0aGVuIHJlbW92ZSBpdCB3aXRob3V0IGZ1cnRoZXIgZGlz Y3Vzc2lvbi4NCg0KYGVuY19yZXBsaWNhdGVgIGlzIHVzZWQgaW50ZXJuYWxseSBhcyBmYXIgYXMg SSB1bmRlcnN0YW5kLiBNYXliZSB3ZSBjYW4gZGVwcmVjYXRlIHRoZSBSdWJ5IG1ldGhvZCwgYnV0 IG5vdCB0aGUgQyBmdW5jdGlvbi4NCg0KPiAyLiBJIHRoaW5rIHdlIG5lZWQgdG8gZXZhbHVhdGUg dXNhZ2VzIG9mIHRoZSBkdW1teSBVVEYtMTYgYW5kIFVURi0zMiBlbmNvZGluZ3MsIGUuZy4sIHdp dGggYGdlbS1jb2Rlc2VhcmNoYC4NCg0KU2VlIGFib3ZlLg0KDQo+IEZvciBiZXR0ZXIgY29tcGF0 aWJpbGl0eSBiZXR3ZWVuIFJ1YmllcyB3ZSBuZWVkIHRvIGRvIDIuIGFzIHdlbGwsIGFzIG1lbnRp b25lZCBhYm92ZSB0aGUgb3ZlcmhlYWQgYW5kIGNvbXBsZXhpdHkgZm9yIGR1bW15IFVURi0xNi9V VEYtMzIgaXMgdG9vIG11Y2gsIGFuZCBKUnVieSAmIFRydWZmbGVSdWJ5IGFscmVhZHkgZG8gbm90 IGRlYWwgd2l0aCBpdCBmb3IgbWFueSBTdHJpbmcgb3BlcmF0aW9ucy4NCj4gSXQgaXMgYWxzbyBj bGVhcmx5IGEgc2lnbmlmaWNhbnQgcGVyZm9ybWFuY2UgY29zdCBmb3IgQ1J1YnkuDQoNCg0KDQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMxODk0OTog RGVwcmVjYXRlIGFuZCByZW1vdmUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3MNCmh0dHBz Oi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODk0OSNjaGFuZ2UtOTg1OTMNCg0KKiBBdXRo b3I6IEVyZWdvbiAoQmVub2l0IERhbG96ZSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5OiBO b3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJ1YnkgaGFz IGEgbG90IG9mIGFjY2lkZW50YWwgY29tcGxleGl0eS4NClNvbWV0aW1lcyBpdCBiZWNvbWVzIGNs ZWFyIHNvbWUgZmVhdHVyZXMgYnJpbmcgYSBsb3Qgb2YgY29tcGxleGl0eSBhbmQgeWV0IHByb3Zp ZGUgbGl0dGxlIHZhbHVlIG9yIGFyZSB1c2VkIHZlcnkgcmFyZWx5Lg0KQWxzbyBtb3N0IFJ1Ynkg dXNlcnMgZG8gbm90IGV2ZW4ga25vdyBhYm91dCB0aGVzZSBmZWF0dXJlcy4NClJlcGxpY2F0ZSBh bmQgZHVtbXkgZW5jb2RpbmdzIHNlZW0gdG8gY2xlYXJseSBmYWxsIGludG8gdGhpcyBjYXRlZ29y eSwgYWxtb3N0IG5vYm9keSB1c2VzIHRoZW0gYnV0IHRoZXkgYWRkIGEgc2lnbmlmaWNhbnQgY29t cGxleGl0eSBhbmQgYWxzbyBhZGQgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBvdmVyaGVhZC4N Ck5vdGFibHksIHRoZSBleGlzdGVuY2Ugb2YgdGhvc2UgbWVhbnMgdGhlIG51bWJlciBvZiBlbmNv ZGluZ3MgaW4gYSBSdWJ5IHJ1bnRpbWUgaXMgYWN0dWFsbHkgdmFyaWFibGUgYW5kIG5vdCBmaXhl ZC4NClRoYXQgbWVhbnMgZXh0cmEgc3luY2hyb25pemF0aW9uLCBoYXNodGFibGUgbG9va3Vwcywg aW5kaXJlY3Rpb25zLCBmdW5jdGlvbiBjYWxscywgZXRjLg0KDQojIyBSZXBsaWNhdGUgRW5jb2Rp bmdzDQoNClJlcGxpY2F0ZSBlbmNvZGluZ3MgYXJlIGNyZWF0ZWQgdXNpbmcgYEVuY29kaW5nI3Jl cGxpY2F0ZShuYW1lKWAuDQpJdCBhbG1vc3Qgc291bmRzIGxpa2UgYW4gYWxpYXMgYnV0IGluIGZh Y3QgaXQgaXMgbW9yZSB0aGFuIHRoYXQgYW5kIGNyZWF0ZXMgYSBuZXcgRW5jb2Rpbmcgb2JqZWN0 LCB3aGljaCBjYW4gYmUgdXNlZCBieSBhIFN0cmluZzoNCmBgYHJ1YnkNCmUgPSBFbmNvZGluZzo6 VVNfQVNDSUkucmVwbGljYXRlKCdNWS1VUy1BU0NJSScpDQpzID0gImFiYyIuZm9yY2VfZW5jb2Rp bmcoZSkNCnAgcy5lbmNvZGluZyAjID0+IGUNCnAgcy5lbmNvZGluZy5uYW1lICMgPT4gJ01ZLVVT LUFTQ0lJJw0KYGBgDQoNClRoaXMgc2VlbXMgY29tcGxldGVseSB1c2VsZXNzLg0KVGhlcmUgaXMg YW4gb2J2aW91cyBmaXJzdCBzdGVwIGhlcmUgd2hpY2ggaXMgdG8gY2hhbmdlIGBFbmNvZGluZyNy ZXBsaWNhdGVgIHRvIHJldHVybiB0aGUgcmVjZWl2ZXIsIGFuZCBqdXN0IGluc3RhbGwgYW4gYWxp YXMgZm9yIGl0Lg0KVGhhdCBhdm9pZHMgY3JlYXRpbmcgbW9yZSBlbmNvZGluZyBpbnN0YW5jZXMg bmVlZGxlc3NseS4NCg0KSSB0aGluayB3ZSBzaG91bGQgYWxzbyBkZXByZWNhdGUgYW5kIHJlbW92 ZSB0aGlzIG1ldGhvZCB0aG91Z2gsIGl0IGlzIG5ldmVyIGEgZ29vZCBpZGVhIHRvIGhhdmUgYSBn bG9iYWwgbXV0YWJsZSBtYXAgbGlrZSB0aGlzLg0KSWYgc29tZW9uZSB3YW50IGV4dHJhIGFsaWFz ZXMgZm9yIGVuY29kaW5ncywgdGhleSBjYW4gZWFzaWx5IHRvIGRvIHNvIGJ5IGhhdmluZyB0aGVp ciBvd24gSGFzaDogYHsgYWxpYXMgPT4gZW5jb2RpbmcgfS5mZXRjaChuYW1lKSB7IEVuY29kaW5n LmZpbmQobmFtZSkgfWAuDQoNCiMjIER1bW15IEVuY29kaW5ncw0KDQpEdW1teSBlbmNvZGluZ3Mg YXJlIG5vdCByZWFsIGVuY29kaW5ncy4gVGhleSBhcmUgYXJ0aWZpY2lhbCBlbmNvZGluZ3MgZGVz aWduZWQgdG8gbG9vayBsaWtlIGVuY29kaW5ncywgYnV0IGRvbid0IGZ1bmN0aW9uIGFzIGVuY29k aW5ncyBpbiBSdWJ5Lg0KRnJvbSB0aGUgZG9jczoNCmBgYA0KZW5jLmR1bW15PyAtPiB0cnVlIG9y IGZhbHNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJldHVybnMgdHJ1ZSBmb3IgZHVtbXkgZW5jb2Rpbmdz LiBBIGR1bW15IGVuY29kaW5nIGlzIGFuIGVuY29kaW5nIGZvcg0Kd2hpY2ggY2hhcmFjdGVyIGhh bmRsaW5nIGlzIG5vdCBwcm9wZXJseSBpbXBsZW1lbnRlZC4gSXQgaXMgdXNlZCBmb3INCnN0YXRl ZnVsIGVuY29kaW5ncy4NCmBgYA0KDQpJIHdvbmRlciB3aHkgd2UgaGF2ZSB0aG9zZSBoYWxmLWlt cGxlbWVudGVkIGVuY29kaW5ncyBpbiBjb3JlLCBpdCBzb3VuZHMgdG8gbWUgbGlrZSB1bmZpbmlz aGVkIHdvcmsgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gbWVyZ2VkLg0KDQpUaGUgImNvZGVw b2ludHMiIG9mIGR1bW15IGVuY29kaW5ncyBhcmUganVzdCAiYnl0ZXMiIGFuZCBzbyB0aGV5IGJl aGF2ZSB0aGUgc2FtZSBhcyBgRW5jb2Rpbmc6OkJJTkFSWWAsIHdpdGggdGhlIGV4Y2VwdGlvbiBv ZiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzLg0KDQojIyMgVVRGLTE2IGFu ZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzDQoNClRoZXNlIHR3byBhcmUgc3BlY2lhbCBkdW1teSBl bmNvZGluZ3MuDQpXaGF0IHRoZXkgZG8gaXMgdGhleSBzY2FuIHRoZSBmaXJzdCAyIG9yIDQgYnl0 ZXMgb2YgdGhlIFN0cmluZywgYW5kIGlmIHRob3NlIGJ5dGVzIGFyZSBhIGJ5dGUtb3JkZXIgbWFy ayAoQk9NKSwNCnRoZSB0cnVlICJhY3R1YWwiIGVuY29kaW5nIGlzIHJlc29sdmVkIHRvIFVURi0x NkJFL1VURi0xNkxFIG9yIFVURi0zMkJFL1VURi0zMkxFLg0KT3RoZXJ3aXNlLCBgRW5jb2Rpbmc6 OkJJTkFSWWAgaXMgcmV0dXJuZWQuDQpUaGlzIGxvZ2ljIGlzIGRvbmUgYnkgYGdldF9hY3R1YWxf ZW5jb2RpbmcoKWAuDQoNCldoYXQgaXMgd2VpcmQgaXMgdGhpcyBjaGVjayBpcyBub3QgZG9uZSBv biBTdHJpbmcgY3JlYXRpb24sIG5vLCBpdCBpcyBkb25lICpldmVyeSB0aW1lKiB0aGUgZW5jb2Rp bmcgb2YgdGhhdCBTdHJpbmcgaXMgYWNjZXNzZWQgKGFuZCB0aGUgcmVzdWx0IGlzIG5vdCBzdG9y ZWQgb24gdGhlIFN0cmluZykuDQpUaGF0IGlzIGEgbmVlZGxlc3Mgb3ZlcmhlYWQgYW5kIHJlYWxs eSB1bnJlbGlhYmxlIHNlbWFudGljcy4NCkRvIHdlIHJlYWxseSB3YW50IGEgU3RyaW5nIHdoaWNo IGF1dG9tYWdpY2FsbHkgY2hhbmdlcyBiZXR3ZWVuIFVURi0xNkxFIGFuZCBVVEYtMTZCRSBiYXNl ZCBvbiBtdXRhdGluZyBpdHMgYnl0ZXM/IEkgdGhpbmsgbm9ib2R5IHdhbnRzIHRoYXQ6DQpgYGBy dWJ5DQpzID0gIlx4RkZceEZFYVx4MDBiXHgwMGNceDAwZFx4MDAiLmZvcmNlX2VuY29kaW5nKCJV VEYtMTYiKQ0KcCBzICMgPT4gIlx1RkVGRmFiY2QiDQpzLnNldGJ5dGUgMCwgMjU0DQpzLnNldGJ5 dGUgMSwgMjU1DQpwIHMgIyA9PiAiXHVGRUZGXHU2MTAwXHU2MjAwXHU2MzAwXHU2NDAwIg0KYGBg DQoNCkkgdGhpbmsgdGhlIHBhdGggaXMgY2xlYXIsIHdlIHNob3VsZCBkZXByZWNhdGUgYW5kIHRo ZW4gcmVtb3ZlIEVuY29kaW5nOjpVVEZfMTYgYW5kIEVuY29kaW5nOjpVVEZfMzIgKGR1bW15IGVu Y29kaW5ncykuDQpBbmQgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCBgZ2V0X2FjdHVhbF9lbmNvZGlu ZygpYCBhbmQgdGhlIG92ZXJoZWFkIGl0IGFkZHMgdG8gZXZlcnkgU3RyaW5nIG1ldGhvZC4NCg0K V2UgY291bGQgYWxzbyBrZWVwIHRob3NlIGNvbnN0YW50cyBhbmQgbWFrZSB0aGVtIHJlZmVyIHRo ZSBuYXRpdmUtZW5kaWFuIFVURi0xNi8zMi4NCkJ1dCB0aGF0IGNvdWxkIGNhdXNlIGNvbmZ1c2lu ZyBlcnJvcnMgYXMgd2Ugd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZW0uDQpXZSBjb3Vs ZCBhZGQgYEVuY29kaW5nOjpVVEZfMTZORWAgLyBgRW5jb2Rpbmc6OlVURl8xNl9OQVRJVkVfRU5E SUFOYCBpZiB0aGF0IGlzIHVzZWZ1bC4NCg0KQW5vdGhlciBwb3NzaWJpbGl0eSB3b3VsZCBiZSB0 byByZXNvbHZlIHRoZXNlIGVuY29kaW5ncyBvbiBTdHJpbmcgY3JlYXRpb24sIGxpa2U6DQpgYGAN CiJceEZGXHhGRSIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIpLmVuY29kaW5nICMgPT4gVVRGLTE2 TEUNClN0cmluZy5uZXcoIlx4RkZceEZFIiwgZW5jb2Rpbmc6IEVuY29kaW5nOjpVVEZfMTYpLmVu Y29kaW5nICMgPT4gVVRGLTE2TEUNCiJhYiIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIpLmVuY29k aW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NClN0cmluZy5uZXcoImFiIiwgZW5jb2Rpbmc6IEVu Y29kaW5nOjpVVEZfMTYpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NCmBgYA0KSSB0 aGluayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBrZWVwIHN1Y2ggY29tcGxleGl0eSB0aG91Z2guDQpB IGNsYXNzIG1ldGhvZCBvbiBTdHJpbmcgb3IgRW5jb2RpbmcgbGlrZSBlLmcuIGBFbmNvZGluZy5m aW5kX2Zyb21fYm9tKHN0cmluZylgIGlzIHNvIG11Y2ggY2xlYXJlciBhbmQgZWZmaWNpZW50IChu byBuZWVkIHRvIHNwZWNpYWwgY2FzZSB0aG9zZSBlbmNvZGluZ3MgaW4gU3RyaW5nLm5ldywgI2Zv cmNlX2VuY29kaW5nLCBldGMpLg0KDQpGV0lXIEpSdWJ5IHNlZW1zIHRvIHVzZSBgZ2V0QWN0dWFs RW5jb2RpbmcoKWAgb25seSBpbiAyIHBsYWNlcyAoc2NhbkZvckNvZGVSYW5nZSwgaW5zcGVjdCks IHdoaWNoIGlzIGFuIGluZGljYXRpb24gdGhvc2UgZHVtbXkgVVRGIGVuY29kaW5ncyBhcmUgYmFy ZWx5IHVzZWQgaWYgZXZlci4gU2ltaWxhcmx5LCBUcnVmZmxlUnVieSBvbmx5IGhhcyA0IHVzYWdl cyBvZiBgR2V0QWN0dWFsRW5jb2RpbmdOb2RlYC4NCg0KIyMjIEV4aXN0aW5nIGR1bW15IGVuY29k aW5ncw0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5zZWxlY3QoJjpkdW1teT8pIA0KWyM8RW5jb2Rp bmc6VVRGLTE2IChkdW1teSk+LCAgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4sDQogIzxFbmNv ZGluZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4sDQogIzxFbmNv ZGluZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1KUC0yIChkdW1t eSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxFbmNvZGluZzpD UDUwMjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpgYGANCg0KU28g YmVzaWRlcyBVVEYtMTYvVVRGLTMyIGR1bW15LCBpdCdzIG9ubHkgNyBlbmNvZGluZ3MuDQpEb2Vz IGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5jb2RpbmdzPw0KDQpXaGF0IGlzIGlu dGVyZXN0aW5nIHRvIG5vdGUsIGlzIHRoYXQgdGhlc2UgZW5jb2RpbmdzIGFyZSBleGFjdGx5IHRo ZSBvbmVzIHRoYXQgYXJlIGFsc28gbm90IEFTQ0lJLWNvbXBhdGlibGUsIHdpdGggdGhlIGV4Y2Vw dGlvbiBvZiBVVEYtMTZCRS9VVEYtMTZMRS9VVEYtMzJCRS9VVEYtMzJMRSAobm9uLWR1bW15KS4N CkFzIGEgbm90ZSwgVVRGLXsxNiwzMn17QkUsTEV9IGFyZSBBU0NJSS1jb21wYXRpYmxlIGluIGNv ZGVwb2ludHMgYnV0IG5vdCBpbiBieXRlcywgYW5kIFJ1YnkgdXNlcyB0aGUgYnl0ZXMgZGVmaW5p dGlvbiBvZiBBU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUgaXMgcG90ZW50aWFsIHRvIHNpbXBsaWZ5 IGVuY29kaW5nIGNvbXBhdGliaWxpdHkgcnVsZXMgYW5kIGVuY29kaW5nIGNvbXBhdGliaWxpdHkg Y2hlY2tzIGJhc2VkIG9uIHRoYXQuDQpTbyB3aGF0IHRoaXMgbWVhbnMgaXMgaWYgd2UgcmVtb3Zl ZCBkdW1teSBlbmNvZGluZ3MsIGFsbCBlbmNvZGluZ3MgZXhjZXB0IFVURi17MTYsMzJ9e0JFLExF fSB3b3VsZCBiZSBBU0NJSS1jb21wYXRpYmxlLCB3aGljaCB3b3VsZCBsZWFkIHRvIHNpZ25pZmlj YW50IHNpbXBsaWZpY2F0aW9ucyBmb3IgbWFueSBzdHJpbmcgb3BlcmF0aW9ucyB3aGljaCBjdXJy ZW50bHkgbmVlZCB0byBoYW5kbGUgZHVtbXkgZW5jb2RpbmdzIHNwZWNpYWxseS4NClVuaWNvZGUg ZW5jb2RpbmdzIGxpa2UgVVRGLXsxNiwzMn17QkUsTEV9IGFscmVhZHkgaGF2ZSBzcGVjaWFsIGJl aGF2aW9yIGZvciBzb21lIFJ1YnkgbWV0aG9kcywgc28gdGhvc2UgYXJlIGFscmVhZHkgaGFuZGxl ZCBzcGVjaWFsbHkgaW4gc29tZSBwbGFjZXMgKHRoZXkgYXJlIHRoZSBvbmx5IGVuY29kaW5ncyB3 aXRoIG1pbkxlbmd0aCA+IDEpLg0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5yZWplY3QoJjphc2Np aV9jb21wYXRpYmxlPykNClsjPEVuY29kaW5nOlVURi0xNkJFPiwgIzxFbmNvZGluZzpVVEYtMTZM RT4sDQogIzxFbmNvZGluZzpVVEYtMzJCRT4sICM8RW5jb2Rpbmc6VVRGLTMyTEU+LA0KICM8RW5j b2Rpbmc6VVRGLTE2IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi0zMiAoZHVtbXkpPiwNCiAjPEVu Y29kaW5nOklCTTAzNyAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtNyAoZHVtbXkpPiwNCiAjPEVu Y29kaW5nOklTTy0yMDIyLUpQIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLTIgKGR1 bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtS0RESSAoZHVtbXkpPiwNCiAjPEVuY29kaW5n OkNQNTAyMjAgKGR1bW15KT4sICM8RW5jb2Rpbmc6Q1A1MDIyMSAoZHVtbXkpPl0NCmBgYA0KDQpX aGF0IGNhbiB3ZSBkbyB3aXRoIHN1Y2ggYSBkdW1teSBub24tQVNDSUktY29tcGF0aWJsZSBlbmNv ZGluZz8NCkFsbW9zdCBub3RoaW5nIHVzZWZ1bDoNCmBgYHJ1YnkNCnMgPSAiYWJjIi5lbmNvZGUo IklCTTAzNyIpDQo9PiAiXHg4MVx4ODJceDgzIg0KPiBzLmJ5dGVzDQo9PiBbMTI5LCAxMzAsIDEz MV0NCj4gcy5jb2RlcG9pbnRzDQo9PiBbMTI5LCAxMzAsIDEzMV0NCj4gcyA9PSAiYWJjIg0KPT4g ZmFsc2UNCj4gIsOpdMOpIi5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg1MVx4QTNceDUxIg0KYGBg DQoNClNvIGFib3V0IHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3Mgd2l0aCB0aGVtIGlzIGBTdHJp bmcjZW5jb2RlYC4NCg0KSSB0aGluayB3ZSBjb3VsZCBwcmVzZXJ2ZSB0aGF0IGZ1bmN0aW9uYWxp dHksIGlmIGFjdHVhbGx5IHVzZWQgKGRvZXMgYW55b25lIHVzZSBvbmUgb2YgdGhlc2UgNyBkdW1t eSBlbmNvZGluZ3M/KSwgdGhyb3VnaDoNCmBgYHJ1YnkNCj4gIsOpdMOpIi5lbmNvZGUoIklCTTAz NyIpDQo9PiAiXHg1MVx4QTNceDUxIiAoLmVuY29kaW5nID09IEJJTkFSWSkNCj4gIlx4NTFceEEz XHg1MSIuZW5jb2RlKCJVVEYtOCIsICJJQk0wMzciKSAjIGVuY29kZSBmcm9tIElCTTAzNyB0byBV VEYtOA0KPT4gIsOpdMOpIiAoLmVuY29kaW5nID09IFVURi04KQ0KYGBgDQoNClRoYXQgd2F5IHRo ZXJlIGlzIG5vIG5lZWQgZm9yIHRob3NlIHRvIGJlIEVuY29kaW5nIGluc3RhbmNlcywgd2Ugd291 bGQgb25seSBuZWVkIHRoZSBjb252ZXJzaW9uIHRhYmxlcy4NCg0KSXQgaXMgZXZlbiBiZXR0ZXIg aWYgd2UgY2FuIHJlbW92ZSB0aGVtLCBzbyB0aGUgbm90aW9uIG9mICJkdW1teSBlbmNvZGluZ3Mi IGNhbiBkaXNhcHBlYXIgY29tcGxldGVseSBhbmQgbm9ib2R5IG5lZWRzIHRvIHVuZGVyc3RhbmQg b3IgaW1wbGVtZW50IHRoZW0uDQoNCiMjIyByYl9kZWZpbmVfZHVtbXlfZW5jb2RpbmcobmFtZSkN Cg0KVGhlIEMtQVBJIGhhcyBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKGNvbnN0IGNoYXIgKm5h bWUpYC4NClRoaXMgY3JlYXRlcyBhIG5ldyBFbmNvZGluZyBpbnN0YW5jZSB3aXRoIGBkdW1teT89 dHJ1ZWAsIGFuZCBpdCBpcyBhbHNvIG5vbi1BU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUgc2VlbXMg dG8gYmUgbm8gcHVycG9zZSB0byB0aGlzIGJlc2lkZXMgc3RvcmluZyB0aGUgbWV0YWRhdGEgb2Yg YW4gZW5jb2Rpbmcgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gUnVieS4NClRoaXMgc2VlbXMgYSBy ZWFsbHkgZXhwZW5zaXZlL2NvbXBsZXggd2F5IHRvIGhhbmRsZSB0aGF0IGZyb20gdGhlIFZNIHBv aW50IG9mIHZpZXcgKGJlY2F1c2UgaXQgZHluYW1pY2FsbHkgY3JlYXRlcyBhbiBFbmNvZGluZyBh bmQgYWRkIGl0IHRvIGxpc3RzL21hcHMvZXRjKS4NCkEgc2ltcGxlIHJlcGxhY2VtZW50IHdvdWxk IGJlIHRvIG1hcmsgdGhlIFN0cmluZyBhcyBCSU5BUlkgYW5kIHNhdmUgdGhlIGVuY29kaW5nIG5h bWUgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgb2YgdGhhdCBTdHJpbmcuDQpTaW5jZSBhbnl3YXkg UnVieSBjYW4ndCB1bmRlcnN0YW5kIGFueXRoaW5nIGFib3V0IHRoYXQgU3RyaW5nLCBpdCdzIGp1 c3QgcmF3IGJ5dGVzIHRvIFJ1YnkncyBleWVzLg0KDQojIyBTdW1tYXJ5DQoNCkkgc3VnZ2VzdCB3 ZSBkZXByZWNhdGUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3MgaW4gUnVieSAzLjIuDQpB bmQgdGhlbiB3ZSByZW1vdmUgdGhlbSBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQpUaGlzIHdpbGwg c2lnbmlmaWNhbnRseSBzaW1wbGlmeSBzdHJpbmctcmVsYXRlZCBtZXRob2RzLCBhbmQgdGhlIGJl aGF2aW9yIGV4cG9zZWQgdG8gUnVieSB1c2Vycy4NCg0KSXQgd2lsbCBhbHNvIHNpZ25pZmljYW50 bHkgc3BlZWR1cCBlbmNvZGluZyBsb29rdXAgaW4gQ1J1YnkgKGFuZCBvdGhlciBSdWJ5IGltcGxl bWVudGF0aW9ucykuDQpXaXRoIGEgZml4ZWQgbnVtYmVyIG9mIGVuY29kaW5ncyB3ZSBjYW4gZW5z dXJlIGFsbCBlbmNvZGluZyBpbmRpY2VzIGZpdCBpbiA3IGJpdHMsIGFuZCBgRU5DT0RJTkdfR0VU YCBjYW4gYmUgc2ltcGx5IGBSQl9FTkNPRElOR19HRVRfSU5MSU5FRGAuDQpgZ2V0X2FjdHVhbF9l bmNvZGluZygpYCB3aWxsIGJlIGdvbmUgYW5kIGl0cyBvdmVyaGVhZCBhcyB3ZWxsLg0KYHJiX2Vu Y19mcm9tX2luZGV4KClgIHdvdWxkIGJlIGp1c3QgYHJldHVybiBnbG9iYWxfZW5jX3RhYmxlLT5s aXN0W2luZGV4XS5lbmM7YCwgaW5zdGVhZCBvZiB0aGUgZXhwZW5zaXZlIGJlaGF2aW9yIGN1cnJl bnRseSB3aXRoIGBHTE9CQUxfRU5DX1RBQkxFX0VWQUxgIHdoaWNoIHRha2VzIGEgbG9jayBhbmQg bW9yZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBSYWN0b3JzLg0KTWFueSBjaGVja3MgaW4gdGhl c2UgbWV0aG9kcyB3b3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuDQpZZXQgYW5vdGhlciBpbXByb3Zl bWVudCB3b3VsZCBiZSB0byBsb2FkIGFsbCBlbmNvZGluZ3MgZWFnZXJseSwgdGhhdCBpcyBzbWFs bCBhbmQgZmFzdCBpbiBteSBleHBlcmllbmNlLCB3aGF0IGlzIHNsb3cgYW5kIGJpZyBpcyB0aGUg Y29udmVyc2lvbiB0YWJsZXMsIHRoYXQnZCBzaW1wbGlmeSBgbXVzdF9lbmNpbmRleCgpYCBmdXJ0 aGVyLg0KVGhlc2UgY2hhbmdlcyB3b3VsZCBhZmZlY3QgbW9zdCBTdHJpbmcgbWV0aG9kcywgd2hp Y2ggdXNlDQpgYGANClNUUl9FTkNfR0VULT5nZXRfZW5jb2Rpbmcgd2hpY2ggZG9lczoNCiAgZ2V0 X2FjdHVhbF9lbmNvZGluZy0+cmJfZW5jX2Zyb21faW5kZXggYW5kIHBvc3NpYmx5IC0+ZW5jX2Zy b21faW5kZXgNCiAgRU5DT0RJTkdfR0VULT5SQl9FTkNPRElOR19HRVRfSU5MSU5FRCBhbmQgcG9z c2libHkgLT5yYl9lbmNfZ2V0X2luZGV4LT5lbmNfZ2V0X2luZGV4X3N0ci0+cmJfYXR0cl9nZXQN CmBgYA0KU29tZSBvZiB0aGVzZSBkZXRhaWxzIGFyZSBtZW50aW9uZWQgaW4gaHR0cHM6Ly9naXRo dWIuY29tL3J1YnkvcnVieS9wdWxsLzYwOTUjZGlzY3Vzc2lvbl9yOTE1MTQ5NzA4Lg0KVGhlIG92 ZXJoZWFkIGlzIHNvIGxhcmdlIHRoYXQgaXQgaXMgd29ydGggaGFuZGxpbmcgc29tZSBoYXJkY29k ZWQgZW5jb2RpbmcgaW5kaWNlcyBkaXJlY3RseSBpbiBTdHJpbmcgbWV0aG9kcy4NClRoaXMgZmVl bHMgd3JvbmcsIGdldHRpbmcgdGhlIGVuY29kaW5nIGZyb20gYSBTdHJpbmcgc2hvdWxkIGJlIHNp bXBsZSwgc3RyYWlnaHRmb3J3YXJkIGFuZCBmYXN0Lg0KDQpGdXJ0aGVyIG9wdGltaXphdGlvbnMg d2lsbCBiZSB1bmxvY2tlZCBhcyB0aGUgZW5jb2RpbmcgbGlzdCBiZWNvbWVzIGZpeGVkIGFuZCBp bW11dGFibGUuDQpGb3IgZXhhbXBsZSwgdGhlIG5hbWUtdG8tRW5jb2RpbmcgbWFwIGlzIHRoZW4g aW1tdXRhYmxlIGFuZCBjb3VsZCB1c2UgcGVyZmVjdCBoYXNoaW5nLg0KSW5saW5lIGNhY2hpbmcg dGhvc2UgbG9va3VwcyBhbHNvIGJlY29tZXMgZWFzaWVyIGFzIHRoZSB0aGUgbWFwIGNhbm5vdCBj aGFuZ2UuDQpBbHNvIHRoYXQgbWFwIHdvdWxkIG5vIGxvbmdlciBuZWVkIHN5bmNocm9uaXphdGlv biwgZXRjLg0KDQojIyBUbyBEZWNpZGUNCg0KRWFjaCBpdGVtIGlzIGluZGVwZW5kZW50LiBJIHRo aW5rIDEgJiAyIGFyZSB2ZXJ5IGltcG9ydGFudCwgMyBsZXNzIGJ1dCB3b3VsZCBiZSBuaWNlLg0K DQoxLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIGBFbmNvZGluZyNyZXBsaWNhdGVgIGFuZCBg cmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKClgLiBXaXRoIHRoYXQgdGhlcmUgaXMgYSBmaXhlZCBu dW1iZXIgb2YgZW5jb2RpbmdzLCBhIGxvdCBvZiBzaW1wbGlmaWNhdGlvbnMgYW5kIG1hbnkgb3B0 aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSB1c2VkIHJlc3BlY3RpdmVseSBp biBvbmx5IDEgZ2VtIGFuZCA1IGdlbXMsIHNlZSBodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9p c3N1ZXMvMTg5NDkjbm90ZS00DQoyLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIHRoZSBkdW1t eSBVVEYtMTYgYW5kIFVURi0zMiBlbmNvZGluZ3MuIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3Ig YGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgd2hpY2ggaXMgZXhwZW5zaXZlLiBUaGlzIGZ1bmN0aW9u YWxpdHkgc2VlbXMgcmFyZWx5IHVzZWQgaW4gcHJhY3RpY2UsIGFuZCBpdCBvbmx5IHdvcmtzIHdo ZW4gc3VjaCBzdHJpbmdzIGhhdmUgYSBCT00sIHdoaWNoIGlzIHZlcnkgcmFyZS4NCjMuIERlcHJl Y2F0ZSBhbmQgdGhlbiByZW1vdmUgb3RoZXIgZHVtbXkgZW5jb2RpbmdzLCBzbyB0aGVyZSBhcmUg bm8gbW9yZSBkdW1teSAiaGFsZi1pbXBsZW1lbnRlZCIgZW5jb2RpbmdzIGFuZCBhbGwgZW5jb2Rp bmdzIGFyZSBBU0NJSS1jb21wYXRpYmxlIGluIHRlcm1zIG9mIGNvZGVwb2ludHMuDQoNCg0KDQot LSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0K