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_HI,SPF_HELO_NONE, T_SCC_BODY_TEXT_LINE,T_SPF_PERMERROR,UNPARSEABLE_RELAY,URIBL_GREY shortcircuit=no autolearn=ham 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 0A6AA1F54E for ; Mon, 8 Aug 2022 10:38:22 +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="fLMRw1Fk"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id C0822121748; Mon, 8 Aug 2022 19:38:18 +0900 (JST) Received: from o1678948x4.outbound-mail.sendgrid.net (o1678948x4.outbound-mail.sendgrid.net [167.89.48.4]) by neon.ruby-lang.org (Postfix) with ESMTPS id 8D7E6121748 for ; Mon, 8 Aug 2022 19:38:16 +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=boC7wZlosaGT9L5uRQnDcBZWzX/mxkKVTGK0H9bTlK0=; b=fLMRw1Fk+krRsQ9TISrr5re/qB7Z9bRnWlXmtIQRI6Og8m25TCflIuqj4N9WuZxZR8sc V+aqDNrfSwl/pK+HBAs9TKSbS7LR1TZIbZ2Qt9h4JNhna9oINQArcm+GI59/2YsXon1jsx 0DsyTVwkRJjtuTgeLwumbQ0EFCte6nXiA= Received: by filterdrecv-67c4c66ffd-ntrnj with SMTP id filterdrecv-67c4c66ffd-ntrnj-1-62F0E794-24 2022-08-08 10:38:12.355882154 +0000 UTC m=+1521127.188313848 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-2 (SG) with ESMTP id XlFtKmftTXO89_y7q4gKLw for ; Mon, 08 Aug 2022 10:38:12.289 +0000 (UTC) Date: Mon, 08 Aug 2022 10:38:12 +0000 (UTC) From: "Eregon (Benoit Daloze)" 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: Eregon 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: 85856 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qWW0eUz4ezeGWfpt9e56w1ItN89r0vSjHlj?= =?us-ascii?Q?tRAKdKkr0IsnOuRVuJ16sC1ews4WKOsHG0cqQQD?= =?us-ascii?Q?zs0C6EPJ5lL6DkYuVEGjUQtsUh1H09ThxmqZtn1?= =?us-ascii?Q?lnGnmcLLAx6siuuSd+f1oMIZw50FlEYUiDhSuW3?= =?us-ascii?Q?QvQZvSY2mbPz1TjGRNdqg=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109448 Subject: [ruby-core:109448] [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" SXNzdWUgIzE4OTQ5IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpkdWVyc3QgKE1hcnRpbiBEw7xyc3QpIHdyb3RlIGluICNub3RlLTE1Og0KPiBZZXMsIGV4 YWN0bHkuIEkgYWxyZWFkeSBzYWlkIHNvIGluIGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lz c3Vlcy8xODk0OSNub3RlLTguDQoNClJpZ2h0LCBJIHdhc24ndCBzdXJlIHRoaXMgd2FzIHdoYXQg eW91IG1lYW50IHRoZXJlLCB0aGFuayB5b3UgZm9yIGNvbmZpcm1pbmcuDQoNCj4gPiBPciBqdXN0 IGFuIGluc3RhbmNlIHZhcmlhYmxlIG9uIHRoZSBTdHJpbmcgdG8gcmVtZW1iZXIgaXRzIG9yaWdp bmFsIGVuY29kaW5nPw0KPiANCj4gVGhlb3JldGljYWxseSB5ZXMsIGJ1dCB0aGF0IHdvdWxkIG1h a2UgZGVhbGluZyB3aXRoIGVuY29kaW5ncyBtb3JlIGNvbXBsZXguDQoNCk9ubHkgZm9yIGV4dHJl bWVseS1yYXJlbHkgdXNlZCBlbmNvZGluZ3MgdGhhdCBkb24ndCBldmVuIGV4aXN0IGluIHRoZSBs aXN0IG9mIDEwMCsgZW5jb2RpbmdzIGluIFJ1YnkgYnkgZGVmYXVsdCwgc28gSSB0aGluayB0aGF0 IGlzIHJlYXNvbmFibGUuDQoNCj4gPiBPciBlYWdlcmx5IGNvbnZlcnRpbmcgdG8gYSBub24tZHVt bXkgZW5jb2RpbmcgYXMgc29vbiBhcyByZWNlaXZpbmcgSVNPLTIwMjItSlAgYnl0ZXMgZnJvbSBh biBleHRlcm5hbCBzb3VyY2U/DQo+IA0KPiBUaGVvcmV0aWNhbGx5IHllcywgYnV0IHRoYXQgd291 bGQgYWdhaW4gY29tcGxpY2F0ZSBjb2RlIHNvbWV3aGVyZS4gV2UgZG9uJ3QganVzdCB3YW50IHRv IG1vdmUgYXJvdW5kIGNvbXBsZXhpdHksIGJlY2F1c2UgaXQgc3RheXMgcm91Z2hseSB0aGUgc2Ft ZSwgYW5kIG1vdmluZyBpdCBhcm91bmQgaXMgd29yayBhbmQgbWF5IGludHJvZHVjZSBhZGRpdGlv bmFsIGVycm9ycy4NCg0KQUZBSUsgd2Uga25vdyB0aGUgZW5jb2Rpbmcgb2YgYW4gZXh0ZXJuYWwg c3RyaW5nIGF0IHRoZSBwb2ludCBpdCBlbnRlcnMgUnVieSAoZS5nLiByZWFkaW5nIGZyb20gYW4g ZXh0ZXJuYWwgc291cmNlKS4NClNvIGFzc29jaWF0aW5nIHRoZSBlbmNvZGluZyAoZS5nLiB3aXRo IGBmb3JjZV9lbmNvZGluZ2ApIG11c3QgYmUgZG9uZSBhdCB0aGF0IHBvaW50Lg0KRWFnZXIgY29u dmVyc2lvbiBjb3VsZCBhbHNvIGJlIGRvbmUgYXQgdGhhdCBwb2ludCB3aXRoIHZlcnkgbGl0dGxl IGNoYW5nZXMsIGFuZCBpdCB3b3VsZCBoYXZlIHRoZSBzaWduaWZpY2FudCBhZHZhbnRhZ2UgdGhh dCBhbGwgU3RyaW5nIG9wZXJhdGlvbnMgYXJlIGFjdHVhbGx5IGltcGxlbWVudGVkL2NvcnJlY3Qg YW5kIG5vdCBzb21lIG9mIHRoZW0gYXJlIGJyb2tlbiAoZm9yIFN0cmluZ3Mgd2l0aCBhIGR1bW15 IGVuY29kaW5nKS4NCkluIGNvZGUsIGl0J2QgbWVhbnMgaW5zdGVhZCBvZiBgaW8uZ2V0cy5mb3Jj ZV9lbmNvZGluZygic29tZS1kdW1teS1lbmNvZGluZyIpYCB3ZSdkIHVzZSBgaW8uZ2V0cy5lbmNv ZGUoIlVURi04IiwgInNvbWUtZHVtbXktZW5jb2RpbmciKWAuDQoNCj4gWW91IGFyZSBsb29raW5n IGZvciBFbmNvZGluZzo6VVRGXzMyIGluIGNvZGUsIGJ1dCB3aGF0J3MgbW9yZSByZWxldmFudCBp cyBVVEYtMzIgYW5kIFVURi0xNiBpbiBkYXRhLiBUaGVzZSBhcmUgb2ZmaWNpYWxseSByZWdpc3Rl cmVkICdjaGFyc2V0JyBsYWJlbHMsIHNlZSBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50 cy9jaGFyc2V0LXJlZy9jaGFyc2V0LXJlZy54aHRtbC4NCg0KRG8geW91IGtub3cgd2hhdCB0aGlz ICJVVEYtMTYiIGNoYXJzZXQgZG9lcyBvciBtZWFuPyBodHRwczovL3d3dy5pYW5hLm9yZy9hc3Np Z25tZW50cy9jaGFyc2V0LXJlZy9VVEYtMTYgZG9lcyBub3Qgc2F5IG11Y2guDQpJcyBpdCBhbHdh eXMgdGhlIG5hdGl2ZS1lbmRpYW4gVVRGLTE2LCBkb2VzIGl0IHVzZSB0aGUgQk9NLCB3aGF0IGlm IHRoZXJlIGlzIG5vIEJPTT8NClRoZSByZWFsaXR5IEFGQUlLIGlzIHRoZXJlIG5vIHN1Y2ggdGhp bmcgYXMgYW4gVVRGLTE2IGVuY29kaW5nIHdpdGhvdXQgYW4gZW5kaWFuLCBpdCdzIGVpdGhlciBV VEYtMTZMRSBvciBVVEYtMTZCRSBhbmQgdGhlIHVzZXIgc2hvdWxkIGtub3cuDQpGb3IgdGhlIHJh cmUgY2FzZXMgd2hlcmUgaXQgY2FuIGJlIGd1ZXNzZWQgZnJvbSB0aGUgQk9NLCB3ZSBjYW4gYWRk IGEgY29udmVuaWVuY2UgbWV0aG9kIHRvIHBpY2sgdGhlIHJpZ2h0IGVuY29kaW5nIGJldHdlZW4g dGhlc2UgdHdvIGJhc2VkIG9uIHRoZSBCT00gKGFzIHByb3Bvc2VkIGluIHRoZSBkZXNjcmlwdGlv bikuDQoNClRoaXMgaXMgd2hhdCBXaWtpcGVkaWEgc2F5cyBvbiB0aGUgbWF0dGVyOiBodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMTYjQnl0ZS1vcmRlcl9lbmNvZGluZ19zY2hlbWVz DQpCYXNpY2FsbHksIHdlIG5lZWQgdGhlIHJlc29sdmUgdGhlIGVuZGlhbiwgYmVmb3JlIHRoYXQg d2UgY2FuJ3QgZG8gYW55dGhpbmcgYW5kICJVVEYtMTYiIGlzIG1lYW5pbmdsZXNzIHdpdGhvdXQg YSBCT00gb3Igc3BlY2lmeWluZyBMRS9CRS4NClJlLXJlYWRpbmcgdGhlIEJPTSBvbiBldmVyeSBz dHJpbmcgb3BlcmF0aW9uIGlzIGEgbmVlZGxlc3Mgb3ZlcmhlYWQsIGl0IHNob3VsZCBiZSBkb25l IG9uY2UsIGFuZCBvbmx5IHBhaWQgaWYgdXNpbmcgVVRGLTE2L1VURi0zMiBzdHJpbmdzIHdpdGgg Qk9NLg0KDQpHaXZpbmcgdGhlIGR1bW15IFVURi0xNi8zMiBlbmNvZGluZyB0byBhIFN0cmluZyBp cyBhbG1vc3QgYWx3YXlzIGEgbWlzdGFrZSwgZm9yIGluc3RhbmNlIHRha2luZyBhIHN1YnN0cmlu ZyBvZiBpdCB3aXRoIGEgbm9uLXplcm8gb2Zmc2V0IHdpbGwgcmVzdWx0IGFzIHRyZWF0aW5nIGl0 IGxpa2Ugc2luZ2xlLWJ5dGUgQklOQVJZIChiZWNhdXNlIHRoZSBCT00gaXMgZ29uZSB0aGVuKSwg d2hpY2ggaXMgY2xlYXJseSBuZXZlciB3aGF0IGFueW9uZSB3YW50cy4NClRoaXMgcmVzb2x1dGlv biBvZiB0aGUgZW5kaWFuIG5lZWRzIHRvIGJlIGhhcHBlbiBiZWZvcmUgdGhlIGVuY29kaW5nIGlz IGFzc2lnbmVkIHRvIHRoZSBTdHJpbmcgdG8gYmUgbWVhbmluZ2Z1bCwgc28gYSBVVEYtKiBzdHJp bmcgYWx3YXlzIGtub3dzIGl0cyBlbmRpYW4uDQoNCj4gRm9yIDEsIHRoZXNlIGZ1bmN0aW9ucyBh cmUgaW50ZXJuYWwsIGFuZCBJIGd1ZXNzIHRoZSBzYW1lIHRoaW5nIGNvdWxkIGJlIGRvbmUgd2l0 aCBzb21lIGRpZmZlcmVudCBmdW5jdGlvbnMsIGJ1dCBhcyBmYXIgYXMgSSB1bmRlcnN0YW5kLCB0 aGUgZnVuY3Rpb25hbGl0eSBpcyBuZWVkZWQgZm9yIFJ1YnkgaXRzZWxmLiBBbmQgSSBkb24ndCBz ZWUgdGhlIHBvaW50IG9mIGEgZml4ZWQgbnVtYmVyIG9mIGVuY29kaW5ncy4gVGhhdCBpdCBpcyBw b3NzaWJsZSB0byBzdXBwb3J0IG5ldyBlbmNvZGluZ3MgbWF5IG5vIGxvbmdlciBiZSBhcyBpbXBv cnRhbnQgYXMgaXQgd2FzIDEwIG9yIDIwIHllYXJzIGFnbywgYnV0IG1heSBjb21lIGluIGhhbmR5 IGFueXdheS4NCg0KWWVzLCB0aGUgZmFjdCB0aGF0IGUuZy4gYGVuY19yZXBsaWNhdGVgIGlzIHVz ZWQgaW50ZXJuYWxseSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKGFuZCBpdCBjb3VsZCBl YXNpbHkgYmUgY2hhbmdlZCB0byBzb21ldGhpbmcgZWxzZSwgdGhlIGVuY29kaW5nIGluZGljZXMg Y291bGQgYmUgZGV0ZXJtaW5lZCBzdGF0aWNhbGx5LCBubyBuZWVkIGZvciBkeW5hbWljYWxseSBn cm93aW5nIHRoZSBsaXN0IG9mIGVuY29kaW5ncywgZXRjKS4NClRoZSBwb2ludCBvZiBhIGZpeGVk IG51bWJlciBvZiBlbmNvZGluZ3M6DQoqIFdlIGtub3cgdGhlIG51bWJlciBvZiBlbmNvZGluZ3Ms IHRoZXkgY2FuIGFsbCBmaXQgaW4gNyBiaXRzLCBhbmQgc28gRU5DT0RJTkdfR0VUIGNhbiBiZSBz aW1wbHkgUkJfRU5DT0RJTkdfR0VUX0lOTElORUQgKG5vIG5lZWQgZm9yIHRoZSBjb21wbGljYXRl ZCBhbmQgc2xvdyBmYWxsYmFjayBsb2dpYykuDQoqIFdlIGNhbiBzdG9yZSBhbGwgZW5jb2Rpbmdz IGluIGEgcmVhZC1vbmx5IGdsb2JhbCBhcnJheSwgdGhlcmUgaXMgbm8gbmVlZCB0byBoYW5kbGUg cmVzaXppbmcgb3IgYW55dGhpbmcNCiogV2UgY2FuIG9wdGltaXplIHRoZSBsb29rdXAgb2YgZW5j b2RpbmdzIGJ5IG5hbWUgYmV0dGVyLCBieSBoYXZpbmcgdGhlIG1hcCByZWFkLW9ubHkgYW5kIHBv dGVudGlhbGx5IHVzZSBwZXJmZWN0LWhhc2hpbmcNCiogTm8gbmVlZCB0byBzeW5jaHJvbml6ZSBj aGFuZ2VzIHRvIHRoZXNlIGFycmF5IGFuZCBtYXAuDQoqIEEgc2lnbmlmaWNhbnQgYW1vdW50IG9m IGNvbXBsZXhpdHkgY2FuIGJlIHJlbW92ZWQgaW4gYWxsIFJ1YnkgaW1wbGVtZW50YXRpb25zIGN1 cnJlbnRseSBpbXBsZW1lbnRpbmcgcmVwbGljYXRlL2V4dHJhIGR1bW15IGVuY29kaW5ncy4NCiog T3RoZXIgcG9pbnRzIG1lbnRpb25lZCBpbiBodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMTg5NDkjU3VtbWFyeQ0KDQo+IFllcy4gVGhhdCdzIGV4YWN0bHkgd2hhdCB0aGV5IGFyZS4g QW5kIEkgaGF2ZSBkaWZmaWN1bHRpZXMgdW5kZXJzdGFuZGluZyB3aHkgdGhlcmUgd291bGQgYmUg YSBwcm9ibGVtIHdpdGggdGhpcy4gU3VwcG9ydGluZyBhIHJlYWwgZW5jb2RpbmcgaXMgcmVhbCB3 b3JrLiBCdXQgc3VwcG9ydGluZyBkdW1teSBlbmNvZGluZ3MgY2FuJ3QgYmUgdGhhdCBtdWNoIHdv cmssIGJlY2F1c2UgdGhlcmUgaXNuJ3QgbXVjaCBmdW5jdGlvbmFsaXR5Lg0KDQpUaG9zZSBkdW1t eSBlbmNvZGluZ3MgZXhwb3NlIGJyb2tlbiBiZWhhdmlvciBmb3IgU3RyaW5nIG9wZXJhdGlvbnMs IHNvIElNSE8gdGhleSBodXJ0IG1vcmUgdGhhbiBoZWxwLg0KQnV0IEkgY2FuIGFscmVhZHkgc2Vl IHNvbWUgcGVvcGxlIGRpc2FncmVlIG9uIHRoYXQsIHNvIGxldCdzIHBvc3Rwb25lIDMuIGZvciBu b3cgYW5kIGxlYXZlIGV4aXN0aW5nL3ByZWRlZmluZWQgZHVtbXkgZW5jb2RpbmcgdW50b3VjaGVk Lg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpGZWF0dXJlICMx ODk0OTogRGVwcmVjYXRlIGFuZCByZW1vdmUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3MN Cmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xODk0OSNjaGFuZ2UtOTg2MDENCg0K KiBBdXRob3I6IEVyZWdvbiAoQmVub2l0IERhbG96ZSkNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9y aXR5OiBOb3JtYWwNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJ1 YnkgaGFzIGEgbG90IG9mIGFjY2lkZW50YWwgY29tcGxleGl0eS4NClNvbWV0aW1lcyBpdCBiZWNv bWVzIGNsZWFyIHNvbWUgZmVhdHVyZXMgYnJpbmcgYSBsb3Qgb2YgY29tcGxleGl0eSBhbmQgeWV0 IHByb3ZpZGUgbGl0dGxlIHZhbHVlIG9yIGFyZSB1c2VkIHZlcnkgcmFyZWx5Lg0KQWxzbyBtb3N0 IFJ1YnkgdXNlcnMgZG8gbm90IGV2ZW4ga25vdyBhYm91dCB0aGVzZSBmZWF0dXJlcy4NClJlcGxp Y2F0ZSBhbmQgZHVtbXkgZW5jb2RpbmdzIHNlZW0gdG8gY2xlYXJseSBmYWxsIGludG8gdGhpcyBj YXRlZ29yeSwgYWxtb3N0IG5vYm9keSB1c2VzIHRoZW0gYnV0IHRoZXkgYWRkIGEgc2lnbmlmaWNh bnQgY29tcGxleGl0eSBhbmQgYWxzbyBhZGQgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSBvdmVy aGVhZC4NCk5vdGFibHksIHRoZSBleGlzdGVuY2Ugb2YgdGhvc2UgbWVhbnMgdGhlIG51bWJlciBv ZiBlbmNvZGluZ3MgaW4gYSBSdWJ5IHJ1bnRpbWUgaXMgYWN0dWFsbHkgdmFyaWFibGUgYW5kIG5v dCBmaXhlZC4NClRoYXQgbWVhbnMgZXh0cmEgc3luY2hyb25pemF0aW9uLCBoYXNodGFibGUgbG9v a3VwcywgaW5kaXJlY3Rpb25zLCBmdW5jdGlvbiBjYWxscywgZXRjLg0KDQojIyBSZXBsaWNhdGUg RW5jb2RpbmdzDQoNClJlcGxpY2F0ZSBlbmNvZGluZ3MgYXJlIGNyZWF0ZWQgdXNpbmcgYEVuY29k aW5nI3JlcGxpY2F0ZShuYW1lKWAuDQpJdCBhbG1vc3Qgc291bmRzIGxpa2UgYW4gYWxpYXMgYnV0 IGluIGZhY3QgaXQgaXMgbW9yZSB0aGFuIHRoYXQgYW5kIGNyZWF0ZXMgYSBuZXcgRW5jb2Rpbmcg b2JqZWN0LCB3aGljaCBjYW4gYmUgdXNlZCBieSBhIFN0cmluZzoNCmBgYHJ1YnkNCmUgPSBFbmNv ZGluZzo6VVNfQVNDSUkucmVwbGljYXRlKCdNWS1VUy1BU0NJSScpDQpzID0gImFiYyIuZm9yY2Vf ZW5jb2RpbmcoZSkNCnAgcy5lbmNvZGluZyAjID0+IGUNCnAgcy5lbmNvZGluZy5uYW1lICMgPT4g J01ZLVVTLUFTQ0lJJw0KYGBgDQoNClRoaXMgc2VlbXMgY29tcGxldGVseSB1c2VsZXNzLg0KVGhl cmUgaXMgYW4gb2J2aW91cyBmaXJzdCBzdGVwIGhlcmUgd2hpY2ggaXMgdG8gY2hhbmdlIGBFbmNv ZGluZyNyZXBsaWNhdGVgIHRvIHJldHVybiB0aGUgcmVjZWl2ZXIsIGFuZCBqdXN0IGluc3RhbGwg YW4gYWxpYXMgZm9yIGl0Lg0KVGhhdCBhdm9pZHMgY3JlYXRpbmcgbW9yZSBlbmNvZGluZyBpbnN0 YW5jZXMgbmVlZGxlc3NseS4NCg0KSSB0aGluayB3ZSBzaG91bGQgYWxzbyBkZXByZWNhdGUgYW5k IHJlbW92ZSB0aGlzIG1ldGhvZCB0aG91Z2gsIGl0IGlzIG5ldmVyIGEgZ29vZCBpZGVhIHRvIGhh dmUgYSBnbG9iYWwgbXV0YWJsZSBtYXAgbGlrZSB0aGlzLg0KSWYgc29tZW9uZSB3YW50IGV4dHJh IGFsaWFzZXMgZm9yIGVuY29kaW5ncywgdGhleSBjYW4gZWFzaWx5IHRvIGRvIHNvIGJ5IGhhdmlu ZyB0aGVpciBvd24gSGFzaDogYHsgYWxpYXMgPT4gZW5jb2RpbmcgfS5mZXRjaChuYW1lKSB7IEVu Y29kaW5nLmZpbmQobmFtZSkgfWAuDQoNCiMjIER1bW15IEVuY29kaW5ncw0KDQpEdW1teSBlbmNv ZGluZ3MgYXJlIG5vdCByZWFsIGVuY29kaW5ncy4gVGhleSBhcmUgYXJ0aWZpY2lhbCBlbmNvZGlu Z3MgZGVzaWduZWQgdG8gbG9vayBsaWtlIGVuY29kaW5ncywgYnV0IGRvbid0IGZ1bmN0aW9uIGFz IGVuY29kaW5ncyBpbiBSdWJ5Lg0KRnJvbSB0aGUgZG9jczoNCmBgYA0KZW5jLmR1bW15PyAtPiB0 cnVlIG9yIGZhbHNlDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJldHVybnMgdHJ1ZSBmb3IgZHVtbXkgZW5j b2RpbmdzLiBBIGR1bW15IGVuY29kaW5nIGlzIGFuIGVuY29kaW5nIGZvcg0Kd2hpY2ggY2hhcmFj dGVyIGhhbmRsaW5nIGlzIG5vdCBwcm9wZXJseSBpbXBsZW1lbnRlZC4gSXQgaXMgdXNlZCBmb3IN CnN0YXRlZnVsIGVuY29kaW5ncy4NCmBgYA0KDQpJIHdvbmRlciB3aHkgd2UgaGF2ZSB0aG9zZSBo YWxmLWltcGxlbWVudGVkIGVuY29kaW5ncyBpbiBjb3JlLCBpdCBzb3VuZHMgdG8gbWUgbGlrZSB1 bmZpbmlzaGVkIHdvcmsgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIGJlZW4gbWVyZ2VkLg0KDQpUaGUg ImNvZGVwb2ludHMiIG9mIGR1bW15IGVuY29kaW5ncyBhcmUganVzdCAiYnl0ZXMiIGFuZCBzbyB0 aGV5IGJlaGF2ZSB0aGUgc2FtZSBhcyBgRW5jb2Rpbmc6OkJJTkFSWWAsIHdpdGggdGhlIGV4Y2Vw dGlvbiBvZiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzLg0KDQojIyMgVVRG LTE2IGFuZCBVVEYtMzIgZHVtbXkgZW5jb2RpbmdzDQoNClRoZXNlIHR3byBhcmUgc3BlY2lhbCBk dW1teSBlbmNvZGluZ3MuDQpXaGF0IHRoZXkgZG8gaXMgdGhleSBzY2FuIHRoZSBmaXJzdCAyIG9y IDQgYnl0ZXMgb2YgdGhlIFN0cmluZywgYW5kIGlmIHRob3NlIGJ5dGVzIGFyZSBhIGJ5dGUtb3Jk ZXIgbWFyayAoQk9NKSwNCnRoZSB0cnVlICJhY3R1YWwiIGVuY29kaW5nIGlzIHJlc29sdmVkIHRv IFVURi0xNkJFL1VURi0xNkxFIG9yIFVURi0zMkJFL1VURi0zMkxFLg0KT3RoZXJ3aXNlLCBgRW5j b2Rpbmc6OkJJTkFSWWAgaXMgcmV0dXJuZWQuDQpUaGlzIGxvZ2ljIGlzIGRvbmUgYnkgYGdldF9h Y3R1YWxfZW5jb2RpbmcoKWAuDQoNCldoYXQgaXMgd2VpcmQgaXMgdGhpcyBjaGVjayBpcyBub3Qg ZG9uZSBvbiBTdHJpbmcgY3JlYXRpb24sIG5vLCBpdCBpcyBkb25lICpldmVyeSB0aW1lKiB0aGUg ZW5jb2Rpbmcgb2YgdGhhdCBTdHJpbmcgaXMgYWNjZXNzZWQgKGFuZCB0aGUgcmVzdWx0IGlzIG5v dCBzdG9yZWQgb24gdGhlIFN0cmluZykuDQpUaGF0IGlzIGEgbmVlZGxlc3Mgb3ZlcmhlYWQgYW5k IHJlYWxseSB1bnJlbGlhYmxlIHNlbWFudGljcy4NCkRvIHdlIHJlYWxseSB3YW50IGEgU3RyaW5n IHdoaWNoIGF1dG9tYWdpY2FsbHkgY2hhbmdlcyBiZXR3ZWVuIFVURi0xNkxFIGFuZCBVVEYtMTZC RSBiYXNlZCBvbiBtdXRhdGluZyBpdHMgYnl0ZXM/IEkgdGhpbmsgbm9ib2R5IHdhbnRzIHRoYXQ6 DQpgYGBydWJ5DQpzID0gIlx4RkZceEZFYVx4MDBiXHgwMGNceDAwZFx4MDAiLmZvcmNlX2VuY29k aW5nKCJVVEYtMTYiKQ0KcCBzICMgPT4gIlx1RkVGRmFiY2QiDQpzLnNldGJ5dGUgMCwgMjU0DQpz LnNldGJ5dGUgMSwgMjU1DQpwIHMgIyA9PiAiXHVGRUZGXHU2MTAwXHU2MjAwXHU2MzAwXHU2NDAw Ig0KYGBgDQoNCkkgdGhpbmsgdGhlIHBhdGggaXMgY2xlYXIsIHdlIHNob3VsZCBkZXByZWNhdGUg YW5kIHRoZW4gcmVtb3ZlIEVuY29kaW5nOjpVVEZfMTYgYW5kIEVuY29kaW5nOjpVVEZfMzIgKGR1 bW15IGVuY29kaW5ncykuDQpBbmQgdGhlbiB3ZSBubyBsb25nZXIgbmVlZCBgZ2V0X2FjdHVhbF9l bmNvZGluZygpYCBhbmQgdGhlIG92ZXJoZWFkIGl0IGFkZHMgdG8gZXZlcnkgU3RyaW5nIG1ldGhv ZC4NCg0KV2UgY291bGQgYWxzbyBrZWVwIHRob3NlIGNvbnN0YW50cyBhbmQgbWFrZSB0aGVtIHJl ZmVyIHRoZSBuYXRpdmUtZW5kaWFuIFVURi0xNi8zMi4NCkJ1dCB0aGF0IGNvdWxkIGNhdXNlIGNv bmZ1c2luZyBlcnJvcnMgYXMgd2Ugd291bGQgY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZW0uDQpX ZSBjb3VsZCBhZGQgYEVuY29kaW5nOjpVVEZfMTZORWAgLyBgRW5jb2Rpbmc6OlVURl8xNl9OQVRJ VkVfRU5ESUFOYCBpZiB0aGF0IGlzIHVzZWZ1bC4NCg0KQW5vdGhlciBwb3NzaWJpbGl0eSB3b3Vs ZCBiZSB0byByZXNvbHZlIHRoZXNlIGVuY29kaW5ncyBvbiBTdHJpbmcgY3JlYXRpb24sIGxpa2U6 DQpgYGANCiJceEZGXHhGRSIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIpLmVuY29kaW5nICMgPT4g VVRGLTE2TEUNClN0cmluZy5uZXcoIlx4RkZceEZFIiwgZW5jb2Rpbmc6IEVuY29kaW5nOjpVVEZf MTYpLmVuY29kaW5nICMgPT4gVVRGLTE2TEUNCiJhYiIuZm9yY2VfZW5jb2RpbmcoIlVURi0xNiIp LmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NClN0cmluZy5uZXcoImFiIiwgZW5jb2Rp bmc6IEVuY29kaW5nOjpVVEZfMTYpLmVuY29kaW5nICMgZXhjZXB0aW9uLCBub3QgYSBCT00NCmBg YA0KSSB0aGluayBpdCBpcyB1bm5lY2Vzc2FyeSB0byBrZWVwIHN1Y2ggY29tcGxleGl0eSB0aG91 Z2guDQpBIGNsYXNzIG1ldGhvZCBvbiBTdHJpbmcgb3IgRW5jb2RpbmcgbGlrZSBlLmcuIGBFbmNv ZGluZy5maW5kX2Zyb21fYm9tKHN0cmluZylgIGlzIHNvIG11Y2ggY2xlYXJlciBhbmQgZWZmaWNp ZW50IChubyBuZWVkIHRvIHNwZWNpYWwgY2FzZSB0aG9zZSBlbmNvZGluZ3MgaW4gU3RyaW5nLm5l dywgI2ZvcmNlX2VuY29kaW5nLCBldGMpLg0KDQpGV0lXIEpSdWJ5IHNlZW1zIHRvIHVzZSBgZ2V0 QWN0dWFsRW5jb2RpbmcoKWAgb25seSBpbiAyIHBsYWNlcyAoc2NhbkZvckNvZGVSYW5nZSwgaW5z cGVjdCksIHdoaWNoIGlzIGFuIGluZGljYXRpb24gdGhvc2UgZHVtbXkgVVRGIGVuY29kaW5ncyBh cmUgYmFyZWx5IHVzZWQgaWYgZXZlci4gU2ltaWxhcmx5LCBUcnVmZmxlUnVieSBvbmx5IGhhcyA0 IHVzYWdlcyBvZiBgR2V0QWN0dWFsRW5jb2RpbmdOb2RlYC4NCg0KIyMjIEV4aXN0aW5nIGR1bW15 IGVuY29kaW5ncw0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5zZWxlY3QoJjpkdW1teT8pIA0KWyM8 RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAgIzxFbmNvZGluZzpVVEYtMzIgKGR1bW15KT4sDQog IzxFbmNvZGluZzpJQk0wMzcgKGR1bW15KT4sICM8RW5jb2Rpbmc6VVRGLTcgKGR1bW15KT4sDQog IzxFbmNvZGluZzpJU08tMjAyMi1KUCAoZHVtbXkpPiwgIzxFbmNvZGluZzpJU08tMjAyMi1KUC0y IChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQLUtEREkgKGR1bW15KT4sDQogIzxFbmNv ZGluZzpDUDUwMjIwIChkdW1teSk+LCAjPEVuY29kaW5nOkNQNTAyMjEgKGR1bW15KT5dDQpgYGAN Cg0KU28gYmVzaWRlcyBVVEYtMTYvVVRGLTMyIGR1bW15LCBpdCdzIG9ubHkgNyBlbmNvZGluZ3Mu DQpEb2VzIGFueW9uZSB1c2Ugb25lIG9mIHRoZXNlIDcgZHVtbXkgZW5jb2RpbmdzPw0KDQpXaGF0 IGlzIGludGVyZXN0aW5nIHRvIG5vdGUsIGlzIHRoYXQgdGhlc2UgZW5jb2RpbmdzIGFyZSBleGFj dGx5IHRoZSBvbmVzIHRoYXQgYXJlIGFsc28gbm90IEFTQ0lJLWNvbXBhdGlibGUsIHdpdGggdGhl IGV4Y2VwdGlvbiBvZiBVVEYtMTZCRS9VVEYtMTZMRS9VVEYtMzJCRS9VVEYtMzJMRSAobm9uLWR1 bW15KS4NCkFzIGEgbm90ZSwgVVRGLXsxNiwzMn17QkUsTEV9IGFyZSBBU0NJSS1jb21wYXRpYmxl IGluIGNvZGVwb2ludHMgYnV0IG5vdCBpbiBieXRlcywgYW5kIFJ1YnkgdXNlcyB0aGUgYnl0ZXMg ZGVmaW5pdGlvbiBvZiBBU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUgaXMgcG90ZW50aWFsIHRvIHNp bXBsaWZ5IGVuY29kaW5nIGNvbXBhdGliaWxpdHkgcnVsZXMgYW5kIGVuY29kaW5nIGNvbXBhdGli aWxpdHkgY2hlY2tzIGJhc2VkIG9uIHRoYXQuDQpTbyB3aGF0IHRoaXMgbWVhbnMgaXMgaWYgd2Ug cmVtb3ZlZCBkdW1teSBlbmNvZGluZ3MsIGFsbCBlbmNvZGluZ3MgZXhjZXB0IFVURi17MTYsMzJ9 e0JFLExFfSB3b3VsZCBiZSBBU0NJSS1jb21wYXRpYmxlLCB3aGljaCB3b3VsZCBsZWFkIHRvIHNp Z25pZmljYW50IHNpbXBsaWZpY2F0aW9ucyBmb3IgbWFueSBzdHJpbmcgb3BlcmF0aW9ucyB3aGlj aCBjdXJyZW50bHkgbmVlZCB0byBoYW5kbGUgZHVtbXkgZW5jb2RpbmdzIHNwZWNpYWxseS4NClVu aWNvZGUgZW5jb2RpbmdzIGxpa2UgVVRGLXsxNiwzMn17QkUsTEV9IGFscmVhZHkgaGF2ZSBzcGVj aWFsIGJlaGF2aW9yIGZvciBzb21lIFJ1YnkgbWV0aG9kcywgc28gdGhvc2UgYXJlIGFscmVhZHkg aGFuZGxlZCBzcGVjaWFsbHkgaW4gc29tZSBwbGFjZXMgKHRoZXkgYXJlIHRoZSBvbmx5IGVuY29k aW5ncyB3aXRoIG1pbkxlbmd0aCA+IDEpLg0KDQpgYGANCj4gRW5jb2RpbmcubGlzdC5yZWplY3Qo Jjphc2NpaV9jb21wYXRpYmxlPykNClsjPEVuY29kaW5nOlVURi0xNkJFPiwgIzxFbmNvZGluZzpV VEYtMTZMRT4sDQogIzxFbmNvZGluZzpVVEYtMzJCRT4sICM8RW5jb2Rpbmc6VVRGLTMyTEU+LA0K ICM8RW5jb2Rpbmc6VVRGLTE2IChkdW1teSk+LCAjPEVuY29kaW5nOlVURi0zMiAoZHVtbXkpPiwN CiAjPEVuY29kaW5nOklCTTAzNyAoZHVtbXkpPiwgIzxFbmNvZGluZzpVVEYtNyAoZHVtbXkpPiwN CiAjPEVuY29kaW5nOklTTy0yMDIyLUpQIChkdW1teSk+LCAjPEVuY29kaW5nOklTTy0yMDIyLUpQ LTIgKGR1bW15KT4sICM8RW5jb2Rpbmc6SVNPLTIwMjItSlAtS0RESSAoZHVtbXkpPiwNCiAjPEVu Y29kaW5nOkNQNTAyMjAgKGR1bW15KT4sICM8RW5jb2Rpbmc6Q1A1MDIyMSAoZHVtbXkpPl0NCmBg YA0KDQpXaGF0IGNhbiB3ZSBkbyB3aXRoIHN1Y2ggYSBkdW1teSBub24tQVNDSUktY29tcGF0aWJs ZSBlbmNvZGluZz8NCkFsbW9zdCBub3RoaW5nIHVzZWZ1bDoNCmBgYHJ1YnkNCnMgPSAiYWJjIi5l bmNvZGUoIklCTTAzNyIpDQo9PiAiXHg4MVx4ODJceDgzIg0KPiBzLmJ5dGVzDQo9PiBbMTI5LCAx MzAsIDEzMV0NCj4gcy5jb2RlcG9pbnRzDQo9PiBbMTI5LCAxMzAsIDEzMV0NCj4gcyA9PSAiYWJj Ig0KPT4gZmFsc2UNCj4gIsOpdMOpIi5lbmNvZGUoIklCTTAzNyIpDQo9PiAiXHg1MVx4QTNceDUx Ig0KYGBgDQoNClNvIGFib3V0IHRoZSBvbmx5IHRoaW5nIHRoYXQgd29ya3Mgd2l0aCB0aGVtIGlz IGBTdHJpbmcjZW5jb2RlYC4NCg0KSSB0aGluayB3ZSBjb3VsZCBwcmVzZXJ2ZSB0aGF0IGZ1bmN0 aW9uYWxpdHksIGlmIGFjdHVhbGx5IHVzZWQgKGRvZXMgYW55b25lIHVzZSBvbmUgb2YgdGhlc2Ug NyBkdW1teSBlbmNvZGluZ3M/KSwgdGhyb3VnaDoNCmBgYHJ1YnkNCj4gIsOpdMOpIi5lbmNvZGUo IklCTTAzNyIpDQo9PiAiXHg1MVx4QTNceDUxIiAoLmVuY29kaW5nID09IEJJTkFSWSkNCj4gIlx4 NTFceEEzXHg1MSIuZW5jb2RlKCJVVEYtOCIsICJJQk0wMzciKSAjIGVuY29kZSBmcm9tIElCTTAz NyB0byBVVEYtOA0KPT4gIsOpdMOpIiAoLmVuY29kaW5nID09IFVURi04KQ0KYGBgDQoNClRoYXQg d2F5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRob3NlIHRvIGJlIEVuY29kaW5nIGluc3RhbmNlcywg d2Ugd291bGQgb25seSBuZWVkIHRoZSBjb252ZXJzaW9uIHRhYmxlcy4NCg0KSXQgaXMgZXZlbiBi ZXR0ZXIgaWYgd2UgY2FuIHJlbW92ZSB0aGVtLCBzbyB0aGUgbm90aW9uIG9mICJkdW1teSBlbmNv ZGluZ3MiIGNhbiBkaXNhcHBlYXIgY29tcGxldGVseSBhbmQgbm9ib2R5IG5lZWRzIHRvIHVuZGVy c3RhbmQgb3IgaW1wbGVtZW50IHRoZW0uDQoNCiMjIyByYl9kZWZpbmVfZHVtbXlfZW5jb2Rpbmco bmFtZSkNCg0KVGhlIEMtQVBJIGhhcyBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKGNvbnN0IGNo YXIgKm5hbWUpYC4NClRoaXMgY3JlYXRlcyBhIG5ldyBFbmNvZGluZyBpbnN0YW5jZSB3aXRoIGBk dW1teT89dHJ1ZWAsIGFuZCBpdCBpcyBhbHNvIG5vbi1BU0NJSS1jb21wYXRpYmxlLg0KVGhlcmUg c2VlbXMgdG8gYmUgbm8gcHVycG9zZSB0byB0aGlzIGJlc2lkZXMgc3RvcmluZyB0aGUgbWV0YWRh dGEgb2YgYW4gZW5jb2Rpbmcgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gUnVieS4NClRoaXMgc2Vl bXMgYSByZWFsbHkgZXhwZW5zaXZlL2NvbXBsZXggd2F5IHRvIGhhbmRsZSB0aGF0IGZyb20gdGhl IFZNIHBvaW50IG9mIHZpZXcgKGJlY2F1c2UgaXQgZHluYW1pY2FsbHkgY3JlYXRlcyBhbiBFbmNv ZGluZyBhbmQgYWRkIGl0IHRvIGxpc3RzL21hcHMvZXRjKS4NCkEgc2ltcGxlIHJlcGxhY2VtZW50 IHdvdWxkIGJlIHRvIG1hcmsgdGhlIFN0cmluZyBhcyBCSU5BUlkgYW5kIHNhdmUgdGhlIGVuY29k aW5nIG5hbWUgYXMgYW4gaW5zdGFuY2UgdmFyaWFibGUgb2YgdGhhdCBTdHJpbmcuDQpTaW5jZSBh bnl3YXkgUnVieSBjYW4ndCB1bmRlcnN0YW5kIGFueXRoaW5nIGFib3V0IHRoYXQgU3RyaW5nLCBp dCdzIGp1c3QgcmF3IGJ5dGVzIHRvIFJ1YnkncyBleWVzLg0KDQojIyBTdW1tYXJ5DQoNCkkgc3Vn Z2VzdCB3ZSBkZXByZWNhdGUgcmVwbGljYXRlIGFuZCBkdW1teSBlbmNvZGluZ3MgaW4gUnVieSAz LjIuDQpBbmQgdGhlbiB3ZSByZW1vdmUgdGhlbSBpbiB0aGUgbmV4dCB2ZXJzaW9uLg0KDQpUaGlz IHdpbGwgc2lnbmlmaWNhbnRseSBzaW1wbGlmeSBzdHJpbmctcmVsYXRlZCBtZXRob2RzLCBhbmQg dGhlIGJlaGF2aW9yIGV4cG9zZWQgdG8gUnVieSB1c2Vycy4NCg0KSXQgd2lsbCBhbHNvIHNpZ25p ZmljYW50bHkgc3BlZWR1cCBlbmNvZGluZyBsb29rdXAgaW4gQ1J1YnkgKGFuZCBvdGhlciBSdWJ5 IGltcGxlbWVudGF0aW9ucykuDQpXaXRoIGEgZml4ZWQgbnVtYmVyIG9mIGVuY29kaW5ncyB3ZSBj YW4gZW5zdXJlIGFsbCBlbmNvZGluZyBpbmRpY2VzIGZpdCBpbiA3IGJpdHMsIGFuZCBgRU5DT0RJ TkdfR0VUYCBjYW4gYmUgc2ltcGx5IGBSQl9FTkNPRElOR19HRVRfSU5MSU5FRGAuDQpgZ2V0X2Fj dHVhbF9lbmNvZGluZygpYCB3aWxsIGJlIGdvbmUgYW5kIGl0cyBvdmVyaGVhZCBhcyB3ZWxsLg0K YHJiX2VuY19mcm9tX2luZGV4KClgIHdvdWxkIGJlIGp1c3QgYHJldHVybiBnbG9iYWxfZW5jX3Rh YmxlLT5saXN0W2luZGV4XS5lbmM7YCwgaW5zdGVhZCBvZiB0aGUgZXhwZW5zaXZlIGJlaGF2aW9y IGN1cnJlbnRseSB3aXRoIGBHTE9CQUxfRU5DX1RBQkxFX0VWQUxgIHdoaWNoIHRha2VzIGEgbG9j ayBhbmQgbW9yZSB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBSYWN0b3JzLg0KTWFueSBjaGVja3Mg aW4gdGhlc2UgbWV0aG9kcyB3b3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuDQpZZXQgYW5vdGhlciBp bXByb3ZlbWVudCB3b3VsZCBiZSB0byBsb2FkIGFsbCBlbmNvZGluZ3MgZWFnZXJseSwgdGhhdCBp cyBzbWFsbCBhbmQgZmFzdCBpbiBteSBleHBlcmllbmNlLCB3aGF0IGlzIHNsb3cgYW5kIGJpZyBp cyB0aGUgY29udmVyc2lvbiB0YWJsZXMsIHRoYXQnZCBzaW1wbGlmeSBgbXVzdF9lbmNpbmRleCgp YCBmdXJ0aGVyLg0KVGhlc2UgY2hhbmdlcyB3b3VsZCBhZmZlY3QgbW9zdCBTdHJpbmcgbWV0aG9k cywgd2hpY2ggdXNlDQpgYGANClNUUl9FTkNfR0VULT5nZXRfZW5jb2Rpbmcgd2hpY2ggZG9lczoN CiAgZ2V0X2FjdHVhbF9lbmNvZGluZy0+cmJfZW5jX2Zyb21faW5kZXggYW5kIHBvc3NpYmx5IC0+ ZW5jX2Zyb21faW5kZXgNCiAgRU5DT0RJTkdfR0VULT5SQl9FTkNPRElOR19HRVRfSU5MSU5FRCBh bmQgcG9zc2libHkgLT5yYl9lbmNfZ2V0X2luZGV4LT5lbmNfZ2V0X2luZGV4X3N0ci0+cmJfYXR0 cl9nZXQNCmBgYA0KU29tZSBvZiB0aGVzZSBkZXRhaWxzIGFyZSBtZW50aW9uZWQgaW4gaHR0cHM6 Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzYwOTUjZGlzY3Vzc2lvbl9yOTE1MTQ5NzA4Lg0K VGhlIG92ZXJoZWFkIGlzIHNvIGxhcmdlIHRoYXQgaXQgaXMgd29ydGggaGFuZGxpbmcgc29tZSBo YXJkY29kZWQgZW5jb2RpbmcgaW5kaWNlcyBkaXJlY3RseSBpbiBTdHJpbmcgbWV0aG9kcy4NClRo aXMgZmVlbHMgd3JvbmcsIGdldHRpbmcgdGhlIGVuY29kaW5nIGZyb20gYSBTdHJpbmcgc2hvdWxk IGJlIHNpbXBsZSwgc3RyYWlnaHRmb3J3YXJkIGFuZCBmYXN0Lg0KDQpGdXJ0aGVyIG9wdGltaXph dGlvbnMgd2lsbCBiZSB1bmxvY2tlZCBhcyB0aGUgZW5jb2RpbmcgbGlzdCBiZWNvbWVzIGZpeGVk IGFuZCBpbW11dGFibGUuDQpGb3IgZXhhbXBsZSwgdGhlIG5hbWUtdG8tRW5jb2RpbmcgbWFwIGlz IHRoZW4gaW1tdXRhYmxlIGFuZCBjb3VsZCB1c2UgcGVyZmVjdCBoYXNoaW5nLg0KSW5saW5lIGNh Y2hpbmcgdGhvc2UgbG9va3VwcyBhbHNvIGJlY29tZXMgZWFzaWVyIGFzIHRoZSB0aGUgbWFwIGNh bm5vdCBjaGFuZ2UuDQpBbHNvIHRoYXQgbWFwIHdvdWxkIG5vIGxvbmdlciBuZWVkIHN5bmNocm9u aXphdGlvbiwgZXRjLg0KDQojIyBUbyBEZWNpZGUNCg0KRWFjaCBpdGVtIGlzIGluZGVwZW5kZW50 LiBJIHRoaW5rIDEgJiAyIGFyZSB2ZXJ5IGltcG9ydGFudCwgMyBsZXNzIGJ1dCB3b3VsZCBiZSBu aWNlLg0KDQoxLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIGBFbmNvZGluZyNyZXBsaWNhdGVg IGFuZCBgcmJfZGVmaW5lX2R1bW15X2VuY29kaW5nKClgLiBXaXRoIHRoYXQgdGhlcmUgaXMgYSBm aXhlZCBudW1iZXIgb2YgZW5jb2RpbmdzLCBhIGxvdCBvZiBzaW1wbGlmaWNhdGlvbnMgYW5kIG1h bnkgb3B0aW1pemF0aW9ucyBiZWNvbWUgYXZhaWxhYmxlLiBUaGV5IGFyZSB1c2VkIHJlc3BlY3Rp dmVseSBpbiBvbmx5IDEgZ2VtIGFuZCA1IGdlbXMsIHNlZSBodHRwczovL2J1Z3MucnVieS1sYW5n Lm9yZy9pc3N1ZXMvMTg5NDkjbm90ZS00DQoyLiBEZXByZWNhdGUgYW5kIHRoZW4gcmVtb3ZlIHRo ZSBkdW1teSBVVEYtMTYgYW5kIFVURi0zMiBlbmNvZGluZ3MuIFRoaXMgcmVtb3ZlcyB0aGUgbmVl ZCBmb3IgYGdldF9hY3R1YWxfZW5jb2RpbmcoKWAgd2hpY2ggaXMgZXhwZW5zaXZlLiBUaGlzIGZ1 bmN0aW9uYWxpdHkgc2VlbXMgcmFyZWx5IHVzZWQgaW4gcHJhY3RpY2UsIGFuZCBpdCBvbmx5IHdv cmtzIHdoZW4gc3VjaCBzdHJpbmdzIGhhdmUgYSBCT00sIHdoaWNoIGlzIHZlcnkgcmFyZS4NCjMu IERlcHJlY2F0ZSBhbmQgdGhlbiByZW1vdmUgb3RoZXIgZHVtbXkgZW5jb2RpbmdzLCBzbyB0aGVy ZSBhcmUgbm8gbW9yZSBkdW1teSAiaGFsZi1pbXBsZW1lbnRlZCIgZW5jb2RpbmdzIGFuZCBhbGwg ZW5jb2RpbmdzIGFyZSBBU0NJSS1jb21wYXRpYmxlIGluIHRlcm1zIG9mIGNvZGVwb2ludHMuDQoN Cg0KDQotLSANCmh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnLw0K