From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Aaron S. Hawley" Newsgroups: gmane.emacs.bugs Subject: bug#2288: [patch] NATO support in morse.el Date: Wed, 11 Feb 2009 09:54:16 -0500 Message-ID: Reply-To: "Aaron S. Hawley" , 2288@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e642d49a1e8cde0462a5c7f4 X-Trace: ger.gmane.org 1234381098 920 80.91.229.12 (11 Feb 2009 19:38:18 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 11 Feb 2009 19:38:18 +0000 (UTC) To: bug-gnu-emacs@gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Feb 11 20:39:32 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1LXKvg-0003Te-J5 for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Feb 2009 20:39:29 +0100 Original-Received: from localhost ([127.0.0.1]:45214 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LXKuM-0002Qd-NG for geb-bug-gnu-emacs@m.gmane.org; Wed, 11 Feb 2009 14:38:06 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LXGcl-00011q-4t for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 10:03:39 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LXGck-00010c-9i for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 10:03:38 -0500 Original-Received: from [199.232.76.173] (port=38632 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LXGcj-00010R-PH for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 10:03:37 -0500 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:46886) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LXGci-0008Og-ER for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 10:03:37 -0500 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n1BF3Xdi010930; Wed, 11 Feb 2009 07:03:34 -0800 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id n1BEt5Nb008182; Wed, 11 Feb 2009 06:55:05 -0800 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: "Aaron S. Hawley" Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Wed, 11 Feb 2009 14:55:05 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: report 2288 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.12343640677898 (code B ref -1); Wed, 11 Feb 2009 14:55:05 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 11 Feb 2009 14:54:27 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n1BEsMlg007891 for ; Wed, 11 Feb 2009 06:54:24 -0800 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LXGTm-0004gR-EF for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 09:54:22 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LXGTl-0004fn-Ox for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 09:54:22 -0500 Original-Received: from [199.232.76.173] (port=42538 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LXGTl-0004fe-JC for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 09:54:21 -0500 Original-Received: from yx-out-1718.google.com ([74.125.44.156]:19647) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1LXGTk-0007Fi-Pt for bug-gnu-emacs@gnu.org; Wed, 11 Feb 2009 09:54:21 -0500 Original-Received: by yx-out-1718.google.com with SMTP id 34so116532yxf.66 for ; Wed, 11 Feb 2009 06:54:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=pvn1FfTLVmXPm9mhV8MPGZspbqvarZB3saJZiYUpm5w=; b=GlI3AK2VkRToYvTIUoWj8WIIY4ar07QwcF3OkCrKMDvdyvmXrvOuQdL86oPnJcqIza s46Qmh+07TGJEMfLZML1cVk4KB+lH7lM9k+Fs3Rd32lP90RVKTpjZrP3bOwhBqW9pCBh BtrHcJ/e0vIzNj4lgD31uKQoJ0NBfEIyIUXtc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=E8G1VBcOiqVd6E1eprR8rZwkQxuCuT3L4MSCGmYoan1eYfWTLELozVqgfh42Lxb7XZ oK/Al10wsMhN6NwhI5/+GHCXjXDyrHRmBLOoZxr5BX5L0Rhadf4bUtsz+sRGdP11Jd97 ZN/0MWab/2MDakvQy9KguX3LFH0fYWvSdKPmQ= Original-Received: by 10.100.134.16 with SMTP id h16mr744333and.72.1234364056636; Wed, 11 Feb 2009 06:54:16 -0800 (PST) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Resent-Date: Wed, 11 Feb 2009 10:03:38 -0500 X-Mailman-Approved-At: Wed, 11 Feb 2009 14:35:39 -0500 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:25185 Archived-At: --0016e642d49a1e8cde0462a5c7f4 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit I've added support to Emacs to convert text into the NATO phonetic alphabet. I added it to the existing Morse code converter (morse.el), using the existing code to complete the task. The commands are M-x nato-region and M-x denato-region. (M-x unnato-region just wasn't as fun sounding). This is all an amusement, but I find this feature helpful to use occasionally in phone conversations at work. I suppose I'd rather convert small bits of text at a time, and have the output shown in the Emacs echo area than converting the region "in place". I predict people will probably want to try and integrate the functions in morse.el to avoid duplicating the same code as I have done. The patch is attached, and the file nato.txt helped me loosely confirm that the conversion has a one-to-one correspondence. Thanks for Emacs. /a 2009-02-11 Aaron S. Hawley * play/morse.el (nato-alphabet): New variable for converting text to NATO phonetic alphabet by Aaron S. Hawley . (morse-region, unmorse-region): Add * to interactive forms. (nato-region, denato-region): New functions. --- morse.el 10 Feb 2009 22:43:49 -0500 1.19 +++ morse.el 11 Feb 2009 00:05:37 -0500 @@ -26,6 +26,9 @@ ;; Converts text to Morse code and back with M-x morse-region and ;; M-x unmorse-region (though Morse code is no longer official :-(). +;; Converts text to NATO phonetic alphabet and back with M-x +;; nato-region and M-x denato-region. + ;;; Code: (defvar morse-code '(("a" . ".-") @@ -92,10 +95,64 @@ ("@" . ".--.-.")) "Morse code character set.") +(defvar nato-alphabet '(("a" . "Alfa") + ("b" . "Bravo") + ("c" . "Charlie") + ("d" . "Delta") + ("e" . "Echo") + ("f" . "Foxtrot") + ("g" . "Golf") + ("h" . "Hotel") + ("i" . "India") + ("j" . "Juliett") + ("k" . "Kilo") + ("l" . "Lima") + ("m" . "Mike") + ("n" . "November") + ("o" . "Oscar") + ("p" . "Papa") + ("q" . "Quebec") + ("r" . "Romeo") + ("s" . "Sierra") + ("t" . "Tango") + ("u" . "Uniform") + ("v" . "Victor") + ("w" . "Whiskey") + ("x" . "Xray") + ("y" . "Yankee") + ("z" . "Zulu") + ;; Numbers + ("0" . "Zero") + ("1" . "One") + ("2" . "Two") + ("3" . "Three") + ("4" . "Four") + ("5" . "Five") + ("6" . "Six") + ("7" . "Seven") + ("8" . "Eight") + ("9" . "Niner") + ;; Punctuation is not part of standard + ("=" . "Equals") + ("?" . "Query") + ("/" . "Slash") + ("," . "Comma") + ("." . "Stop") + (":" . "Colon") + ("'" . "Apostrophe") + ("-" . "Dash") + ("(" . "Open") + (")" . "Close") + ("@" . "At")) + "NATO phonetic alphabet. +See ''International Code of Signals'' (INTERCO), United States +Edition, 1969 Edition (Revised 2003) available from National +Geospatial-Intelligence Agency at http://www.nga.mil/") + ;;;###autoload (defun morse-region (beg end) "Convert all text in a given region to morse code." - (interactive "r") + (interactive "*r") (if (integerp end) (setq end (copy-marker end))) (save-excursion @@ -118,7 +175,7 @@ ;;;###autoload (defun unmorse-region (beg end) "Convert morse coded text in region to ordinary ASCII text." - (interactive "r") + (interactive "*r") (if (integerp end) (setq end (copy-marker end))) (save-excursion @@ -137,6 +194,53 @@ (if (looking-at "/") (delete-char 1)))))))) +;;;###autoload +(defun nato-region (beg end) + "Convert all text in a given region to NATO phonetic alphabet." + ;; Copied from morse-region. -- ashawley 2009-02-10 + (interactive "*r") + (if (integerp end) + (setq end (copy-marker end))) + (save-excursion + (let ((sep "") + str nato) + (goto-char beg) + (while (< (point) end) + (setq str (downcase (buffer-substring (point) (1+ (point))))) + (cond ((looking-at "\\s-+") + (goto-char (match-end 0)) + (setq sep "")) + ((setq nato (assoc str nato-alphabet)) + (delete-char 1) + (insert sep (cdr nato)) + (setq sep "-")) + (t + (forward-char 1) + (setq sep ""))))))) + +;;;###autoload +(defun denato-region (beg end) + "Convert NATO phonetic alphabet in region to ordinary ASCII text." + ;; Copied from unmorse-region. -- ashawley 2009-02-10 + (interactive "*r") + (if (integerp end) + (setq end (copy-marker end))) + (save-excursion + (let (str paren nato) + (goto-char beg) + (while (< (point) end) + (if (null (looking-at "[a-z]+")) + (forward-char 1) + (setq str (buffer-substring (match-beginning 0) (match-end 0))) + (if (null (setq nato (rassoc str nato-alphabet))) + (goto-char (match-end 0)) + (replace-match + (if (string-equal "(" (car nato)) + (if (setq paren (null paren)) "(" ")") + (car nato)) t) + (if (looking-at "-") + (delete-char 1)))))))) + (provide 'morse) ;; arch-tag: 3331e6c1-9a9e-453f-abfd-163a9c3f93a6 --0016e642d49a1e8cde0462a5c7f4 Content-Type: text/plain; charset=US-ASCII; name="nato.txt" Content-Disposition: attachment; filename="nato.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fr2419w30 YQpiCmMKZAplCmYKZwpoCmkKagprCmwKbQpuCm8KcApxCnIKcwp0CnUKdgp3CngKeQp6Cj0KPwov CiwKLgo6CicKLQooCikKQAowCjEKMgozCjQKNQo2CjcKOAo5CmFsZmEKYnJhdm8KY2hhcmxpZQpk ZWx0YQplY2hvCmZveHRyb3QKZ29sZgpob3RlbAppbmRpYQpqdWxpZXR0CmtpbG8KbGltYQptaWtl Cm5vdmVtYmVyCm9zY2FyCnBhcGEKcXVlYmVjCnJvbWVvCnNpZXJyYQp0YW5nbwp1bmlmb3JtCnZp Y3Rvcgp3aGlza2V5CnhyYXkKeWFua2VlCnp1bHUKZXF1YWxzCnF1ZXJ5CnNsYXNoCmNvbW1hCnN0 b3AKY29sb24KYXBvc3Ryb3BoZQpkYXNoCm9wZW4KY2xvc2UKYXQKemVybwpvbmUKdHdvCnRocmVl CmZvdXIKZml2ZQpzaXgKc2V2ZW4KZWlnaHQKbmluZQo= --0016e642d49a1e8cde0462a5c7f4 Content-Type: application/octet-stream; name="morse.el-nato.diff" Content-Disposition: attachment; filename="morse.el-nato.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fr241ivf1 LS0tIG1vcnNlLmVsCTEwIEZlYiAyMDA5IDIyOjQzOjQ5IC0wNTAwCTEuMTkKKysrIG1vcnNlLmVs CTExIEZlYiAyMDA5IDAwOjA1OjM3IC0wNTAwCQpAQCAtMjYsNiArMjYsOSBAQAogOzsgQ29udmVy dHMgdGV4dCB0byBNb3JzZSBjb2RlIGFuZCBiYWNrIHdpdGggTS14IG1vcnNlLXJlZ2lvbiBhbmQK IDs7IE0teCB1bm1vcnNlLXJlZ2lvbiAodGhvdWdoIE1vcnNlIGNvZGUgaXMgbm8gbG9uZ2VyIG9m ZmljaWFsIDotKCkuCiAKKzs7IENvbnZlcnRzIHRleHQgdG8gTkFUTyBwaG9uZXRpYyBhbHBoYWJl dCBhbmQgYmFjayB3aXRoIE0teAorOzsgbmF0by1yZWdpb24gYW5kIE0teCBkZW5hdG8tcmVnaW9u LgorCiA7OzsgQ29kZToKIAogKGRlZnZhciBtb3JzZS1jb2RlICcoKCJhIiAuICIuLSIpCkBAIC05 MiwxMCArOTUsNjQgQEAKIAkJICAgICAoIkAiIC4gIi4tLS4tLiIpKQogICAiTW9yc2UgY29kZSBj aGFyYWN0ZXIgc2V0LiIpCiAKKyhkZWZ2YXIgbmF0by1hbHBoYWJldCAnKCgiYSIgLiAiQWxmYSIp CisJCQkoImIiIC4gIkJyYXZvIikKKwkJCSgiYyIgLiAiQ2hhcmxpZSIpCisJCQkoImQiIC4gIkRl bHRhIikKKwkJCSgiZSIgLiAiRWNobyIpCisJCQkoImYiIC4gIkZveHRyb3QiKQorCQkJKCJnIiAu ICJHb2xmIikKKwkJCSgiaCIgLiAiSG90ZWwiKQorCQkJKCJpIiAuICJJbmRpYSIpCisJCQkoImoi IC4gIkp1bGlldHQiKQorCQkJKCJrIiAuICJLaWxvIikKKwkJCSgibCIgLiAiTGltYSIpCisJCQko Im0iIC4gIk1pa2UiKQorCQkJKCJuIiAuICJOb3ZlbWJlciIpCisJCQkoIm8iIC4gIk9zY2FyIikK KwkJCSgicCIgLiAiUGFwYSIpCisJCQkoInEiIC4gIlF1ZWJlYyIpCisJCQkoInIiIC4gIlJvbWVv IikKKwkJCSgicyIgLiAiU2llcnJhIikKKwkJCSgidCIgLiAiVGFuZ28iKQorCQkJKCJ1IiAuICJV bmlmb3JtIikKKwkJCSgidiIgLiAiVmljdG9yIikKKwkJCSgidyIgLiAiV2hpc2tleSIpCisJCQko IngiIC4gIlhyYXkiKQorCQkJKCJ5IiAuICJZYW5rZWUiKQorCQkJKCJ6IiAuICJadWx1IikKKwkJ CTs7IE51bWJlcnMKKwkJCSgiMCIgLiAiWmVybyIpCisJCQkoIjEiIC4gIk9uZSIpCisJCQkoIjIi IC4gIlR3byIpCisJCQkoIjMiIC4gIlRocmVlIikKKwkJCSgiNCIgLiAiRm91ciIpCisJCQkoIjUi IC4gIkZpdmUiKQorCQkJKCI2IiAuICJTaXgiKQorCQkJKCI3IiAuICJTZXZlbiIpCisJCQkoIjgi IC4gIkVpZ2h0IikKKwkJCSgiOSIgLiAiTmluZXIiKQorCQkJOzsgUHVuY3R1YXRpb24gaXMgbm90 IHBhcnQgb2Ygc3RhbmRhcmQKKwkJCSgiPSIgLiAiRXF1YWxzIikKKwkJCSgiPyIgLiAiUXVlcnki KQorCQkJKCIvIiAuICJTbGFzaCIpCisJCQkoIiwiIC4gIkNvbW1hIikKKwkJCSgiLiIgLiAiU3Rv cCIpCisJCQkoIjoiIC4gIkNvbG9uIikKKwkJCSgiJyIgLiAiQXBvc3Ryb3BoZSIpCisJCQkoIi0i IC4gIkRhc2giKQorCQkJKCIoIiAuICJPcGVuIikKKwkJCSgiKSIgLiAiQ2xvc2UiKQorCQkJKCJA IiAuICJBdCIpKQorICAiTkFUTyBwaG9uZXRpYyBhbHBoYWJldC4KK1NlZSAnJ0ludGVybmF0aW9u YWwgQ29kZSBvZiBTaWduYWxzJycgKElOVEVSQ08pLCBVbml0ZWQgU3RhdGVzCitFZGl0aW9uLCAx OTY5IEVkaXRpb24gKFJldmlzZWQgMjAwMykgYXZhaWxhYmxlIGZyb20gTmF0aW9uYWwKK0dlb3Nw YXRpYWwtSW50ZWxsaWdlbmNlIEFnZW5jeSBhdCBodHRwOi8vd3d3Lm5nYS5taWwvIikKKwogOzs7 IyMjYXV0b2xvYWQKIChkZWZ1biBtb3JzZS1yZWdpb24gKGJlZyBlbmQpCiAgICJDb252ZXJ0IGFs bCB0ZXh0IGluIGEgZ2l2ZW4gcmVnaW9uIHRvIG1vcnNlIGNvZGUuIgotICAoaW50ZXJhY3RpdmUg InIiKQorICAoaW50ZXJhY3RpdmUgIipyIikKICAgKGlmIChpbnRlZ2VycCBlbmQpCiAgICAgICAo c2V0cSBlbmQgKGNvcHktbWFya2VyIGVuZCkpKQogICAoc2F2ZS1leGN1cnNpb24KQEAgLTExOCw3 ICsxNzUsNyBAQAogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biB1bm1vcnNlLXJlZ2lvbiAoYmVnIGVu ZCkKICAgIkNvbnZlcnQgbW9yc2UgY29kZWQgdGV4dCBpbiByZWdpb24gdG8gb3JkaW5hcnkgQVND SUkgdGV4dC4iCi0gIChpbnRlcmFjdGl2ZSAiciIpCisgIChpbnRlcmFjdGl2ZSAiKnIiKQogICAo aWYgKGludGVnZXJwIGVuZCkKICAgICAgIChzZXRxIGVuZCAoY29weS1tYXJrZXIgZW5kKSkpCiAg IChzYXZlLWV4Y3Vyc2lvbgpAQCAtMTM3LDYgKzE5NCw1MyBAQAogCSAgICAoaWYgKGxvb2tpbmct YXQgIi8iKQogCQkoZGVsZXRlLWNoYXIgMSkpKSkpKSkpCiAKKzs7OyMjI2F1dG9sb2FkCisoZGVm dW4gbmF0by1yZWdpb24gKGJlZyBlbmQpCisgICJDb252ZXJ0IGFsbCB0ZXh0IGluIGEgZ2l2ZW4g cmVnaW9uIHRvIE5BVE8gcGhvbmV0aWMgYWxwaGFiZXQuIgorICA7OyBDb3BpZWQgZnJvbSBtb3Jz ZS1yZWdpb24uIC0tIGFzaGF3bGV5IDIwMDktMDItMTAKKyAgKGludGVyYWN0aXZlICIqciIpCisg IChpZiAoaW50ZWdlcnAgZW5kKQorICAgICAgKHNldHEgZW5kIChjb3B5LW1hcmtlciBlbmQpKSkK KyAgKHNhdmUtZXhjdXJzaW9uCisgICAgKGxldCAoKHNlcCAiIikKKwkgIHN0ciBuYXRvKQorICAg ICAgKGdvdG8tY2hhciBiZWcpCisgICAgICAod2hpbGUgKDwgKHBvaW50KSBlbmQpCisJKHNldHEg c3RyIChkb3duY2FzZSAoYnVmZmVyLXN1YnN0cmluZyAocG9pbnQpICgxKyAocG9pbnQpKSkpKQor CShjb25kICgobG9va2luZy1hdCAiXFxzLSsiKQorCSAgICAgICAoZ290by1jaGFyIChtYXRjaC1l bmQgMCkpCisJICAgICAgIChzZXRxIHNlcCAiIikpCisJICAgICAgKChzZXRxIG5hdG8gKGFzc29j IHN0ciBuYXRvLWFscGhhYmV0KSkKKwkgICAgICAgKGRlbGV0ZS1jaGFyIDEpCisJICAgICAgIChp bnNlcnQgc2VwIChjZHIgbmF0bykpCisJICAgICAgIChzZXRxIHNlcCAiLSIpKQorCSAgICAgICh0 CisJICAgICAgIChmb3J3YXJkLWNoYXIgMSkKKwkgICAgICAgKHNldHEgc2VwICIiKSkpKSkpKQor Cis7OzsjIyNhdXRvbG9hZAorKGRlZnVuIGRlbmF0by1yZWdpb24gKGJlZyBlbmQpCisgICJDb252 ZXJ0IE5BVE8gcGhvbmV0aWMgYWxwaGFiZXQgaW4gcmVnaW9uIHRvIG9yZGluYXJ5IEFTQ0lJIHRl eHQuIgorICA7OyBDb3BpZWQgZnJvbSB1bm1vcnNlLXJlZ2lvbi4gLS0gYXNoYXdsZXkgMjAwOS0w Mi0xMAorICAoaW50ZXJhY3RpdmUgIipyIikKKyAgKGlmIChpbnRlZ2VycCBlbmQpCisgICAgICAo c2V0cSBlbmQgKGNvcHktbWFya2VyIGVuZCkpKQorICAoc2F2ZS1leGN1cnNpb24KKyAgICAobGV0 IChzdHIgcGFyZW4gbmF0bykKKyAgICAgIChnb3RvLWNoYXIgYmVnKQorICAgICAgKHdoaWxlICg8 IChwb2ludCkgZW5kKQorCShpZiAobnVsbCAobG9va2luZy1hdCAiW2Etel0rIikpCisJICAgIChm b3J3YXJkLWNoYXIgMSkKKwkgIChzZXRxIHN0ciAoYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVn aW5uaW5nIDApIChtYXRjaC1lbmQgMCkpKQorCSAgKGlmIChudWxsIChzZXRxIG5hdG8gKHJhc3Nv YyBzdHIgbmF0by1hbHBoYWJldCkpKQorCSAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWVuZCAwKSkK KwkgICAgKHJlcGxhY2UtbWF0Y2gKKwkJICAoaWYgKHN0cmluZy1lcXVhbCAiKCIgKGNhciBuYXRv KSkKKwkJICAgICAgKGlmIChzZXRxIHBhcmVuIChudWxsIHBhcmVuKSkgIigiICIpIikKKwkJICAg IChjYXIgbmF0bykpIHQpCisJICAgIChpZiAobG9va2luZy1hdCAiLSIpCisJCShkZWxldGUtY2hh ciAxKSkpKSkpKSkKKwogKHByb3ZpZGUgJ21vcnNlKQogCiA7OyBhcmNoLXRhZzogMzMzMWU2YzEt OWE5ZS00NTNmLWFiZmQtMTYzYTljM2Y5M2E2Cg== --0016e642d49a1e8cde0462a5c7f4--