From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Mattias =?ISO-8859-1?Q?Engdeg=E5rd?= Newsgroups: gmane.emacs.devel Subject: Re: regular expressions that match nothing Date: Tue, 14 May 2019 12:14:52 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-gYFlgUffPskyz/5CXx5b" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="151814"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Evolution 3.30.5 (3.30.5-1.fc29) Cc: acm@muc.de To: philippe schnoebelen , emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue May 14 12:16:27 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hQUTy-000dJm-GT for ged-emacs-devel@m.gmane.org; Tue, 14 May 2019 12:16:27 +0200 Original-Received: from localhost ([127.0.0.1]:44847 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQUTx-0007lD-Hz for ged-emacs-devel@m.gmane.org; Tue, 14 May 2019 06:16:25 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:54762) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQUSw-0007hw-MK for emacs-devel@gnu.org; Tue, 14 May 2019 06:15:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQUSp-0006bA-7h for emacs-devel@gnu.org; Tue, 14 May 2019 06:15:19 -0400 Original-Received: from mail234c50.megamailservers.eu ([91.136.10.244]:49270 helo=mail37c50.megamailservers.eu) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hQUSl-0005hw-IE for emacs-devel@gnu.org; Tue, 14 May 2019 06:15:13 -0400 X-Authenticated-User: mattiase@bredband.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu; s=maildub; t=1557828894; bh=uSzKwn+BY6Cq9zk6Md4XUEasFso4DdVGQ1l8btURcVY=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Fo7+45nebGE0ArG2e27JvRd5qSrjrmSW5Md4n8zhepbMD++21yFDoyHqFZSBYaNIs NcBFomJRjjjNgztqeSgJSaZRbYoEVQKPtEFHoj33uRayJhWRimabrgDUWzqQZbH1+I vO0PMXaH49zE13/ck1iJNZBeua2ePGPPL8pfliz8= Feedback-ID: mattiase@acm.or Original-Received: from dhcppc0 (c-e636e253.032-75-73746f71.bbcust.telenor.se [83.226.54.230]) (authenticated bits=0) by mail37c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id x4EAEque029593; Tue, 14 May 2019 10:14:54 +0000 In-Reply-To: X-CTCH-RefID: str=0001.0A0B0213.5CDA951E.006E, ss=1, re=0.000, recu=0.000, reip=0.000, cl=1, cld=1, fgs=0 X-CTCH-VOD: Unknown X-CTCH-Spam: Unknown X-CTCH-Score: 0.000 X-CTCH-Flags: 0 X-CTCH-ScoreCust: 0.000 X-CSC: 0 X-CHA: v=2.3 cv=ItQwjo3g c=1 sm=1 tr=0 a=M+GU/qJco4WXjv8D6jB2IA==:117 a=M+GU/qJco4WXjv8D6jB2IA==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=8F3nriM-RJDiQjrGKqAA:9 a=QEXdDO2ut3YA:10 a=N54-gffFAAAA:8 a=0Rb75hbxPBK6jrAlE44A:9 a=UEZnLJIWFb4C8Wdic9J8r10ra3M=:19 a=B2y7HmGcmWMA:10 a=6l0D2HzqY3Epnrm8mE3f:22 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-Received-From: 91.136.10.244 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:236496 Archived-At: --=-gYFlgUffPskyz/5CXx5b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit tis 2019-05-14 klockan 09:25 +0200 skrev philippe schnoebelen: > I was wondering why (regexp-opt nil) uses a\` and not \'a or another > option like \=a\= so I did some profiling (see attached code). Thank you, and sorry about my bad initial attempt. I tried a few more, like [z-a], \c* and \sq, but these were no better. The distribution is decidedly bimodal; there seems to be no significant difference between the 'fast' ones, so I went with \`a\` in the attached patch. > Of course this may be dependent on the internals of the specific > regexp library at hand. I do not know enough to judge. In fact I > believe that a solid regular expression library should provide a > specific regular expression that matches nothing with special but > easy treatment that guarantees best response time. We could add a standard constant for it, like unmatchable-regexp, so that at least people don't keep reinventing it. We could also make (rx (or)) work. (It does in my complete rx rewrite.) --=-gYFlgUffPskyz/5CXx5b Content-Disposition: attachment; filename="0001-Use-faster-unmatchable-regexp.patch" Content-Type: text/x-patch; name="0001-Use-faster-unmatchable-regexp.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSA4YzI5NmNhZTZlMDM2MzQ4NWIxZjI0Yjc2ZTdmYjA2OTg0ZjMxMTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TWF0dGlhcz0yMEVuZ2RlZz1DMz1BNXJkPz0g PG1hdHRpYXNlQGFjbS5vcmc+CkRhdGU6IFR1ZSwgMTQgTWF5IDIwMTkgMTE6NDM6NDkgKzAyMDAK U3ViamVjdDogW1BBVENIXSBVc2UgZmFzdGVyIHVubWF0Y2hhYmxlIHJlZ2V4cAoKVGhlIHVubWF0 Y2hhYmxlIHJlZ2V4cCBhXGAgdXNlZCBpbiBtYW55IHBsYWNlcyBpcyB1bm5lY2Vzc2FyaWx5IHNs b3cgaW4Kc2VhcmNoaW5nICh1bmFuY2hvcmVkKSBtYXRjaGVzOyByZXBsYWNlIGl0IHdpdGggdGhl IGZhc3RlciBcYGFcYCBhcwpzdWdnZXN0ZWQgYnkgUGhpbGlwcGUgU2Nobm9lYmVsZW4uCgoqIGxp c3AvZW1hY3MtbGlzcC9yZWdleHAtb3B0LmVsIChyZWdleHAtb3B0KQoqIGxpc3AvcHJvZ21vZGVz L2NjLWRlZnMuZWwgKGNjLWNvbmRpdGlvbmFsLXJlcXVpcmUtYWZ0ZXItbG9hZCkKKGMtbWFrZS1r ZXl3b3Jkcy1yZSkKKiBsaXNwL3Byb2dtb2Rlcy9jYy1lbmdpbmUuZWwgKGMtYmVnaW5uaW5nLW9m LXN0YXRlbWVudC0xKQooYy1mb3J3YXJkLTw+LWFyZ2xpc3QtcmVjdXIsIGMtZm9yd2FyZC1kZWNs LW9yLWNhc3QtMSkKKGMtbG9va2luZy1hdC1kZWNsLWJsb2NrKQoqIGxpc3AvcHJvZ21vZGVzL2Nj LWZvbnRzLmVsIChjLWRvYy1saW5lLWpvaW4tcmUpCihjLWRvYy1icmlnaHQtY29tbWVudC1zdGFy dC1yZSkKKiBsaXNwL3Byb2dtb2Rlcy9jYy1sYW5ncy5lbCAoYy1wb3B1bGF0ZS1zeW50YXgtdGFi bGUpCihjLWFzc2lnbm1lbnQtb3AtcmVnZXhwKQooYy1ibG9jay1jb21tZW50LWVuZGVyLXJlZ2V4 cCwgYy1mb250LWxvY2stY29tbWVudC1lbmQtc2tpcCkKKGMtYmxvY2stY29tbWVudC1zdGFydC1y ZWdleHAsIGMtbGluZS1jb21tZW50LXN0YXJ0LXJlZ2V4cCkKKGMtZG9jLWNvbW1lbnQtc3RhcnQt cmVnZXhwLCBjLWRlY2wtc3RhcnQtY29sb24ta3dkLXJlKQooYy10eXBlLWRlY2wtcHJlZml4LWtl eSwgYy10eXBlLWRlY2wtb3BlcmF0b3ItcHJlZml4LWtleSkKKGMtcHJlLWlkLWJyYWNlbGlzdC1r ZXksIGMtZW51bS1jbGF1c2UtaW50cm9kdWN0aW9uLXJlKQooYy1ub25sYWJlbC10b2tlbi0yLWtl eSkKKiBsaXNwL3Byb2dtb2Rlcy9jYy1tb2RlLmVsIChjLWRvYy1mbC1kZWNsLXN0YXJ0LCBjLWRv Yy1mbC1kZWNsLWVuZCkKKiBsaXNwL3Byb2dtb2Rlcy9jYy12YXJzLmVsIChjLW5vaXNlLW1hY3Jv LXdpdGgtcGFyZW5zLW5hbWUtcmUpCihjLW5vaXNlLW1hY3JvLW5hbWUtcmUsIGMtbWFrZS1ub2lz ZS1tYWNyby1yZWdleHBzKQoqIGxpc3AvcHJvZ21vZGVzL29jdGF2ZS5lbCAob2N0YXZlLWhlbHAt bW9kZSk6ClVzZSBmYXN0ZXIgdW5tYXRjaGFibGUgcmVnZXhwLgoqIGxpc3AvdGV4dG1vZGVzL2lz cGVsbC5lbCAoaXNwZWxsLW5vbi1lbXB0eS1zdHJpbmcpOgpGaXggYnJva2VuICd1bm1hdGNoYWJs ZScgcmVnZXhwLgotLS0KIGxpc3AvZW1hY3MtbGlzcC9yZWdleHAtb3B0LmVsIHwgIDQgKystLQog bGlzcC9wcm9nbW9kZXMvY2MtZGVmcy5lbCAgICAgfCAgNiArKystLS0KIGxpc3AvcHJvZ21vZGVz L2NjLWVuZ2luZS5lbCAgIHwgIDggKysrKy0tLS0KIGxpc3AvcHJvZ21vZGVzL2NjLWZvbnRzLmVs ICAgIHwgIDQgKystLQogbGlzcC9wcm9nbW9kZXMvY2MtbGFuZ3MuZWwgICAgfCAyNiArKysrKysr KysrKysrLS0tLS0tLS0tLS0tLQogbGlzcC9wcm9nbW9kZXMvY2MtbW9kZS5lbCAgICAgfCAgNCAr Ky0tCiBsaXNwL3Byb2dtb2Rlcy9jYy12YXJzLmVsICAgICB8ICA4ICsrKystLS0tCiBsaXNwL3By b2dtb2Rlcy9vY3RhdmUuZWwgICAgICB8ICAyICstCiBsaXNwL3RleHRtb2Rlcy9pc3BlbGwuZWwg ICAgICB8ICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDMyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2xpc3AvZW1hY3MtbGlzcC9yZWdleHAtb3B0LmVsIGIvbGlz cC9lbWFjcy1saXNwL3JlZ2V4cC1vcHQuZWwKaW5kZXggZDg4Mzc1MmQ3MS4uMjIwYTRiZmE3YSAx MDA2NDQKLS0tIGEvbGlzcC9lbWFjcy1saXNwL3JlZ2V4cC1vcHQuZWwKKysrIGIvbGlzcC9lbWFj cy1saXNwL3JlZ2V4cC1vcHQuZWwKQEAgLTE0NCw5ICsxNDQsOSBAQCByZWdleHAtb3B0CiAJCQkg ICAgKHNvcnQgKGNvcHktc2VxdWVuY2Ugc3RyaW5ncykgJ3N0cmluZy1sZXNzcCkpKQogCSAgIChy ZQogICAgICAgICAgICAgKGNvbmQKLSAgICAgICAgICAgICA7OyBObyBzdHJpbmdzOiByZXR1cm4g YVxgIHdoaWNoIGNhbm5vdCBtYXRjaCBhbnl0aGluZy4KKyAgICAgICAgICAgICA7OyBObyBzdHJp bmdzOiByZXR1cm4gXGBhXGAgd2hpY2ggY2Fubm90IG1hdGNoIGFueXRoaW5nLgogICAgICAgICAg ICAgICgobnVsbCBzdHJpbmdzKQotICAgICAgICAgICAgICAoY29uY2F0IChvciBvcGVuICJcXCg/ OiIpICJhXFxgXFwpIikpCisgICAgICAgICAgICAgIChjb25jYXQgKG9yIG9wZW4gIlxcKD86Iikg IlxcYGFcXGBcXCkiKSkKICAgICAgICAgICAgICA7OyBJZiB3ZSBjYW5ub3QgcmVvcmRlciwgZ2l2 ZSB1cCBhbGwgYXR0ZW1wdHMgYXQKICAgICAgICAgICAgICA7OyBvcHRpbWlzYXRpb24uICBUaGVy ZSBpcyByb29tIGZvciBpbXByb3ZlbWVudCAoQnVnIzM0NjQxKS4KICAgICAgICAgICAgICAoKGFu ZCBrZWVwLW9yZGVyIChyZWdleHAtb3B0LS1jb250YWlucy1wcmVmaXggc29ydGVkLXN0cmluZ3Mp KQpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvY2MtZGVmcy5lbCBiL2xpc3AvcHJvZ21vZGVz L2NjLWRlZnMuZWwKaW5kZXggY2Q0ZWQ2YjM1Mi4uMWFlMzI4ZDRmZiAxMDA2NDQKLS0tIGEvbGlz cC9wcm9nbW9kZXMvY2MtZGVmcy5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9jYy1kZWZzLmVsCkBA IC04MSw3ICs4MSw3IEBACiAgIChwcm9nbgogICAgIChyZXF1aXJlICdmb250LWxvY2spCiAgICAg KGxldCAoZm9udC1sb2NrLWtleXdvcmRzKQotICAgICAgKGZvbnQtbG9jay1jb21waWxlLWtleXdv cmRzICcoImFcXGAiKSkgOyBkb2Vzbid0IG1hdGNoIGFueXRoaW5nLgorICAgICAgKGZvbnQtbG9j ay1jb21waWxlLWtleXdvcmRzICcoIlxcYGFcXGAiKSkgOyBkb2Vzbid0IG1hdGNoIGFueXRoaW5n LgogICAgICAgZm9udC1sb2NrLWtleXdvcmRzKSkpKQogCiAMCkBAIC0xODkwLDggKzE4OTAsOCBA QCBjLW1ha2Uta2V5d29yZHMtcmUKIAogICAgIDs7IFByb2R1Y2UgYSByZWdleHAgdGhhdCBkb2Vz bid0IG1hdGNoIGFueXRoaW5nLgogICAgIChpZiBhZG9ybgotCSJcXChhXFxgXFwpIgotICAgICAg ImFcXGAiKSkpCisJIlxcKFxcYGFcXGBcXCkiCisgICAgICAiXFxgYVxcYCIpKSkKIAogKHB1dCAn Yy1tYWtlLWtleXdvcmRzLXJlICdsaXNwLWluZGVudC1mdW5jdGlvbiAxKQogCmRpZmYgLS1naXQg YS9saXNwL3Byb2dtb2Rlcy9jYy1lbmdpbmUuZWwgYi9saXNwL3Byb2dtb2Rlcy9jYy1lbmdpbmUu ZWwKaW5kZXggYTI1ZDA1OTU1My4uNjQ4ZTcxOTdmMyAxMDA2NDQKLS0tIGEvbGlzcC9wcm9nbW9k ZXMvY2MtZW5naW5lLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL2NjLWVuZ2luZS5lbApAQCAtOTA3 LDcgKzkwNyw3IEBAIGMtYmVnaW5uaW5nLW9mLXN0YXRlbWVudC0xCiAJc3RhY2sKIAk7OyBSZWdl eHAgd2hpY2ggbWF0Y2hlcyAiZm9yIiwgImlmIiwgZXRjLgogCShjb25kLWtleSAob3IgYy1vcHQt YmxvY2stc3RtdC1rZXkKLQkJICAgICAgImFcXGAiKSkJOyBEb2Vzbid0IG1hdGNoIGFueXRoaW5n LgorCQkgICAgICAiXFxgYVxcYCIpKQk7IERvZXNuJ3QgbWF0Y2ggYW55dGhpbmcuCiAJOzsgUmV0 dXJuIHZhbHVlLgogCShyZXQgJ3NhbWUpCiAJOzsgUG9zaXRpb25zIG9mIHRoZSBsYXN0IHRocmVl IHNleHBzIG9yIGJvdW5kcyB3ZSd2ZSBzdG9wcGVkIGF0LgpAQCAtNzYzOCw3ICs3NjM4LDcgQEAg Yy1mb3J3YXJkLTw+LWFyZ2xpc3QtcmVjdXIKIAkJKHByb2duCiAJCSAgKGMtZm9yd2FyZC1zeW50 YWN0aWMtd3MpCiAJCSAgKHdoZW4gKG9yIChhbmQgYy1yZWNvcmQtdHlwZS1pZGVudGlmaWVycyBh bGwtdHlwZXMpCi0JCQkgICAgKG5vdCAoZXF1YWwgYy1pbnNpZGUtPD4tdHlwZS1rZXkgIlxcKGFc XGBcXCkiKSkpCisJCQkgICAgKG5vdCAoZXF1YWwgYy1pbnNpZGUtPD4tdHlwZS1rZXkgIlxcKFxc YGFcXGBcXCkiKSkpCiAJCSAgICAoYy1mb3J3YXJkLXN5bnRhY3RpYy13cykKIAkJICAgIChjb25k CiAJCSAgICAgKChlcSAoY2hhci1hZnRlcikgPz8pCkBAIC05MjQ1LDcgKzkyNDUsNyBAQCBjLWZv cndhcmQtZGVjbC1vci1jYXN0LTEKICAgICAgIDs7IFNraXAgb3ZlciB0eXBlIGRlY2wgcHJlZml4 IG9wZXJhdG9ycy4gIChOb3RlIHNpbWlsYXIgY29kZSBpbgogICAgICAgOzsgYGMtZm9yd2FyZC1k ZWNsYXJhdG9yJy4pCiAgICAgICAoaWYgKGFuZCBjLXJlY29nbml6ZS10eXBlbGVzcy1kZWNscwot CSAgICAgICAoZXF1YWwgYy10eXBlLWRlY2wtcHJlZml4LWtleSAiYVxcYCIpKSA7IFJlZ2V4cCB3 aGljaCBkb2Vzbid0IG1hdGNoCisJICAgICAgIChlcXVhbCBjLXR5cGUtZGVjbC1wcmVmaXgta2V5 ICJcXGBhXFxgIikpIDsgUmVnZXhwIHdoaWNoIGRvZXNuJ3QgbWF0Y2gKIAkgICh3aGVuIChlcSAo Y2hhci1hZnRlcikgP1woKQogCSAgICAocHJvZ24KIAkgICAgICAoc2V0cSBwYXJlbi1kZXB0aCAo MSsgcGFyZW4tZGVwdGgpKQpAQCAtMTA4NzgsNyArMTA4NzgsNyBAQCBjLWxvb2tpbmctYXQtZGVj bC1ibG9jawogCSAgICAgIDs7IGxlZ2FsIGJlY2F1c2UgaXQncyBwYXJ0IG9mIGEgImNvbXBvdW5k IGtleXdvcmQiIGxpa2UKIAkgICAgICA7OyAiZW51bSBjbGFzcyIuCU9mIGNvdXJzZSwgaWYgYy1h ZnRlci1icmFjZS1saXN0LWtleQogCSAgICAgIDs7IGlzIG5pbCwgd2UgY2FuIHNraXAgdGhlIHRl c3QuCi0JICAgICAgKG9yIChlcXVhbCBjLWFmdGVyLWJyYWNlLWxpc3Qta2V5ICJhXFxgIikgOyBS ZWdleHAgd2hpY2ggZG9lc24ndCBtYXRjaAorCSAgICAgIChvciAoZXF1YWwgYy1hZnRlci1icmFj ZS1saXN0LWtleSAiXFxgYVxcYCIpIDsgUmVnZXhwIHdoaWNoIGRvZXNuJ3QgbWF0Y2gKIAkJICAo c2F2ZS1tYXRjaC1kYXRhCiAJCSAgICAoc2F2ZS1leGN1cnNpb24KIAkJICAgICAgKG5vdApkaWZm IC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvY2MtZm9udHMuZWwgYi9saXNwL3Byb2dtb2Rlcy9jYy1m b250cy5lbAppbmRleCA1ZjA5YmU2MGE2Li5iZWQ5MjU5ZTQyIDEwMDY0NAotLS0gYS9saXNwL3By b2dtb2Rlcy9jYy1mb250cy5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9jYy1mb250cy5lbApAQCAt MjU4MCwxNCArMjU4MCwxNCBAQCBwaWtlLWZvbnQtbG9jay1rZXl3b3JkcwogDAogOzs7IERvYyBj b21tZW50cy4KIAotKGRlZnZhciBjLWRvYy1saW5lLWpvaW4tcmUgImFcXGAiKQorKGRlZnZhciBj LWRvYy1saW5lLWpvaW4tcmUgIlxcYGFcXGAiKQogOzsgTWF0Y2hlcyBhIGpvaW4gb2YgdHdvIGxp bmVzIGluIGEgZG9jIGNvbW1lbnQuCiA7OyBUaGlzIHNob3VsZCBub3QgYmUgY2hhbmdlZCBkaXJl Y3RseSwgYnV0IGluc3RlYWQgc2V0IGJ5CiA7OyBgYy1zZXR1cC1kb2MtY29tbWVudC1zdHlsZScu ICBUaGlzIHZhcmlhYmxlIGlzIHVzZWQgaW4gYGMtZmluZC1kZWNsLXNwb3RzJwogOzsgaW4gKGUu Zy4pIGF1dG9kb2Mgc3R5bGUgY29tbWVudHMgdG8gYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiBhICJA XG4iIGF0IGFuCiA7OyBFT0wgYW5kIHRoZSB0b2tlbiBmb2xsb3dpbmcgIi8vISIgb24gdGhlIG5l eHQgbGluZS4KIAotKGRlZnZhciBjLWRvYy1icmlnaHQtY29tbWVudC1zdGFydC1yZSAiYVxcYCIp CisoZGVmdmFyIGMtZG9jLWJyaWdodC1jb21tZW50LXN0YXJ0LXJlICJcXGBhXFxgIikKIDs7IE1h dGNoZXMgdGhlIHN0YXJ0IG9mIGEgImJyaWdodCIgY29tbWVudCwgb25lIHdob3NlIGNvbnRlbnRz IG1heSBiZQogOzsgZm9udGlmaWVkIGJ5LCBlLmcuLCBgYy1mb250LWxvY2stZGVjbGFyYXRpb25z Jy4KIApkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvY2MtbGFuZ3MuZWwgYi9saXNwL3Byb2dt b2Rlcy9jYy1sYW5ncy5lbAppbmRleCA4YjdlNGVmN2MwLi42ZmRjZDZjZmM3IDEwMDY0NAotLS0g YS9saXNwL3Byb2dtb2Rlcy9jYy1sYW5ncy5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9jYy1sYW5n cy5lbApAQCAtOTQ1LDcgKzk0NSw3IEBAIGMtcG9wdWxhdGUtc3ludGF4LXRhYmxlCiAJIChjLW1h a2Uta2V5d29yZHMtcmUgJ2FwcGVuZGFibGUKIAkgICAoYy1sYW5nLWNvbnN0IGMtY3BwLWluY2x1 ZGUtZGlyZWN0aXZlcykpCiAJICJbIFx0XSoiKQotICAgICAgImFcXGAiKSkJCQkJOyBEb2Vzbid0 IG1hdGNoIGFueXRoaW5nCisgICAgICAiXFxgYVxcYCIpKQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0 aGluZwogKGMtbGFuZy1kZWZ2YXIgYy1jcHAtaW5jbHVkZS1rZXkgKGMtbGFuZy1jb25zdCBjLWNw cC1pbmNsdWRlLWtleSkpCiAKIChjLWxhbmctZGVmY29uc3QgYy1vcHQtY3BwLW1hY3JvLWRlZmlu ZQpAQCAtMTMzMSw3ICsxMzMxLDcgQEAgJ2Mtb3B0LW9wLWlkZW50aXRpZXItcHJlZml4CiAJICAg KGMtLXNldC1kaWZmZXJlbmNlIChjLWxhbmctY29uc3QgYy1hc3NpZ25tZW50LW9wZXJhdG9ycykK IAkJCSAgICAgICcoIj0iKQogCQkJICAgICAgOnRlc3QgJ3N0cmluZy1lcXVhbCkpKQotICAgICAg ImFcXGAiKSkJCQkJOyBEb2Vzbid0IG1hdGNoIGFueXRoaW5nLgorICAgICAgIlxcYGFcXGAiKSkJ CQk7IERvZXNuJ3QgbWF0Y2ggYW55dGhpbmcuCiAoYy1sYW5nLWRlZnZhciBjLWFzc2lnbm1lbnQt b3AtcmVnZXhwCiAgIChjLWxhbmctY29uc3QgYy1hc3NpZ25tZW50LW9wLXJlZ2V4cCkpCiAKQEAg LTE1NTQsNyArMTU1NCw3IEBAICdjLW9wdC1vcC1pZGVudGl0aWVyLXByZWZpeAogICA7OyBsYW5n dWFnZSkKICAgdCAoaWYgKGMtbGFuZy1jb25zdCBjLWJsb2NrLWNvbW1lbnQtZW5kZXIpCiAJKHJl Z2V4cC1xdW90ZSAoYy1sYW5nLWNvbnN0IGMtYmxvY2stY29tbWVudC1lbmRlcikpCi0gICAgICAi YVxcYCIpKQkJCQk7IERvZXNuJ3QgbWF0Y2ggYW55dGhpbmcuCisgICAgICAiXFxgYVxcYCIpKQkJ CTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KIChjLWxhbmctZGVmdmFyIGMtYmxvY2stY29tbWVu dC1lbmRlci1yZWdleHAKIAkgICAgICAgKGMtbGFuZy1jb25zdCBjLWJsb2NrLWNvbW1lbnQtZW5k ZXItcmVnZXhwKSkKIApAQCAtMTU2NSw3ICsxNTY1LDcgQEAgJ2Mtb3B0LW9wLWlkZW50aXRpZXIt cHJlZml4CiAgIDs7IGBmb250LWxvY2stY29tbWVudC1kZWxpbWl0ZXItZmFjZScuCiAgIHQgKGlm IChjLWxhbmctY29uc3QgYy1ibG9jay1jb21tZW50LWVuZGVyKQogCShjb25jYXQgIlsgXHRdKiIg KGMtbGFuZy1jb25zdCBjLWJsb2NrLWNvbW1lbnQtZW5kZXItcmVnZXhwKSkKLSAgICAgICJhXFxg IikpCQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgICAgICJcXGBhXFxgIikpCQkJOyBE b2Vzbid0IG1hdGNoIGFueXRoaW5nLgogKGMtbGFuZy1zZXR2YXIgZm9udC1sb2NrLWNvbW1lbnQt ZW5kLXNraXAKIAkgICAgICAgKGMtbGFuZy1jb25zdCBjLWZvbnQtbG9jay1jb21tZW50LWVuZC1z a2lwKSkKIApAQCAtMTU4NCw3ICsxNTg0LDcgQEAgJ2Mtb3B0LW9wLWlkZW50aXRpZXItcHJlZml4 CiAgIDs7IGxhbmd1YWdlKQogICB0IChpZiAoYy1sYW5nLWNvbnN0IGMtYmxvY2stY29tbWVudC1z dGFydGVyKQogCShyZWdleHAtcXVvdGUgKGMtbGFuZy1jb25zdCBjLWJsb2NrLWNvbW1lbnQtc3Rh cnRlcikpCi0gICAgICAiYVxcYCIpKQkJCQk7IERvZXNuJ3QgbWF0Y2ggYW55dGhpbmcuCisgICAg ICAiXFxgYVxcYCIpKQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KIChjLWxhbmctZGVmdmFy IGMtYmxvY2stY29tbWVudC1zdGFydC1yZWdleHAKICAgKGMtbGFuZy1jb25zdCBjLWJsb2NrLWNv bW1lbnQtc3RhcnQtcmVnZXhwKSkKIApAQCAtMTU5Myw3ICsxNTkzLDcgQEAgJ2Mtb3B0LW9wLWlk ZW50aXRpZXItcHJlZml4CiAgIDs7IGxhbmd1YWdlOyBpdCBkb2VzIGluIGFsbCA3IENDIE1vZGUg bGFuZ3VhZ2VzKS4KICAgdCAoaWYgKGMtbGFuZy1jb25zdCBjLWxpbmUtY29tbWVudC1zdGFydGVy KQogCShyZWdleHAtcXVvdGUgKGMtbGFuZy1jb25zdCBjLWxpbmUtY29tbWVudC1zdGFydGVyKSkK LSAgICAgICJhXFxgIikpCQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgICAgICJcXGBh XFxgIikpCQkJOyBEb2Vzbid0IG1hdGNoIGFueXRoaW5nLgogKGMtbGFuZy1kZWZ2YXIgYy1saW5l LWNvbW1lbnQtc3RhcnQtcmVnZXhwCiAJICAgICAgIChjLWxhbmctY29uc3QgYy1saW5lLWNvbW1l bnQtc3RhcnQtcmVnZXhwKSkKIApAQCAtMTYyOCw3ICsxNjI4LDcgQEAgJ2Mtb3B0LW9wLWlkZW50 aXRpZXItcHJlZml4CiAKIChjLWxhbmctZGVmY29uc3QgYy1kb2MtY29tbWVudC1zdGFydC1yZWdl eHAKICAgIlJlZ2V4cCB0byBtYXRjaCB0aGUgc3RhcnQgb2YgZG9jdW1lbnRhdGlvbiBjb21tZW50 cy4iCi0gIHQgICAgImFcXGAiCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgdCAgICAiXFxg YVxcYCIJOyBEb2Vzbid0IG1hdGNoIGFueXRoaW5nLgogICA7OyBGcm9tIGZvbnQtbG9jay5lbDog YGRveHlnZW4nIHVzZXMgLyohIHdoaWxlIG90aGVycyB1c2UgLyoqLgogICAoYyBjKysgb2JqYykg Ii9cXCpbKiFdIgogICBqYXZhICIvXFwqXFwqIgpAQCAtMzExMiw3ICszMTEyLDcgQEAgJ2Mtb3B0 LW9wLWlkZW50aXRpZXItcHJlZml4CiAgICJSZWdleHAgbWF0Y2hpbmcgYSBrZXl3b3JkIHRoYXQg aXMgZm9sbG93ZWQgYnkgYSBjb2xvbiwgd2hlcmUKICAgdGhlIHdob2xlIGNvbnN0cnVjdCBjYW4g cHJlY2VkZSBhIGRlY2xhcmF0aW9uLgogICBFLmcuIFwicHVibGljOlwiIGluIEMrKy4iCi0gIHQg ImFcXGAiCQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgdCAiXFxgYVxcYCIJCQkJOyBE b2Vzbid0IG1hdGNoIGFueXRoaW5nLgogICBjKysgKGMtbWFrZS1rZXl3b3Jkcy1yZSB0IChjLWxh bmctY29uc3QgYy1wcm90ZWN0aW9uLWt3ZHMpKSkKIChjLWxhbmctZGVmdmFyIGMtZGVjbC1zdGFy dC1jb2xvbi1rd2QtcmUKICAgKGMtbGFuZy1jb25zdCBjLWRlY2wtc3RhcnQtY29sb24ta3dkLXJl KSkKQEAgLTMzMDksNyArMzMwOSw3IEBAICdjLW9wdC1vcC1pZGVudGl0aWVyLXByZWZpeAogICB0 IChpZiAoYy1sYW5nLWNvbnN0IGMtdHlwZS1tb2RpZmllci1rd2RzKQogCShjb25jYXQgKHJlZ2V4 cC1vcHQgKGMtbGFuZy1jb25zdCBjLXR5cGUtbW9kaWZpZXIta3dkcykgdCkgIlxcPiIpCiAgICAg ICA7OyBEZWZhdWx0IHRvIGEgcmVnZXhwIHRoYXQgbmV2ZXIgbWF0Y2hlcy4KLSAgICAgICJhXFxg IikKKyAgICAgICJcXGBhXFxgIikKICAgOzsgQ2hlY2sgdGhhdCB0aGVyZSdzIG5vICI9IiBhZnRl cndhcmRzIHRvIGF2b2lkIG1hdGNoaW5nIHRva2VucwogICA7OyBsaWtlICIqPSIuCiAgIChjIG9i amMpIChjb25jYXQgIlxcKCIKQEAgLTMzNDcsNyArMzM0Nyw3IEBAICdjLW9wdC1vcC1pZGVudGl0 aWVyLXByZWZpeAogYXMgdGhlIGVuZCBvZiB0aGUgb3BlcmF0b3IuICBJZGVudGlmaWVyIHN5bnRh eCBpcyBpbiBlZmZlY3Qgd2hlbgogdGhpcyBpcyBtYXRjaGVkIFwoc2VlIGBjLWlkZW50aWZpZXIt c3ludGF4LXRhYmxlJykuIgogICB0IDs7IERlZmF1bHQgdG8gYSByZWdleHAgdGhhdCBuZXZlciBt YXRjaGVzLgotICAgICJhXFxgIgorICAgICJcXGBhXFxgIgogICA7OyBDaGVjayB0aGF0IHRoZXJl J3Mgbm8gIj0iIGFmdGVyd2FyZHMgdG8gYXZvaWQgbWF0Y2hpbmcgdG9rZW5zCiAgIDs7IGxpa2Ug Iio9Ii4KICAgKGMgb2JqYykgKGNvbmNhdCAiXFwoXFwqXFwpIgpAQCAtMzUwNiw3ICszNTA2LDcg QEAgJ2Mtb3B0LW9wLWlkZW50aXRpZXItcHJlZml4CiAoYy1sYW5nLWRlZmNvbnN0IGMtcHJlLWlk LWJyYWNlbGlzdC1rZXkKICAgIkEgcmVnZXhwIG1hdGNoaW5nIHRva2VucyB3aGljaCwgcHJlY2Vk aW5nIGFuIGlkZW50aWZpZXIsIHNpZ25pZnkgYSBicmFjZWxpc3QuCiAiCi0gIHQgImFcXGAiCQkJ CTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgdCAiXFxgYVxcYCIJCQkJOyBEb2Vzbid0IG1h dGNoIGFueXRoaW5nLgogICBjKysgIm5ld1xcKFteWzphbG51bTpdXyRdXFx8JFxcKVxcfCYmP1xc KFxcUy5cXHwkXFwpIikKIChjLWxhbmctZGVmdmFyIGMtcHJlLWlkLWJyYWNlbGlzdC1rZXkgKGMt bGFuZy1jb25zdCBjLXByZS1pZC1icmFjZWxpc3Qta2V5KSkKIApAQCAtMzU2Miw3ICszNTYyLDcg QEAgJ2Mtb3B0LW9wLWlkZW50aXRpZXItcHJlZml4CiAJIDs7IGJlZm9yZSB0aGUgJ3snIG9mIHRo ZSBlbnVtIGxpc3QsIHRvIGF2b2lkIHNlYXJjaGluZyB0b28gZmFyLgogCSAiW15dW3t9Oy8jPV0q IgogCSAieyIpCi0gICAgICAiYVxcYCIpKQkJCQk7IERvZXNuJ3QgbWF0Y2ggYW55dGhpbmcuCisg ICAgICAiXFxgYVxcYCIpKQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KIChjLWxhbmctZGVm dmFyIGMtZW51bS1jbGF1c2UtaW50cm9kdWN0aW9uLXJlCiAJICAgICAgIChjLWxhbmctY29uc3Qg Yy1lbnVtLWNsYXVzZS1pbnRyb2R1Y3Rpb24tcmUpKQogCkBAIC0zNjc4LDcgKzM2NzgsNyBAQCAn Yy1vcHQtb3AtaWRlbnRpdGllci1wcmVmaXgKICAgIlJlZ2V4cCBtYXRjaGluZyB0aGluZ3MgdGhh dCBjYW4ndCBvY2N1ciB0d28gc3ltYm9scyBiZWZvcmUgYSBjb2xvbiBpbgogYSBsYWJlbCBjb25z dHJ1Y3QuICBUaGlzIGNhdGNoZXMgQysrJ3MgaW5oZXJpdGFuY2UgY29uc3RydWN0IFwiY2xhc3Mg Zm9vCiA6IGJhclwiLiAgT25seSB1c2VkIGlmIGBjLXJlY29nbml6ZS1jb2xvbi1sYWJlbHMnIGlz IHNldC4iCi0gIHQgImFcXGAiCQkJCTsgRG9lc24ndCBtYXRjaCBhbnl0aGluZy4KKyAgdCAiXFxg YVxcYCIJCQkJOyBEb2Vzbid0IG1hdGNoIGFueXRoaW5nLgogICBjKysgKGMtbWFrZS1rZXl3b3Jk cy1yZSB0ICcoImNsYXNzIikpKQogKGMtbGFuZy1kZWZ2YXIgYy1ub25sYWJlbC10b2tlbi0yLWtl eSAoYy1sYW5nLWNvbnN0IGMtbm9ubGFiZWwtdG9rZW4tMi1rZXkpKQogCmRpZmYgLS1naXQgYS9s aXNwL3Byb2dtb2Rlcy9jYy1tb2RlLmVsIGIvbGlzcC9wcm9nbW9kZXMvY2MtbW9kZS5lbAppbmRl eCBiZDYyZmM3NTRhLi41N2NmZGI5NmIzIDEwMDY0NAotLS0gYS9saXNwL3Byb2dtb2Rlcy9jYy1t b2RlLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL2NjLW1vZGUuZWwKQEAgLTE4MjUsNyArMTgyNSw3 IEBAIGMtZG9jLWZsLWRlY2wtc3RhcnQKICAgOzsgYnkgYGMtZG9jLWxpbmUtam9pbi1yZScpLCBy ZXR1cm4gdGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZQogICA7OyBzZXF1ZW5j ZS4gIE90aGVyd2lzZSwgcmV0dXJuIG5pbC4gIFBvaW50IGhhcyBubyBzaWduaWZpY2FuY2UgYXQg ZW50cnkgdG8KICAgOzsgYW5kIGV4aXQgZnJvbSB0aGlzIGZ1bmN0aW9uLgotICAod2hlbiAobm90 IChlcXVhbCBjLWRvYy1saW5lLWpvaW4tcmUgImFcXGAiKSkKKyAgKHdoZW4gKG5vdCAoZXF1YWwg Yy1kb2MtbGluZS1qb2luLXJlICJcXGBhXFxgIikpCiAgICAgKGdvdG8tY2hhciBwb3MpCiAgICAg KGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgKGFuZCAob3IgKGxvb2tpbmctYXQgYy1jb21tZW50 LXN0YXJ0LXJlZ2V4cCkKQEAgLTE4NDIsNyArMTg0Miw3IEBAIGMtZG9jLWZsLWRlY2wtZW5kCiAg IDs7IG1hcmtlciAoYXMgZGVmaW5lZCBieSBgYy1kb2MtbGluZS1qb2luLXJlKSwgcmV0dXJuIHRo ZSBwb3NpdGlvbiBvZgogICA7OyB0aGUgQk9MIGF0IHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlLiAg T3RoZXJ3aXNlLCByZXR1cm4gbmlsLiAgUG9pbnQgaGFzIG5vCiAgIDs7IHNpZ25pZmljYW5jZSBh dCBlbnRyeSB0byBhbmQgZXhpdCBmcm9tIHRoaXMgZnVuY3Rpb24uCi0gICh3aGVuIChub3QgKGVx dWFsIGMtZG9jLWxpbmUtam9pbi1yZSAiYVxcYCIpKQorICAod2hlbiAobm90IChlcXVhbCBjLWRv Yy1saW5lLWpvaW4tcmUgIlxcYGFcXGAiKSkKICAgICAoZ290by1jaGFyIHBvcykKICAgICAoYmFj ay10by1pbmRlbnRhdGlvbikKICAgICAobGV0ICgoaGVyZSAocG9pbnQpKSkKZGlmZiAtLWdpdCBh L2xpc3AvcHJvZ21vZGVzL2NjLXZhcnMuZWwgYi9saXNwL3Byb2dtb2Rlcy9jYy12YXJzLmVsCmlu ZGV4IDZlOGFjZDRjMGQuLjNiMzBkMTg4NzIgMTAwNjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL2Nj LXZhcnMuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMvY2MtdmFycy5lbApAQCAtMTY0OCw5ICsxNjQ4 LDkgQEAgYy1hc3ltbWV0cnktZm9udGlmaWNhdGlvbi1mbGFnCiAgIDpncm91cCAnYykKIAogOzsg SW5pdGlhbGl6ZSB0aGUgbmV4dCB0d28gdG8gYSByZWdleHAgd2hpY2ggbmV2ZXIgbWF0Y2hlcy4K LShkZWZ2YXIgYy1ub2lzZS1tYWNyby13aXRoLXBhcmVucy1uYW1lLXJlICJhXFxgIikKKyhkZWZ2 YXIgYy1ub2lzZS1tYWNyby13aXRoLXBhcmVucy1uYW1lLXJlICJcXGBhXFxgIikKIChtYWtlLXZh cmlhYmxlLWJ1ZmZlci1sb2NhbCAnYy1ub2lzZS1tYWNyby13aXRoLXBhcmVucy1uYW1lLXJlKQot KGRlZnZhciBjLW5vaXNlLW1hY3JvLW5hbWUtcmUgImFcXGAiKQorKGRlZnZhciBjLW5vaXNlLW1h Y3JvLW5hbWUtcmUgIlxcYGFcXGAiKQogKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdjLW5v aXNlLW1hY3JvLW5hbWUtcmUpCiAKIChkZWZjdXN0b20gYy1ub2lzZS1tYWNyby1uYW1lcyBuaWwK QEAgLTE2ODIsNyArMTY4Miw3IEBAIGMtbWFrZS1ub2lzZS1tYWNyby1yZWdleHBzCiAgIDs7IENv bnZlcnQgYGMtbm9pc2UtbWFjcm8tbmFtZXMnIGFuZCBgYy1ub2lzZS1tYWNyby13aXRoLXBhcmVu cy1uYW1lcycgaW50bwogICA7OyBgYy1ub2lzZS1tYWNyby1uYW1lLXJlJyBhbmQgYGMtbm9pc2Ut bWFjcm8td2l0aC1wYXJlbnMtbmFtZS1yZScuCiAgIChzZXRxIGMtbm9pc2UtbWFjcm8td2l0aC1w YXJlbnMtbmFtZS1yZQotCShjb25kICgobnVsbCBjLW5vaXNlLW1hY3JvLXdpdGgtcGFyZW5zLW5h bWVzKSAiYVxcYCIpIDsgTmV2ZXIgbWF0Y2hlcy4KKwkoY29uZCAoKG51bGwgYy1ub2lzZS1tYWNy by13aXRoLXBhcmVucy1uYW1lcykgIlxcYGFcXGAiKSA7TmV2ZXIgbWF0Y2hlcy4KIAkgICAgICAo KGNvbnNwIGMtbm9pc2UtbWFjcm8td2l0aC1wYXJlbnMtbmFtZXMpCiAJICAgICAgIChjb25jYXQg KHJlZ2V4cC1vcHQgYy1ub2lzZS1tYWNyby13aXRoLXBhcmVucy1uYW1lcyB0KQogCQkgICAgICAg IlxcKFteWzphbG51bTpdXyRdXFx8JFxcKSIpKQpAQCAtMTY5MSw3ICsxNjkxLDcgQEAgYy1tYWtl LW5vaXNlLW1hY3JvLXJlZ2V4cHMKIAkgICAgICAodCAoZXJyb3IgImMtbWFrZS1ub2lzZS1tYWNy by1yZWdleHBzOiBcCiBjLW5vaXNlLW1hY3JvLXdpdGgtcGFyZW5zLW5hbWVzIGlzIGludmFsaWQ6 ICVzIiBjLW5vaXNlLW1hY3JvLXdpdGgtcGFyZW5zLW5hbWVzKSkpKQogICAoc2V0cSBjLW5vaXNl LW1hY3JvLW5hbWUtcmUKLQkoY29uZCAoKG51bGwgYy1ub2lzZS1tYWNyby1uYW1lcykgImFcXGAi KSA7IE5ldmVyIG1hdGNoZXMgYW55dGhpbmcuCisJKGNvbmQgKChudWxsIGMtbm9pc2UtbWFjcm8t bmFtZXMpICJcXGBhXFxgIikgOyBOZXZlciBtYXRjaGVzIGFueXRoaW5nLgogCSAgICAgICgoY29u c3AgYy1ub2lzZS1tYWNyby1uYW1lcykKIAkgICAgICAgKGNvbmNhdCAocmVnZXhwLW9wdCBjLW5v aXNlLW1hY3JvLW5hbWVzIHQpCiAJCSAgICAgICAiXFwoW15bOmFsbnVtOl1fJF1cXHwkXFwpIikp CmRpZmYgLS1naXQgYS9saXNwL3Byb2dtb2Rlcy9vY3RhdmUuZWwgYi9saXNwL3Byb2dtb2Rlcy9v Y3RhdmUuZWwKaW5kZXggNTJlNWZkNDc3Zi4uOTYwNThiY2ExNCAxMDA2NDQKLS0tIGEvbGlzcC9w cm9nbW9kZXMvb2N0YXZlLmVsCisrKyBiL2xpc3AvcHJvZ21vZGVzL29jdGF2ZS5lbApAQCAtMTY5 MSw3ICsxNjkxLDcgQEAgb2N0YXZlLWhlbHAtbW9kZQogICAoZXZhbC1hbmQtY29tcGlsZSAocmVx dWlyZSAnaGVscC1tb2RlKSkKICAgOzsgRG9uJ3QgaGlnaGxpZ2h0IGBFWEFNUExFJyBhcyBlbGlz cCBzeW1ib2xzIGJ5IHVzaW5nIGEgcmVnZXhwIHRoYXQKICAgOzsgY2FuIG5ldmVyIG1hdGNoLgot ICAoc2V0cS1sb2NhbCBoZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cCAieFxcYCIpKQorICAoc2V0cS1s b2NhbCBoZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cCAiXFxgeFxcYCIpKQogCiAoZGVmdW4gb2N0YXZl LWhlbHAgKGZuKQogICAiRGlzcGxheSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBGTi4iCmRpZmYgLS1n aXQgYS9saXNwL3RleHRtb2Rlcy9pc3BlbGwuZWwgYi9saXNwL3RleHRtb2Rlcy9pc3BlbGwuZWwK aW5kZXggNjU1M2EyNzk5Yi4uNDk2OThkZDEyMCAxMDA2NDQKLS0tIGEvbGlzcC90ZXh0bW9kZXMv aXNwZWxsLmVsCisrKyBiL2xpc3AvdGV4dG1vZGVzL2lzcGVsbC5lbApAQCAtNDAxNiw3ICs0MDE2 LDcgQEAgaXNwZWxsLW1lc3NhZ2UKIAogKGRlZnVuIGlzcGVsbC1ub24tZW1wdHktc3RyaW5nIChz dHJpbmcpCiAgIChpZiAob3IgKG5vdCBzdHJpbmcpIChzdHJpbmctZXF1YWwgc3RyaW5nICIiKSkK LSAgICAgICJcXCdcXGAiIDsgQW4gdW5tYXRjaGFibGUgc3RyaW5nIGlmIHN0cmluZyBpcyBudWxs LgorICAgICAgIlxcYGFcXGAiIDsgQW4gdW5tYXRjaGFibGUgc3RyaW5nIGlmIHN0cmluZyBpcyBu dWxsLgogICAgIChyZWdleHAtcXVvdGUgc3RyaW5nKSkpCiAKIAotLSAKMi4yMC4xCgo= --=-gYFlgUffPskyz/5CXx5b--