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_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 4F5AD1F506 for ; Thu, 15 Sep 2022 19:23:45 +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="IoJWIpZb"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id 4F248120AAB; Fri, 16 Sep 2022 04:23:36 +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 9CE68120AB6 for ; Fri, 16 Sep 2022 04:23:25 +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=RDlS4QkEZtVemi7GcxTcWqx/kzsEbpmKUEf2UcKoUFc=; b=IoJWIpZbWFCGJZi8W3jT1mN5AZEHtFP8lGwy7NtiuyYAU/1YgPbDJtLtVzyWH3Kx79vI EZkYxutdwRP/Ol+izW5tdk6SQe4NsJVhCLLFavHFF7hcM/Pt6YaskbAc6LnAT93ledxQiK PoIwN6ZWVVXVtmxcZadJOcDtf2NK8p0qA= Received: by filterdrecv-c8bd8574f-pd8kl with SMTP id filterdrecv-c8bd8574f-pd8kl-1-63237BA6-11 2022-09-15 19:23:18.785613189 +0000 UTC m=+252063.016603902 Received: from herokuapp.com (unknown) by geopod-ismtpd-4-2 (SG) with ESMTP id 8Dy8ZpboTeORKPhlwSn61A for ; Thu, 15 Sep 2022 19:23:18.767 +0000 (UTC) Date: Thu, 15 Sep 2022 19:23:18 +0000 (UTC) From: "jemmai (Jemma Issroff)" Message-ID: References: Mime-Version: 1.0 X-Redmine-Project: ruby-master X-Redmine-Issue-Tracker: Feature X-Redmine-Issue-Id: 18776 X-Redmine-Issue-Author: jemmai X-Redmine-Sender: jemmai 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: 86345 X-SG-EID: =?us-ascii?Q?F18P+2W1KnHe6ISASa+61nUK3i7mN03gxrUl5OPiI2ZTtcWzec3HAg3iwLkXVU?= =?us-ascii?Q?w9NVOsENbVlMKtc9X75yTo7Os1jg2OTxwg8Q8cw?= =?us-ascii?Q?8BUJUt+8RDaUvg8fL=2FDrq0vkwPQCxTvjFgNF7Gx?= =?us-ascii?Q?a+V10QqPrquBWvmE54A109yvfqWa8BhLuQnIHrr?= =?us-ascii?Q?zEE2D76sydi5s6+k+elMgeGVZa3U0Oy13nI1N3l?= =?us-ascii?Q?c6dNfYlHewHPpwLP+YqiSxJm=2FHsCqU2jiKOiX1i?= =?us-ascii?Q?3G1sxjxuNWca0NbeqCnBQ=3D=3D?= To: ruby-core@ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 109904 Subject: [ruby-core:109904] [Ruby master Feature#18776] Object Shapes 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" SXNzdWUgIzE4Nzc2IGhhcyBiZWVuIHVwZGF0ZWQgYnkgamVtbWFpIChKZW1tYSBJc3Nyb2ZmKS4K CgojIFN1bW1hcnkKClRoZSBpbXBsZW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHRvIHNvbHZl IHNvbWUgcGVyZm9ybWFuY2UgcHJvYmxlbXMgYW5kIHNpbXBsaWZ5IGJvdGggc291cmNlIGNvZGUg YW5kIGdlbmVyYXRlZCBjb2RlLgoKVGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgYnJhbmNoIGFnYWlu c3QgbXVsdGlwbGUgYmVuY2htYXJrcywgaW5jbHVkaW5nIG1pY3JvYmVuY2htYXJrcywgUmFpbHNC ZW5jaCBhbmQgWUpJVCBCZW5jaCBzaG93IHRoYXQgdGhlIHBlcmZvcm1hbmNlIG9mIE9iamVjdCBT aGFwZXMgaXMgZXF1aXZhbGVudCB0bywgaWYgbm90IGJldHRlciB0aGFuLCB0aGUgZXhpc3Rpbmcg aXZhciBpbXBsZW1lbnRhdGlvbi4KCldlIGhhdmUgYWxzbyBpbXByb3ZlZCB0aGUgbWVtb3J5IG92 ZXJoZWFkIGFuZCBtYWRlIGl0IGhhbGYgb2Ygd2hhdCBpdCB3YXMgcHJldmlvdXNseS4KCk92ZXJh bGwsIGNvZGUgY29tcGxleGl0eSBoYXMgYmVlbiBkZWNyZWFzZWQsIG1lbW9yeSBvdmVyaGVhZCBp cyBzbWFsbCBhbmQgcGVyZm9ybWFuY2UgaXMgYmV0dGVyIG9yIG9uIHBhciB3aXRoIGBtYXN0ZXJg LiBXZSB0aGluayB0aGlzIGlzIGEgZ29vZCBzdGF0ZSBmb3IgdGhpcyBmZWF0dXJlIHRvIGJlIG1l cmdlZC4gV2Ugd291bGQgbGlrZSB0byBnZXQgZmVlZGJhY2sgZnJvbSBSdWJ5IGNvbW1pdHRlcnMg b24gW3RoaXMgUFJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82Mzg2KSBvciBp biB0aGlzIGlzc3VlIGZvciB0aGF0IHJlYXNvbi4KCiMgRGV0YWlscwoKU2luY2Ugb3VyIHByZXZp b3VzIHVwZGF0ZSwgd2UgaGF2ZSBtYWRlIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKCiogVGhlIHNo YXBlIElEIGlzIG5vdyAzMiBiaXRzIG9uIDY0IGJpdCBtYWNoaW5lcyB3aGVuIGRlYnVnZ2luZyBp cyBkaXNhYmxlZC4gVGhpcyBnaXZlcyB1cyBzaWduaWZpY2FudGx5IG1vcmUgc2hhcGVzIGluIG1v c3QgY2FzZXMuIFdoZW4gZGVidWdnaW5nIGlzIGVuYWJsZWQsIFJhY3RvciBjaGVjayBtb2RlIGlz IGFsc28gZW5hYmxlZC4gIFJhY3RvciBjaGVjayBtb2RlIFtzdG9yZXMgdGhlIFJhY3RvciBJRCBp biB0aGUgZmxhZ3MgYml0c10oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9ibG9iL2FiYjFh MjczMzE5ZTFjYWM4NzM2MjUzNDIxYTgyMWQwMTRmMzJlZDcvcmFjdG9yX2NvcmUuaCNMMjkwLUwz MDQpLCBhbmQgc2hhcGVzIG5lZWRzIHRvIHVzZSB0aGF0IHNwYWNlIHRvby4gR2l2ZW4gdGhpcyBj b25zdHJhaW50LCB3aGVuIGRlYnVnIG1vZGUgaXMgZW5hYmxlZCBTaGFwZXMgb25seSBjb25zdW1l cyAxNiBiaXRzIGxlYXZpbmcgdGhlIG90aGVyIDE2IGJpdHMgZm9yIFJhY3RvciBJRHMuIAoqIFRo ZSBzaGFwZSBJRCBpcyBub3cgc3RvcmVkIGluIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSBmbGFn cyBmaWVsZC4gVGhpcyBlbnN1cmVzIGEgY29uc2lzdGVudCBsb2NhdGlvbiBmb3IgZmluZGluZyB0 aGUgc2hhcGUgaWQuICBBbGwgb2JqZWN0cyBhbGxvY2F0ZWQgZnJvbSB0aGUgaGVhcCB3aWxsIGhh dmUgdGhlaXIgc2hhcGUgaWQgc3RvcmVkIGluIHRoZSB0b3AgMzIgYml0cy4gVGhpcyBzaW1wbGlm aWVzIGxvb2tpbmcgdXAgdGhlIHNoYXBlIGlkIGZvciBhIGdpdmVuIG9iamVjdCwgd2hpY2ggcmVk dWNlcyBjb2RlIGNvbXBsZXhpdHkuICBJdCBhbHNvIHNpbXBsaWZpZXMgdGhlIG1hY2hpbmUgY29k ZSBlbWl0dGVkIGZyb20gdGhlIEpJVC4KKiBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IG1tYXAs IHdlIG5vdyB1c2UgbW1hcCB0byBhbGxvY2F0ZSB0aGUgc2hhcGUgbGlzdC4gIFNpbmNlIG1tYXAg bGF6aWx5IG1hcHMgdG8gcGh5c2ljYWwgcGFnZXMsIHRoaXMgYWxsb3dzIHVzIHRvIGxhemlseSBh bGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHNoYXBlIGxpc3QuCgojIENQVSBwZXJmb3JtYW5jZQoKVGhl c2UgYXJlIG91ciB1cGRhdGVkIHBlcmZvbWFuY2UgcmVzdWx0czoKCiMjIE1pY3JvYmVuY2htYXJr cwoKV2UgcmFuIG1pY3JvYmVuY2htYXJrcyBjb21wYXJpbmcgbWFzdGVyIHRvIG9iamVjdCBzaGFw ZXMgYW5kIGdvdCB0aGUgZm9sbG93aW5nIHJlc3VsdHM6CgpgYGAKJCAgbWFrZSBiZW5jaG1hcmsg SVRFTT12bV9pdmFyCi4uLgpjb21wYXJlLXJ1Ynk6IHJ1YnkgMy4yLjBkZXYgKDIwMjItMDktMTNU MDY6NDQ6MjlaIG1hc3RlciAzMTZiNDRkZjA5KSBbYXJtNjQtZGFyd2luMjFdCmJ1aWx0LXJ1Ynk6 IHJ1YnkgMy4yLjBkZXYgKDIwMjItMDktMTNUMTE6MjU6NTlaIG9iamVjdC1zaGFwZXMtcHJvdC4u IGVmNDIzNTRjMzMpIFthcm02NC1kYXJ3aW4yMV0KIyBJdGVyYXRpb24gcGVyIHNlY29uZCAoaS9z KQoKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxjb21wYXJlLXJ1Ynl8YnVpbHQtcnVieXwK fDotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLTp8LS0tLS0tLS0tOnwKfHZt X2l2YXIgICAgICAgICAgICAgICAgICAgIHwgICAgMTAwLjAyME18ICAxMDguNzA1TXwKfCAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAxLjA5eHwKfHZtX2l2YXJf ZW1iZWRkZWRfb2JqX2luaXQgIHwgICAgIDMzLjU4NE18ICAgMzMuNDE1TXwKfCAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgICAgMS4wMXh8ICAgICAgICAgLXwKfHZtX2l2YXJfZXh0ZW5k ZWRfb2JqX2luaXQgIHwgICAgIDI2LjA3M018ICAgMjYuNjM1TXwKfCAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAxLjAyeHwKfHZtX2l2YXJfZ2VuZXJpY19nZXQg ICAgICAgIHwgICAgIDE2LjU5OU18ICAgMTguMTAzTXwKfCAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgICAgICAgIC18ICAgICAxLjA5eHwKfHZtX2l2YXJfZ2VuZXJpY19zZXQgICAgICAg IHwgICAgIDEyLjUwNU18ICAgMTguNjE2TXwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgICAgIC18ICAgICAxLjQ5eHwKfHZtX2l2YXJfZ2V0ICAgICAgICAgICAgICAgIHwgICAg ICAgOC41MzN8ICAgICA4LjU2NnwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgIC18ICAgICAxLjAweHwKfHZtX2l2YXJfZ2V0X3VuaW5pdGlhbGl6ZWQgIHwgICAgIDgxLjEx N018ICAgNzkuMjk0TXwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgMS4wMnh8 ICAgICAgICAgLXwKfHZtX2l2YXJfbGF6eV9zZXQgICAgICAgICAgIHwgICAgICAgMS45MjF8ICAg ICAxLjk0OXwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAx LjAxeHwKfHZtX2l2YXJfb2ZfY2xhc3MgICAgICAgICAgIHwgICAgICA4LjM1OU18ICAgIDkuMDk0 TXwKfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAxLjA5eHwK fHZtX2l2YXJfb2ZfY2xhc3Nfc2V0ICAgICAgIHwgICAgIDEwLjY3OE18ICAgMTAuMzMxTXwKfCAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgMS4wM3h8ICAgICAgICAgLXwKfHZtX2l2 YXJfc2V0ICAgICAgICAgICAgICAgIHwgICAgIDkwLjM5OE18ICAgOTIuMDM0TXwKfCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAxLjAyeHwKfHZtX2l2YXJfc2V0 X29uX2luc3RhbmNlICAgIHwgICAgICAxNC4yNjl8ICAgIDE0LjMwN3wKfCAgICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICAgICAgICAgIC18ICAgICAxLjAweHwKfHZtX2l2YXJfaW5pdF9zdWJj bGFzcyAgICAgIHwgICAgICA2LjA0OE18ICAgMTMuMDI5TXwKfCAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgICAgICAgIC18ICAgICAyLjE1eHwKYGBgCgpDbGFzcyBpbnN0YW5jZSB2YXJp YWJsZXMgaGF2ZSBuZXZlciBiZW5lZml0ZWQgZnJvbSBpbmxpbmUgY2FjaGluZywgc28gYWx3YXlz IHRha2UgdGhlIG5vbi1jYWNoZWQgc2xvdyBwYXRoLiBPYmplY3Qgc2hhcGVzIG1hZGUgdGhlIHNs b3cgcGF0aCBzbG93ZXIsIHNvIHRoZSBgdm1faXZhcl9vZl9jbGFzc19zZXRgIGJlbmNobWFyayBz bG93ZG93biBpcyBleHBlY3RlZC4KCkFzIGZvbGxvdyB1cCB0byBvYmplY3Qgc2hhcGVzLCBAamhh d3Rob3JuIGlzIHBsYW5uaW5nIHRvIHJlLWltcGxlbWVudCBpbnN0YW5jZSB2YXJpYWJsZXMgb24g Y2xhc3NlcyB0byB1c2UgYXJyYXlzIGluc3RlYWQgb2YgYHN0X3RhYmxlYHMuIFdpdGggaGlzIGNo YW5nZSwgY2xhc3MgaW5zdGFuY2UgdmFyaWFibGVzIHdpbGwgYmUgYWJsZSB0byByZWFsaXplIHRo ZSBiZW5lZml0cyBvZiBvYmplY3Qgc2hhcGVzIGJ5IHRha2luZyB0aGUgY2FjaGVkLCBmYXN0IHBh dGguCgojIyBSYWlsc2JlbmNoCgpXZSByYW4gUmFpbHNiZW5jaCAxMCB0aW1lcyBvbiBtYXN0ZXIg YW5kIHNoYXBlcywgYW5kIGdvdCB0aGUgZm9sbG93aW5nIHJlc3VsdHM6Cgo8aW1nIGhlaWdodD0i NzAwcHgiIHNyYz0iaHR0cHM6Ly9pLmltZ3VyLmNvbS9CTXZNTDFRLnBuZyIgYWx0PSJSYWlsc0Jl bmNoIEJveCBQbG90IiAvPgoKTWFzdGVyOgoKYGBgCnJ1YnkgMy4yLjBkZXYgKDIwMjItMDktMTNU MDY6NDQ6MjlaIG1hc3RlciAzMTZiNDRkZjA5KSBbYXJtNjQtZGFyd2luMjFdClJlcXVlc3QgcGVy IHNlY29uZDogMTg5OC4zIFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBlciBzZWNvbmQ6IDE4OTAuOCBb Iy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxODk0LjcgWyMvc10gKG1lYW4pClJlcXVl c3QgcGVyIHNlY29uZDogMTg4NS4wIFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBlciBzZWNvbmQ6IDE4 NjguMiBbIy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxODg0LjIgWyMvc10gKG1lYW4p ClJlcXVlc3QgcGVyIHNlY29uZDogMTg2MC42IFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBlciBzZWNv bmQ6IDE5MDIuMSBbIy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxOTI3LjEgWyMvc10g KG1lYW4pClJlcXVlc3QgcGVyIHNlY29uZDogMTg5NC44IFsjL3NdIChtZWFuKQpgYGAKClRoaXMg YXZlcmFnZXMgdG8gYDE4OTAuNThgIHJlcXVlc3RzIHBlciBzZWNvbmQKCgpTaGFwZXM6CgpgYGAK cnVieSAzLjIuMGRldiAoMjAyMi0wOS0xM1QxMToyNTo1OVogb2JqZWN0LXNoYXBlcy1wcm90Li4g ZWY0MjM1NGMzMykgW2FybTY0LWRhcndpbjIxXQpSZXF1ZXN0IHBlciBzZWNvbmQ6IDE5MDEuOSBb Iy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxOTAwLjEgWyMvc10gKG1lYW4pClJlcXVl c3QgcGVyIHNlY29uZDogMTkwMy4xIFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBlciBzZWNvbmQ6IDE5 MDIuMiBbIy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxOTA1LjIgWyMvc10gKG1lYW4p ClJlcXVlc3QgcGVyIHNlY29uZDogMTkwMy4wIFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBlciBzZWNv bmQ6IDE5MTAuNyBbIy9zXSAobWVhbikKUmVxdWVzdCBwZXIgc2Vjb25kOiAxOTE2LjMgWyMvc10g KG1lYW4pClJlcXVlc3QgcGVyIHNlY29uZDogMTkwNS42IFsjL3NdIChtZWFuKQpSZXF1ZXN0IHBl ciBzZWNvbmQ6IDE4OTQuNCBbIy9zXSAobWVhbikKYGBgCgpUaGlzIGF2ZXJhZ2VzIHRvIGAxOTA0 LjI1YCByZXF1ZXN0cyBwZXIgc2Vjb25kCgoKIyMgWUpJVCBCZW5jaDoKCldlIHJhbiBZSklUIEJl bmNoIG9uIG1hc3RlciBhbmQgc2hhcGVzLCBleGNsdWRpbmcgYmVuY2htYXJrcyB3aGljaCBkbyBu b3QgbWVhc3VyZSBpbnN0YW5jZSB2YXJpYWJsZXMsIGFuZCBnb3QgdGhlIGZvbGxvd2luZyByZXN1 bHRzOgoKTWFzdGVyOgoKYGBgCnJ1YnlfdmVyc2lvbj0icnVieSAzLjIuMGRldiAoMjAyMi0wOS0x M1QwNjo0NDoyOVogbWFzdGVyIDMxNmI0NGRmMDkpIFt4ODZfNjQtbGludXhdIgpnaXRfYnJhbmNo PSJtYXN0ZXIiCmdpdF9jb21taXQ9IjMxNmI0NGRmMDkiCgotLS0tLS0tLS0tLS0tICAtLS0tLS0t LS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0t LS0tLS0tLS0tCmJlbmNoICAgICAgICAgIGludGVycCAobXMpICBzdGRkZXYgKCUpICB5aml0ICht cykgIHN0ZGRldiAoJSkgIGludGVycC95aml0ICB5aml0IDFzdCBpdHIKYWN0aXZlcmVjb3JkICAg MTE1LjUgICAgICAgIDAuMyAgICAgICAgIDc0LjcgICAgICAgMi4xICAgICAgICAgMS41NSAgICAg ICAgIDEuMzEgICAgICAgIApjaHVua3lfcG5nICAgICA3NDguMCAgICAgICAgMC4xICAgICAgICAg NTAwLjkgICAgICAwLjEgICAgICAgICAxLjQ5ICAgICAgICAgMS40NiAgICAgICAgCmVydWJpICAg ICAgICAgIDI2MC40ICAgICAgICAwLjYgICAgICAgICAyMDIuOCAgICAgIDEuMCAgICAgICAgIDEu MjggICAgICAgICAxLjI1ICAgICAgICAKZXJ1YmlfcmFpbHMgICAgMTguNCAgICAgICAgIDIuMCAg ICAgICAgIDEzLjIgICAgICAgMy41ICAgICAgICAgMS4zOSAgICAgICAgIDAuNTAgICAgICAgIApn ZXRpdmFyICAgICAgICA5MS45ICAgICAgICAgMS40ICAgICAgICAgMjMuMSAgICAgICAwLjIgICAg ICAgICAzLjk4ICAgICAgICAgMC45OCAgICAgICAgCmhleGFwZGYgICAgICAgIDIxODMuMCAgICAg ICAwLjkgICAgICAgICAxNDc5LjQgICAgIDMuMCAgICAgICAgIDEuNDggICAgICAgICAxLjMxICAg ICAgICAKbGlxdWlkLXJlbmRlciAgMTQ0LjMgICAgICAgIDAuNCAgICAgICAgIDg3LjYgICAgICAg MS41ICAgICAgICAgMS42NSAgICAgICAgIDEuMzIgICAgICAgIAptYWlsICAgICAgICAgICAxMjUu NiAgICAgICAgMC4yICAgICAgICAgMTA0LjUgICAgICAwLjMgICAgICAgICAxLjIwICAgICAgICAg MC44MSAgICAgICAgCm9wdGNhcnJvdCAgICAgIDUwMTMuOSAgICAgICAwLjcgICAgICAgICAyMjI3 LjcgICAgIDAuNSAgICAgICAgIDIuMjUgICAgICAgICAyLjIwICAgICAgICAKcHN5Y2gtbG9hZCAg ICAgMTgwNC4xICAgICAgIDAuMSAgICAgICAgIDEzMzMuMCAgICAgMC4wICAgICAgICAgMS4zNSAg ICAgICAgIDEuMzUgICAgICAgIApyYWlsc2JlbmNoICAgICAxOTMzLjMgICAgICAgMS4xICAgICAg ICAgMTQ0Mi41ICAgICAxLjYgICAgICAgICAxLjM0ICAgICAgICAgMS4yMCAgICAgICAgCnJ1Ynlr b24gICAgICAgIDk4MzguNCAgICAgICAwLjQgICAgICAgICA0OTE1LjEgICAgIDAuMiAgICAgICAg IDIuMDAgICAgICAgICAyLjExICAgICAgICAKc2V0aXZhciAgICAgICAgNjQuOSAgICAgICAgIDEu NCAgICAgICAgIDI3LjkgICAgICAgMy4xICAgICAgICAgMi4zMiAgICAgICAgIDEuMDEgICAgICAg IApgYGAKClNoYXBlczoKCmBgYApydWJ5X3ZlcnNpb249InJ1YnkgMy4yLjBkZXYgKDIwMjItMDkt MTNUMTE6MjU6NTlaIG9iamVjdC1zaGFwZXMtcHJvdC4uIGVmNDIzNTRjMzMpIFt4ODZfNjQtbGlu dXhdIgpnaXRfYnJhbmNoPSJvYmplY3Qtc2hhcGVzLXByb3RvdHlwaW5nIiAgICAKZ2l0X2NvbW1p dD0iZWY0MjM1NGMzMyIKCi0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tICAt LS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0KCmJlbmNoICAg ICAgICAgIGludGVycCAobXMpICBzdGRkZXYgKCUpICB5aml0IChtcykgIHN0ZGRldiAoJSkgIGlu dGVycC95aml0ICB5aml0IDFzdCBpdHIKYWN0aXZlcmVjb3JkICAgMTE4LjYgICAgICAgIDAuMSAg ICAgICAgIDc2LjQgICAgICAgMC4yICAgICAgICAgMS41NSAgICAgICAgIDEuMjcKY2h1bmt5X3Bu ZyAgICAgNzYwLjUgICAgICAgIDAuMiAgICAgICAgIDQ4OC44ICAgICAgMC4zICAgICAgICAgMS41 NiAgICAgICAgIDEuNTIKZXJ1YmkgICAgICAgICAgMjUyLjQgICAgICAgIDAuNiAgICAgICAgIDE5 OS45ICAgICAgMS4wICAgICAgICAgMS4yNiAgICAgICAgIDEuMjUKZXJ1YmlfcmFpbHMgICAgMTgu NSAgICAgICAgIDIuNSAgICAgICAgIDEzLjcgICAgICAgMy4zICAgICAgICAgMS4zNSAgICAgICAg IDAuNTMKZ2V0aXZhciAgICAgICAgODkuOCAgICAgICAgIDEuMiAgICAgICAgIDIzLjMgICAgICAg MC4wICAgICAgICAgMy44NSAgICAgICAgIDEuMDAKaGV4YXBkZiAgICAgICAgMjM2NC45ICAgICAg IDEuMCAgICAgICAgIDE2NDkuMiAgICAgMi44ICAgICAgICAgMS40MyAgICAgICAgIDEuMzAKbGlx dWlkLXJlbmRlciAgMTQ3LjMgICAgICAgIDAuNiAgICAgICAgIDkwLjMgICAgICAgMS43ICAgICAg ICAgMS42MyAgICAgICAgIDEuMzAKbWFpbCAgICAgICAgICAgMTI4LjcgICAgICAgIDAuMyAgICAg ICAgIDEwNi4wICAgICAgMC4yICAgICAgICAgMS4yMSAgICAgICAgIDAuODIKb3B0Y2Fycm90ICAg ICAgNTE3MC43ICAgICAgIDAuOCAgICAgICAgIDI2ODEuNyAgICAgMC4zICAgICAgICAgMS45MyAg ICAgICAgIDEuODgKcHN5Y2gtbG9hZCAgICAgMTc4Ni40ICAgICAgIDAuMSAgICAgICAgIDE0ODAu MiAgICAgMC4wICAgICAgICAgMS4yMSAgICAgICAgIDEuMjAKcmFpbHNiZW5jaCAgICAgMTk4OC45 ICAgICAgIDAuOCAgICAgICAgIDE0ODIuNCAgICAgMS43ICAgICAgICAgMS4zNCAgICAgICAgIDEu MjMKcnVieWtvbiAgICAgICAgOTcyOS42ICAgICAgIDEuMiAgICAgICAgIDQ4NDEuMyAgICAgMS43 ICAgICAgICAgMi4wMSAgICAgICAgIDIuMTcKc2V0aXZhciAgICAgICAgNjEuNiAgICAgICAgIDAu MyAgICAgICAgIDMyLjIgICAgICAgMC4xICAgICAgICAgMS45MSAgICAgICAgIDEuMDAgCmBgYAoK SGVyZSBhcmUgY29tcGFyaXNvbiBudW1iZXJzIGJldHdlZW4gdGhlIHR3byBtZWFzdXJlbWVudHMu ICg+IDEgbWVhbnMgc2hhcGVzIGlzIGZhc3RlciwgPCAxIG1lYW5zIG1hc3RlciBpcyBmYXN0ZXIp OgoKYGBgCmJlbmNoCQkJaW50ZXJwIChzaGFwZXMgLyBtYXN0ZXIpICAgIHlqaXQgKHNoYXBlcyAv IG1hc3RlcikKYWN0aXZlcmVjb3JkCQkxLjAzICAgICAgICAgICAgICAgICAgICAgICAgMS4wMgpj aHVua3lfcG5nCQkxLjAyICAgICAgICAgICAgICAgICAgICAgICAgMC45OAplcnViaQkJCTAuOTcg ICAgICAgICAgICAgICAgICAgICAgICAwLjk5CmVydWJpX3JhaWxzCQkxLjAxICAgICAgICAgICAg ICAgICAgICAgICAgMS4wNApnZXRpdmFyCQkJMC45OCAgICAgICAgICAgICAgICAgICAgICAgIDEu MDEKaGV4YXBkZgkJCTEuMDggICAgICAgICAgICAgICAgICAgICAgICAxLjExCmxpcXVpZC1yZW5k ZXIJCTEuMDIgICAgICAgICAgICAgICAgICAgICAgICAxLjAzCm1haWwJCQkxLjAyICAgICAgICAg ICAgICAgICAgICAgICAgMS4wMQpvcHRjYXJyb3QJCTEuMDMgICAgICAgICAgICAgICAgICAgICAg ICAxLjIwCnBzeWNoLWxvYWQJCTAuOTkgICAgICAgICAgICAgICAgICAgICAgICAxLjExCnJhaWxz YmVuY2gJCTEuMDMgICAgICAgICAgICAgICAgICAgICAgICAxLjAzCnJ1Ynlrb24JCQkwLjk5ICAg ICAgICAgICAgICAgICAgICAgICAgMC45OApzZXRpdmFyCQkJMC45NSAgICAgICAgICAgICAgICAg ICAgICAgIDEuMTUKYGBgCgojIE1lbW9yeSBjb25zdW1wdGlvbgoKRHVlIHRvIHRoZSBtbWFwIGNo YW5nZSwgb3VyIG1lbW9yeSBjb25zdW1wdGlvbiBoYXMgZGVjcmVhc2VkIHNpbmNlIG91ciBsYXN0 IHVwZGF0ZS4gTWVhc3VyaW5nIGV4ZWN1dGlvbiBvZiBhbiBlbXB0eSBzY3JpcHQgb3ZlciAxMCBy dW5zLCB3ZSBzYXcgYW4gYXZlcmFnZSBjb25zdW1wdGlvbiBvZiAyOSwxMDcsODE0IGJ5dGVzIG9u IG1hc3RlciwgYW5kIDI5LDI3MywyOTMgYnl0ZXMgd2l0aCBvYmplY3Qgc2hhcGVzLiBUaGlzIG1l YW5zIG9uIGFuIGVtcHR5IHNjcmlwdCwgc2hhcGVzIGhhcyBhIDAuNSUgbWVtb3J5IGluY3JlYXNl LiBPYnZpb3VzbHksIHRoaXMgZGlmZmVyZW5jZSB3b3VsZCByZXByZXNlbnQgYSBzaWduaWZpY2Fu dGx5IGxvd2VyIHBlcmNlbnRhZ2UgbWVtb3J5IGluY3JlYXNlIG9uIGxhcmdlciwgcHJvZHVjdGlv bi1zY2FsZSBhcHBsaWNhdGlvbnMuCgojIENvZGUgY29tcGxleGl0eQoKV2UgaGF2ZSByZWR1Y2Vk IG92ZXJhbGwgY29kZSBjb21wbGV4aXR5IGJ5OgoKKiBSZW1vdmluZyB0aGUgYGl2X2luZGV4YCB0 YWJsZSBvbiB0aGUgY2xhc3MgYW5kIHJlcGxhY2luZyBpdCB3aXRoIGEgc2hhcGUgdHJlZSB3aGlj aCBjYW4gYmUgdXNlZCBpbmRlcGVuZGVudCBvZiBvYmplY3QgdHlwZXMKKiBSZWR1Y2luZyB0aGUg Y2hlY2tzIGluIHRoZSBzZXQgaW5zdGFuY2UgdmFyaWFibGUgYW5kIGdldCBpbnN0YW5jZSB2YXJp YWJsZSBjYWNoZWQgY29kZSBwYXRocyBieSByZW1vdmluZyB0aGUgZnJvemVuIGNoZWNrLCBjbGFz cyBzZXJpYWwgY2hlY2sgYW5kIGB2bV9pY19lbnRyeV9wYCBjaGVjayBpbiBmYXZvciBvZiBhIHNo YXBlIGNoZWNrLgoKVGhlIGNvZGUgYmVsb3cgaXMgdGhlIGZhc3QgY29kZSBwYXRoIChjYWNoZSBo aXQgY2FzZSkgZm9yIHNldHRpbmcgaW5zdGFuY2UgdmFyaWFibGVzLiAoQXNzZXJ0aW9ucyBhbmQg ZGVidWcgY291bnRlcnMgcmVtb3ZlZCBmb3IgY2xhcml0eS4pCgpNYXN0ZXI6CgpgYGBjIAppZiAo TElLRUxZKCFSQl9PQkpfRlJPWkVOX1JBVyhvYmopKSkgewogICAgaWYgKExJS0VMWSgKICAgICAg ICAodm1faWNfZW50cnlfcChpYykgJiYgaWMtPmVudHJ5LT5jbGFzc19zZXJpYWwgPT0gUkNMQVNT X1NFUklBTChSQkFTSUMob2JqKS0+a2xhc3MpKSkpIHsKCiAgICAgICAgaWYgKFVOTElLRUxZKGlu ZGV4ID49IFJPQkpFQ1RfTlVNSVYob2JqKSkpIHsKICAgICAgICAgICAgcmJfaW5pdF9pdl9saXN0 KG9iaik7CiAgICAgICAgfQogICAgICAgIFZBTFVFICpwdHIgPSBST0JKRUNUX0lWUFRSKG9iaik7 CiAgICAgICAgUkJfT0JKX1dSSVRFKG9iaiwgJnB0cltpbmRleF0sIHZhbCk7CiAgICAgICAgcmV0 dXJuIHZhbDsKICAgIH0KfQpgYGAKClNoYXBlczoKYGBgYwpzaGFwZV9pZF90IHNoYXBlX2lkID0g Uk9CSkVDVF9TSEFQRV9JRChvYmopOwoKaWYgKHNoYXBlX2lkID09IHNvdXJjZV9zaGFwZV9pZCkg ewogICAgaWYgKGRlc3Rfc2hhcGVfaWQgIT0gc2hhcGVfaWQpIHsKICAgICAgICBpZiAoVU5MSUtF TFkoaW5kZXggPj0gUk9CSkVDVF9OVU1JVihvYmopKSkgewogICAgICAgICAgICByYl9pbml0X2l2 X2xpc3Qob2JqKTsKICAgICAgICB9CiAgICAgICAgUk9CSkVDVF9TRVRfU0hBUEVfSUQob2JqLCBk ZXN0X3NoYXBlX2lkKTsKICAgIH0KCiAgICBWQUxVRSAqcHRyID0gUk9CSkVDVF9JVlBUUihvYmop OwogICAgUkJfT0JKX1dSSVRFKG9iaiwgJnB0cltpbmRleF0sIHZhbCk7CiAgICByZXR1cm4gdmFs Owp9CmBgYAoqIFJlZHVjaW5nIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGZvciBpbnN0YW5j ZSB2YXJpYWJsZSBhY2Nlc3MgaW4gWUpJVC4gSGVyZSBhcmUgdGhlIHg4Nl82NCBhc3NlbWJseSBj b2RlIGluc3RydWN0aW9ucyBnZW5lcmF0ZWQgYnkgWUpJVCB3aGljaCByZXByZXNlbnQgZ3VhcmQg Y29tcGFyaXNvbnMgZm9yIGdldHRpbmcgaW5zdGFuY2UgdmFyaWFibGVzOgoKTWFzdGVyOgoKYGBg CiMgZ3VhcmQga25vd24gY2xhc3MKMHg1NWNmZmYxNDg1N2E6IG1vdmFicyByY3gsIDB4N2YzZTFm Y2ViMGY4CjB4NTVjZmZmMTQ4NTg0OiBjbXAgcXdvcmQgcHRyIFtyYXggKyA4XSwgcmN4CjB4NTVj ZmZmMTQ4NTg4OiBqbmUgMHg1NWQwMDcxMzc0OTEKMHg1NWNmZmYxNDg1OGU6IG1vdiByYXgsIHF3 b3JkIHB0ciBbcjEzICsgMHgxOF0KIyBJcyB0aGUgSVYgaW4gcmFuZ2U/CjB4NTVjZmZmMTQ4NTky OiBjbXAgcXdvcmQgcHRyIFtyYXggKyAweDEwXSwgMAoweDU1Y2ZmZjE0ODU5NzogamJlIDB4NTVk MDA3MTM3NDQ2CiMgZ3VhcmQgZW1iZWRkZWQgZ2V0aXZhcgojIElzIG9iamVjdCBlbWJlZGRlZD8K MHg1NWNmZmYxNDg1OWQ6IHRlc3Qgd29yZCBwdHIgW3JheF0sIDB4MjAwMAoweDU1Y2ZmZjE0ODVh MjogamUgMHg1NWQwMDcxMzc0YWEKYGBgCgpTaGFwZXM6CgpgYGAKIyBndWFyZCBzaGFwZSwgZW1i ZWRkZWQsIGFuZCBUXyoKMHg1NWE4OWY4YzdjZmY6IG1vdiByY3gsIHF3b3JkIHB0ciBbcmF4XQow eDU1YTg5ZjhjN2QwMjogbW92YWJzIHIxMSwgMHhmZmZmMDAwMDAwMDAyMDFmCjB4NTVhODlmOGM3 ZDBjOiBhbmQgcmN4LCByMTEKMHg1NWE4OWY4YzdkMGY6IG1vdmFicyByMTEsIDB4NTgwMDAwMDAw MDIwMDEKMHg1NWE4OWY4YzdkMTk6IGNtcCByY3gsIHIxMQoweDU1YTg5ZjhjN2QxYzogam5lIDB4 NTVhOGE3OGI1ZDRlCmBgYAoKVGhlIHNoYXBlcyBjb2RlIGhhcyBvbmUgY29tcGFyaXNvbiBhbmQg b25lIG1lbW9yeSByZWFkIHdoZXJlYXMgdGhlIG1hc3RlciBjb2RlIGhhcyB0aHJlZSBjb21wYXJp c29ucyBhbmQgZm91ciBtZW1vcnkgcmVhZHMuCgojIENvbmNsdXNpb24KCkFzIHdlIHNhaWQgYXQg dGhlIGJlZ2lubmluZyBvZiB0aGlzIHVwZGF0ZSwgYmFzZWQgb24gdGhlIG1ldHJpY3MgYW5kIHJh dGlvbmFsZSBkZXNjcmliZWQgYWJvdmUsIHdlIHRoaW5rIG9iamVjdCBzaGFwZXMgaXMgcmVhZHkg dG8gbWVyZ2UuIFBsZWFzZSBnaXZlIHVzIGZlZWRiYWNrIFtvbiBvdXIgUFJdKGh0dHBzOi8vZ2l0 aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82Mzg2KSBvciB0aGlzIGlzc3VlLgoKVGhhbmsgeW91IQoK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpGZWF0dXJlICMxODc3Njog T2JqZWN0IFNoYXBlcwpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTg3NzYjY2hh bmdlLTk5MTQ3CgoqIEF1dGhvcjogamVtbWFpIChKZW1tYSBJc3Nyb2ZmKQoqIFN0YXR1czogT3Bl bgoqIFByaW9yaXR5OiBOb3JtYWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQojIE9iamVjdCBTaGFwZXMgaW1wbGVtZW50YXRpb24KCkFhcm9uIFBhdHRlcnNvbiwgRWls ZWVuIFVjaGl0ZWxsZSBhbmQgSSBoYXZlIGJlZW4gd29ya2luZyBvbiBhbiBpbXBsZW1lbnRhdGlv biBvZiBPYmplY3QgU2hhcGVzIGZvciBSdWJ5LiAgV2UgYXJlIGZpbGluZyBhIHRpY2tldCB0byBz aGFyZSB3aGF0IHdlJ3ZlIGJlZW4gZG9pbmcsIGFzIHdlbGwgYXMgZ2V0IGZlZWRiYWNrIG9uIHRo ZSBwcm9qZWN0IGluIGl0cyBjdXJyZW50IHN0YXRlLgoKV2UgaG9wZSB0byBldmVudHVhbGx5IHN1 Ym1pdCB0aGUgZmluYWxpemVkIHByb2plY3QgdXBzdHJlYW0gYWZ0ZXIgdmVyaWZ5aW5nIGVmZmlj YWN5LgoKIyMgV2hhdCBhcmUgT2JqZWN0IFNoYXBlcz8KCk9iamVjdCBzaGFwZXMgYXJlIGEgdGVj aG5pcXVlIGZvciByZXByZXNlbnRpbmcgcHJvcGVydGllcyBvZiBhbiBvYmplY3QuIE90aGVyIGxh bmd1YWdlIGltcGxlbWVudGF0aW9ucywgaW5jbHVkaW5nIFtUcnVmZmxlUnVieV0oaHR0cHM6Ly9n aXRodWIuY29tL29yYWNsZS90cnVmZmxlcnVieSkgYW5kIFtWOF0oaHR0cHM6Ly92OC5kZXYvKSwg dXNlIHRoaXMgdGVjaG5pcXVlLiBDaHJpcyBTZWF0b24sIHRoZSBjcmVhdG9yIG9mIFRydWZmbGVS dWJ5LCBkaXNjdXNzZWQgb2JqZWN0IHNoYXBlcyBpbiBoaXMgW1J1YnlLYWlnaSAyMDIxIEtleW5v dGVdKGh0dHBzOi8vcnVieWthaWdpLm9yZy8yMDIxLXRha2VvdXQvcHJlc2VudGF0aW9ucy9jaHJp c2dzZWF0b24uaHRtbCkgYW5kIE1heGltZSBDaGV2YWxpZXItQm9pc3ZlcnQgZGlzY3Vzc2VkIHRo ZSBpbXBsaWNhdGlvbnMgZm9yIFlKSVQgaW4gdGhlIGxhdHRlciBwYXJ0IG9mIFtoZXIgdGFsayBh dCBSdWJ5S2FpZ2kgMjAyMV0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1QQlZMZjN5 Zk1zOCZ0PTExMDBzKS4gVGhlIG9yaWdpbmFsIGlkZWEgb2Ygb2JqZWN0IHNoYXBlcyBbb3JpZ2lu YXRlcyBmcm9tIHRoZSBTZWxmIGxhbmd1YWdlXShodHRwczovL2JpYmxpb2dyYXBoeS5zZWxmbGFu Z3VhZ2Uub3JnL19zdGF0aWMvaW1wbGVtZW50YXRpb24ucGRmKSwgd2hpY2ggaXMgY29uc2lkZXJl ZCBhIGRpcmVjdCBkZXNjZW5kYW50IG9mIFNtYWxsdGFsay4KCkVhY2ggc2hhcGUgcmVwcmVzZW50 cyBhIHNwZWNpZmljIHNldCBvZiBhdHRyaWJ1dGVzIChpbnN0YW5jZSB2YXJpYWJsZXMgYW5kIG90 aGVyIHByb3BlcnRpZXMpIGFuZCB0aGVpciB2YWx1ZXMuIEluIG91ciBpbXBsZW1lbnRhdGlvbiwg YWxsIG9iamVjdHMgaGF2ZSBhIHNoYXBlLiBUaGUgc2hhcGVzIGFyZSBub2RlcyBpbiBhIHRyZWUg ZGF0YSBzdHJ1Y3R1cmUuIEV2ZXJ5IGVkZ2UgaW4gdGhlIHRyZWUgcmVwcmVzZW50cyBhbiBhdHRy aWJ1dGUgdHJhbnNpdGlvbi4KCk1vcmUgc3BlY2lmaWNhbGx5LCBzZXR0aW5nIGFuIGluc3RhbmNl IHZhcmlhYmxlIG9uIGFuIGluc3RhbmNlIG9mIGFuIG9iamVjdCBjcmVhdGVzIGFuIG91dGdvaW5n IGVkZ2UgZnJvbSB0aGUgaW5zdGFuY2UncyBjdXJyZW50IHNoYXBlLiBUaGlzIGlzIGEgdHJhbnNp dGlvbiBmcm9tIG9uZSBzaGFwZSB0byBhbm90aGVyLiBUaGUgZWRnZSByZXByZXNlbnRzIHRoZSBp bnN0YW5jZSB2YXJpYWJsZSB0aGF0IGlzIHNldC4KCkZvciBleGFtcGxlOgoKYGBgcnVieQpjbGFz cyBGb28KICBkZWYgaW5pdGlhbGl6ZQogICAgIyBDdXJyZW50bHkgdGhpcyBpbnN0YW5jZSBpcyB0 aGUgcm9vdCBzaGFwZSAoSUQgMCkKICAgIEBhID0gMSAjIFRyYW5zaXRpb25zIHRvIGEgbmV3IHNo YXBlIHZpYSBlZGdlIEBhIChJRCAxKQogICAgQGIgPSAyICMgVHJhbnNpdGlvbnMgdG8gYSBuZXcg c2hhcGUgdmlhIGVkZ2UgQGIgKElEIDIpCiAgZW5kCmVuZAoKZm9vID0gRm9vLm5ldwpgYGAKCldo ZW4gYEZvb2AgaXMgaW50aWFsaXplZCwgaXRzIHNoYXBlIGlzIHRoZSByb290IHNoYXBlIHdpdGgg SUQgMC4gIFRoZSByb290IHNoYXBlIHJlcHJlc2VudHMgYW4gZW1wdHkgb2JqZWN0IHdpdGggbm8g aW5zdGFuY2UgdmFyaWFibGVzLiBFYWNoIHRpbWUgYW4gaW5zdGFuY2UgdmFyaWFibGUgaXMgc2V0 IG9uIGBmb29gLCB0aGUgc2hhcGUgb2YgdGhlIGluc3RhbmNlIGNoYW5nZXMuIEl0IGZpcnN0IHRy YW5zaXRpb25zIHdpdGggYEBhYCB0byBhIHNoYXBlIHdpdGggSUQgMSwgYW5kIHRoZW4gdHJhbnNp dGlvbnMgd2l0aCBgQGJgIHRvIGEgc2hhcGUgd2l0aCBJRCAyLiBJZiBgQGFgIGlzIHRoZW4gc2V0 IHRvIGEgZGlmZmVyZW50IHZhbHVlLCBpdHMgc2hhcGUgd2lsbCByZW1haW4gdGhlIHNoYXBlIHdp dGggSUQgMiwgc2luY2UgdGhpcyBzaGFwZSBhbHJlYWR5IGluY2x1ZGVzIHRoZSBpbnN0YW5jZSB2 YXJpYWJsZSBgQGFgLiAgCgohW10oaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVu dC5jb20vMTk4ODU2MC8xNjc5MTgzNjAtMGE2YzkxYWEtMjU4Ny00OGNiLThmZjItN2YzYTk1ODMy ODhlLnN2ZykKClRoZXJlIGlzIG9uZSBnbG9iYWwgc2hhcGUgdHJlZSBhbmQgb2JqZWN0cyB3aGlj aCB1bmRlcmdvIHRoZSBzYW1lIHNoYXBlIHRyYW5zaXRpb25zIGluIHRoZSBzYW1lIG9yZGVyIHdp bGwgZW5kIHVwIHdpdGggdGhlIHNhbWUgZmluYWwgc2hhcGUuCgpGb3IgaW5zdGFuY2UsIGlmIHdl IGhhdmUgYSBjbGFzcyBgQmFyYCBkZWZpbmVkIGFzIGZvbGxvd3MsIHRoZSBmaXJzdCB0cmFuc2l0 aW9uIG9uIGBCYXIubmV3YCB0aHJvdWdoIHRoZSBpbnN0YW5jZSB2YXJpYWJsZSBgQGFgIHdpbGwg YmUgdGhlIHNhbWUgYXMgYEZvby5uZXdgJ3MgZmlyc3QgdHJhbnNpdGlvbjoKCmBgYHJ1YnkKY2xh c3MgRm9vCiAgZGVmIGluaXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5zdGFuY2UgaXMg dGhlIHJvb3Qgc2hhcGUgKElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0byBhIG5ldyBz aGFwZSB2aWEgZWRnZSBAYSAoSUQgMSkKICAgIEBiID0gMiAjIFRyYW5zaXRpb25zIHRvIGEgbmV3 IHNoYXBlIHZpYSBlZGdlIEBiIChJRCAyKQogIGVuZAplbmQKCmNsYXNzIEJhcgogIGRlZiBpbml0 aWFsaXplCiAgICAjIEN1cnJlbnRseSB0aGlzIGluc3RhbmNlIGlzIHRoZSByb290IHNoYXBlIChJ RCAwKQogICAgQGEgPSAxICMgVHJhbnNpdGlvbnMgdG8gc2hhcGUgZGVmaW5lZCBlYXJsaWVyIHZp YSBlZGdlIEBhIChJRCAxKQogICAgQGMgPSAxICMgVHJhbnNpdGlvbnMgdG8gYSBuZXcgc2hhcGUg dmlhIGVkZ2UgQGMgKElEIDMpCiAgICBAYiA9IDEgIyBUcmFuc2l0aW9ucyB0byBhIG5ldyBzaGFw ZSB2aWEgZWRnZSBAYiAoSUQgNCkKICBlbmQKZW5kCgpmb28gPSBGb28ubmV3ICMgYmx1ZSBpbiB0 aGUgZGlhZ3JhbQpiYXIgPSBCYXIubmV3ICMgcmVkIGluIHRoZSBkaWFncmFtCmBgYAoKSW4gdGhl IGRpYWdyYW0gYmVsb3csIHB1cnBsZSByZXByZXNlbnRzIHNoYXJlZCB0cmFuc2l0aW9ucywgYmx1 ZSByZXByZXNlbnRzIHRyYW5zaXRpb25zIGZvciBvbmx5IGBmb29gLCBhbmQgcmVkIHJlcHJlc2Vu dHMgdHJhbnNpdGlvbnMgZm9yIG9ubHkgYGJhcmAuCgohW10oaHR0cHM6Ly91c2VyLWltYWdlcy5n aXRodWJ1c2VyY29udGVudC5jb20vMTk4ODU2MC8xNjc5MTg4OTktZjFhNmYzNDQtYWU1ZS00ZGMw LWIxN2EtZmIxNTZkMWQ1NTBmLnN2ZykKCiMjIyBDYWNoZSBzdHJ1Y3R1cmUKCkZvciBpbnN0YW5j ZSB2YXJpYWJsZSB3cml0ZXJzLCB0aGUgY3VycmVudCBzaGFwZSBJRCwgdGhlIHNoYXBlIElEIHRo YXQgaXZhciB3cml0ZSB3b3VsZCB0cmFuc2l0aW9uIHRvIGFuZCBpbnN0YW5jZSB2YXJpYWJsZSBp bmRleCBhcmUgYWxsIHN0b3JlZCBpbiB0aGUgaW5saW5lIGNhY2hlLiBUaGUgc2hhcGUgSUQgaXMg dGhlIGtleSB0byB0aGUgY2FjaGUuCgpGb3IgaW5zdGFuY2UgdmFyaWFibGUgcmVhZGVycywgdGhl IHNoYXBlIElEIGFuZCBpbnN0YW5jZSB2YXJpYWJsZSBpbmRleCBhcmUgc3RvcmVkIGluIHRoZSBp bmxpbmUgY2FjaGUuICBBZ2FpbiwgdGhlIHNoYXBlIElEIGlzIHRoZSBjYWNoZSBrZXkuCgpgYGBy dWJ5CmNsYXNzIEZvbwogIGRlZiBpbml0aWFsaXplCiAgICBAYSA9IDEgIyBJQyBzaGFwZV9pZDog MCwgbmV4dCBzaGFwZTogMSwgaXYgaW5kZXggMAogICAgQGIgPSAxICMgSUMgc2hhcGVfaWQ6IDEs IG5leHQgc2hhcGU6IDIsIGl2IGluZGV4IDEKICBlbmQKICAgIAogIGRlZiBhCiAgICBAYSAjIElD IHNoYXBlX2lkOiAyLCBpdiBpbmRleCAwCiAgZW5kCmVuZApgYGAKCiMjIFJhdGlvbmFsZQoKV2Ug dGhpbmsgdGhhdCBhbiBvYmplY3Qgc2hhcGUgaW1wbGVtZW50YXRpb24gd2lsbCBzaW1wbGlmeSBj YWNoZSBjaGVja3MsIGluY3JlYXNlIGlubGluZSBjYWNoZSBoaXRzLCBkZWNyZWFzZSBydW50aW1l IGNoZWNrcywgYW5kIGVuYWJsZSBvdGhlciBwb3RlbnRpYWwgZnV0dXJlIG9wdGltaXphdGlvbnMu IFRoZXNlIGFyZSBhbGwgZXhwbGFpbmVkIGJlbG93LiAKCiMjIyBTaW1wbGlmeSBjYWNoaW5nCgpU aGUgY3VycmVudCBjYWNoZSBpbXBsZW1lbnRhdGlvbiBkZXBlbmRzIG9uIHRoZSBjbGFzcyBvZiB0 aGUgcmVjZWl2ZXIuIFNpbmNlIHRoZSBhZGRyZXNzIG9mIHRoZSBjbGFzcyBjYW4gYmUgcmV1c2Vk LCB0aGUgY3VycmVudCBjYWNoZSBpbXBsZW1lbnRhdGlvbiBhbHNvIGRlcGVuZHMgb24gYW4gaW5j cmVtZW50aW5nIHNlcmlhbCBudW1iZXIgc2V0IG9uIHRoZSBjbGFzcyAodGhlIGNsYXNzIHNlcmlh bCkuICBUaGUgc2hhcGUgaW1wbGVtZW50YXRpb24gaGFzIG5vIHN1Y2ggZGVwZW5kZW5jeS4gSXQg b25seSByZXF1aXJlcyBjaGVja2luZyB0aGUgc2hhcGUgSUQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBj YWNoZSBpcyB2YWxpZC4KCiMjIyBDYWNoZSBoaXRzCgpPYmplY3RzIHRoYXQgc2V0IHByb3BlcnRp ZXMgaW4gdGhlIHNhbWUgb3JkZXIgY2FuIHNoYXJlIHNoYXBlcy4gIEZvciBleGFtcGxlOgoKYGBg cnVieQpjbGFzcyBIb2dlCiAgZGVmIGluaXRpYWxpemUKICAgICMgQ3VycmVudGx5IHRoaXMgaW5z dGFuY2UgaXMgdGhlIHJvb3Qgc2hhcGUgKElEIDApCiAgICBAYSA9IDEgIyBUcmFuc2l0aW9ucyB0 byB0aGUgbmV4dCBzaGFwZSB2aWEgZWRnZSBuYW1lZCBAYQogICAgQGIgPSAyICMgVHJhbnNpdGlv bnMgdG8gbmV4dCBzaGFwZSB2aWEgZWRnZSBuYW1lZCBAYgogIGVuZAplbmQKCmNsYXNzIEZ1Z2Eg PCBIb2dlOyBlbmQKCmhvZ2UgPSBIb2dlLm5ldwpmdWdhID0gRnVnYS5uZXcKYGBgCgpJbiB0aGUg YWJvdmUgZXhhbXBsZSwgdGhlIGluc3RhbmNlcyBgaG9nZWAgYW5kIGBmdWdhYCB3aWxsIHNoYXJl IHRoZSBzYW1lIHNoYXBlIElELiAgVGhpcyBtZWFucyBpbmxpbmUgY2FjaGVzIGluIGBpbml0aWFs aXplYCB3aWxsIGhpdCBpbiBib3RoIGNhc2VzLiAgVGhpcyBjb250cmFzdHMgd2l0aCB0aGUgY3Vy cmVudCBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgdGhlIGNsYXNzIGFzIHRoZSBjYWNoZSBrZXku ICBJbiBvdGhlciB3b3Jkcywgd2l0aCBvYmplY3Qgc2hhcGVzIHRoZSBhYm92ZSBjb2RlIHdpbGwg aGl0IGlubGluZSBjYWNoZXMgd2hlcmUgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBt aXNzLgoKSWYgcGVyZm9ybWFuY2UgdGVzdGluZyByZXZlYWxzIHRoYXQgY2FjaGUgaGl0cyBhcmUg Km5vdCogc3Vic3RhbnRpYWxseSBpbXByb3ZlZCwgdGhlbiB3ZSBjYW4gdXNlIHNoYXBlcyB0byBy ZWNsYWltIG1lbW9yeSBmcm9tIGBSQmFzaWNgLiBXZSBjYW4gYWNjb21wbGlzaCB0aGlzIGJ5IGVu Y29kaW5nIHRoZSBjbGFzcyB3aXRoaW4gdGhlIHNoYXBlIHRyZWUuIFRoaXMgd2lsbCBoYXZlIGFu IGVxdWl2YWxlbnQgY2FjaGUgaGl0IHJhdGUgdG8gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24u IE9uY2UgdGhlIGNsYXNzIGlzIGVuY29kZWQgd2l0aGluIHRoZSBzaGFwZSB0cmVlLCB3ZSBjYW4g cmVtb3ZlIHRoZSBjbGFzcyBwb2ludGVyIGZyb20gYFJCYXNpY2AgYW5kIGVpdGhlciByZWNsYWlt IHRoYXQgbWVtb3J5IG9yIGZyZWUgaXQgZm9yIGFub3RoZXIgdXNlLgoKIyMjIERlY3JlYXNlcyBy dW50aW1lIGNoZWNraW5nCgpXZSBjYW4gZW5jb2RlIGF0dHJpYnV0ZXMgdGhhdCBhcmVuJ3QgaW5z dGFuY2UgdmFyaWFibGVzIGludG8gYW4gb2JqZWN0J3Mgc2hhcGUuIEN1cnJlbnRseSwgd2UgYWxz byBpbmNsdWRlIGZyb3plbiB3aXRoaW4gdGhlIHNoYXBlLiBUaGlzIG1lYW5zIHdlIGNhbiBsaW1p dCBmcm96ZW4gY2hlY2tzIHRvIG9ubHkgY2FjaGUgbWlzc2VzLgoKRm9yIGV4YW1wbGUsIHRoZSBm b2xsb3dpbmcgY29kZToKCmBgYHJ1YnkKY2xhc3MgVG90bwogIGRlZiBzZXRfYQogICAgQGEgPSAx ICMgY2FjaGU6IHNoYXBlOiAwLCBuZXh0IHNoYXBlOiAxLCBJViBpZHg6IDAKICBlbmQKZW5kCgp0 b3RvID0gVG90by5uZXcgIyBzaGFwZSAwCnRvdG8uc2V0X2EgICAgICMgc2hhcGUgMQoKdG90byA9 IFRvdG8ubmV3ICMgc2hhcGUgMAp0b3RvLmZyZWV6ZSAgICAjIHNoYXBlIDIKdG90by5zZXRfYSAg ICAgIyBDYWNoZSBtaXNzLCBFeGNlcHRpb24hCmBgYAoKIVtdKGh0dHBzOi8vdXNlci1pbWFnZXMu Z2l0aHVidXNlcmNvbnRlbnQuY29tLzE5ODg1NjAvMTY3OTIwMDAxLWM0ZTYzMjZiLTNhM2MtNDgz Yi1hNzk3LTllMDIzMTc2NDdkNy5zdmcpCgpXaXRob3V0IHNoYXBlcywgYWxsIGluc3RhbmNlIHZh cmlhYmxlIHNldHMgcmVxdWlyZSBjaGVja2luZyB0aGUgZnJvemVuIHN0YXR1cyBvZiB0aGUgb2Jq ZWN0LiBXaXRoIHNoYXBlcywgd2Ugb25seSBuZWVkIHRvIGNoZWNrIHRoZSBmcm96ZW4gc3RhdHVz IG9uIGNhY2hlIG1pc3Nlcy4KCldlIGNhbiBhbHNvIGVsaW1pbmF0ZSBlbWJlZGRlZCBhbmQgZXh0 ZW5kZWQgY2hlY2tzIHdpdGggdGhlIGludHJvZHVjdGlvbiBvZiBvYmplY3Qgc2hhcGVzLiBBbnkg cGFydGljdWxhciBzaGFwZSByZXByZXNlbnRzIGFuIG9iamVjdCB0aGF0IGlzIF9laXRoZXJfIGV4 dGVuZGVkIG9yIGVtYmVkZGVkLiBKSVRzIGNhbiBwb3NzaWJseSB0YWtlIGFkdmFudGFnZSBvZiB0 aGlzIGZhY3QgYnkgZ2VuZXJhdGluZyBzcGVjaWFsaXplZCBtYWNoaW5lIGNvZGUgYmFzZWQgb24g dGhlIHNoYXBlcy4gCiAgICAKIyMjIENsYXNzIGluc3RhbmNlIHZhcmlhYmxlcyBjYW4gYmUgc3Rv cmVkIGluIGFuIGFycmF5CgpDdXJyZW50bHksIGBUX0NMQVNTYCBhbmQgYFRfTU9EVUxFYCBpbnN0 YW5jZXMgY2Fubm90IHVzZSB0aGUgc2FtZSBJViBpbmRleCB0YWJsZSBvcHRpbWl6YXRpb24gdGhh dCBgVF9PQkpFQ1RgIGluc3RhbmNlcyB1c2UuICBXZSB0aGluayB0aGF0IHRoZSBvYmplY3Qgc2hh cGVzIHRlY2huaXF1ZSBjYW4gYmUgbGV2ZXJhZ2VkIGJ5IGNsYXNzIGluc3RhbmNlcyB0byB1c2Ug YXJyYXlzIGZvciBjbGFzcyBpbnN0YW5jZSB2YXJpYWJsZSBzdG9yYWdlIGFuZCBtYXkgcG9zc2li bHkgbGVhZCB0byBhIHJlZHVjdGlvbiBpbiBtZW1vcnkgdXNhZ2UgKHRob3VnaCB3ZSBoYXZlIHll dCB0byB0ZXN0IHRoaXMpLgoKIyMgSW1wbGVtZW50YXRpb24gRGV0YWlscwoKW0hlcmVdKGh0dHBz Oi8vZ2l0aHViLmNvbS9qZW1tYWlzc3JvZmYvcnVieS9jb21taXQvNGU5NWQwMTY1NGYyNGNlZmY2 YzgzMzBjZjRlNWM3ZGFjNTA0NzM5ZSkgaXMgYSBsaW5rIHRvIG91ciBjb2RlIHNvIGZhci4KCkFz IG1lbnRpb25lZCBlYXJsaWVyLCBzaGFwZSBvYmplY3RzIGZvcm0gYSB0cmVlIGRhdGEgc3RydWN0 dXJlLiAgSW4gb3JkZXIgdG8gbG9vayB1cCB0aGUgc2hhcGUgcXVpY2tseSwgd2UgYWxzbyBzdG9y ZSB0aGUgc2hhcGVzIGluIGEgd2VhayBhcnJheSB0aGF0IGlzIHN0b3JlZCBvbiB0aGUgVk0uICBU aGUgSUQgb2YgdGhlIHNoYXBlIGlzIHRoZSBpbmRleCBpbiB0byB0aGUgYXJyYXksIGFuZCB0aGUg SUQgaXMgc3RvcmVkIG9uIHRoZSBvYmplY3QuCgpGb3IgYFRfT0JKRUNUYCBvYmplY3RzLCB3ZSBz dG9yZSB0aGUgc2hhcGUgSUQgaW4gdGhlIG9iamVjdCdzIGhlYWRlci4gT24gNjQgYml0IHN5c3Rl bXMsIHRoZSB1cHBlciAzMiBiaXRzIGFyZSB1c2VkIGJ5IFJhY3RvcnMuICBXZSB3YW50IG9iamVj dCBzaGFwZXMgdG8gYmUgZW5hYmxlZCBvbiAzMiBiaXQgc3lzdGVtcyBhbmQgNjQgYml0IHN5c3Rl bXMgc28gdGhhdCBsaW1pdHMgdXMgdG8gdGhlIGJvdHRvbSAzMiBiaXRzIG9mIHRoZSBPYmplY3Qg aGVhZGVyLiAgVGhlIHRvcCAyMCBiaXRzIGZvciBgVF9PQkpFQ1RgIG9iamVjdHMgd2FzIHVudXNl ZCwgc28gd2UgdXNlZCB0aGUgdG9wIDE2IGJpdHMgZm9yIHRoZSBzaGFwZSBpZC4gIFdlIGNob3Nl IHRoZSB0b3AgMTYgYml0cyBiZWNhdXNlIHRoaXMgYWxsb3dzIHVzIHRvIHVzZSBgdWludDE2X3Rg IGFuZCBtYXNraW5nIHRoZSBoZWFkZXIgYml0cyBpcyBlYXNpZXIuCgpUaGlzIGltcGxlbWVudGF0 aW9uIGRldGFpbCBsaW1pdHMgdXMgdG8gfjY1ayBzaGFwZXMuIFdlIG1lYXN1cmVkIHRoZSBudW1i ZXIgb2Ygc2hhcGVzIHVzZWQgb24gYSBzaW1wbGUgW0Rpc2NvdXJzZV0oaHR0cHM6Ly9naXRodWIu Y29tL2Rpc2NvdXJzZS9kaXNjb3Vyc2UpIGFwcGxpY2F0aW9uICh+My41ayksIFtSYWlsc0JlbmNo XShodHRwczovL2dpdGh1Yi5jb20vazBrdWJ1bi9yYWlsc2JlbmNoKSAofjRrKSwgYW5kIFNob3Bp ZnkncyBtb25vbGl0aCdzIHRlc3Qgc3VpdGUgKH40MGspLiBBY2NvcmRpbmdseSwgd2UgZGVjaWRl ZCB0byBpbXBsZW1lbnQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG9iamVjdCBzaGFwZXMgc28gd2Ug Y2FuIHJlY3ljbGUgc2hhcGUgSURzIHdoaWNoIGFyZSBubyBsb25nZXIgaW4gdXNlLiAgV2UgYXJl IGN1cnJlbnRseSB3b3JraW5nIG9uIHNoYXBlIEdDLgoKRXZlbiB0aG91Z2ggaXQncyB1bmxpa2Vs eSwgaXQncyBzdGlsbCBwb3NzaWJsZSBmb3IgYW4gYXBwbGljYXRpb24gdG8gcnVuIG91dCBvZiBz aGFwZXMuIE9uY2UgYWxsIHNoYXBlIElEcyBhcmUgaW4gdXNlLCBhbnkgb2JqZWN0cyB0aGF0IG5l ZWQgbmV3IHNoYXBlIElEcyB3aWxsIG5ldmVyIGhpdCBvbiBpbmxpbmUgY2FjaGVzLgoKIyMgRXZh bHVhdGlvbgoKV2UgaGF2ZSBzbyBmYXIgdGVzdGVkIHRoaXMgYnJhbmNoIHdpdGggW0Rpc2NvdXJz ZV0oaHR0cHM6Ly9naXRodWIuY29tL2Rpc2NvdXJzZS9kaXNjb3Vyc2UpLCBbUmFpbHNCZW5jaF0o aHR0cHM6Ly9naXRodWIuY29tL2swa3VidW4vcmFpbHNiZW5jaCkgYW5kIFNob3BpZnkncyBtb25v bGl0aC4gV2UgcGxhbiB0byB0ZXN0IHRoaXMgYnJhbmNoIG1vcmUgYnJvYWRseSBhZ2FpbnN0IHNl dmVyYWwgb3BlbiBzb3VyY2UgUnVieSBhbmQgUmFpbHMgYXBwbGljYXRpb25zLiAKCkJlZm9yZSB3 ZSBjb25zaWRlciB0aGlzIGJyYW5jaCB0byBiZSByZWFkeSBmb3IgZm9ybWFsIHJldmlldywgd2Ug d2FudCB0aGUgcnVudGltZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IHVzYWdlIG9mIHRoZXNlIGJl bmNobWFya3MgdG8gYmUgZXF1aXZhbGVudCBvciBiZXR0ZXIgdGhhbiBpdCBpcyBjdXJyZW50bHku IEluIG91ciBvcGluaW9uLCBldmVuIHdpdGggZXF1aXZhbGVudCBydW50aW1lIHBlcmZvcm1hbmNl IGFuZCBtZW1vcnkgdXNhZ2UsIHRoZSBmdXR1cmUgYmVuZWZpdHMgb2YgdGhpcyBhcHByb2FjaCBt YWtlIHRoZSBjaGFuZ2Ugc2VlbSB3b3J0aHdoaWxlLgoKIyMgRmVlZGJhY2sKCklmIHlvdSBoYXZl IGFueSBmZWVkYmFjaywgY29tbWVudHMsIG9yIHF1ZXN0aW9ucywgcGxlYXNlIGxldCB1cyBrbm93 IGFuZCB3ZSdsbCBkbyBvdXIgYmVzdCB0byBhZGRyZXNzIGl0LiBUaGFuayB5b3UhCgotLS1GaWxl cy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm9iamVjdC1zaGFwZXMucGF0Y2ggKDE4 MCBLQikKCgotLSAKaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcvCg==