From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 3557 invoked from network); 7 Mar 2021 10:24:09 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 7 Mar 2021 10:24:09 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1615112649; b=jaImSe/WbQMK4KqBSWHLdqoB7nYbASutbyw+gdYLyqFlewVVDcfk7NwxgeFQ62CsdkNBwExVvx gRXvpxp1isl6qWEBToAMZfPsUFG4ZDh6WZSDaQh31yVotWsjiFxziy5EcxHOAZj9CD+47CcFdD zMGBixNnAvUrdZ2aeCeheLSK4cYyz7KLrA9J5gGcz4NdcZp0UV+7RvbyWlAp4ZNhJ0Qkg65vhy 20joXDFlKsjJXf3iEp3Wxxyy6mOws3EDBnz96OLaXqpv7+oTyqh8kriUAFw+s8gTSlFXDCQ99P g25116hMraYjriRQPhN151TQ8kWtRgHW7iAvtJ+CKxT5iw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lj1-f181.google.com) smtp.remote-ip=209.85.208.181; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1615112649; bh=0ThJy3oG9JWai3AAOejRDMKAinE6Y/WQ2f7BATmxvZM=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:MIME-Version:Date:Message-ID:Subject:From:To: DKIM-Signature:DKIM-Signature; b=P+YlsPy5T1PVxG09GhgSnSFZKrnVAcGUT1PRTFKA2SXvzH24bl0Zn88U9stPPImjZk6v/NBzdk r1mWLhNA/PBd62Z/8Qd0zqMhQd73osbnAHTvquRfZkppArBiGHiLlOdd6WAKgpAUdrzlv5qcNN j1RPDktTRk4uArMSppgfxlCRX9TijpZJujnSe3//hE3dnwN1MVn1Or3Hf3lqFGtHIfwPyvoCgc heEgVfncB3tNCXSN9XB9gAO5XPOFRfj4xz3keF51PFZekXrOiiauEuOoWo8rfSqrFY83ejxFqp ZQ7MxmsG1wlnN1vTtTMCxP1gE6KUegvuAe/SpNqahY0H8A==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:MIME-Version:Date: Message-ID:Subject:From:To:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=0ThJy3oG9JWai3AAOejRDMKAinE6Y/WQ2f7BATmxvZM=; b=rViQiGT8yPc5Qk1XH3sg/MIJTD Rggvl4mZpqYhzx/Ukj6I0a/u9l7x3+OZr5/mbHmI+G1hU2UirARuPbZixciKwVEoRlOnGze/HcGL6 m4ZJU1To+H94/gqF2gdiEJFnlHpczXzOOpaxUHrZtnRpOXDqyFY/riSCnlYPORczxtmpz+cSBJZVe gzZFa0a6iB0Jlhgrxxu43DbdO5Cqa4OT+gVn1goWtyF6fNjtwsVuvELC458PIXnaJeQ8iVjmXjgx0 wU7vz/EM0RGiAC59D3zoRLAwUIBhTHKL+6wsjgBE2ve+BSg0EP18DBzCdSTN/+At/wgb5p8+spju+ HlOSTbWQ==; Received: from authenticated user by zero.zsh.org with local id 1lIqZw-00096p-FV; Sun, 07 Mar 2021 10:24:04 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lj1-f181.google.com) smtp.remote-ip=209.85.208.181; dkim=pass header.d=gmail.com header.s=20161025 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-lj1-f181.google.com ([209.85.208.181]:46138) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1lIqZa-0008xU-QK; Sun, 07 Mar 2021 10:23:43 +0000 Received: by mail-lj1-f181.google.com with SMTP id p15so11043581ljc.13 for ; Sun, 07 Mar 2021 02:23:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:from:subject:message-id:date:user-agent:mime-version; bh=0ThJy3oG9JWai3AAOejRDMKAinE6Y/WQ2f7BATmxvZM=; b=KbrKYfDiD4oOurdzx/iqaSBLhIV2hPwUf6omZ0iZ8ytg0TlpUYbquv9mLYoI8uJmy6 UwGpxC8kTc0C3Bt4wWgm9akwnmTVo6yzs0W01+KVLtZHAjI0p4xsTea1e6AdX0j47Mst H9mSms7kzfX1UcAmUTy8ThOI9+bk8Qt0Wjqk720wBVI6PNyCf65avxeSsfLPY7g4F+xz 1hudX23UfGi3IXBCLEw0o2qPOmaSXpHWU93k/IxPhStMRItZ+RP8pTkixBwH1PZipqQQ tyJdILpBJStmWlw5oYcN9zkJApPxgdJOYqcDOpWq3jvKY9UwGXR8yq+BhVGr6qwi2CJt pZnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=0ThJy3oG9JWai3AAOejRDMKAinE6Y/WQ2f7BATmxvZM=; b=IGydueZVu6/wt67NE1nlZOnnPAfF4roTNYBwCOIp84Iuo+yyYPZXESQJU6uD3NoDmb xcIT1era28FISSWbyrzZ9BE4or6s9ReV20CxfFzb8dzhXPekpxOQSLRLzmDBMYAJK7Ir FE+Y/vpLq6vmkVRyWogO2bG0kW0NmFfOx/qlAdmeGItDNJj7iCmV+q1aSWMmfW9jux6b jLijXV2z7sy2t0jxG4xxTY6A/IVKuPzlV3BTlkfy4Ig0oqtlukvbOvDSRk+EyqWFxUuD +XDNWMenMYCiRUg21ZbewgzVHICEOEaH+tDfHt0GxXGXUCPbqJFXjPEaMihBRJtTzaiS 02ag== X-Gm-Message-State: AOAM532+jCYwfThjpHkCoSL4psuInpt4i+/dvBRxwnx2qsmYTwbY0QcY /aBOLA1PlVr3knmofGoTgdunqx8TEuDBnA== X-Google-Smtp-Source: ABdhPJxMhsssXUfWpQDXLGnh2ViuyICeXCFKM9AvtORvWMOylKhWpYH0Asbhg8chl0X/g9Z3IWpQKw== X-Received: by 2002:a05:651c:2113:: with SMTP id a19mr10774497ljq.147.1615112621826; Sun, 07 Mar 2021 02:23:41 -0800 (PST) Received: from sudda.kvasta (h77-53-209-86.cust.a3fiber.se. [77.53.209.86]) by smtp.googlemail.com with ESMTPSA id g20sm974991lfr.50.2021.03.07.02.23.40 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 07 Mar 2021 02:23:41 -0800 (PST) To: zsh-workers@zsh.org From: Linus Kardell Subject: KEYBOARD_HACK breaks with escaped quotes Message-ID: <1fef65c9-6680-b17a-98e8-c67572778f7f@gmail.com> Date: Sun, 7 Mar 2021 11:23:40 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.1 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="vSj4OMi7tJBiu34qPoCAeBzyh9aPyi4HH" X-Seq: 48145 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --vSj4OMi7tJBiu34qPoCAeBzyh9aPyi4HH Content-Type: multipart/mixed; boundary="kbiL7YeElVI5IMIyVlziXXsPziUY7yoqf"; protected-headers="v1" From: Linus Kardell To: zsh-workers@zsh.org Message-ID: <1fef65c9-6680-b17a-98e8-c67572778f7f@gmail.com> Subject: KEYBOARD_HACK breaks with escaped quotes --kbiL7YeElVI5IMIyVlziXXsPziUY7yoqf Content-Type: multipart/mixed; boundary="------------48FE5AEE463FE69B190F6FAC" Content-Language: en-US This is a multi-part message in MIME format. --------------48FE5AEE463FE69B190F6FAC Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable So, zsh has the KEYBOARD_HACK option as an anti-annoyance feature, which = removes a trailing quote character in case you accidentally hit it along = with enter. However, this naively looks at whether there is an odd=20 number of quotes at the command line, which causes it to invert when you = have (and odd number of) escaped quotes, removing the trailing quote=20 when it shouldn't and vice versa. For example, if you write=20 'test'\''test' or 'test'"'"'test'' with this enabled, zsh will=20 inapropriately remove the trailing quotes, whereas if you write echo=20 'test'\''test'' it will not remove the trailing quote. Instead, zsh=20 needs to more smartly check whether the quoting is unbalanced and if=20 removing the trailing quote would make it balanced. --------------48FE5AEE463FE69B190F6FAC Content-Type: application/pgp-keys; name="OpenPGP_0xE0EDF4F5F115F537.asc" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="OpenPGP_0xE0EDF4F5F115F537.asc" -----BEGIN PGP PUBLIC KEY BLOCK----- xsFNBFhytHQBEACmjxXEsVwlnXNoYcZ1WRmtDINYVmAoP8qiAEgEHC7gtvT7wecxxasrBMthp= cLH 2hK7bp//Z9nkUOShk/sq3j7spGnkWrD/iQQ5h/i32842o+0v/CX15G3HmEXDPDOOl6nXgxnv/= rGM NY4+fi7vzNRkbv+RInvMraLjaNkJNTW0UXoU2Ci0zU0MxZ3+pt+aoAkfezZtQEQvWOIc+kfVM= /6J IeCDN5D/R7OFCkisW6KE3lFmg+GyoZdZUT2Q5HAT+SjZFdBN9Eki6pbqm0FWNLtUgqAqntdde= ABB SdGD0na7EhDyVQIOEtnK+6pFWruW9SRRiOEXv9FG4XhEiOzgK6pek8SK6blPlyzPghiC50ZSS= U2F woxljN+GKskdjJ0SjR30IOyfngVecbGk8uj6RlzivIrtq10wKZyiWjOeMtCXegsLlGj713FRq= rxh AabehGlH40Q8E3ra7wT5wU7Bj1zixD3Wlkz1cVM1pONdHnW03MOYkEs/gbCDjXcYS96Xm/QJC= RWy pNz71GuHrxb+LAhkLjaTTRbEZTbZXb36l7WJYEN9vZvBuVGDH/QdUN1BHmZR3qB4T9hIB8s1p= e8m nnDuSSGBzUV9NxEOcKCkFcQ4ns3aet5uPqwvLaC8O5wX/df6sPel3K5cZovZcR6rvYfE0TAbe= 481 HT7BXe7f7fBrWwARAQABzSdMaW51cyBLYXJkZWxsIDxsaW51cy5rYXJkZWxsQGdtYWlsLmNvb= T7C wXYEEwEKACAECwkIBwIVCgIWAQIZAQWCWHK0dAKeAQKbAQWJCWiyLgAKCRDg7fT18RX1NznLE= ACb LR7j9A3lUMO5vJVsWww5HMMFzJiMj3BOQkE9eCX97I0FtwE24E2TgLxCx6XJUOGjBVZ/Q+/zD= M/E xpcUCE3sOhBrTbce3tzvEmyLMLUw/bCgrC+43XcoLlSS+aX6gsCffPpkhZfEkbevTdgdYr3zN= Ik0 ERQin81Tox3q6rCy38dFT5NEvpAUtuN/kFntruz90y1D7NsITERyWn8cLK+cESj/5O/FYIoWA= l5X V5RiHClMGUO77KlJyid3fW5d3l6ogDdfcQ5kcyI3ehnJ5aoeWd2TV+gMb42xRXLdS20nP3SLY= REE VKZJg2LzEJWBsR2NipRVQzc/hyXFPN0pVw/iLMWIqlcaGfJaIhaFwfXlz0+YIrXA194Ew7rm3= Cxa MgoLsGTZ/s+Fjmzu3Tu6gDey2HTH9IHLHhAmiLCIO2Tsz5Dx2XyV6apWtopGSTUm0gzrNXvpz= J11 iIsRKfecz2Nt8NuostTs3UZKvVFq7L4KnE3pfa8hYAU9pIPdU+8K0TnxgHTdahoroFgCTRi3b= QYy 90MoSFqrtz5EgGEY9X15Z7ONv3wzwx/zbq+BiPtIbG7R2ahD9XYLUrvTAv4G7kN5SllURMz4I= fK/ TD/lXYSDBrfzG8gHp9p2NzE1YDzrsdX7gN086x5aKPCKPQ8dQoXJxi3sPvuu7LsXS/+e7On2g= MJe BBARCAAGBQJYcrr+AAoJEAuXtsz5SG3wQ6UA/ApEtJEft/BgIhAWLR5WiduidemyAyZvEe+gM= 58L 30CQAP99Od/riCDvPb/QBgS8y+XRRQTDMPWOJAAO977xKiFFRc0nTGludXMgS2FyZGVsbCA8b= Glu dXNfYV9nX2tAaG90bWFpbC5jb20+wsF2BBMBCgAgBAsJCAcCFQoCFgECGQAFglhytHQCngECm= wEF iQlosi4ACgkQ4O309fEV9Tct4RAAnV+GwXzm1Dc0PhAo4h5TP2iohGax8LrUSY2Vp/JqFjJgk= cKp /B6fe9VaKf+PRoNbar7kyZ/UCg7O54rwHtqMgH/lS3hTU0oQQViqEHdiww/Cow+JFjIczlL33= tfA +Pe4OhunPMsvo38+CCZVZXXz36U+kXDpDRCUjE/mKS2YNWvgwuvbV98JnyRy5vRjx2uyhCany= C8a 3R303cDiBe7qTfFtTa6+oqNFcYaWt/78zPM750y2G9jFyv2CjBmG9R76Yj6ddowzDIS/YLTk+= vHQ HtwjKV+Kr/0O89sfhYEcb9UD9CqpXnm/HGczCOSfQavBzaZBr8fJF2BIWYToZARWUbKGeD+QT= uYe dFetFwzbfpdtIOauwQ/TEF6uw1D1tr3C4OPVZmnGE0uZV/X0ZZtHe0hsf9q5c9+w+zzDRGYhJ= wvP wRT4XJtfnouVwpKAFmAnRKic8O7FNsici+WkWDIzJnw5F7dBmwZRi/DAOWW3Rs6subVtjv84l= Wr+ 1q3YQwf7TQHoSB2De2y7fKmP0Yygqw/8q3oE/uRFiF8qHkvIBiXk53i4csJpqY9DH7LPPC7Ft= HZ5 HprlSH6Q5rw5ohWZ1LELRp8vR3n7DPTiMXLDGmcUW/oXDaroo43cmEBVtQ/CnuCFMbwJL3UNS= rSm 3l4HXV3Tus0EayI2/66Qd0+WXx/CXgQQEQgABgUCWHK7BgAKCRALl7bM+Uht8CqqAP4/d66ZX= pUs DzLbekW/i1n8ctwPX4SY5fjgUx037Rd6RQD+KxenaepzBIvWVIGwPpt4cgV7Lu+Tte0GQ+On8= t4R ArTNKExpbnVzIEthcmRlbGwgPGxpbnVzLmthcmRlbGxAa3JhbW5ldC5zZT7CwXYEEwEKACAEC= wkI BwIVCgIWAQIZAAWCWHK0dAKeAQKbAQWJCWiyLgAKCRDg7fT18RX1N06SD/9ekT5SEKIvx+Z6R= gYD MRkd370TG/QSU05n2Z/SWklDwDNUvvb9cKNtI8HCodWQ13jgcqMCuFi+DkhGjZzUg+oySQcyC= O7g TgPpUfc6cgBNjlAHu3psfy7ZIvYlt9eo7Ldp7Hubxntx/h9xVV9jCRGlDUG7c4u9DbviCuCp1= PhK IVlw6uvHM8U6xZqB3Mv1ueJtAvMoVE2hi5nJl9zL/liQ+R9s4GFdYdNl3c+y7M9l+QkVxNYnZ= 9/4 FwoZZSPM23VXO8Oc5dcOAId3pMFvH7O/UkTRBA7KdKYJwkyEirVyES/Q//PQewAU8cbFk9nP+= 6K1 ubtnrnfvEH3sCa7EW5mBrJI1CersVHev1VAn2dXd/zp3fZ48hKlbsVD6glrtfYjszVNEnt9gI= GDC z7n2C3XD3xJGHvKwpXrmwtBwNzQN7MpgXETJXvjGjA3jOHaJzwV/mr7PXtd2bvV0yKo2wIhzU= klv iyao0ijnhysg/V2zP8dNcD8M0jmqG/f5IMvkjpc/Kg7y9nx3UGVKCFOk8A4q5vks0K5hR2Ard= z5c 3pbSFvdtA4DLrfDw1TQ9LTkhIDYneOjzqJx4TQFl5dFMew8zu6d51gKthyFzi4KFbwdodxZ06= Pi0 92NTqb6bPQRnvZs+iU15mSYk3KhvHof2FtswEM0VQMDfErzt30UB3W8w48JeBBARCAAGBQJYc= rsG AAoJEAuXtsz5SG3wKhoBANTYvkvzO1MOyItKfzQ4Anc5I2rZ4ishegm/VeJABlnmAP0TO3uCZ= qKx vOLB0aIw225AOZh4y8TipiF37R0aa6cy9M0pTGludXMgS2FyZGVsbCAoVGVsbElRKSA8bGlud= XNA dGVsbGlxLmNvbT7CwX8EEwECACkFAlm3fcUCGwEFCQlosi4HCwkIBwMCAQYVCAIJCgsEFgIDA= QIe AQIXgAAKCRDg7fT18RX1NzmHD/4/5KYQKMqpiKS/uXHjj84rffdr8DE884TLQhFg+yo+BRCzX= Q1g s9k51qMli5CMqSfecGPIA5kS7B2cvcTyZhEJ+IAvE/bB/DCJLJrTwMeC7gKkmkUddpXBzklSd= AW4 uzRKRJ1wsEnalsCSEpxxalQO86VVNogHdw4NrCimJ8Vdlu+ztbdgY84/xQ9Yto7hO8h1p2XW2= qvf MMHPNeqKkcouMzu4N8E96gBlwExAi9WyzETpN8aT16U7vdxucJuhtHKzGCcjgMgzAQJBd29jP= 35E IhEIDixYSwam/URmlUP8p6nnMW4U+C8MBv39+89IsaHszPjzmO0aDnJZxxUYJ5Tes+aiUWdtl= 2fO YqGXXglvHm7IzSaHUJtvhwGeY0wAD2HcYOC+SnA3yhjMzOki5JEenQz1X9ahaxtBvVzlTX0C3= qJV GHU4n8PReiTIuVyfKQpVyCyciyjwQ50yjbI9tFvkliYbZZEodUb9R0e3udJjF3nFqcdDxfYmq= KO1 Yb/2UMc7sntRVoG3N4FPvVWAmMwJdEd74CmpKXOw0mqVMjm3FN3gA3HIoLMcvtU6YKmlJRZAF= y+f tcpoVkEY0b15wloh/oNHGRV0d9jhfNbIqX73awucWh6W7PrmxVLV8HvI6xBuNbOrO/OAjYB7w= vkI KqfW/CSV4UEI55bu3B4Hy26kes0xTGludXMgS2FyZGVsbCAoVGVsbElRKSA8bGludXMua2FyZ= GVs bEB0ZWxsaXEuY29tPsLBfwQTAQIAKQUCWbd98wIbAQUJCWiyLgcLCQgHAwIBBhUIAgkKCwQWA= gMB Ah4BAheAAAoJEODt9PXxFfU33Y8QAJKNwwxL2gNh8l49lRVEvTaNNPae4m+O+xVWw6aHlNpBv= OKY gKfXlXNELpuh2OxERQwtNtq4ZgQQMfe6MvW4FpC3OFri+YXt3L8vQGX/aBveh1cPEmjlvFpck= x2L f6VCvYNQlrimBoTZJoBbPd7NUnx0VtoAFKWrY/D3ZS8MqQ+1Kq7E6sc4YALHCKxI3ZrMwkqLC= ZJD 9JTXlqWQK5bvRxjo77m5FunWmyg9NYAqW2g/TKtxs5LShC6WgUyabh215tz7mc7SLyda3U7m7= XA0 ASbAjR9EYTLP9ZWQqYWRtFhhBF7Bg/SCnWmT8rViYOn5oK0WltqTj7SnrGpon5FG+pPOe7TxW= U3c nm1RmeyF4AY3QVmX23f7Z4f4ZAlAGXuzEi3K2wWjrF096g9GilaTE0qpW7aeTbP/jS8GSur9o= TY5 WQDMDQPr08eo6CH5783rvTKMaFGE09nCONyzxPJT7MHA1p4YH3DrQgQ3+KwksOEAkmTpjEM7d= 1nL pxviDQI5jYhz+Ge1CDKuxhhifbtyQ0ieq5lCPNGyZjR3RKAtzumkKxVvpF9nkPLuxFQnF2G07= SC1 kZ1NwfKiNF9VSxePbU1Y14av89TKOFn42AqpSeyTnRkC0K9UBW0Js5plyxJ4qG99+r2hZFv0Z= mea uil8FMtvz6NGCZ6imTBd13/aE4VHzsFNBFhytHQBEACsAh3ehu6owkqP/BQBw99qqGnoRwsZ6= ok3 6mhhaDb8N1kyJ6+dM9v42vVC6Vm2ZqF9jg6CAQ/TX2DFJ+MFZ1Omc+VfYOcWY1FXOBVknU/kj= ZJb 1rj2NLUE/J0Vcig+/p8x1ZqgaWb3rkmCxbQifRamNgM3/rnLwmnxDGtheUegSQgpFqWAtvGv2= s/x VpECrsuphPJlnDBqnkuIvFunEe9kWGAgodnmXY1xRgN08jCPt1swZjZP2pvDs7AUy1M3PSnL+= +I2 +I9sNkNjXNdFtBtnXXTsRXo/psh2S7NXIlNLx0gX/cbZEt6c5hezfyXtRtCkODj+FwwJRI56s= aUw yf0SOT55X1EwGTMm2tiuHfCWhOfaFhTEcvLIb8TZC1xsU+Ls8S8STu/72DOgD2bmsG/F1AxD3= Gg4 fYUkGVQwGjF29usVYBkZMx55SLfWwURCudKebqY4w0ME8X1LF7saGy8KXJyZad+rDJLM819b/= tUu M2yllhyWs2CrQ5jZ9nhoBD1FLkXYVSoPmdcPE2dJlIapPzMXLb2VS6/GAP120lRaUhfESsixB= sLh EXgG0AFj3zrE7pd0cPh3dbMK4tOXpQncx0UJHbSoLZ6/zRBaLgijKZqvZjBgREDdvOq0bNfnU= okd yRM3r6Ecurcn4TXSFRNeLSv2TrJQzqGB+gYa83T1EwARAQABwsOEBBgBCgAPBYJYcrR0ApsCB= YkJ aLJnAikJEODt9PXxFfU3wV2gBBkBCgAGBQJYcrR0AAoJEJQ1E5NxupbRNRwQAIq6s8CBeq+mP= Mrz tGI/QEEdzdUh0maj+NCJMfqkHph9F6DLj/eP4zPkEXHHaKzl6LaxBX9NLj8+bIlR6DLIBwrPX= 4SX jTK5CB59iwQO7/s5We/LwLx1DZkA4A+D+uGbz1CVRDL3A8lAYNHSh2cG9uvpbg/ohfm3XsOwd= okh CCm5SrEqyVsTAVOXw0rP/XDdbceJGu4svO/qwuPYWj6V+rgzNUxYPF70RNdv8RjgHg/2xt+Br= dAG jpeN4He0QeKst8AOGg6BSz+uVeFb9+uFoA7WV/ijsaAnCqCouAymRHpnvMVFqnRurSxg0NxiS= 3Zy t2A5YcKdp/2zNya+rUezgsJYVE/IkBoZZL2JaKxhx31F0MfEm0FtkucR5JCT5/BAKT5Baxb7Z= 8P6 /38dUIH5s/8DfWFzmHSECyR/Qgi5EJgIhphZRgUaK2ey7cGyruY4CFOgi4Z6LFnQyQXatG20d= OcP N/MM9puHCC1MzI5yv7CN7HK2sGhNRd8fFEkdOOonVF25PyUPPtBR4rc1K+n0OV4bel0QXF2ko= qgK Bbqy/PwzNPueyD7k+aQ8iCSfzQWcs5OMZFbMybYnnGnzTDIEMhlh4CuBIlLB7KZhBbx8akNAI= hbZ JsyvUgA3QCnWPl77N5Npk6ARtuBeJ7DR8EQyRxNaIyP9Y5QGe/ZKYnElsj0bPpYP/3kzuLitV= vBy /klJhkvt8Xu+PQKtSTdhDbDqyeOpbKg2or2JOvAxb/8z+U+aI83vOz4YivzHXR6QpKc3hw7oG= cGa L2Ed7wDrRm0YK6PEEA7KI39b/ecZVOv1eGKDBlMkKLULMBaKqtEKH+dbj+X900eBmZBHlB05k= Cx2 iH0gVnyXP6k+E+L2tNre3+x7PLnSt7ewpi0bdaRrsxtlsii9xIocBYOZnSWRavbK/iixNNufS= EJu Kz+jR2sl8SwnSVNzttY88Cjog2lcaE7SsOcYEWMcvUJ0jMgG6qXzMIVE0U1gLLFGkrAmH5Br9= 4v0 HepKQ1JMqvD6CD4N3UUSKPD0jNaBsHs307uo5b+85HpPGzmvf6K17144+0iFrahzrEuiehiO+= BeM nJuPww5t1fG5VsJXJtEiKJyRE18fN/XxtM9tNkbr4iiw+d5Ba8DacC6731p0eiEWjbft1SOcg= RAk Xgpa5sYnAbbml7nEbniuhTZWrAO7t8NcbgbKDwC3cWZalEnb5gT/9le/sGzwWt5p01bt5NToW= E2c VEZ7G8j6WPvHFbz1bnDVjH/cdxY2w5AkxmfEtyndXw6mvafXUL7htG+9cDwIW1aI5HlxbL+BR= QRN rUyvQntwzAtKGU1XsTDsU/wWLSuPPZOFsIS85+/nHyHu83m9BZyOjO52J/K2j/12zsFNBFhyt= HQB EACzIbTVaqXd3lOMi1EzCfxqQHu5JpXH85txauof/DC2vI7UtQes2jmnxWQ3lsMbKBXWcWb2u= TPA gjR7neLgz3KI7fNoq9PEAlwlOxB75cy6mwzlaM7VWYbPzZ6GVVS43NpD9Qfv7uKkrDVlAwGYF= yCE RLvKbaaF9CG4Uu21qF/eELs6gKkHQSy0JUD/s+bj8rGHuUSsN6k1OQa5XkN7NV1TLIYYhS1LX= Kpx XhxVKp77Vci4dApk5NSaaZhYWtyVbfTLqkM2O7IMQ/EAdhTteYL23E+F0wYyjrL7FbLoLaWf9= 7ac KC2HnLJTlGRUTVCKjYVVum2o9uP82thPYYcA/eUZ05qgmmTjUmDi3SpRq8/pCVup9XZE5UcV5= glD czvEz105DkXvwQ4fiJ2cE7+05N8QznFk2yCEtY2Gjuuv/Ey0JvzRVd0GxdLgQ3P+s6rNNOV8Z= J0+ cP0Oos/zhawMuFnU4rUrvrYBzTMNzmxevhC+m4w9pAxEPVpJb9+FLyrlGoWSIyppiALST6WBk= +nz R7uC9DmPoi7Pt9kD3N08Boaj5k8U80ZPmzJRguvdb27780yzI9f49TjpiwSCTgXo4Ov6X5oKQ= Y2p lsttrMrefD26fE5NFQMvipeWBDfyNm2lyPjReoyviWUos/4yJbu0y1Yd6Lsl3yRy2KvmEzkiY= Cvz zQARAQABwsFlBBgBCgAPBYJYcrR0ApsMBYkJaLJ8AAoJEODt9PXxFfU3NLUP/RdG3dtGQJ7aQ= aKb XiS31fBomxEca615l6yrhwMf3DbW1KZJnR8/tDIClILigIbCLQR/uSn7k5aKHWqlLXf0WhAzw= vxQ 3GaX3n3Kf9SCMbIfnOifQoXBPWQD2GNcb8cEZsyEx4q4PWxuzb3kdFnaoLl3/LVJ48YWzvc4b= ZzM ST++23MPxpyE0XfuQHGtgMbETO70lGBnBWlTTJwOc3UVsamXal4T7NlV/fMzwaxgXup16F6+C= 5HB 6btVcE6gF3dBei9uR8BRt77nwQdBiv1zlS9UkYK+dD5+QB9TwK4a3hVilBpYp5JUGxEoLMB3j= 3Cq zb0GH4O5viCwIQuVsmM8XcF6m7c6ITJBYgJjriwucj/Qc5gJN5+grjVFx82Y0hss7QFtRcEuF= ViX FFsMxaI6TYvWq5qMUW359OpD3FkqvySk3lSkUUHlT1Lj1x6B3pI68FE3arcpaTNmbcaEXFIJD= Cvs Gd93iwjOVgJ6zLvlYNLVZc5cH8LZfNEKrN5PHyb/mkW89002bnvM0Fi2/iFNj7vJTzoh2QHtn= r5J HijMOdPJQynbrtzO6tYLzn6z1f0gJlnRKjIzax1CE3b5K6KfOuAo51WkTe4nPKqX11jBbVtM0= WQo WbrTu8OaHYgF9pjKLDLN8J/PrRXAy91pO17+eZToNDo95zoFcmnsh2WmQN5+ =3DMama -----END PGP PUBLIC KEY BLOCK----- --------------48FE5AEE463FE69B190F6FAC-- --kbiL7YeElVI5IMIyVlziXXsPziUY7yoqf-- --vSj4OMi7tJBiu34qPoCAeBzyh9aPyi4HH Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEEJVKOCMtKrTQGgC+jlDUTk3G6ltEFAmBEqawFAwAAAAAACgkQlDUTk3G6ltEc Zw//ZF8v8dekPQnyh8z+4mDAjJEE1FJWxoBJ5rGZzrcmVh99f5NmkcoHzPUXBTaAfPv1gsqD0M0z NIQLR0Dnda+wqLyzmDj/INBkECQ4wCDWfiE9V81Ik0+YVIHFCXRL+yrly6rIrOfvQtQbEAf/kem1 EEdnNVaJG230q3S1uY+rF+NsuY0MwC7dhNZRjEpUi2cqiStgFsItuy3xbQ+Hdzlcj7j2T+LJ+fEA cFyNsxz+KLe9zWkfCmNENT1GA6c6DipNIkTE2IV4wq/rndlijzvMarxLz0HoBjZED2h9Tvv5eCbz OZvblN0ru5SEPGkIhAUlnrVUaTDzkvh0KmXyPgvZH7fRcfI7rr6HtQZSBg4xqviczPPEYMIoMEMP oiJ1fpglkNkBlniaRCD/n11WGzpsbDHx9zvzgA76GUVRz7FH9YKa8GBezMRm2AGsmgOx7OGGweJo Lxqvrhnuodg6QCDRWq17JhU3Mlz4bhD3ZL1MoQC7Y5xLxZ3ArbUTivx2EqFEaZloCl8aqmiq5u5I x+gmoYFMXzZel3bmizgj3ZV9W7dZvxHX3c585PcHnGwYPEdFCwxLr29HhhGZ02LPbJEoMDR+1f6Y mATcJ5JWISLN/Cg//uw55DuLKEXUDXPzDjG0Y21eLNsyqKNH9QsmTzJqNs70g/WZssxblRZBZI3e jJE= =5veK -----END PGP SIGNATURE----- --vSj4OMi7tJBiu34qPoCAeBzyh9aPyi4HH--