From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Laurence Warne Newsgroups: gmane.emacs.bugs Subject: bug#57004: [PATCH] Fontify Escape Sequences in Python String and Byte Literals Date: Fri, 5 Aug 2022 14:06:33 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="0000000000005467a805e57e23cb" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="914"; mail-complaints-to="usenet@ciao.gmane.io" To: 57004@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Aug 05 15:12:25 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJx7p-000AZU-Nu for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 05 Aug 2022 15:12:25 +0200 Original-Received: from localhost ([::1]:59748 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJx7o-00050t-R1 for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 05 Aug 2022 09:12:24 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59272) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJx3a-0006HM-1t for bug-gnu-emacs@gnu.org; Fri, 05 Aug 2022 09:08:02 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:38711) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJx3Z-00071Q-Nr for bug-gnu-emacs@gnu.org; Fri, 05 Aug 2022 09:08:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oJx3Z-0001FF-JG for bug-gnu-emacs@gnu.org; Fri, 05 Aug 2022 09:08:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Laurence Warne Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 05 Aug 2022 13:08:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 57004 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.16597048364728 (code B ref -1); Fri, 05 Aug 2022 13:08:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 5 Aug 2022 13:07:16 +0000 Original-Received: from localhost ([127.0.0.1]:56693 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oJx2m-0001E9-SM for submit@debbugs.gnu.org; Fri, 05 Aug 2022 09:07:16 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:34812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oJx2h-0001Dy-GO for submit@debbugs.gnu.org; Fri, 05 Aug 2022 09:07:11 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59148) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJx2X-0004tI-2R for bug-gnu-emacs@gnu.org; Fri, 05 Aug 2022 09:07:07 -0400 Original-Received: from mail-vs1-xe30.google.com ([2607:f8b0:4864:20::e30]:33689) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oJx2R-0006wA-NG for bug-gnu-emacs@gnu.org; Fri, 05 Aug 2022 09:06:53 -0400 Original-Received: by mail-vs1-xe30.google.com with SMTP id q15so2457678vsr.0 for ; Fri, 05 Aug 2022 06:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=ClpcSYZUEInzJaIGOp5fBfjEVkIndYQkPBA8FkpBj8s=; b=mRFtb2ydHZfJfXzN4dqvYxUOFWKVovhJidPJ8EYubw/IhDFe93Fz3OludFNIut7klk HtqqzBZkn2ZwJYogwXBycdRYjtvnq8ml1ES6oQQtRPFwciKSS/R3AcYCUBbdWbtY+fMf 2SGSpXLSW2pRmQfqATAp8GW570KkriQZlmjsLYFxx2uL+dLrL17Kgg2dXhJ+Jwe+GEwX lgxpOEZhqKE4i9d4WS4cefXenW/Nir+RwCRehgT/7tjNyOgVjKXXScy6e9ZJb6epUty8 EjZ1Uty047ChZmAwA8MH4ZyBNhi49Wg/q/imxIGZver0xBOX7vFYUhSrDKWz6QBJ85Z+ OEZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ClpcSYZUEInzJaIGOp5fBfjEVkIndYQkPBA8FkpBj8s=; b=2ynqyynrrDQ3Z6D4KVEwMDAGipsTXE3rI6GcLYJ9b1+6IqPkPkt1cHVk4hKIG6zywg jRq/1dAlNwrtdRz66lS+kapGreX63YySiSzPKd8vauwcvJ4pTchUujKjtKVLrzEkYDw0 ytzdaoBwL+oHs8enIEGlo7hqOcyeit6BpJOI2SaBA+atASG8wfpNCKYNzNNKHlkLEP2y 7PCISMX4Nx3Yc/Z8UyvwPfSk4ilpPAbxm66hNyel2KOKfqxvr3tvMnFfcg87SmmO+nQp pN0omig+ceXWHj7qQPfrY2fgEW3l4uB6Tao4v1wqyOGECd9CcrTn9gtn9Mqk32kSxmwr L3CA== X-Gm-Message-State: ACgBeo0fE+RzO+x68t2CRODzyhYSZl3H2kXRcOSqp7s/cSuQZuC5ByU6 B5J6FYoDkpkAUxlsG9rywy17lFDrYPulQ7RLQJDzNGtsPK0XFA== X-Google-Smtp-Source: AA6agR58JcNB16hwmgtPDAEkI642XAZFBHvuJi0hRUNgfFeiDJMc5+TPLtPxpiA73xY+dSt2NFvAyGFgwS8GjPU8kgM= X-Received: by 2002:a67:6d87:0:b0:386:f1b6:8d9b with SMTP id i129-20020a676d87000000b00386f1b68d9bmr2974934vsc.67.1659704804877; Fri, 05 Aug 2022 06:06:44 -0700 (PDT) Received-SPF: pass client-ip=2607:f8b0:4864:20::e30; envelope-from=laurencewarne@gmail.com; helo=mail-vs1-xe30.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:238909 Archived-At: --0000000000005467a805e57e23cb Content-Type: multipart/alternative; boundary="0000000000005467a405e57e23c8" --0000000000005467a405e57e23c8 Content-Type: text/plain; charset="UTF-8" Hi, this patch implements escape code syntax highlighting within string an bytes literals for python-mode (described at https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals) similar to how they are highlighted by https://pygments.org. I've written a few tests (which should probably be expanded on (: ), an example based on one of the test samples: b'example 1: \n \\ \u1234 \U00010348 \N{Plus-Minus Sign}' 'example 2: \n \\ \u1234 \U00010348 \N{Plus-Minus Sign}' e.g. in the above we see "\n", "\\" highlighted on the first line, but not "\u1234", "\U00010348" "\N{Plus-Minus Sign}" since these items aren't valid escape sequences in byte literals. The second line however is a string literal, so all of the preceding items are highlighted. Thanks, Laurence --0000000000005467a405e57e23c8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi, this patch implements escape code syntax highligh= ting within string an bytes literals for python-mode (described at https://docs.python.org/3/reference/lexical_analysis.html#str= ing-and-bytes-literals) similar to how they are highlighted by https://pygments.org.

I've written a few tests (which should probably be expanded on (: ), = an example based on one of the test samples:

b'= ;example 1: \n \\ \u1234 \U00010348 \N{Plus-Minus Sign}'
'= ;example 2:=C2=A0 \n \\ \u1234 \U00010348 \N{Plus-Minus Sign}'

e.g. in the above we see "\n", "\\" hi= ghlighted on the first line, but not "\u1234", "\U00010348&q= uot; "\N{Plus-Minus Sign}" since these items aren't valid esc= ape sequences in byte literals.=C2=A0 The second line however is a string l= iteral, so all of the preceding items are highlighted.

=
Thanks, Laurence

--0000000000005467a405e57e23c8-- --0000000000005467a805e57e23cb Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fontify-python-escape-sequences-in-literals.patch" Content-Disposition: attachment; filename="0001-Fontify-python-escape-sequences-in-literals.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l6geze6n0 RnJvbSAxODU4NDczNmFiNmFhNDgwMmFjY2Y2OGEwZjVjYThkMTI2NjZiODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBsV2FybmUgPGxhdXJlbmNld2FybmVAZ21haWwuY29tPgpEYXRl OiBUaHUsIDQgQXVnIDIwMjIgMTY6MTM6MjMgKzAxMDAKU3ViamVjdDogW1BBVENIXSBGb250aWZ5 IHB5dGhvbiBlc2NhcGUgc2VxdWVuY2VzIGluIGxpdGVyYWxzCgoqIGxpc3AvcHJvZ21vZGVzL3B5 dGhvbi5lbCAocHl0aG9uLXJ4KTogQWRkIHJlZ3VsYXIgZXhwcmVzc2lvbnMKbWF0Y2hpbmcgZXNj YXBlIGNvZGVzIGluIHN0cmluZyBhbmQgYnl0ZSBsaXRlcmFscwoocHl0aG9uLS1zdHJpbmctYnl0 ZXMtbGl0ZXJhbC1tYXRjaGVyKTogbmV3IGZ1bmN0aW9uCihweXRob24tLW5vdC1yYXctYnl0ZXMt bGl0ZXJhbC1zdGFydC1yZWdleHApOiBuZXcgY29uc3RhbnQKKHB5dGhvbi0tbm90LXJhdy1zdHJp bmctbGl0ZXJhbC1zdGFydC1yZWdleHApOiBuZXcgY29uc3RhbnQKKiB0ZXN0L2xpc3AvcHJvZ21v ZGVzL3B5dGhvbi10ZXN0cy5lbDogQWRkIHRlc3RzIGZvciBuZXcKZm9udGlmaWNhdGlvbgotLS0K IGxpc3AvcHJvZ21vZGVzL3B5dGhvbi5lbCAgICAgICAgICAgIHwgNTMgKysrKysrKysrKysrKysr KysrKy0KIHRlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsIHwgNzcgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsIGIv bGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsCmluZGV4IGI4ZmM3ZDRjNTQuLjRjMzg3NzU2ZjcgMTAw NjQ0Ci0tLSBhL2xpc3AvcHJvZ21vZGVzL3B5dGhvbi5lbAorKysgYi9saXNwL3Byb2dtb2Rlcy9w eXRob24uZWwKQEAgLTQyNyw3ICs0MjcsMTcgQEAgcHl0aG9uLXJ4CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoOiAidmltOiIgKCogc3BhY2UpICJzZXQiICgrIHNwYWNlKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVlbmNvZGluZyIgKCogc3BhY2Up ID89ICgqIHNwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdyb3Vw LW4gMSAoKyAob3Igd29yZCA/LSkpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCogc3BhY2UpICI6IikpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoKiBzcGFjZSkgIjoiKSkpKQorICAgICAgICAgICAgKGJ5dGVzLWVzY2FwZS1zZXF1ZW5jZSAo c2VxIChub3QgIlxcIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Z3JvdXAgKG9yICJcXFxcIiAiXFwnIiAiXFxhIiAiXFxiIiAiXFxmIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcbiIgIlxcciIgIlxcdCIgIlxc diIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXEgIlxcIiAoPSAzIChpbiAiMC03IikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNlcSAiXFx4IiBoZXggaGV4KSkpKSkKKyAgICAgICAgICAg IChzdHJpbmctZXNjYXBlLXNlcXVlbmNlIChvciBieXRlcy1lc2NhcGUtc2VxdWVuY2UKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VxIChub3QgIlxcIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciAoZ3JvdXAtbiAxICJc XHUiICg9IDQgaGV4KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ3JvdXAtbiAxICJcXFUiICg9IDggaGV4KSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3JvdXAtbiAxICJcXE57IiAoKj8gYW55Y2hh cikgIn0iKSkpKSkpCiAgICAgIChyeCAsQHJlZ2V4cHMpKSkKIAogDApAQCAtNTM5LDYgKzU0OSwy OCBAQCBweXRob24tLWZvbnQtbG9jay1mLXN0cmluZ3MKICAgICAgICAgKGdvdG8tY2hhciAobWlu IGxpbWl0ICgxKyBzZW5kKSkpCiAgICAgICAgIChzZXRxIHBwc3MgKHN5bnRheC1wcHNzKSkpKSkp CiAKKyhkZWZjb25zdCBweXRob24tLW5vdC1yYXctYnl0ZXMtbGl0ZXJhbC1zdGFydC1yZWdleHAK KyAgKHJ4IChvciBib3MgKG5vdCBhbG51bSkpIChvciAiYiIgIkIiKSAob3IgIlwiIiAiXCJcIlwi IiAiJyIgIicnJyIpIGVvcykKKyAgIkEgcmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIHRoZSBz dGFydCBvZiBhIG5vdC1yYXcgYnl0ZXMgbGl0ZXJhbC4iKQorCisoZGVmY29uc3QgcHl0aG9uLS1u b3QtcmF3LXN0cmluZy1saXRlcmFsLXN0YXJ0LXJlZ2V4cAorICAocnggKG9yIGJvcyAobm90IGFs bnVtKSkgKD8gKG9yICJ1IiAiVSIgIkYiICJmIikpIChvciAiXCIiICJcIlwiXCIiICInIiAiJycn IikgZW9zKQorICAiQSByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgdGhlIHN0YXJ0IG9mIGEg bm90LXJhdyBzdHJpbmcgbGl0ZXJhbC4iKQorCisoZGVmdW4gcHl0aG9uLS1zdHJpbmctYnl0ZXMt bGl0ZXJhbC1tYXRjaGVyIChyZWdleHAgc3RhcnQtcmVnZXhwKQorICAiTWF0Y2ggUkVHRVhQIHdp dGhpbiBhIHN0cmluZyBvciBieXRlcyBsaXRlcmFsIHdob3NlIHN0YXJ0IG1hdGNoZXMgU1RBUlQt UkVHRVhQLiIKKyAgKGxhbWJkYSAobGltaXQpCisgICAgKGNsLWxvb3AgZm9yIHJlc3VsdCA9IChy ZS1zZWFyY2gtZm9yd2FyZCByZWdleHAgbGltaXQgdCkKKyAgICAgICAgICAgICBmb3IgcmVzdWx0 LXZhbGlkID0gKGFuZCByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAobGV0KiAoKHBvcyAobnRoIDggKHN5bnRheC1wcHNzKSkpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChiZWZvcmUtcXVvdGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRp ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF4ICgt IHBvcyA1KSAocG9pbnQtbWluKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobWluICgrIHBvcyAxKSAocG9pbnQtbWF4KSkpKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctbWF0Y2gtcCBzdGFydC1yZWdleHAgYmVm b3JlLXF1b3RlKSkpCisgICAgICAgICAgICAgdW50aWwgKG9yIChub3QgcmVzdWx0KSByZXN1bHQt dmFsaWQpCisgICAgICAgICAgICAgZmluYWxseSByZXR1cm4gKGFuZCByZXN1bHQtdmFsaWQgcmVz dWx0KSkpKQorCiAoZGVmdmFyIHB5dGhvbi1mb250LWxvY2sta2V5d29yZHMtbGV2ZWwtMQogICBg KCgsKHB5dGhvbi1yeCBzeW1ib2wtc3RhcnQgImRlZiIgKDErIHNwYWNlKSAoZ3JvdXAgc3ltYm9s LW5hbWUpKQogICAgICAoMSBmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKSkKQEAgLTcxNiw3 ICs3NDgsMjQgQEAgcHl0aG9uLWZvbnQtbG9jay1rZXl3b3Jkcy1tYXhpbXVtLWRlY29yYXRpb24K ICAgICAgICAgICAgICAgICAgIGdyb3VwZWQtYXNzaWdubWVudC10YXJnZXQgKCogc3BhY2UpCiAg ICAgICAgICAgICAgICAgICAob3IgIikiICJdIikgKCogc3BhY2UpCiAgICAgICAgICAgICAgICAg ICBhc3NpZ25tZW50LW9wZXJhdG9yKSkKLSAgICAgKDEgZm9udC1sb2NrLXZhcmlhYmxlLW5hbWUt ZmFjZSkpKQorICAgICAoMSBmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlKSkKKyAgICA7OyBl c2NhcGUgc2VxdWVuY2VzIHdpdGhpbiBieXRlcyBsaXRlcmFscworICAgIDs7ICAgIlxcIiAiXCci ICJcYSIgIlxiIiAiXGYiICJcbiIgIlxyIiAiXHQiICJcdiIKKyAgICA7OyAgICJcb29vIiBjaGFy YWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSBvb28KKyAgICA7OyAgICJceGhoIiBjaGFyYWN0ZXIgd2l0 aCBoZXggdmFsdWUgaGgKKyAgICAoLChweXRob24tLXN0cmluZy1ieXRlcy1saXRlcmFsLW1hdGNo ZXIKKyAgICAgICAocHl0aG9uLXJ4IGJ5dGVzLWVzY2FwZS1zZXF1ZW5jZSkKKyAgICAgICBweXRo b24tLW5vdC1yYXctYnl0ZXMtbGl0ZXJhbC1zdGFydC1yZWdleHApCisgICAgICgxIGZvbnQtbG9j ay1jb25zdGFudC1mYWNlIHQpKQorICAgIDs7IGVzY2FwZSBzZXF1ZW5jZXMgd2l0aGluIHN0cmlu ZyBsaXRlcmFscywgdGhlIHNhbWUgYXMgYXBwZWFyIGluIGJ5dGVzCisgICAgOzsgbGl0ZXJhbHMg aW4gYWRkaXRpb24gdG86CisgICAgOzsgICAiXHV4eHh4IiBDaGFyYWN0ZXIgd2l0aCAxNi1iaXQg aGV4IHZhbHVlIHh4eHgKKyAgICA7OyAgICJcVXh4eHh4eHh4IiBDaGFyYWN0ZXIgd2l0aCAzMi1i aXQgaGV4IHZhbHVlIHh4eHh4eHh4CisgICAgOzsgICAiXE57bmFtZX0iIENoYXJhY3RlciBuYW1l ZCBuYW1lIGluIHRoZSBVbmljb2RlIGRhdGFiYXNlCisgICAgKCwocHl0aG9uLS1zdHJpbmctYnl0 ZXMtbGl0ZXJhbC1tYXRjaGVyCisgICAgICAgKHB5dGhvbi1yeCBzdHJpbmctZXNjYXBlLXNlcXVl bmNlKQorICAgICAgIHB5dGhvbi0tbm90LXJhdy1zdHJpbmctbGl0ZXJhbC1zdGFydC1yZWdleHAp CisgICAgICgxICdmb250LWxvY2stY29uc3RhbnQtZmFjZSB0KSkpCiAgICJGb250IGxvY2sga2V5 d29yZHMgdG8gdXNlIGluIGBweXRob24tbW9kZScgZm9yIG1heGltdW0gZGVjb3JhdGlvbi4KIAog VGhpcyBkZWNvcmF0aW9uIGxldmVsIGluY2x1ZGVzIGV2ZXJ5dGhpbmcgaW4KZGlmZiAtLWdpdCBh L3Rlc3QvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLXRlc3RzLmVsIGIvdGVzdC9saXNwL3Byb2dtb2Rl cy9weXRob24tdGVzdHMuZWwKaW5kZXggNmYyYWQ4N2Y4MS4uMDdmMmM0ZjA5YSAxMDA2NDQKLS0t IGEvdGVzdC9saXNwL3Byb2dtb2Rlcy9weXRob24tdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL3By b2dtb2Rlcy9weXRob24tdGVzdHMuZWwKQEAgLTM4MCw2ICszODAsODMgQEAgcHl0aG9uLWZvbnQt bG9jay1hc3NpZ25tZW50LXN0YXRlbWVudC0xOAogICAgICAoMTI4IC4gZm9udC1sb2NrLWJ1aWx0 aW4tZmFjZSkgKDEzMSkKICAgICAgKDE0NCAuIGZvbnQtbG9jay1rZXl3b3JkLWZhY2UpICgxNTAp KSkpCiAKKyhlcnQtZGVmdGVzdCBweXRob24tZm9udC1sb2NrLWVzY2FwZS1zZXF1ZW5jZS1zdHJp bmctbmV3bGluZSAoKQorICAocHl0aG9uLXRlc3RzLWFzc2VydC1mYWNlcworICAgIidcXG4nCitc IlxcblwiCitmJ1xcbicKK2ZcIlxcblwiCit1J1xcbicKK3VcIlxcblwiIgorICAgJygoMSAuIGZv bnQtbG9jay1kb2MtZmFjZSkKKyAgICAgKDIgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAg ICAgKDQgLiBmb250LWxvY2stZG9jLWZhY2UpICg1KQorICAgICAoNiAuIGZvbnQtbG9jay1kb2Mt ZmFjZSkKKyAgICAgKDcgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDkgLiBmb250 LWxvY2stZG9jLWZhY2UpICgxMCkKKyAgICAgKDEyIC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQor ICAgICAoMTMgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDE1IC4gZm9udC1sb2Nr LXN0cmluZy1mYWNlKSAoMTYpCisgICAgICgxOCAuIGZvbnQtbG9jay1zdHJpbmctZmFjZSkKKyAg ICAgKDE5IC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICgyMSAuIGZvbnQtbG9jay1z dHJpbmctZmFjZSkgKDIyKQorICAgICAoMjQgLiBmb250LWxvY2stc3RyaW5nLWZhY2UpCisgICAg ICgyNSAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAoMjcgLiBmb250LWxvY2stc3Ry aW5nLWZhY2UpICgyOCkKKyAgICAgKDMwIC4gZm9udC1sb2NrLXN0cmluZy1mYWNlKQorICAgICAo MzEgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDMzIC4gZm9udC1sb2NrLXN0cmlu Zy1mYWNlKSkpKQorCisoZXJ0LWRlZnRlc3QgcHl0aG9uLWZvbnQtbG9jay1lc2NhcGUtc2VxdWVu Y2UtYnl0ZXMtbmV3bGluZSAoKQorICAocHl0aG9uLXRlc3RzLWFzc2VydC1mYWNlcworICAgImIn XFxuJworYlwiXFxuXCIiCisgICAnKCgxKQorICAgICAoMiAuIGZvbnQtbG9jay1kb2MtZmFjZSkK KyAgICAgKDMgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDUgLiBmb250LWxvY2st ZG9jLWZhY2UpICg2KQorICAgICAoOCAuIGZvbnQtbG9jay1kb2MtZmFjZSkKKyAgICAgKDkgLiBm b250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDExIC4gZm9udC1sb2NrLWRvYy1mYWNlKSkp KQorCisoZXJ0LWRlZnRlc3QgcHl0aG9uLWZvbnQtbG9jay1lc2NhcGUtc2VxdWVuY2UtaGV4LW9j dGFsICgpCisgIChweXRob24tdGVzdHMtYXNzZXJ0LWZhY2VzCisgICAiYidcXHgxMiBcXDc3NycK KydcXHgxMiBcXDc3NyciCisgICAnKCgxKQorICAgICAoMiAuIGZvbnQtbG9jay1kb2MtZmFjZSkK KyAgICAgKDMgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDcgLiBmb250LWxvY2st ZG9jLWZhY2UpCisgICAgICg4IC4gZm9udC1sb2NrLWNvbnN0YW50LWZhY2UpCisgICAgICgxMiAu IGZvbnQtbG9jay1kb2MtZmFjZSkgKDEzKQorICAgICAoMTQgLiBmb250LWxvY2stZG9jLWZhY2Up CisgICAgICgxNSAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAoMTkgLiBmb250LWxv Y2stZG9jLWZhY2UpCisgICAgICgyMCAuIGZvbnQtbG9jay1jb25zdGFudC1mYWNlKQorICAgICAo MjQgLiBmb250LWxvY2stZG9jLWZhY2UpKSkpCisKKyhlcnQtZGVmdGVzdCBweXRob24tZm9udC1s b2NrLWVzY2FwZS1zZXF1ZW5jZS11bmljb2RlICgpCisgIChweXRob24tdGVzdHMtYXNzZXJ0LWZh Y2VzCisgICAiYidcXHUxMjM0IFxcVTAwMDEwMzQ4IFxcTntQbHVzLU1pbnVzIFNpZ259JworJ1xc dTEyMzQgXFxVMDAwMTAzNDggXFxOe1BsdXMtTWludXMgU2lnbn0nIgorICAgJygoMSkKKyAgICAg KDIgLiBmb250LWxvY2stZG9jLWZhY2UpICg0MSkKKyAgICAgKDQyIC4gZm9udC1sb2NrLWRvYy1m YWNlKQorICAgICAoNDMgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAgICAgKDQ5IC4gZm9u dC1sb2NrLWRvYy1mYWNlKQorICAgICAoNTAgLiBmb250LWxvY2stY29uc3RhbnQtZmFjZSkKKyAg ICAgKDYwIC4gZm9udC1sb2NrLWRvYy1mYWNlKQorICAgICAoNjEgLiBmb250LWxvY2stY29uc3Rh bnQtZmFjZSkKKyAgICAgKDgwIC4gZm9udC1sb2NrLWRvYy1mYWNlKSkpKQorCisoZXJ0LWRlZnRl c3QgcHl0aG9uLWZvbnQtbG9jay1yYXctZXNjYXBlLXNlcXVlbmNlICgpCisgIChweXRob24tdGVz dHMtYXNzZXJ0LWZhY2VzCisgICAicmInXFx4MTIgXDEyMyBcXG4nCityJ1xceDEyIFwxMjMgXFxu IFxcdTEyMzQgXFxVMDAwMTAzNDggXFxOe1BsdXMtTWludXMgU2lnbn0nIgorICAgJygoMSkKKyAg ICAgKDMgLiBmb250LWxvY2stZG9jLWZhY2UpICgxNCkKKyAgICAgKDE2IC4gZm9udC1sb2NrLWRv Yy1mYWNlKSkpKQorCiAMCiA7OzsgSW5kZW50YXRpb24KIAotLSAKMi4zMC4yCgo= --0000000000005467a805e57e23cb--