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.0 required=3.0 tests=AWL,BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_DNSWL_MED,SPF_HELO_PASS,SPF_PASS,UNPARSEABLE_RELAY 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 7B6251F910 for ; Mon, 7 Nov 2022 18:26:31 +0000 (UTC) Authentication-Results: dcvr.yhbt.net; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ruby-lang.org header.i=@ruby-lang.org header.b="PbVSGaEZ"; dkim-atps=neutral Received: from neon.ruby-lang.org (localhost [IPv6:::1]) by neon.ruby-lang.org (Postfix) with ESMTP id BD55D1215EF; Tue, 8 Nov 2022 03:26:29 +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 5272A12157B for ; Tue, 8 Nov 2022 03:26:25 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ruby-lang.org; h=from:references:subject:mime-version:content-type: content-transfer-encoding:list-id:to:cc; s=s1; bh=zwU/raicqYbnSulQSfQCq0CLu+M6IBwvh5ILklIrdiU=; b=PbVSGaEZWMaVyJqjV8VwWTY8gR7VKQwa5K19628YsUbH7N2cKQEtz7JNi+FNaOJANAK7 771NPaxHUBw1w1rUbNfazAH+OBCXM5yBimSR5Uci4zlFof7QulEf3GXqqY0kXEHamyJhFL ajgmCQjPyPGHFkXP6WbQVJF7AseKqlHfT+gOxOZTnDerm5Eamp0dGMTC/fMj834mbev4xt vLJ+cYro7QU1/BWpb4LjTt4H62e5OcAVXzPra82K3w+MEQnMtOokO6eCAXKzliU6RhfHYM OfRHPeofLuc1rUO4RfvEP/WUF5UTC+l9O2WZwGt4lzg991HoAHA+trVS4Vr+Dybw== Received: by filterdrecv-6b9548745c-6nb2k with SMTP id filterdrecv-6b9548745c-6nb2k-1-63694DCF-35 2022-11-07 18:26:23.853712341 +0000 UTC m=+605466.396157645 Received: from herokuapp.com (unknown) by geopod-ismtpd-1-0 (SG) with ESMTP id HfDO56NNTL2mNdSt68CUbg for ; Mon, 07 Nov 2022 18:26:23.832 +0000 (UTC) Date: Mon, 07 Nov 2022 18:26:23 +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: 19104 X-Redmine-Issue-Author: make_now_just 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: 87101 X-SG-EID: =?us-ascii?Q?DvL3W2Xo+Vk=2FeUn3F50L=2FNc8u9NqZCnbE0mXZHiyye4R1YZg=2FtAFc0SAFzpcS=2F?= =?us-ascii?Q?Zcr7BqPN=2FYCcMZBMITNeIci9STxYay0JAJWPbek?= =?us-ascii?Q?rFR+qWf5c6i+Njoiv3bOE9qv+RHBSWO88vO4z5F?= =?us-ascii?Q?finhBUeCwHhgZ3RmzLZqjbtnxsfCdUbYtBh6Zd+?= =?us-ascii?Q?OayFz2xkC0Lr=2FU=2Fe6pJ1Lx=2FBR+wWN0ZFEUYvPlE?= =?us-ascii?Q?rwOdKra3q58VXDOrSeQvst1QuaSxQFYMaWNXI6c?= =?us-ascii?Q?LmMh=2F1P3Jtzih2Lz9efMw=3D=3D?= To: ruby-core@neon.ruby-lang.org X-Entity-ID: b/2+PoftWZ6GuOu3b0IycA== X-ML-Name: ruby-core X-Mail-Count: 110644 Subject: [ruby-core:110644] [Ruby master Feature#19104] Introduce the cache-based optimization for Regexp matching 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" SXNzdWUgIzE5MTA0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgRXJlZ29uIChCZW5vaXQgRGFsb3plKS4N Cg0KDQpGcm9tIGh0dHBzOi8vYnVncy5ydWJ5LWxhbmcub3JnL2lzc3Vlcy8xOTA3NCNub3RlLTYg ZnJvbSBAbWFtZToNCj4gLi4uICgyKSBzaG91bGQgd2UgcHJvdmlkZSBhIHdheSB0byB0ZWxsIHVz ZXJzIGlmIGEgZ2l2ZW4gcmVnZXhwIGlzIG9wdGltaXphYmxlIG9yIG5vdCAoZS5nLiwgYSB3YXJu aW5nIGF0IHVub3B0aW1pemFibGUgcmVnZXhwIGNyZWF0aW9uLCBhIG5ldyBBUEkgbGlrZSBgUmVn ZXhwI29wdGltaXphYmxlP2AsIG9yIGEgbmV3IG9wdC1pbiBSZWdleHAgZmxhZyBgL2Zvby9yYCB0 byByYWlzZSBhIFN5bnRheEVycm9yIHdoZW4gaXQgaXMgbm90IG9wdGltaXphYmxlLCBldGMuKQ0K DQpJIHRoaW5rIGEgY29tbWFuZC1saW5lIGZsYWcgb3IgYSBuZXcgd2FybmluZyBjYXRlZ29yeSBp cyBiZXN0IGZvciB0aGlzLg0KRm9yIGluc3RhbmNlIEkgZW52aXNpb25lZCBgLS13YXJuLXNsb3ct cmVnZXhwc2AgaW4gaHR0cHM6Ly9lcmVnb24ubWUvYmxvZy9hc3NldHMvcmVzZWFyY2gvanVzdC1p bi10aW1lLWNvbXBpbGluZy1ydWJ5LXJlZ2V4cHMtb24tdHJ1ZmZsZXJ1YnkucGRmIHNsaWRlIDE4 Lg0KQSB3YXJuaW5nIGNhdGVnb3J5IGlzIG5pY2UgYmVjYXVzZSBpdCBjYW4gYmUgdXNlZCB0byBl LmcuIHJhaXNlIGEgZXhjZXB0aW9uIG9uIHN1Y2ggc2xvdyBSZWdleHBzIGFuZCBzbyBlbnN1cmUg YW4gYXBwbGljYXRpb24gZG9lc24ndCB1c2UgYW55IHN1Y2ggUmVnZXhwLg0KDQoiYSBuZXcgQVBJ IGxpa2UgYFJlZ2V4cCNvcHRpbWl6YWJsZT9gIiBzZWVtcyB1c2VsZXNzIHRvIG1lLCB0aGUgdmFs dWUgb2YgdGhpcyBpcyBjaGVja2luZyBhbGwgUmVnZXhwcyBpbiB0aGUgc3lzdGVtIGNhbiBiZSBl ZmZpY2llbnRseSBleGVjdXRlZC4NClNhbWUgcHJvYmxlbSB3aXRoIHRoZSBvcHQtaW4gZmxhZywg dG8gYmUgdXNlZnVsIGl0IG5lZWRzIHRvIGFwcGx5IHRvIGFsbCBSZWdleHBzLg0KDQpXZSBuZWVk IHRvIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBzZXQgb2YgInNsb3cgcmVnZXhwcyIgY2FuIGNoYW5n ZSBwZXIgUnVieS9SZWdleHAgaW1wbGVtZW50YXRpb24gYW5kIG92ZXIgdGltZS4NCkFsdGhvdWdo IGl0IHNlZW1zIGl0J3MgdmVyeSB2ZXJ5IHNpbWlsYXIgZmVhdHVyZXMgYmVpbmcgcHJvYmxlbWF0 aWMgYmV0d2VlbiB0aGlzIGFwcHJvYWNoIGFuZCBodHRwczovL2VyZWdvbi5tZS9ibG9nL2Fzc2V0 cy9yZXNlYXJjaC9qdXN0LWluLXRpbWUtY29tcGlsaW5nLXJ1YnktcmVnZXhwcy1vbi10cnVmZmxl cnVieS5wZGYgc2xpZGUgMTEuDQoNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0NCkZlYXR1cmUgIzE5MTA0OiBJbnRyb2R1Y2UgdGhlIGNhY2hlLWJhc2VkIG9wdGltaXph dGlvbiBmb3IgUmVnZXhwIG1hdGNoaW5nDQpodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1 ZXMvMTkxMDQjY2hhbmdlLTk5OTg1DQoNCiogQXV0aG9yOiBtYWtlX25vd19qdXN0IChLaXRzdW5l IFRTVVlVU0FUTykNCiogU3RhdHVzOiBPcGVuDQoqIFByaW9yaXR5OiBOb3JtYWwNCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NClJlZ2V4cCBtYXRjaGluZyBjYXVzZXMg YSB0aW1lLWNvbXBsZXhpdHkgZXhwbG9zaW9uIHByb2JsZW0gYXMga25vd24gYXMgUmVEb1MgKFto dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZURvU10oaHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvUmVEb1MpKS4gUmVEb1MgaGFzIGJlY29tZSBzZXJpb3VzIHZ1bG5lcmFiaWxpdHkg aW4gbWFueSBwbGFjZXMgaW4gcmVjZW50IHllYXJzLCBhbmQgUnVieSBpcyBubyBleGNlcHRpb24u IFRoZSBmb2xsb3dpbmcgaXMgdGhlIGluY29tcGxldGUgbGlzdCBvZiBzdWNoIHZ1bG5lcmFiaWxp dHkgcmVwb3J0czoNCg0KLSBbaHR0cHM6Ly9naXRodWIuY29tL3NpbmF0cmEvc2luYXRyYS9wdWxs LzE4MjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5hdHJhL3NpbmF0cmEvcHVsbC8xODIzKQ0KLSBb aHR0cHM6Ly9naXRodWIuY29tL2xvc3Rpc2xhbmQvZmFyYWRheS1uZXRfaHR0cC9wdWxsLzI3XSho dHRwczovL2dpdGh1Yi5jb20vbG9zdGlzbGFuZC9mYXJhZGF5LW5ldF9odHRwL3B1bGwvMjcpDQoN ClRoZXNlIHJlcG9ydHMgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSBmaXhpbmcgdGhlIGxpYnJhcnkv c29mdHdhcmUgaW1wbGVtZW50YXRpb24uIEJ1dCwgaWYgdGhlIGxhbmd1YWdl4oCZcyBSZWdleHAg aW1wbGVtZW50YXRpb24gYmVjb21lcyBzYWZlLCB0aGUgdnVsbmVyYWJpbGl0eSBpcyBmdW5kYW1l bnRhbGx5IGFyY2hpdmVkLg0KDQpGb3IgYSBmZXcgbW9udGhzLCBSdWJ5IGhhcyBpbXBsZW1lbnRl ZCBhIFJlZ2V4cCBtYXRjaGluZyB0aW1lb3V0IChbaHR0cHM6Ly9idWdzLnJ1YnktbGFuZy5vcmcv aXNzdWVzLzE3ODM3XShodHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy9pc3N1ZXMvMTc4MzcpKS4g SXQgaXMgb25lIG9mIHRoZSB1c2VmdWwgbWV0aG9kcyBmb3IgcHJldmVudGluZyBSZURvUyB2dWxu ZXJhYmlsaXR5LCBidXQgaXQgaXMgYSBwcm9ibGVtIHRoYXQgc2V0dGluZyBhIGNvcnJlY3QgdGlt ZW91dCB2YWx1ZSBpcyBoYXJkLiBUaGlzIHZhbHVlIGlzIGRlcGVuZGluZyBvbiBpbnB1dCBsZW5n dGgsIGVudmlyb25tZW50LCBuZXR3b3JrIHN0YXR1cywgc3lzdGVtIGxvYWQsIGV0Yy4gV2hlbiB0 aGUgdmFsdWUgaXMgdG9vIHNtYWxsLCBhIHN5c3RlbSBtYXkgYmUgYnJva2VuLCBidXQgd2hlbiB0 aGUgdmFsdWUgaXMgdG9vIGxhcmdlLCBpdCBpcyBub3QgdXNlZnVsIGZvciBwcmV2ZW50aW5nIFJl RG9TLg0KDQpUaGVyZWZvcmUsIGFzIGEgbmV3IHdheSB0byBwcmV2ZW50IFJlRG9TLCB3ZSBwcm9w b3NlIHRvIGludHJvZHVjZSBjYWNoZS1iYXNlZCBvcHRpbWl6YXRpb24gZm9yIFJlZ2V4cCBtYXRj aGluZy4gQXMgQ1MgZnVuZGFtZW50YWwga25vd2xlZGdlLCBhdXRvbWF0b24gbWF0Y2hpbmcgcmVz dWx0IGRlcGVuZHMgb24gdGhlIHBvc2l0aW9uIG9mIGlucHV0IGFuZCBzdGF0ZS4gSW4gYWRkaXRp b24sIG1hdGNoaW5nIHRpbWUgZXhwbG9zaW9uIGlzIGNhdXNlZCBmb3IgcmVwZWF0aW5nIHRvIGFy cml2ZSBhdCB0aGUgc2FtZSBwb3NpdGlvbiBhbmQgc3RhdGUgbWFueSB0aW1lcy4gVGhlbiwgUmVE b1MgY2FuIGJlIHByZXZlbnRlZCB3aGVuIHBhaXJzIG9mIHBvc2l0aW9uLCBhbmQgc3RhdGUgYXJy aXZlZCBvbmNlIGlzIHJlY29yZGVkIChjYWNoZWQpLiBJbiBmYWN0LCB1bmRlciBzdWNoIGFuIG9w dGltaXphdGlvbiwgaXQgaXMga25vd24gYXMgdGhlIG1hdGNoaW5nIHRpbWUgY29tcGxleGl0eSBp cyBsaW5lYXIgYWdhaW5zdCBpbnB1dCBzaXplIFsxXS4NCg0KWzFdOiBEYXZpcywgSmFtZXMgQy4s IEZyYW5jaXNjbyBTZXJ2YW50LCBhbmQgRG9uZ3lvb24gTGVlLiAiVXNpbmcgc2VsZWN0aXZlIG1l bW9pemF0aW9uIHRvIGRlZmVhdCByZWd1bGFyIGV4cHJlc3Npb24gZGVuaWFsIG9mIHNlcnZpY2Ug KFJlRG9TKS4iICoyMDIxIElFRUUgc3ltcG9zaXVtIG9uIHNlY3VyaXR5IGFuZCBwcml2YWN5IChT UCkqLiBJRUVFLCAyMDIxLiBbaHR0cHM6Ly93d3cuY29tcHV0ZXIub3JnL2NzZGwvcHJvY2VlZGlu Z3MtYXJ0aWNsZS9zcC8yMDIxLzg5MzQwMGE1NDMvMW9hazk4OFRodk9dKGh0dHBzOi8vd3d3LmNv bXB1dGVyLm9yZy9jc2RsL3Byb2NlZWRpbmdzLWFydGljbGUvc3AvMjAyMS84OTM0MDBhNTQzLzFv YWs5ODhUaHZPKQ0KDQpTZWUgdGhlIGZvbGxvd2luZyBleGFtcGxlLg0KDQpgYGBiYXNoDQokIHJ1 YnkgLS12ZXJzaW9uDQpydWJ5IDMuMi4wcHJldmlldzIgKDIwMjItMDktMDkgbWFzdGVyIDM1Y2Zj OWEzYmIpIFthcm02NC1kYXJ3aW4yMV0NCg0KJCB0aW1lIHJ1YnkgLWUgJy9eKGF8YSkqJC8gPX4g ImEiICogMjggKyAiYiInDQpydWJ5IC1lICcvXihhfGEpKiQvID1+ICJhIiAqIDI4ICsgImIiJyAg OC40OXMgdXNlciAwLjA0cyBzeXN0ZW0gOTglIGNwdSA4LjY2MyB0b3RhbA0KDQokIC4vbWluaXJ1 YnkgLS12ZXJzaW9uDQpydWJ5IDMuMi4wZGV2ICgyMDIyLTEwLTI3VDEzOjM5OjU2WiByZWNhY2hl IGJjNTliN2NjMWUpIFthcm02NC1kYXJ3aW4yMV0NCg0KJCB0aW1lIC4vbWluaXJ1YnkgLWUgJy9e KGF8YSkqJC8gPX4gImEiICogMjggKyAiYiInDQouL21pbmlydWJ5IC1lICcvXihhfGEpKiQvID1+ ICJhIiAqIDI4ICsgImIiJyAgMC4wMXMgdXNlciAwLjAxcyBzeXN0ZW0gOCUgY3B1IDAuMzEwIHRv dGFsDQpgYGANCg0KSW4gdGhpcyBleGFtcGxlLCB1c2luZyBydWJ5IHYzLjIuMC1wcmV2aWV3Miwg bWF0Y2hpbmcgYC9eKGF8YSkqJC9gIGFnYWluc3QgYCJhIiAqIDI4ICsgImIiYCB0YWtlcyA4LjYg c2Vjb25kcyBiZWNhdXNlIG1hdGNoaW5nIHRpbWUgb2YgdGhpcyBSZWdleHAgdGFrZXMgZXhwb25l bnRpYWxseSBhZ2FpbnN0IGAiYSIgKiBOICsgImIiYCBmb3JtIHN0cmluZy4gQnV0LCB1c2luZyB0 aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIHJ1YnksIGl0IHRha2VzIDAuMDEgc2Vjb25kcy4gSW5jcmVk aWJseSBpdCBpcyA4NjAgdGltZXMgZmFzdGVyIGJlY2F1c2UgbWF0Y2hpbmcgaXMgZG9uZSBpbiBs aW5lYXIgdGltZS4NCg0KQnkgdGhpcyBvcHRpbWl6YXRpb24sIHRoZSBtYXRjaGluZyB0aW1lIGlz IGxpbmVhciB0byB0aGUgaW5wdXQgc2l6ZS4gSXQgc291bmRzIHNlY3VyZSBhbmQgZ29vZC4gVW5m b3J0dW5hdGVseSwgd2hlbiBSZWdleHAgdXNlcyBzb21lIGV4dGVuc2lvbiAoZS5nLiBsb29rLWFy b3VuZCwgYmFjay1yZWZlcmVuY2UsIHN1YmV4cHJlc3Npb24gY2FsbCksIHRoZSBvcHRpbWl6YXRp b24gaXMgbm90IGFwcGxpZWQuIEFsc28sIHRoZSBvcHRpbWl6YXRpb24gbmVlZHMgYSBiaXQgbW9y ZSBtZW1vcnkgZm9yIGNhY2hpbmcuIEhvd2V2ZXIsIHdlIGhhdmUgYWxyZWFkeSBpbnZlc3RpZ2F0 ZWQgdGhhdCB0aGV5IGFyZSBub3Qgc28gdGhlIG1ham9yIHByb2JsZW1zIChTZWUgdGhlICJMaW1p dGF0aW9uIiBzZWN0aW9uKS4NCg0KIyMgSW1wbGVtZW50YXRpb24NCg0KVGhlIGJhc2ljIGNhY2hl IGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIGF0IHRoaXMgdGltZSBhbmQgY2FuIGJlIGZvdW5k IGluIHRoZSBmb2xsb3dpbmcgUHVsbCBSZXF1ZXN0Lg0KDQpbaHR0cHM6Ly9naXRodWIuY29tL3J1 YnkvcnVieS9wdWxsLzY0ODZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2 KQ0KDQpTb21lIHRlc3RzIHNlZW0gdG8gYmUgZmFpbGVkLCBidXQgaXQgaXMgbm8gcHJvYmxlbSEg QmVjYXVzZSB0aGUgZmFpbGVkIHRlc3RzIGFyZSBmb3IgUmVnZXhwIHRpbWVvdXQsIG9wdGltaXph dGlvbiB3b3JrcyBjb3JyZWN0bHkgYW5kIHNvIHRoZXkgZmFpbGVkIGFzIGV4cGVjdGVkLiBPZiBj b3Vyc2UsIHdlIG5lZWQgdG8gZml4IHRoZXNlIHRlc3RzIGJlZm9yZSBtZXJnaW5nLg0KDQpJbXBs ZW1lbnRhdGlvbiBub3RlczoNCg0KLSBBIG51bGwtY2hlY2sgb24gbG9vcCBjYXVzZXMgbm9uLWxp bmVhciBiZWhhdmlvciwgc28gdGhlIGZpZWxkIHRvIGluZGV4IHRoZSBsYXRlc3QgbnVsbC1jaGVj ayBpdGVtIG9uIHRoZSBzdGFjayBpcyBhZGRlZCB0byBPbmlnU3RhY2tUeXBlLiAoW2h0dHBzOi8v Z2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2L2ZpbGVzI2RpZmYtNDM0NzQ2MGUzNzljZDk3 MGJhMGI4OGI0YWNiMjE1ZWE2MGNiYWUzMDgxMjQ2NzVkZTg4MTFlZWQzNzczNjdhYVI4MzFdKGh0 dHBzOi8vZ2l0aHViLmNvbS9ydWJ5L3J1YnkvcHVsbC82NDg2L2ZpbGVzI2RpZmYtNDM0NzQ2MGUz NzljZDk3MGJhMGI4OGI0YWNiMjE1ZWE2MGNiYWUzMDgxMjQ2NzVkZTg4MTFlZWQzNzczNjdhYVI4 MzEpKQ0KLSBXaGVuIHRoZSBsb29wIGlzIG51bGwgYW5kIHRoaXMgbG9vcCBoYXMgYSBjYXB0dXJl LCBtYXRjaGluZyBiZWhhdmVzIGFzIGEgbW9ub21hbmlhYy4gVG8gcmVwcm9kdWNlIHRoaXMgYmVo YXZpb3IsIGNhY2hlcyBpbiB0aGUgbG9vcCBpcyBjbGVhcmVkIGFzIG5lY2Vzc2FyeS4gKFtodHRw czovL2dpdGh1Yi5jb20vcnVieS9ydWJ5L3B1bGwvNjQ4Ni9maWxlcyNkaWZmLWMzY2ZlMTllZmZm MGNjNTE4MTM4NDc0MTM4NjA2N2I4MWVhZGIyNTA1YjhiOWIzZjk4MGQxMGY4MTUwMzczOTVSMzQz M10oaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9wdWxsLzY0ODYvZmlsZXMjZGlmZi1jM2Nm ZTE5ZWZmZjBjYzUxODEzODQ3NDEzODYwNjdiODFlYWRiMjUwNWI4YjliM2Y5ODBkMTBmODE1MDM3 Mzk1UjM0MzMpKQ0KTGlrZSBhIGZsaXAtZmxvcCBvcGVyYXRvciwgd2UgaG9wZSB0byBkcm9wIHRo aXMgaWYgcG9zc2libGUuIEJ1dCBpdCBzdGlsbCByZW1haW5zIGJhY2t3YXJkIGNvbXBhdGliaWxp dHkuDQoNCiMjIyBMaW1pdGF0aW9uDQoNCkNhY2hlLWJhc2VkIG9wdGltaXphdGlvbiBpcyBub3Qg YXBwbGllZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOg0KDQoxLiBSZWdleHAgdXNpbmcgc29tZSBl eHRlbnNpb25zIChiYWNrLXJlZmVyZW5jZSBhbmQgc3ViZXhwcmVzc2lvbiBjYWxsLCBsb29rLWFy b3VuZCwgYXRvbWljLCBhYnNlbnQgb3BlcmF0b3JzKSBpcyBub3Qgb3B0aW1pemVkIGJlY2F1c2Ug aXQgaXMgaW1wb3NzaWJsZSBvciBoYXJkLiBIb3dldmVyLCBpdCBtYXkgYmUgcG9zc2libGUgZm9y IGxvb2stYXJvdW5kIG9wZXJhdG9ycy4NCjIuIEEgYm91bmRlZCBvciBmaXhlZCB0aW1lcyByZXBl dGl0aW9uIG5lc3RpbmcgaW4gYW5vdGhlciByZXBldGl0aW9uIChlLmcuIGAvKGF7MiwzfSkqL2Ap LiBJdCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBpc3N1ZSBlbnRpcmVseSwgYnV0IHdlIGJlbGlldmUg aXQgaXMgaGFyZCB0byBzdXBwb3J0IHRoaXMgY2FzZSBjb3JyZWN0bHkuDQozLiBCb3VuZGVkIG9y IGZpeGVkIHRpbWVzIHJlcGV0aXRpb24gaXMgdG9vIGxhcmdlIChlLmcuIGAvKGF8Yil7MTAwMDAw LDIwMDAwMH0vYCkuIFRoZSBjYWNoZSB0YWJsZSBzaXplIGlzIHByb3BvcnRpb25hbCB0byB0aGUg cHJvZHVjdCBvZiB0aGUgbnVtYmVyIG9mIGNhY2hlIHBvaW50cyBvZiByZWdleCBhbmQgaW5wdXQg c2l6ZS4gSW4gdGhpcyBjYXNlLCBzaW5jZSB0aGUgbnVtYmVyIG9mIGNhY2hlIHBvaW50cyBiZWNv bWVzIHRvbyBsYXJnZSwgdGhlIG9wdGltaXphdGlvbiBjYW5ub3QgYmUgYXBwbGllZC4NCg0KRXhw ZXJpbWVudHMgd2VyZSBjb25kdWN0ZWQgdG8gaW52ZXN0aWdhdGUgaG93IHRoZXNlIGxpbWl0YXRp b25zIGFyZSBwcm9ibGVtYXRpYyBpbiBwcmFjdGljZS4gV2UgdXNlZCBPYmplY3RTcGFjZSB0byBj b2xsZWN0IFJlZ2V4cHMgYW5kIGludmVzdGlnYXRlIHdoZXRoZXIgdGhleSBjb3VsZCBiZSBvcHRp bWl6ZWQgYW5kIHRoZSBudW1iZXIgb2YgY2FjaGUgcG9pbnRzLiBSZWdleHBzIHdlcmUgY29sbGVj dGVkIGZyb20gdGhlIHN0YW5kYXJkIGxpYnJhcnksIFdlYnJpY2ssIGFuZCBSYWlscy4gU2VlIHRo ZSBmb2xsb3dpbmcgZ2lzdCBmb3IgdGhlIGRldGFpbHMgKFtodHRwczovL2dpc3QuZ2l0aHViLmNv bS9tYWtlbm93anVzdC84M2UxZTc1YTJkN2RlOGI5NTZlOTNiZGFjMDA0YTA2Yl0oaHR0cHM6Ly9n aXN0LmdpdGh1Yi5jb20vbWFrZW5vd2p1c3QvODNlMWU3NWEyZDdkZThiOTU2ZTkzYmRhYzAwNGEw NmIpKS4NCg0KVGhlIGV4cGVyaW1lbnRzIHJlc3VsdCBpcyBzaG93biBpbiB0aGUgZm9sbG93aW5n IHRhYmxlLg0KDQp8IENvbGxlY3RlZCBmcm9tIHwgIyBSZWdleHAgfCAjIG5vbi1vcHRpbWl6YWJs ZSB8IE1heGltdW0gbnVtYmVyIG9mIGNhY2hlIHBvaW50cyB8DQp8IC0tLSB8IC0tLSB8IC0tLSB8 IC0tLSB8DQp8IHN0ZGxpYiB8IDEwMDkgfCA4NiAoOC41MiUpIHwgODEgfA0KfCBXZWJyaWNrIHwg MzU2IHwgNDQgKDEyLjM2JSkgfCAyMCB8DQp8IFJhaWxzIHwgNzU5IHwgNzQgKDcuNzUlKSB8IDI3 IHwNCnwgVG90YWwgPGJyPiAoRHVwbGljYXRpb25zIGFyZSByZWR1Y2VkKSB8IDE1MDYgfCAxMTgg KDcuODQlKSB8IDgxIHwNCg0KVGhpcyByZXN1bHQgc2hvd3MgdGhhdCB0aGUgcGVyY2VudGFnZSBv ZiBub24tb3B0aW1pemFibGUgUmVnZXhwIGlzIGxlc3MgdGhhbiAxMCUsIGFuZCB0aGUgYW1vdW50 IG9mIG1lbW9yeSB1c2VkIGZvciBvcHRpbWl6YXRpb24gaXMgYWJvdXQgMTAgdGltZXMgdGhlIGxl bmd0aCBvZiB0aGUgc3RyaW5nICg4MS84LCBmb3IgYSBiaXQgYXJyYXkpIGF0IHdvcnN0IGluIHRo aXMgY2FzZS4gSXQgaXMgY29uc2lkZXJlZCB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgUmVn ZXhwIGNhbiBiZSBvcHRpbWl6ZWQgaW4gcHJhY3RpY2UuDQoNCiMjIFNwZWNpZmljYXRpb24NCg0K VGhlIGRldGFpbGVkIHNwZWNpZmljYXRpb24gaGFzIGJlZW4gZml4ZWQgeWV0LiBXZSBoYXZlIHNv bWUgaWRlYXMgYW5kIHdlIHdvdWxkIGxpa2UgdG8gZGlzY3VzcyB0aGVtLg0KDQotIFdoZW4gaXMg b3B0aW1pemF0aW9uIGVuYWJsZWQ/IEN1cnJlbnRseSwgaXQgdHVybnMgb24gd2hlbiB0aGUgYmFj a3RyYWNrIGNhdXNlcyBhcyBtYW55IGFzIHRoZSBpbnB1dCBsZW5ndGguDQotIEhvdyB0aGUgbnVt YmVyIG9mIGNhY2hlIHBvaW50cyBpcyBhbGxvd2VkLCBhbmQgaG93IG1lbW9yeSBjYW4gYmUgYWxs b2NhdGVkPyBJdCBpcyBub3QgZGV0ZXJtaW5lZCBmb3Igbm93Lg0KLSBJZiB0aGUgYWJvdmUgcGFy YW1ldGVycyBjYW4gYmUgc3BlY2lmaWVkIGJ5IHVzZXJzLCBob3cgYXJlIHRoZXkgc3BlY2lmaWVk PyAodmlhIGNvbW1hbmQtbGluZSBmbGFncywgb3Igc3RhdGljIC8gaW5zdGFuY2UgcGFyYW1ldGVy cyBsaWtlIGBSZWdleHAjLnRpbWVvdXQ9YCBhbmQgYFJlZ2V4cCN0aW1lb3V0PWApDQotIFVubGVz cyB0aGUgaW5wdXQgc2l6ZSBpcyB0b28gbGFyZ2UsIHRoZSBhdmFpbGFiaWxpdHkgb2Ygb3B0aW1p emF0aW9uIGNhbiBiZSBkZXRlcm1pbmVkIG9uIGNvbXBpbGUtdGltZS4gU28sIHdlIHdvdWxkIGxp a2UgdG8gYWRkIGEgbmV3IGZsYWcgdG8gUmVnZXhwIHRvIGRldGVybWluZSB3aGV0aGVyIGEgY2Fj aGUgaXMgYXZhaWxhYmxlLiBJdCBiZWNvbWVzIG9uZSBvZiB0aGUgY3JpdGVyaWEgZm9yIHdoZXRo ZXIgUmVnZXhwIGlzIGVmZmljaWVudGx5IGV4ZWN1dGFibGUgb3Igbm90LiBXZSBiZWxpZXZlIGl0 IGhlbHBzIHVzZXJzLiBUaHVzLCB3aGljaCBsZXR0ZXIgaXMgcHJlZmVycmVkIGZvciB0aGlzIHB1 cnBvc2U/IGBsYCAobGluZWFyKSBvciBgcmAgKHJlZ3VsYXIpIHNvdW5kcyBnb29kLCBidXQgSSBh bSBub3Qgc3VyZSB3aGljaCBpcyB0aGUgYmVzdC4NCg0KVGhhbmsgeW91Lg0KDQoNCg0KLS0gDQpo dHRwczovL2J1Z3MucnVieS1sYW5nLm9yZy8NCg==