From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin Resent-From: yagnesh raghava Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Dec 2011 16:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 10263@debbugs.gnu.org X-Debbugs-Original-To: Received: via spool by submit@debbugs.gnu.org id=B.13235361431215 (code B ref -1); Sat, 10 Dec 2011 16:56:01 +0000 Received: (at submit) by debbugs.gnu.org; 10 Dec 2011 16:55:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZQD5-0000JL-Gb for submit@debbugs.gnu.org; Sat, 10 Dec 2011 11:55:43 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZKga-0000Qm-7F for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:01:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ah-BT for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:44 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RECEIVED_FROM_WINDOWS_HOST autolearn=no version=3.3.2 Received: from lists.gnu.org ([140.186.70.17]:54445) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ab-8q for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Received: from eggs.gnu.org ([140.186.70.92]:42832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfO-0001BN-M3 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfI-00069D-75 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:30 -0500 Received: from snt0-omc1-s9.snt0.hotmail.com ([65.55.90.20]:16595) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfH-000699-LD for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:24 -0500 Received: from SNT125-W35 ([65.55.90.7]) by snt0-omc1-s9.snt0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 10 Dec 2011 02:40:21 -0800 Message-ID: Content-Type: multipart/mixed; boundary="_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_" X-Originating-IP: [221.115.36.228] From: yagnesh raghava Date: Sat, 10 Dec 2011 10:40:23 +0000 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 10 Dec 2011 10:40:21.0183 (UTC) FILETIME=[1DB444F0:01CCB728] X-detected-operating-system: by eggs.gnu.org: Windows 2000 SP4, XP SP1+ X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Mailman-Approved-At: Sat, 10 Dec 2011 11:55:38 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: multipart/alternative; boundary="_d185ed41-e455-4c9f-8109-7d2dd82de41c_" --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable emacs crashing on when writing text in telugu-itrans (infact with any Indian script input method) while auto-complete-mode[1] enabled. I can reproduce this on my ubuntu 11.10 and 10.04. here is how one can reproduce. ---------------------------------------------------- emacs -Q =3B start emacs with out any customizations M-x load-file popup.el =3B file attached to this mail M-x load-file auto-complete.el =3B file attached to this mail M-x switch-to-buffer *scratch* RET M-x auto-complete-mode =3B enable auto-complete-mode C-\ telugu-itrans RET =3B change input method to telugu =3B lets type any word twice for eg: nuvvu nuvvu nuvvu nuvvu ---------------------------------------------------- now emacs crashes Footnotes: [1] http://cx4a.org/software/auto-complete/ = --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
emacs crashing on when writing text in telugu-itrans (infact with any
In= dian script input method) =3B while auto-complete-mode[1] enabled.
<= br>I can reproduce this on my ubuntu 11.10 and 10.04.

here is how on= e can reproduce.
----------------------------------------------------emacs -Q =3B start emacs with out any customizations
M-x load-file popu= p.el =3B file attached to this mail
M-x load-file auto-complete.el =3B f= ile attached to this mail
M-x switch-to-buffer *scratch* RET
M-x auto= -complete-mode =3B enable auto-complete-mode
C-\ telugu-itrans RET =3B c= hange input method to telugu
=3B lets type any word twice for eg: nuvvu = nuvvu
nuvvu nuvvu
---------------------------------------------------= -

now emacs crashes

Footnotes:
[1] =3B http://cx4a.org= /software/auto-complete/

= --_d185ed41-e455-4c9f-8109-7d2dd82de41c_-- --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="popup.el" Ozs7IHBvcHVwLmVsIC0tLSBWaXN1YWwgcG9wdXAgaW50ZXJmYWNlCgo7OyBDb3B5cmlnaHQgKEMp IDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsgQXV0aG9yOiBUb21vaGlybyBNYXRz dXlhbWEgPHRvbW9AY3g0YS5vcmc+Cjs7IEtleXdvcmRzOiBsaXNwCjs7IFZlcnNpb246IDAuNAoK OzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7 OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5OgoKOzsgCgo7OzsgQ29kZToKCihldmFsLXdo ZW4tY29tcGlsZQogIChyZXF1aXJlICdjbCkpCgoMCgo7OyBVdGlsaXRpZXMKCihkZWZ2YXIgcG9w dXAtdXNlLW9wdGltaXplZC1jb2x1bW4tY29tcHV0YXRpb24gdAogICJVc2Ugb3B0aW1pemVkIGNv bHVtbiBjb21wdXRhdGlvbiByb3V0aW5lLgpJZiB0aGVyZSBpcyBhIHByb2JsZW0sIHBsZWFzZSBz ZXQgaXQgdG8gbmlsLiIpCgo7OyBCb3Jyb3dlZCBmcm9tIGFueXRoaW5nLmVsCihkZWZtYWNybyBw b3B1cC1haWYgKHRlc3QtZm9ybSB0aGVuLWZvcm0gJnJlc3QgZWxzZS1mb3JtcykKICAiQW5hcGhv cmljIGlmLiBUZW1wb3JhcnkgdmFyaWFibGUgYGl0JyBpcyB0aGUgcmVzdWx0IG9mIHRlc3QtZm9y bS4iCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKGxldCAoKGl0ICx0ZXN0LWZvcm0pKQogICAg IChpZiBpdCAsdGhlbi1mb3JtICxAZWxzZS1mb3JtcykpKQoKKGRlZnVuIHBvcHVwLXgtdG8tc3Ry aW5nICh4KQogICJDb252ZXJ0IGFueSBvYmplY3QgdG8gc3RyaW5nIGVmZmVjaWVudGx5LgpUaGlz IGlzIGZhc3RlciB0aGFuIHByaW4xLXRvLXN0cmluZyBpbiBtYW55IGNhc2VzLiIKICAodHlwZWNh c2UgeAogICAgKHN0cmluZyB4KQogICAgKHN5bWJvbCAoc3ltYm9sLW5hbWUgeCkpCiAgICAoaW50 ZWdlciAobnVtYmVyLXRvLXN0cmluZyB4KSkKICAgIChmbG9hdCAobnVtYmVyLXRvLXN0cmluZyB4 KSkKICAgICh0IChmb3JtYXQgIiVzIiB4KSkpKQoKKGRlZnVuIHBvcHVwLXN1YnN0cmluZy1ieS13 aWR0aCAoc3RyaW5nIHdpZHRoKQogICJSZXR1cm4gY29ucyBvZiBzdWJzdHJpbmcgYW5kIHJlbWFp bmluZyBzdHJpbmcgYnkgYFdJRFRIJy4iCiAgOzsgRXhwYW5kIHRhYnMgd2l0aCA0IHNwYWNlcwog IChzZXRxIHN0cmluZyAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcdCIgIiAgICAiIHN0cmlu ZykpCiAgKGxvb3Agd2l0aCBsZW4gPSAobGVuZ3RoIHN0cmluZykKICAgICAgICB3aXRoIHcgPSAw CiAgICAgICAgZm9yIGwgZnJvbSAwCiAgICAgICAgZm9yIGMgaW4gKGFwcGVuZCBzdHJpbmcgbmls KQogICAgICAgIHdoaWxlICg8PSAoaW5jZiB3IChjaGFyLXdpZHRoIGMpKSB3aWR0aCkKICAgICAg ICBmaW5hbGx5IHJldHVybgogICAgICAgIChpZiAoPCBsIGxlbikKICAgICAgICAgICAgKGNvbnMg KHN1YnN0cmluZyBzdHJpbmcgMCBsKSAoc3Vic3RyaW5nIHN0cmluZyBsKSkKICAgICAgICAgIChs aXN0IHN0cmluZykpKSkKCihkZWZ1biBwb3B1cC1maWxsLXN0cmluZyAoc3RyaW5nICZvcHRpb25h bCB3aWR0aCBtYXgtd2lkdGgganVzdGlmeSBzcXVlZXplKQogICJTcGxpdCBTVFJJTkcgaW50byBm aXhlZCB3aWR0aCBzdHJpbmdzIGFuZCByZXR1cm4gYSBjb25zIGNlbGwgbGlrZQpcKFdJRFRIIC4g Uk9XUykuIEhlcmUsIHRoZSBjYXIgV0lEVEggaW5kaWNhdGVzIHRoZSBhY3R1YWwgbWF4aW0gd2lk dGggb2YgUk9XUy4KClRoZSBhcmd1bWVudCBXSURUSCBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIGZp bGxpbmcgZWFjaCBwYXJhZ3JhcGguIFdJRFRIIG5pbAptZWFucyBkb24ndCBwZXJmb3JtIGFueSBq dXN0aWZpY2F0aW9uIGFuZCB3b3JkIHdyYXAuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uCmRvZXNu J3QgYWRkIGFueSBwYWRkaW5nIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBlYWNoIHJvdy4KCk1B WC1XSURUSCwgaWYgV0lEVEggaXMgbmlsLCBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9m IGNvbHVtbnMuCgpUaGUgb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IEpVU1RJRlkgc3BlY2lmaWVz IHdoaWNoIGtpbmQgb2YganVzdGlmaWNhdGlvbgp0byBkbzogYGZ1bGwnLCBgbGVmdCcsIGByaWdo dCcsIGBjZW50ZXInLCBvciBgbm9uZScgKGVxdWl2YWxlbnQgdG8gbmlsKS4KQSB2YWx1ZSBvZiB0 IG1lYW5zIGhhbmRsZSBlYWNoIHBhcmFncmFwaCBhcyBzcGVjaWZpZWQgYnkgaXRzIHRleHQgcHJv cGVydGllcy4KClNRVUVFWkUgbmlsIG1lYW5zIGxlYXZlIHdoaXRlc3BhY2VzIG90aGVyIHRoYW4g bGluZSBicmVha3MgdW50b3VjaGVkLiIKICAoaWYgKGVxIHdpZHRoIDApCiAgICAgIChlcnJvciAi Q2FuJ3QgZmlsbCBzdHJpbmcgd2l0aCAwIHdpZHRoIikpCiAgKGlmIHdpZHRoCiAgICAgIChzZXRx IG1heC13aWR0aCB3aWR0aCkpCiAgKHdpdGgtdGVtcC1idWZmZXIKICAgIChsZXQgKCh0YWItd2lk dGggNCkKICAgICAgICAgIChmaWxsLWNvbHVtbiB3aWR0aCkKICAgICAgICAgIChsZWZ0LW1hcmdp biAwKQogICAgICAgICAgKGtpbnNva3UtbGltaXQgMSkKICAgICAgICAgIGluZGVudC10YWJzLW1v ZGUKICAgICAgICAgIHJvdyByb3dzKQogICAgICAoaW5zZXJ0IHN0cmluZykKICAgICAgKHVudGFi aWZ5IChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAoaWYgd2lkdGgKICAgICAgICAgIChm aWxsLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBqdXN0aWZ5IChub3Qgc3F1ZWV6ZSkp KQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAoc2V0cSB3aWR0aCAwKQogICAg ICAod2hpbGUgKHByb2cyCiAgICAgICAgICAgICAgICAgKGxldCAoKGxpbmUgKGJ1ZmZlci1zdWJz dHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAocHJvZ24gKGVuZC1v Zi1saW5lKSAocG9pbnQpKSkpKQogICAgICAgICAgICAgICAgICAgKGlmIG1heC13aWR0aAogICAg ICAgICAgICAgICAgICAgICAgICh3aGlsZSAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSByb3cgKHRydW5jYXRlLXN0cmluZy10by13aWR0aCBsaW5lIG1heC13aWR0 aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAobWF4IHdpZHRo IChzdHJpbmctd2lkdGggcm93KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1 c2ggcm93IHJvd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChub3QgKD0g KGxlbmd0aCByb3cpIChsZW5ndGggbGluZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBsaW5lIChzdWJzdHJpbmcgbGluZSAobGVuZ3RoIHJvdykpKSkpKQogICAg ICAgICAgICAgICAgICAgICAoc2V0cSB3aWR0aCAobWF4IHdpZHRoIChzdHJpbmctd2lkdGggbGlu ZSkpKQogICAgICAgICAgICAgICAgICAgICAocHVzaCBsaW5lIHJvd3MpKSkKICAgICAgICAgICAg ICAgICAoPCAocG9pbnQpIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUgMikpKQogICAgICAoY29ucyB3aWR0aCAobnJldmVyc2Ugcm93cykpKSkpCgooZGVmbWFj cm8gcG9wdXAtc2F2ZS1idWZmZXItc3RhdGUgKCZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVu dCAwKSkKICBgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGxldCAoKGJ1ZmZlci11bmRvLWxpc3QgdCkK ICAgICAgICAgICAoYnVmZmVyLXJlYWQtb25seSBuaWwpCiAgICAgICAgICAgKG1vZGlmaWVkIChi dWZmZXItbW9kaWZpZWQtcCkpKQogICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgKHBy b2duICxAYm9keSkKICAgICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCBtb2RpZmllZCkpKSkp CiAgCihkZWZ1biBwb3B1cC1wcmVmZXJyZWQtd2lkdGggKGxpc3QpCiAgIlJldHVybiBwcmVmZXJy ZWQgd2lkdGggb2YgcG9wdXAgdG8gc2hvdyBgTElTVCcgYmVhdXRpZnVsbHkuIgogIChsb29wIHdp dGggdGFiLXdpZHRoID0gNAogICAgICAgIGZvciBpdGVtIGluIGxpc3QKICAgICAgICBmb3Igc3Vt bWFyeSA9IChwb3B1cC1pdGVtLXN1bW1hcnkgaXRlbSkKICAgICAgICBtYXhpbWl6ZSAoc3RyaW5n LXdpZHRoIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKSkgaW50byB3aWR0aAogICAgICAgIGlmIChz dHJpbmdwIHN1bW1hcnkpCiAgICAgICAgbWF4aW1pemUgKCsgKHN0cmluZy13aWR0aCBzdW1tYXJ5 KSAyKSBpbnRvIHN1bW1hcnktd2lkdGgKICAgICAgICBmaW5hbGx5IHJldHVybiAoKiAoY2VpbGlu ZyAoLyAoKyAob3Igd2lkdGggMCkgKG9yIHN1bW1hcnktd2lkdGggMCkpIDEwLjApKSAxMCkpKQoK Ozsgd2luZG93LWZ1bGwtd2lkdGgtcCBpcyBub3QgZGVmaW5lZCBpbiBFbWFjcyAyMi4xCihkZWZ1 biBwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wICgmb3B0aW9uYWwgd2luZG93KQogIChpZiAoZmJv dW5kcCAnd2luZG93LWZ1bGwtd2lkdGgtcCkKICAgICAgKHdpbmRvdy1mdWxsLXdpZHRoLXAgd2lu ZG93KQogICAgKD0gKHdpbmRvdy13aWR0aCB3aW5kb3cpIChmcmFtZS13aWR0aCAod2luZG93LWZy YW1lIChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpKSkpKSkKCjs7IHRydW5jYXRlZC1wYXJ0 aWFsLXdpZHRoLXdpbmRvdy1wIGlzIG5vdCBkZWZpbmVkIGluIEVtYWNzIDIyCihkZWZ1biBwb3B1 cC10cnVuY2F0ZWQtcGFydGlhbC13aWR0aC13aW5kb3ctcCAoJm9wdGlvbmFsIHdpbmRvdykKICAo dW5sZXNzIHdpbmRvdwogICAgKHNldHEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKICAodW5s ZXNzIChwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wIHdpbmRvdykKICAgIChsZXQgKCh0LXAtdy13 IChidWZmZXItbG9jYWwtdmFsdWUgJ3RydW5jYXRlLXBhcnRpYWwtd2lkdGgtd2luZG93cwoJCQkJ ICAgICAgICh3aW5kb3ctYnVmZmVyIHdpbmRvdykpKSkKICAgICAgKGlmIChpbnRlZ2VycCB0LXAt dy13KQoJICAoPCAod2luZG93LXdpZHRoIHdpbmRvdykgdC1wLXctdykKCXQtcC13LXcpKSkpCgoo ZGVmdW4gcG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4gKCkKICAob3IgKHdoZW4gKGFuZCBw b3B1cC11c2Utb3B0aW1pemVkLWNvbHVtbi1jb21wdXRhdGlvbgogICAgICAgICAgICAgICAgIChl cSAod2luZG93LWhzY3JvbGwpIDApKQogICAgICAgIChsZXQgKChjdXJyZW50LWNvbHVtbiAoY3Vy cmVudC1jb2x1bW4pKSkKICAgICAgICAgIChpZiAob3IgKHBvcHVwLXRydW5jYXRlZC1wYXJ0aWFs LXdpZHRoLXdpbmRvdy1wKQogICAgICAgICAgICAgICAgICB0cnVuY2F0ZS1saW5lcwogICAgICAg ICAgICAgICAgICAoPCBjdXJyZW50LWNvbHVtbiAod2luZG93LXdpZHRoKSkpCiAgICAgICAgICAg ICAgY3VycmVudC1jb2x1bW4pKSkKICAgICAgKGNhciAocG9zbi1jb2wtcm93IChwb3NuLWF0LXBv aW50KSkpKSkKCihkZWZ1biBwb3B1cC1sYXN0LWxpbmUtb2YtYnVmZmVyLXAgKCkKICAoc2F2ZS1l eGN1cnNpb24gKGVuZC1vZi1saW5lKSAoLz0gKGZvcndhcmQtbGluZSkgMCkpKQoKKGRlZnVuIHBv cHVwLWxvb2t1cC1rZXktYnktZXZlbnQgKGZ1bmN0aW9uIGV2ZW50KQogIChvciAoZnVuY2FsbCBm dW5jdGlvbiAodmVjdG9yIGV2ZW50KSkKICAgICAgKGlmIChzeW1ib2xwIGV2ZW50KQogICAgICAg ICAgKHBvcHVwLWFpZiAoZ2V0IGV2ZW50ICdldmVudC1zeW1ib2wtZWxlbWVudC1tYXNrKQogICAg ICAgICAgICAgIChmdW5jYWxsIGZ1bmN0aW9uICh2ZWN0b3IgKGxvZ2lvciAob3IgKGdldCAoY2Fy IGl0KSAnYXNjaWktY2hhcmFjdGVyKSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2FkciBpdCkpKSkpKSkpCgoMCgo7OyBQb3B1cCBjb21tb24KCihk ZWZncm91cCBwb3B1cCBuaWwKICAiVmlzdWFsIHBvcHVwIGludGVyZmFjZSIKICA6Z3JvdXAgJ2xp c3AKICA6cHJlZml4ICJwb3B1cC0iKQoKKGRlZmZhY2UgcG9wdXAtZmFjZQogICcoKHQgKDpiYWNr Z3JvdW5kICJsaWdodGdyYXkiIDpmb3JlZ3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9w dXAuIgogIDpncm91cCAncG9wdXApCgooZGVmZmFjZSBwb3B1cC1zY3JvbGwtYmFyLWZvcmVncm91 bmQtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJibGFjayIpKSkKICAiRm9yZWdyb3VuZCBmYWNl IGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZmZhY2UgcG9wdXAtc2Nyb2xs LWJhci1iYWNrZ3JvdW5kLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAiZ3JheSIpKSkKICAiQmFj a2dyb3VuZCBmYWNlIGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBw b3B1cC1pbnN0YW5jZXMgbmlsCiAgIlBvcHVwIGluc3RhbmNlcy4iKQoKKGRlZnZhciBwb3B1cC1z Y3JvbGwtYmFyLWZvcmVncm91bmQtY2hhcgogIChwcm9wZXJ0aXplICIgIiAnZmFjZSAncG9wdXAt c2Nyb2xsLWJhci1mb3JlZ3JvdW5kLWZhY2UpCiAgIkZvcmVncm91bmQgY2hhcmFjdGVyIGZvciBz Y3JvbGwtYmFyLiIpCgooZGVmdmFyIHBvcHVwLXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyCiAg KHByb3BlcnRpemUgIiAiICdmYWNlICdwb3B1cC1zY3JvbGwtYmFyLWJhY2tncm91bmQtZmFjZSkK ICAiQmFja2dyb3VuZCBjaGFyYWN0ZXIgZm9yIHNjcm9sbC1iYXIuIikKCihkZWZzdHJ1Y3QgcG9w dXAKICBwb2ludCByb3cgY29sdW1uIHdpZHRoIGhlaWdodCBtaW4taGVpZ2h0IGRpcmVjdGlvbiBv dmVybGF5cwogIHBhcmVudCBkZXB0aAogIGZhY2Ugc2VsZWN0aW9uLWZhY2UKICBtYXJnaW4tbGVm dCBtYXJnaW4tcmlnaHQgbWFyZ2luLWxlZnQtY2FuY2VsIHNjcm9sbC1iYXIgc3ltYm9sCiAgY3Vy c29yIG9mZnNldCBzY3JvbGwtdG9wIGN1cnJlbnQtaGVpZ2h0IGxpc3QgbmV3bGluZXMKICBwYXR0 ZXJuIG9yaWdpbmFsLWxpc3QpCgooZGVmdW4gcG9wdXAtaXRlbS1wcm9wZXJ0aXplIChpdGVtICZy ZXN0IHByb3BlcnRpZXMpCiAgIlNhbWUgdG8gYHByb3BlcnRpemVgIGJ1dCB0aGlzIGF2b2lkcyBv dmVycmlkaW5nIGV4aXN0ZWQgdmFsdWUgd2l0aCBgbmlsYCBwcm9wZXJ0eS4iCiAgKGxldCAocHJv cHMpCiAgICAod2hpbGUgcHJvcGVydGllcwogICAgICAod2hlbiAoY2FkciBwcm9wZXJ0aWVzKQog ICAgICAgIChwdXNoIChjYXIgcHJvcGVydGllcykgcHJvcHMpCiAgICAgICAgKHB1c2ggKGNhZHIg cHJvcGVydGllcykgcHJvcHMpKQogICAgICAoc2V0cSBwcm9wZXJ0aWVzIChjZGRyIHByb3BlcnRp ZXMpKSkKICAgIChhcHBseSAncHJvcGVydGl6ZQogICAgICAgICAgIChwb3B1cC14LXRvLXN0cmlu ZyBpdGVtKQogICAgICAgICAgIChucmV2ZXJzZSBwcm9wcykpKSkKCihkZWZ1biBwb3B1cC1pdGVt LXByb3BlcnR5IChpdGVtIHByb3BlcnR5KQogIChpZiAoc3RyaW5ncCBpdGVtKQogICAgICAoZ2V0 LXRleHQtcHJvcGVydHkgMCBwcm9wZXJ0eSBpdGVtKSkpCgooZGVmdW4qIHBvcHVwLW1ha2UtaXRl bSAobmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLWZhY2UKICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGVjdGlvbi1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICBz dWJsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudAogICAgICAgICAgICAgICAg ICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5KQogICJVdGls aXR5IGZ1bmN0aW9uIHRvIG1ha2UgcG9wdXAgaXRlbS4KU2VlIGFsc28gYHBvcHVwLWl0ZW0tcHJv cGVydGl6ZScuIgogIChwb3B1cC1pdGVtLXByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAg ICAgICAgICAgJ3ZhbHVlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtZmFj ZSBwb3B1cC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0aW9uLWZhY2Ugc2Vs ZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICdkb2N1bWVudCBkb2N1bWVudAog ICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAgICAgICAgICAg ICAgICAgICdzdW1tYXJ5IHN1bW1hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJsaXN0 IHN1Ymxpc3QpKQoKKGRlZnN1YnN0IHBvcHVwLWl0ZW0tdmFsdWUgKGl0ZW0pICAgICAgICAgICAg ICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkgaXRlbSAndmFsdWUpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS12YWx1ZS1vci1zZWxmIChpdGVtKSAgICAgICAob3IgKHBvcHVwLWl0ZW0tdmFsdWUgaXRlbSkg aXRlbSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXBvcHVwLWZhY2UgKGl0ZW0pICAgICAgICAgIChw b3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3BvcHVwLWZhY2UpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS1zZWxlY3Rpb24tZmFjZSAoaXRlbSkgICAgICAocG9wdXAtaXRlbS1wcm9wZXJ0eSBpdGVtICdz ZWxlY3Rpb24tZmFjZSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLWRvY3VtZW50IChpdGVtKSAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ2RvY3VtZW50KSkKKGRlZnN1YnN0IHBv cHVwLWl0ZW0tc3VtbWFyeSAoaXRlbSkgICAgICAgICAgICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkg aXRlbSAnc3VtbWFyeSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXN5bWJvbCAoaXRlbSkgICAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3N5bWJvbCkpCihkZWZzdWJzdCBwb3B1 cC1pdGVtLXN1Ymxpc3QgKGl0ZW0pICAgICAgICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0 ZW0gJ3N1Ymxpc3QpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tZG9jdW1lbnRhdGlvbiAoaXRlbSkKICAo bGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50IGl0ZW0pKSkKICAgIChpZiAoZnVuY3Rpb25w IGRvYykKICAgICAgICAoc2V0cSBkb2MgKGZ1bmNhbGwgZG9jIChwb3B1cC1pdGVtLXZhbHVlLW9y LXNlbGYgaXRlbSkpKSkKICAgIGRvYykpCgooZGVmdW4gcG9wdXAtaXRlbS1zaG93LWhlbHAtMSAo aXRlbSkKICAobGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50YXRpb24gaXRlbSkpKQogICAg KHdoZW4gZG9jCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAi ICpQb3B1cCBIZWxwKiIpCiAgICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgICAoaW5zZXJ0IGRv YykKICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgIChkaXNwbGF5LWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkKICAgICAgdCkpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tc2hvdy1o ZWxwIChpdGVtICZvcHRpb25hbCBwZXJzaXN0KQogICh3aGVuIGl0ZW0KICAgIChpZiAobm90IHBl cnNpc3QpCiAgICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICAgKHdoZW4gKHBv cHVwLWl0ZW0tc2hvdy1oZWxwLTEgaXRlbSkKICAgICAgICAgICAgKGJsb2NrIG5pbAogICAgICAg ICAgICAgICh3aGlsZSB0CiAgICAgICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMp CiAgICAgICAgICAgICAgICAobGV0ICgoa2V5IChyZWFkLWtleS1zZXF1ZW5jZS12ZWN0b3Igbmls KSkpCiAgICAgICAgICAgICAgICAgIChjYXNlIChrZXktYmluZGluZyBrZXkpCiAgICAgICAgICAg ICAgICAgICAgKCdzY3JvbGwtb3RoZXItd2luZG93CiAgICAgICAgICAgICAgICAgICAgIChzY3Jv bGwtb3RoZXItd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAoJ3Njcm9sbC1vdGhlci13aW5k b3ctZG93bgogICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duIG5p bCkpCiAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgKHNldHEgdW5y ZWFkLWNvbW1hbmQtZXZlbnRzIChhcHBlbmQga2V5IHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAg ICAgICAgICAgICAgICAgICAgIChyZXR1cm4pKSkpKSkpKQogICAgICAocG9wdXAtaXRlbS1zaG93 LWhlbHAtMSBpdGVtKSkpKQoKKGRlZnVuIHBvcHVwLXNldC1saXN0IChwb3B1cCBsaXN0KQogIChw b3B1cC1zZXQtZmlsdGVyZWQtbGlzdCBwb3B1cCBsaXN0KQogIChzZXRmIChwb3B1cC1wYXR0ZXJu IHBvcHVwKSBuaWwpCiAgKHNldGYgKHBvcHVwLW9yaWdpbmFsLWxpc3QgcG9wdXApIGxpc3QpKQog IAooZGVmdW4gcG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgKHBvcHVwIGxpc3QpCiAgKHNldGYgKHBv cHVwLWxpc3QgcG9wdXApIGxpc3QKICAgICAgICAocG9wdXAtb2Zmc2V0IHBvcHVwKSAoaWYgKD4g KHBvcHVwLWRpcmVjdGlvbiBwb3B1cCkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAoLSAocG9wdXAtaGVpZ2h0 IHBvcHVwKSAobGVuZ3RoIGxpc3QpKSAwKSkpKQoKKGRlZnVuIHBvcHVwLXNlbGVjdGVkLWl0ZW0g KHBvcHVwKQogIChudGggKHBvcHVwLWN1cnNvciBwb3B1cCkgKHBvcHVwLWxpc3QgcG9wdXApKSkK CihkZWZ1biBwb3B1cC1zZWxlY3RlZC1saW5lIChwb3B1cCkKICAoLSAocG9wdXAtY3Vyc29yIHBv cHVwKSAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWxpbmUtb3Zlcmxh eSAocG9wdXAgbGluZSkKICAoYXJlZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIGxpbmUpKQoKKGRl ZnVuIHBvcHVwLXNlbGVjdGVkLWxpbmUtb3ZlcmxheSAocG9wdXApCiAgKHBvcHVwLWxpbmUtb3Zl cmxheSBwb3B1cCAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWhp ZGUtbGluZSAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1vdmVybGF5 IHBvcHVwIGxpbmUpKSkKICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAg IChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgbmlsKSkpCgooZGVmdW4gcG9wdXAt bGluZS1oaWRkZW4tcCAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1v dmVybGF5IHBvcHVwIGxpbmUpKSkKICAgIChhbmQgKGVxIChvdmVybGF5LWdldCBvdmVybGF5ICdk aXNwbGF5KSBuaWwpCiAgICAgICAgIChlcSAob3ZlcmxheS1nZXQgb3ZlcmxheSAnYWZ0ZXItc3Ry aW5nKSBuaWwpKSkpCgooZGVmdW4gcG9wdXAtc2V0LWxpbmUtaXRlbSAocG9wdXAgbGluZSBpdGVt IGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBzeW1ib2wgc3Vt bWFyeSkKICAobGV0KiAoKG92ZXJsYXkgKHBvcHVwLWxpbmUtb3ZlcmxheSBwb3B1cCBsaW5lKSkK ICAgICAgICAgKGNvbnRlbnQgKHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyBwb3B1cCAocG9wdXAt eC10by1zdHJpbmcgaXRlbSkgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHN5bWJvbCBzdW1tYXJ5 KSkKICAgICAgICAgKHN0YXJ0IDApCiAgICAgICAgIChwcmVmaXggKG92ZXJsYXktZ2V0IG92ZXJs YXkgJ3ByZWZpeCkpCiAgICAgICAgIChwb3N0Zml4IChvdmVybGF5LWdldCBvdmVybGF5ICdwb3N0 Zml4KSkKICAgICAgICAgZW5kKQogICAgOzsgT3ZlcmxhcCBmYWNlIHByb3BlcnRpZXMKICAgIChp ZiAoZ2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ2ZhY2UgY29udGVudCkKICAgICAgICAoc2V0cSBz dGFydCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkK ICAgICh3aGlsZSAoYW5kIHN0YXJ0IChzZXRxIGVuZCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hh bmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkKICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IHN0YXJ0 IGVuZCAnZmFjZSBmYWNlIGNvbnRlbnQpCiAgICAgIChzZXRxIHN0YXJ0IChuZXh0LXNpbmdsZS1w cm9wZXJ0eS1jaGFuZ2UgZW5kICdmYWNlIGNvbnRlbnQpKSkKICAgIChpZiBzdGFydAogICAgICAg IChwdXQtdGV4dC1wcm9wZXJ0eSBzdGFydCAobGVuZ3RoIGNvbnRlbnQpICdmYWNlIGZhY2UgY29u dGVudCkpCiAgICAodW5sZXNzIChvdmVybGF5LWdldCBvdmVybGF5ICdkYW5nbGUpCiAgICAgIChv dmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IChjb25jYXQgcHJlZml4IChzdWJzdHJpbmcgY29u dGVudCAwIDEpKSkKICAgICAgKHNldHEgcHJlZml4IG5pbAogICAgICAgICAgICBjb250ZW50IChj b25jYXQgKHN1YnN0cmluZyBjb250ZW50IDEpKSkpCiAgICAob3ZlcmxheS1wdXQgb3ZlcmxheQog ICAgICAgICAgICAgICAgICdhZnRlci1zdHJpbmcKICAgICAgICAgICAgICAgICAoY29uY2F0IHBy ZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudAogICAgICAgICAgICAgICAgICAg ICAgICAgc2Nyb2xsLWJhci1jaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0Zml4KSkp KQoKKGRlZnVuIHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyAocG9wdXAgc3RyaW5nIG1hcmdpbi1s ZWZ0IG1hcmdpbi1yaWdodCBzeW1ib2wgc3VtbWFyeSkKICAobGV0KiAoKHBvcHVwLXdpZHRoIChw b3B1cC13aWR0aCBwb3B1cCkpCiAgICAgICAgIChzdW1tYXJ5LXdpZHRoIChzdHJpbmctd2lkdGgg c3VtbWFyeSkpCiAgICAgICAgIChzdHJpbmcgKGNhciAocG9wdXAtc3Vic3RyaW5nLWJ5LXdpZHRo IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo LSBwb3B1cC13aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKD4gc3VtbWFyeS13aWR0aCAwKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgc3VtbWFyeS13aWR0aCAyKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkpKQogICAg ICAgICAoc3RyaW5nLXdpZHRoIChzdHJpbmctd2lkdGggc3RyaW5nKSkpCiAgICAoY29uY2F0IG1h cmdpbi1sZWZ0CiAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAobWFrZS1zdHJpbmcgKG1h eCAoLSBwb3B1cC13aWR0aCBzdHJpbmctd2lkdGggc3VtbWFyeS13aWR0aCkgMCkgPyApCiAgICAg ICAgICAgIHN1bW1hcnkKICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgIG1hcmdpbi1yaWdo dCkpKQoKKGRlZnVuIHBvcHVwLWxpdmUtcCAocG9wdXApCiAgKGFuZCBwb3B1cCAocG9wdXAtb3Zl cmxheXMgcG9wdXApIHQpKQoKKGRlZnVuIHBvcHVwLWNoaWxkLXBvaW50IChwb3B1cCAmb3B0aW9u YWwgb2Zmc2V0KQogIChvdmVybGF5LWVuZCAocG9wdXAtbGluZS1vdmVybGF5IHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIG9mZnNldAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKSkpCgoo ZGVmdW4qIHBvcHVwLWNyZWF0ZSAocG9pbnQKICAgICAgICAgICAgICAgICAgICAgIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICBoZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICZrZXkKICAg ICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgIGFyb3Vu ZAogICAgICAgICAgICAgICAgICAgICAgKGZhY2UgJ3BvcHVwLWZhY2UpCiAgICAgICAgICAgICAg ICAgICAgICAoc2VsZWN0aW9uLWZhY2UgZmFjZSkKICAgICAgICAgICAgICAgICAgICAgIHNjcm9s bC1iYXIKICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAg ICAgICBtYXJnaW4tcmlnaHQKICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbAogICAgICAgICAg ICAgICAgICAgICAgcGFyZW50CiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0KQog IChvciBtYXJnaW4tbGVmdCAoc2V0cSBtYXJnaW4tbGVmdCAwKSkKICAob3IgbWFyZ2luLXJpZ2h0 IChzZXRxIG1hcmdpbi1yaWdodCAwKSkKICAodW5sZXNzIHBvaW50CiAgICAoc2V0cSBwb2ludAog ICAgICAgICAgKGlmIHBhcmVudCAocG9wdXAtY2hpbGQtcG9pbnQgcGFyZW50IHBhcmVudC1vZmZz ZXQpIChwb2ludCkpKSkKCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoZ290by1jaGFyIHBvaW50KQog ICAgKGxldCogKChyb3cgKGxpbmUtbnVtYmVyLWF0LXBvcykpCiAgICAgICAgICAgKGNvbHVtbiAo cG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4pKQogICAgICAgICAgIChvdmVybGF5cyAobWFr ZS12ZWN0b3IgaGVpZ2h0IG5pbCkpCiAgICAgICAgICAgKHBvcHVwLXdpZHRoICgrIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzY3JvbGwtYmFyIDEgMCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzeW1ib2wgMiAwKSkpCiAg ICAgICAgICAgbWFyZ2luLWxlZnQtY2FuY2VsCiAgICAgICAgICAgKHdpbmRvdyAoc2VsZWN0ZWQt d2luZG93KSkKICAgICAgICAgICAod2luZG93LXN0YXJ0ICh3aW5kb3ctc3RhcnQpKQogICAgICAg ICAgICh3aW5kb3ctaHNjcm9sbCAod2luZG93LWhzY3JvbGwpKQogICAgICAgICAgICh3aW5kb3ct d2lkdGggKHdpbmRvdy13aWR0aCkpCiAgICAgICAgICAgKHJpZ2h0ICgrIGNvbHVtbiBwb3B1cC13 aWR0aCkpCiAgICAgICAgICAgKG92ZXJmbG93IChhbmQgKD4gcmlnaHQgd2luZG93LXdpZHRoKQog ICAgICAgICAgICAgICAgICAgICAgICAgICg+PSByaWdodCBwb3B1cC13aWR0aCkpKQogICAgICAg ICAgIChmb2xkYWJsZSAoYW5kIChudWxsIHBhcmVudCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAoPj0gY29sdW1uIHBvcHVwLXdpZHRoKSkpCiAgICAgICAgICAgKGRpcmVjdGlvbiAob3IKICAg ICAgICAgICAgICAgICAgICAgICA7OyBDdXJyZW50bHkgdGhlIGRpcmVjdGlvbiBvZiBjYXNjYWRl IHBvcHVwIHdvbid0IGJlIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHBhcmVu dCAocG9wdXAtZGlyZWN0aW9uIHBhcmVudCkpCgogICAgICAgICAgICAgICAgICAgICAgIDs7IENh bGN1bGF0ZSBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAoPiByb3cg aGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IGhlaWdodCAoLSAobWF4 IDEgKC0gKHdpbmRvdy1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaWYgbW9kZS1saW5lLWZvcm1hdCAxIDApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgaGVhZGVyLWxp bmUtZm9ybWF0IDEgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY291bnQtbGluZXMgd2luZG93LXN0YXJ0IChwb2ludCkpKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAxKSkpCiAgICAgICAgICAg KGRlcHRoIChpZiBwYXJlbnQgKDErIChwb3B1cC1kZXB0aCBwYXJlbnQpKSAwKSkKICAgICAgICAg ICAobmV3bGluZXMgKG1heCAwICgrICgtIGhlaWdodCAoY291bnQtbGluZXMgcG9pbnQgKHBvaW50 LW1heCkpKSAoaWYgYXJvdW5kIDEgMCkpKSkKICAgICAgICAgICBjdXJyZW50LWNvbHVtbikKICAg ICAgKHdoZW4gKD4gbmV3bGluZXMgMCkKICAgICAgICAocG9wdXAtc2F2ZS1idWZmZXItc3RhdGUK ICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXdsaW5lcyA/XG4pKSkpCiAgICAgIAogICAgICAoaWYgb3ZlcmZsb3cKICAgICAg ICAgIChpZiBmb2xkYWJsZQogICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGRl Y2YgY29sdW1uICgtIHBvcHVwLXdpZHRoIG1hcmdpbi1sZWZ0IG1hcmdpbi1yaWdodCkpCiAgICAg ICAgICAgICAgICAodW5sZXNzIGFyb3VuZCAobW92ZS10by1jb2x1bW4gY29sdW1uKSkpCiAgICAg ICAgICAgICh3aGVuIChub3QgdHJ1bmNhdGUtbGluZXMpCiAgICAgICAgICAgICAgOzsgQ3V0IG91 dCBvdmVyZmxvdwogICAgICAgICAgICAgIChsZXQgKChkICgxKyAoLSBwb3B1cC13aWR0aCAoLSB3 aW5kb3ctd2lkdGggY29sdW1uKSkpKSkKICAgICAgICAgICAgICAgIChkZWNmIHBvcHVwLXdpZHRo IGQpCiAgICAgICAgICAgICAgICAoZGVjZiB3aWR0aCBkKSkpCiAgICAgICAgICAgIChkZWNmIGNv bHVtbiBtYXJnaW4tbGVmdCkpCiAgICAgICAgKGRlY2YgY29sdW1uIG1hcmdpbi1sZWZ0KSkKICAg ICAgKHdoZW4gKGFuZCAobnVsbCBwYXJlbnQpCiAgICAgICAgICAgICAgICAgKDwgY29sdW1uIDAp KQogICAgICAgICAgOzsgQ2FuY2VsIG1hcmdpbiBsZWZ0CiAgICAgICAgKHNldHEgY29sdW1uIDAp CiAgICAgICAgKGRlY2YgcG9wdXAtd2lkdGggbWFyZ2luLWxlZnQpCiAgICAgICAgKHNldHEgbWFy Z2luLWxlZnQtY2FuY2VsIHQpKQogICAgICAKICAgICAgKGRvdGltZXMgKGkgaGVpZ2h0KQogICAg ICAgIChsZXQgKG92ZXJsYXkgYmVnaW4gdyAoZGFuZ2xlIHQpIChwcmVmaXggIiIpIChwb3N0Zml4 ICIiKSkKICAgICAgICAgICh3aGVuIGFyb3VuZAogICAgICAgICAgICAoaWYgKD49IGVtYWNzLW1h am9yLXZlcnNpb24gMjMpCiAgICAgICAgICAgICAgICAodmVydGljYWwtbW90aW9uIChjb25zIGNv bHVtbiBkaXJlY3Rpb24pKQogICAgICAgICAgICAgICh2ZXJ0aWNhbC1tb3Rpb24gZGlyZWN0aW9u KQogICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiAoKyAoY3VycmVudC1jb2x1bW4pIGNvbHVt bikpKSkKCSAgKHNldHEgYXJvdW5kIHQKICAgICAgICAgICAgICAgIGN1cnJlbnQtY29sdW1uIChw b3B1cC1jdXJyZW50LXBoeXNpY2FsLWNvbHVtbikpCgogICAgICAgICAgKHdoZW4gKD4gY3VycmVu dC1jb2x1bW4gY29sdW1uKQogICAgICAgICAgICAoYmFja3dhcmQtY2hhcikKICAgICAgICAgICAg KHNldHEgY3VycmVudC1jb2x1bW4gKHBvcHVwLWN1cnJlbnQtcGh5c2ljYWwtY29sdW1uKSkpCiAg ICAgICAgICAod2hlbiAoPCBjdXJyZW50LWNvbHVtbiBjb2x1bW4pCiAgICAgICAgICAgIDs7IEV4 dGVuZCBzaG9ydCBidWZmZXIgbGluZXMgYnkgcG9wdXAgcHJlZml4IChsaW5lIG9mIHNwYWNlcykK ICAgICAgICAgICAgKHNldHEgcHJlZml4IChtYWtlLXN0cmluZyAoKyAoaWYgKD0gY3VycmVudC1j b2x1bW4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0g d2luZG93LWhzY3JvbGwgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKC0gY29sdW1uIGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA/ICkpKQoKICAgICAgICAgIChzZXRxIGJlZ2luIChwb2ludCkpCiAgICAg ICAgICAoc2V0cSB3ICgrIHBvcHVwLXdpZHRoIChsZW5ndGggcHJlZml4KSkpCiAgICAgICAgICAo d2hpbGUgKGFuZCAobm90IChlb2xwKSkgKD4gdyAwKSkKICAgICAgICAgICAgKHNldHEgZGFuZ2xl IG5pbCkKICAgICAgICAgICAgKGRlY2YgdyAoY2hhci13aWR0aCAoY2hhci1hZnRlcikpKQogICAg ICAgICAgICAoZm9yd2FyZC1jaGFyKSkKICAgICAgICAgIChpZiAoPCB3IDApCiAgICAgICAgICAg ICAgKHNldHEgcG9zdGZpeCAobWFrZS1zdHJpbmcgKC0gdykgPyApKSkKCiAgICAgICAgICAoc2V0 cSBvdmVybGF5IChtYWtlLW92ZXJsYXkgYmVnaW4gKHBvaW50KSkpCiAgICAgICAgICAob3Zlcmxh eS1wdXQgb3ZlcmxheSAnd2luZG93IHdpbmRvdykKICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVy bGF5ICdkYW5nbGUgZGFuZ2xlKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3ByZWZp eCBwcmVmaXgpCiAgICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncG9zdGZpeCBwb3N0Zml4 KQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpZHRoIHdpZHRoKQogICAgICAgICAg KGFzZXQgb3ZlcmxheXMKCQkoaWYgKD4gZGlyZWN0aW9uIDApIGkgKC0gaGVpZ2h0IGkgMSkpCgkJ b3ZlcmxheSkpKQogICAgICAobG9vcCBmb3IgcCBmcm9tICgtIDEwMDAwICgqIGRlcHRoIDEwMDAp KQogICAgICAgICAgICBmb3Igb3ZlcmxheSBpbiAobnJldmVyc2UgKGFwcGVuZCBvdmVybGF5cyBu aWwpKQogICAgICAgICAgICBkbyAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgcCkpCiAg ICAgIChsZXQgKChpdCAobWFrZS1wb3B1cCA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpyb3cgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29sdW1uIGNv bHVtbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOndpZHRoIHdpZHRoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6aGVpZ2h0IGhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgOm1pbi1oZWlnaHQgbWluLWhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRp cmVjdGlvbiBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFy ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGVwdGggZGVwdGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpmYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz ZWxlY3Rpb24tZmFjZSBzZWxlY3Rpb24tZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg Om1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IG1hcmdpbi1yaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1hcmdp bi1sZWZ0LWNhbmNlbCBtYXJnaW4tbGVmdC1jYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpzY3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz eW1ib2wgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3Vyc29yIDAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzY3JvbGwtdG9wIDAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpjdXJyZW50LWhlaWdodCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlz dCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpuZXdsaW5lcyBuZXdsaW5lcwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOm92ZXJsYXlzIG92ZXJsYXlzKSkpCiAgICAgICAgKHB1 c2ggaXQgcG9wdXAtaW5zdGFuY2VzKQogICAgICAgIGl0KSkpKQoKKGRlZnVuIHBvcHVwLWRlbGV0 ZSAocG9wdXApCiAgKHdoZW4gKHBvcHVwLWxpdmUtcCBwb3B1cCkKICAgIChwb3B1cC1oaWRlIHBv cHVwKQogICAgKG1hcGMgJ2RlbGV0ZS1vdmVybGF5IChwb3B1cC1vdmVybGF5cyBwb3B1cCkpCiAg ICAoc2V0ZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIG5pbCkKICAgIChzZXRxIHBvcHVwLWluc3Rh bmNlcyAoZGVscSBwb3B1cCBwb3B1cC1pbnN0YW5jZXMpKQogICAgKGxldCAoKG5ld2xpbmVzIChw b3B1cC1uZXdsaW5lcyBwb3B1cCkpKQogICAgICAod2hlbiAoPiBuZXdsaW5lcyAwKQogICAgICAg IChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4 KSkKICAgICAgICAgIChkb3RpbWVzIChpIG5ld2xpbmVzKQogICAgICAgICAgICAoaWYgKD0gKGNo YXItYmVmb3JlKSA/XG4pCiAgICAgICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpKSkpCiAg bmlsKQoKKGRlZnVuIHBvcHVwLWRyYXcgKHBvcHVwKQogIChsb29wIHdpdGggaGVpZ2h0ID0gKHBv cHVwLWhlaWdodCBwb3B1cCkKICAgICAgICB3aXRoIG1pbi1oZWlnaHQgPSAocG9wdXAtbWluLWhl aWdodCBwb3B1cCkKICAgICAgICB3aXRoIHBvcHVwLWZhY2UgPSAocG9wdXAtZmFjZSBwb3B1cCkK ICAgICAgICB3aXRoIHNlbGVjdGlvbi1mYWNlID0gKHBvcHVwLXNlbGVjdGlvbi1mYWNlIHBvcHVw KQogICAgICAgIHdpdGggbGlzdCA9IChwb3B1cC1saXN0IHBvcHVwKQogICAgICAgIHdpdGggbGVu Z3RoID0gKGxlbmd0aCBsaXN0KQogICAgICAgIHdpdGggdGh1bS1zaXplID0gKG1heCAoLyAoKiBo ZWlnaHQgaGVpZ2h0KSAobWF4IGxlbmd0aCAxKSkgMSkKICAgICAgICB3aXRoIHBhZ2Utc2l6ZSA9 ICgvICgrIDAuMCAobWF4IGxlbmd0aCAxKSkgaGVpZ2h0KQogICAgICAgIHdpdGggc2Nyb2xsLWJh ciA9IChwb3B1cC1zY3JvbGwtYmFyIHBvcHVwKQogICAgICAgIHdpdGggbWFyZ2luLWxlZnQgPSAo bWFrZS1zdHJpbmcgKGlmIChwb3B1cC1tYXJnaW4tbGVmdC1jYW5jZWwgcG9wdXApIDAgKHBvcHVw LW1hcmdpbi1sZWZ0IHBvcHVwKSkgPyApCiAgICAgICAgd2l0aCBtYXJnaW4tcmlnaHQgPSAobWFr ZS1zdHJpbmcgKHBvcHVwLW1hcmdpbi1yaWdodCBwb3B1cCkgPyApCiAgICAgICAgd2l0aCBzeW1i b2wgPSAocG9wdXAtc3ltYm9sIHBvcHVwKQogICAgICAgIHdpdGggY3Vyc29yID0gKHBvcHVwLWN1 cnNvciBwb3B1cCkKICAgICAgICB3aXRoIHNjcm9sbC10b3AgPSAocG9wdXAtc2Nyb2xsLXRvcCBw b3B1cCkKICAgICAgICB3aXRoIG9mZnNldCA9IChwb3B1cC1vZmZzZXQgcG9wdXApCiAgICAgICAg Zm9yIG8gZnJvbSBvZmZzZXQKICAgICAgICBmb3IgaSBmcm9tIHNjcm9sbC10b3AKICAgICAgICB3 aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICBmb3IgaXRlbSBpbiAobnRoY2RyIHNjcm9sbC10b3Ag bGlzdCkKICAgICAgICBmb3IgcGFnZS1pbmRleCA9ICgqIHRodW0tc2l6ZSAoLyBvIHRodW0tc2l6 ZSkpCiAgICAgICAgZm9yIGZhY2UgPSAoaWYgKD0gaSBjdXJzb3IpCiAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChwb3B1cC1pdGVtLXNlbGVjdGlvbi1mYWNlIGl0ZW0pIHNlbGVjdGlvbi1mYWNl KQogICAgICAgICAgICAgICAgICAgICAob3IgKHBvcHVwLWl0ZW0tcG9wdXAtZmFjZSBpdGVtKSBw b3B1cC1mYWNlKSkKICAgICAgICBmb3IgZW1wdHktY2hhciA9IChwcm9wZXJ0aXplICIgIiAnZmFj ZSBmYWNlKQogICAgICAgIGZvciBzY3JvbGwtYmFyLWNoYXIgPSAoaWYgc2Nyb2xsLWJhcgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKDw9IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbXB0eS1jaGFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoYW5kICg+IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg+PSBjdXJzb3IgKCogcGFnZS1pbmRleCBwYWdlLXNpemUpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8IGN1cnNvciAoKiAoKyBwYWdlLWluZGV4IHRo dW0tc2l6ZSkgcGFnZS1zaXplKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcHVwLXNjcm9sbC1iYXItZm9yZWdyb3VuZC1jaGFyKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVw LXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIikKICAgICAgICBmb3Igc3ltID0gKGlmIHN5bWJvbAogICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiICIgKG9yIChwb3B1cC1pdGVtLXN5bWJvbCBpdGVtKSAiICIpKQogICAgICAg ICAgICAgICAgICAgICIiKQogICAgICAgIGZvciBzdW1tYXJ5ID0gKG9yIChwb3B1cC1pdGVtLXN1 bW1hcnkgaXRlbSkgIiIpCiAgICAgICAgCiAgICAgICAgZG8KICAgICAgICA7OyBTaG93IGxpbmUg YW5kIHNldCBpdGVtIHRvIHRoZSBsaW5lCiAgICAgICAgKHBvcHVwLXNldC1saW5lLWl0ZW0gcG9w dXAgbyBpdGVtIGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBz eW0gc3VtbWFyeSkKICAgICAgICAKICAgICAgICBmaW5hbGx5CiAgICAgICAgOzsgUmVtZW1iZXIg Y3VycmVudCBoZWlnaHQKICAgICAgICAoc2V0ZiAocG9wdXAtY3VycmVudC1oZWlnaHQgcG9wdXAp ICgtIG8gb2Zmc2V0KSkKCiAgICAgICAgOzsgSGlkZSByZW1haW5pbmcgbGluZXMKICAgICAgICAo bGV0ICgoc2Nyb2xsLWJhci1jaGFyIChpZiBzY3JvbGwtYmFyIChwcm9wZXJ0aXplICIgIiAnZmFj ZSBwb3B1cC1mYWNlKSAiIikpCiAgICAgICAgICAgICAgKHN5bWJvbCAoaWYgc3ltYm9sICIgIiAi IikpKQogICAgICAgICAgKGlmICg+IChwb3B1cC1kaXJlY3Rpb24gcG9wdXApIDApCiAgICAgICAg ICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAod2hlbiBtaW4taGVpZ2h0CiAgICAgICAgICAg ICAgICAgICh3aGlsZSAoPCBvIG1pbi1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgKHBvcHVw LXNldC1saW5lLWl0ZW0gcG9wdXAgbyAiIiBwb3B1cC1mYWNlIG1hcmdpbi1sZWZ0IG1hcmdpbi1y aWdodCBzY3JvbGwtYmFyLWNoYXIgc3ltYm9sICIiKQogICAgICAgICAgICAgICAgICAgIChpbmNm IG8pKSkKICAgICAgICAgICAgICAgICh3aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICAgICAgICAg ICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBvKQogICAgICAgICAgICAgICAgICAoaW5jZiBvKSkp CiAgICAgICAgICAgIChsb29wIHdpdGggaCA9IChpZiBtaW4taGVpZ2h0ICgtIGhlaWdodCBtaW4t aGVpZ2h0KSBvZmZzZXQpCiAgICAgICAgICAgICAgICAgIGZvciBvIGZyb20gMCBiZWxvdyBvZmZz ZXQKICAgICAgICAgICAgICAgICAgaWYgKDwgbyBoKQogICAgICAgICAgICAgICAgICBkbyAocG9w dXAtaGlkZS1saW5lIHBvcHVwIG8pCiAgICAgICAgICAgICAgICAgIGlmICg+PSBvIGgpCiAgICAg ICAgICAgICAgICAgIGRvIChwb3B1cC1zZXQtbGluZS1pdGVtIHBvcHVwIG8gIiIgcG9wdXAtZmFj ZSBtYXJnaW4tbGVmdCBtYXJnaW4tcmlnaHQgc2Nyb2xsLWJhci1jaGFyIHN5bWJvbCAiIikpKSkp KQoKKGRlZnVuIHBvcHVwLWhpZGUgKHBvcHVwKQogIChkb3RpbWVzIChpIChwb3B1cC1oZWlnaHQg cG9wdXApKQogICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBpKSkpCgooZGVmdW4gcG9wdXAtaGlk ZGVuLXAgKHBvcHVwKQogIChsZXQgKChoaWRkZW4gdCkpCiAgICAod2hlbiAocG9wdXAtbGl2ZS1w IHBvcHVwKQogICAgICAoZG90aW1lcyAoaSAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAo dW5sZXNzIChwb3B1cC1saW5lLWhpZGRlbi1wIHBvcHVwIGkpCiAgICAgICAgICAoc2V0cSBoaWRk ZW4gbmlsKSkpKQogICAgaGlkZGVuKSkKCihkZWZ1biBwb3B1cC1zZWxlY3QgKHBvcHVwIGkpCiAg KHNldHEgaSAoKyBpIChwb3B1cC1vZmZzZXQgcG9wdXApKSkKICAod2hlbiAoYW5kICg8PSAwIGkp ICg8IGkgKHBvcHVwLWhlaWdodCBwb3B1cCkpKQogICAgKHNldGYgKHBvcHVwLWN1cnNvciBwb3B1 cCkgaSkKICAgIChwb3B1cC1kcmF3IHBvcHVwKQogICAgdCkpCgooZGVmdW4gcG9wdXAtbmV4dCAo cG9wdXApCiAgKGxldCAoKGhlaWdodCAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAoY3Vy c29yICgxKyAocG9wdXAtY3Vyc29yIHBvcHVwKSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVw LXNjcm9sbC10b3AgcG9wdXApKQogICAgICAgIChsZW5ndGggKGxlbmd0aCAocG9wdXAtbGlzdCBw b3B1cCkpKSkKICAgIChjb25kCiAgICAgKCg+PSBjdXJzb3IgbGVuZ3RoKQogICAgICA7OyBCYWNr IHRvIGZpcnN0IHBhZ2UKICAgICAgKHNldHEgY3Vyc29yIDAKICAgICAgICAgICAgc2Nyb2xsLXRv cCAwKSkKICAgICAoKD0gY3Vyc29yICgrIHNjcm9sbC10b3AgaGVpZ2h0KSkKICAgICAgOzsgR28g dG8gbmV4dCBwYWdlCiAgICAgIChzZXRxIHNjcm9sbC10b3AgKG1pbiAoMSsgc2Nyb2xsLXRvcCkg KG1heCAoLSBsZW5ndGggaGVpZ2h0KSAwKSkpKSkKICAgIChzZXRmIChwb3B1cC1jdXJzb3IgcG9w dXApIGN1cnNvcgogICAgICAgICAgKHBvcHVwLXNjcm9sbC10b3AgcG9wdXApIHNjcm9sbC10b3Ap CiAgICAocG9wdXAtZHJhdyBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLXByZXZpb3VzIChwb3B1cCkK ICAobGV0ICgoaGVpZ2h0IChwb3B1cC1oZWlnaHQgcG9wdXApKQogICAgICAgIChjdXJzb3IgKDEt IChwb3B1cC1jdXJzb3IgcG9wdXApKSkKICAgICAgICAoc2Nyb2xsLXRvcCAocG9wdXAtc2Nyb2xs LXRvcCBwb3B1cCkpCiAgICAgICAgKGxlbmd0aCAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkp KQogICAgKGNvbmQKICAgICAoKDwgY3Vyc29yIDApCiAgICAgIDs7IEdvIHRvIGxhc3QgcGFnZQog ICAgICAoc2V0cSBjdXJzb3IgKDEtIGxlbmd0aCkKICAgICAgICAgICAgc2Nyb2xsLXRvcCAobWF4 ICgtIGxlbmd0aCBoZWlnaHQpIDApKSkKICAgICAoKD0gY3Vyc29yICgxLSBzY3JvbGwtdG9wKSkK ICAgICAgOzsgR28gdG8gcHJldmlvdXMgcGFnZQogICAgICAoZGVjZiBzY3JvbGwtdG9wKSkpCiAg ICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBjdXJzb3IKICAgICAgICAgIChwb3B1cC1zY3Jv bGwtdG9wIHBvcHVwKSBzY3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCihkZWZ1 biBwb3B1cC1zY3JvbGwtZG93biAocG9wdXAgJm9wdGlvbmFsIG4pCiAgKGxldCAoKHNjcm9sbC10 b3AgKG1pbiAoKyAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgKG9yIG4gMSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAoLSAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkgKHBvcHVwLWhlaWdo dCBwb3B1cCkpKSkpCiAgICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBzY3JvbGwtdG9wCiAg ICAgICAgICAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgc2Nyb2xsLXRvcCkKICAgIChwb3B1cC1k cmF3IHBvcHVwKSkpCgooZGVmdW4gcG9wdXAtc2Nyb2xsLXVwIChwb3B1cCAmb3B0aW9uYWwgbikK ICAobGV0ICgoc2Nyb2xsLXRvcCAobWF4ICgtIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSAob3Ig biAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkKICAgIChzZXRmIChwb3B1cC1jdXJz b3IgcG9wdXApIHNjcm9sbC10b3AKICAgICAgICAgIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSBz Y3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCgwKCjs7IFBvcHVwIGlzZWFyY2gK CihkZWZmYWNlIHBvcHVwLWlzZWFyY2gtbWF0Y2gKICAnKCh0ICg6YmFja2dyb3VuZCAic2t5IGJs dWUiKSkpCiAgIlBvcHVwIGlzZWFyY2ggbWF0Y2ggZmFjZS4iCiAgOmdyb3VwICdwb3B1cCkKCihk ZWZ2YXIgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IgImJsdWUiKQoKKGRlZnZhciBwb3B1cC1p c2VhcmNoLWtleW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgOyhk ZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtaXNlYXJjaC1kb25lKQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1nIiAgICAgICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgIChkZWZpbmUt a2V5IG1hcCAiXEMtaCIgICAgICAncG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiREVMIikgJ3BvcHVwLWlzZWFyY2gtZGVsZXRlKQogICAgbWFwKSkKCihkZWZz dWJzdCBwb3B1cC1pc2VhcmNoLWNoYXItcCAoY2hhcikKICAoYW5kIChpbnRlZ2VycCBjaGFyKQog ICAgICAgKDw9IDMyIGNoYXIpCiAgICAgICAoPD0gY2hhciAxMjYpKSkKCihkZWZ1biBwb3B1cC1p c2VhcmNoLWZpbHRlci1saXN0IChwYXR0ZXJuIGxpc3QpCiAgKGxvb3Agd2l0aCByZWdleHAgPSAo cmVnZXhwLXF1b3RlIHBhdHRlcm4pCiAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdAogICAgICAgIGRv CiAgICAgICAgKHVubGVzcyAoc3RyaW5ncCBpdGVtKQogICAgICAgICAgKHNldHEgaXRlbSAocG9w dXAtaXRlbS1wcm9wZXJ0aXplIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpdGVtKSkpCiAgICAgICAgaWYg KHN0cmluZy1tYXRjaCByZWdleHAgaXRlbSkKICAgICAgICBjb2xsZWN0IChsZXQgKChiZWcgKG1h dGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgIChlbmQgKG1hdGNoLWVuZCAw KSkpCiAgICAgICAgICAgICAgICAgIChhbHRlci10ZXh0LXByb3BlcnR5IDAgKGxlbmd0aCBpdGVt KSAnZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChw cm9wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVx IHByb3AgJ3BvcHVwLWlzZWFyY2gtbWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm9wKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXRlbSkKICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IGJlZyBlbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdwb3B1cC1pc2VhcmNoLW1h dGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKQogICAgICAgICAg ICAgICAgICBpdGVtKSkpCgooZGVmdW4gcG9wdXAtaXNlYXJjaC1wcm9tcHQgKHBvcHVwIHBhdHRl cm4pCiAgKGZvcm1hdCAiUGF0dGVybjogJXMiIChpZiAoPSAobGVuZ3RoIChwb3B1cC1saXN0IHBv cHVwKSkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplIHBhdHRlcm4g J2ZhY2UgJ2lzZWFyY2gtZmFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuKSkp CgooZGVmdW4gcG9wdXAtaXNlYXJjaC11cGRhdGUgKHBvcHVwIHBhdHRlcm4gJm9wdGlvbmFsIGNh bGxiYWNrKQogIChzZXRmIChwb3B1cC1jdXJzb3IgcG9wdXApIDAKICAgICAgICAocG9wdXAtc2Ny b2xsLXRvcCBwb3B1cCkgMAogICAgICAgIChwb3B1cC1wYXR0ZXJuIHBvcHVwKSBwYXR0ZXJuKQog IChsZXQgKChsaXN0IChwb3B1cC1pc2VhcmNoLWZpbHRlci1saXN0IHBhdHRlcm4gKHBvcHVwLW9y aWdpbmFsLWxpc3QgcG9wdXApKSkpCiAgICAocG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgcG9wdXAg bGlzdCkKICAgIChpZiBjYWxsYmFjawogICAgICAgIChmdW5jYWxsIGNhbGxiYWNrIGxpc3QpKSkK ICAocG9wdXAtZHJhdyBwb3B1cCkpCgooZGVmdW4qIHBvcHVwLWlzZWFyY2ggKHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICAgIChjdXJzb3ItY29s b3IgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgICAgKGtl eW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj awogICAgICAgICAgICAgICAgICAgICAgIGhlbHAtZGVsYXkpCiAgKGxldCAoKGxpc3QgKHBvcHVw LW9yaWdpbmFsLWxpc3QgcG9wdXApKQogICAgICAgIChwYXR0ZXJuIChvciAocG9wdXAtcGF0dGVy biBwb3B1cCkgIiIpKQogICAgICAgIChvbGQtY3Vyc29yLWNvbG9yIChmcmFtZS1wYXJhbWV0ZXIg KHNlbGVjdGVkLWZyYW1lKSAnY3Vyc29yLWNvbG9yKSkKICAgICAgICBwcm9tcHQga2V5IGJpbmRp bmcgZG9uZSkKICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICh1bmxlc3MgKGJsb2NrIG5pbAog ICAgICAgICAgICAgICAgICAoaWYgY3Vyc29yLWNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAo c2V0LWN1cnNvci1jb2xvciBjdXJzb3ItY29sb3IpKQogICAgICAgICAgICAgICAgICAod2hpbGUg dAogICAgICAgICAgICAgICAgICAgIChzZXRxIHByb21wdCAocG9wdXAtaXNlYXJjaC1wcm9tcHQg cG9wdXAgcGF0dGVybikpCiAgICAgICAgICAgICAgICAgICAgKHNldHEga2V5IChwb3B1cC1tZW51 LXJlYWQta2V5LXNlcXVlbmNlIGtleW1hcCBwcm9tcHQgaGVscC1kZWxheSkpCiAgICAgICAgICAg ICAgICAgICAgKGlmIChudWxsIGtleSkKICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAo ZnVuY2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBwb3B1cCBuaWwgOnBy b21wdCBwcm9tcHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFu ZC1rZXlzKQogICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHByb21w dCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJp bmRpbmcgKGxvb2t1cC1rZXkga2V5bWFwIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAoY29u ZAogICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChzdHJpbmdwIGtleSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9wdXAtaXNlYXJjaC1jaGFyLXAgKGFyZWYga2V5IDApKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgcGF0dGVybiAoY29uY2F0IHBhdHRlcm4ga2V5KSkp CiAgICAgICAgICAgICAgICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWRvbmUp CiAgICAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4gdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgICAgICAgICAgICAgICAg ICAgICAgKHJldHVybiBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICgoZXEgYmluZGluZyAn cG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAobGVu Z3RoIHBhdHRlcm4pIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwYXR0ZXJu IChzdWJzdHJpbmcgcGF0dGVybiAwICgxLSAobGVuZ3RoIHBhdHRlcm4pKSkpKSkKICAgICAgICAg ICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1bnJlYWQtY29t bWFuZC1ldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobGlzdGlm eS1rZXktc2VxdWVuY2Uga2V5KSB1bnJlYWQtY29tbWFuZC1ldmVudHMpKQogICAgICAgICAgICAg ICAgICAgICAgICAocmV0dXJuIHQpKSkKICAgICAgICAgICAgICAgICAgICAgIChwb3B1cC1pc2Vh cmNoLXVwZGF0ZSBwb3B1cCBwYXR0ZXJuIGNhbGxiYWNrKSkpKQogICAgICAgICAgKHBvcHVwLWlz ZWFyY2gtdXBkYXRlIHBvcHVwICIiIGNhbGxiYWNrKQogICAgICAgICAgdCkgOyBSZXR1cm4gbm9u LW5pbCBpZiBpc2VhcmNoIGlzIGNhbmNlbGxlZAogICAgICAoaWYgb2xkLWN1cnNvci1jb2xvcgog ICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Igb2xkLWN1cnNvci1jb2xvcikpKSkpCgoMCgo7OyBQ b3B1cCB0aXAKCihkZWZmYWNlIHBvcHVwLXRpcC1mYWNlCiAgJygodCAoOmJhY2tncm91bmQgImto YWtpMSIgOmZvcmVncm91bmQgImJsYWNrIikpKQogICJGYWNlIGZvciBwb3B1cCB0aXAuIgogIDpn cm91cCAncG9wdXApCgooZGVmdmFyIHBvcHVwLXRpcC1tYXgtd2lkdGggODApCgooZGVmdW4qIHBv cHVwLXRpcCAoc3RyaW5nCiAgICAgICAgICAgICAgICAgICAma2V5CiAgICAgICAgICAgICAgICAg ICBwb2ludAogICAgICAgICAgICAgICAgICAgKGFyb3VuZCB0KQogICAgICAgICAgICAgICAgICAg d2lkdGgKICAgICAgICAgICAgICAgICAgIChoZWlnaHQgMTUpCiAgICAgICAgICAgICAgICAgICBt aW4taGVpZ2h0CiAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZQogICAgICAgICAgICAgICAgICAg bWFyZ2luCiAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICBzY3JvbGwtYmFyCiAgICAgICAgICAgICAg ICAgICBwYXJlbnQKICAgICAgICAgICAgICAgICAgIHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgICAgIG5vd2FpdAogICAgICAgICAgICAgICAgICAgcHJvbXB0CiAgICAgICAgICAgICAgICAg ICAmYXV4IHRpcCBsaW5lcykKICAoaWYgKGJ1ZmZlcnAgc3RyaW5nKQogICAgICAoc2V0cSBzdHJp bmcgKHdpdGgtY3VycmVudC1idWZmZXIgc3RyaW5nIChidWZmZXItc3RyaW5nKSkpKQogIDs7IFRP RE8gc3RyaXAgdGV4dCAobWFpbmx5IGZhY2UpIHByb3BlcnRpZXMKICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCgogIChhbmQgKGVxIG1hcmdpbiB0KSAoc2V0 cSBtYXJnaW4gMSkpCiAgKG9yIG1hcmdpbi1sZWZ0IChzZXRxIG1hcmdpbi1sZWZ0IG1hcmdpbikp CiAgKG9yIG1hcmdpbi1yaWdodCAoc2V0cSBtYXJnaW4tcmlnaHQgbWFyZ2luKSkKICAKICAobGV0 ICgoaXQgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCBwb3B1cC10aXAtbWF4LXdpZHRo KSkpCiAgICAoc2V0cSB3aWR0aCAoY2FyIGl0KQogICAgICAgICAgbGluZXMgKGNkciBpdCkpKQog IAogIChzZXRxIHRpcCAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhlaWdodAogICAgICAgICAg ICAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAg ICAgICAgICA6YXJvdW5kIGFyb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4t bGVmdCBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tcmlnaHQg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgc2Nyb2xs LWJhcgogICAgICAgICAgICAgICAgICAgICAgICAgIDpmYWNlICdwb3B1cC10aXAtZmFjZQogICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFyZW50CiAgICAgICAgICAgICAgICAgICAg ICAgICAgOnBhcmVudC1vZmZzZXQgcGFyZW50LW9mZnNldCkpCgogICh1bndpbmQtcHJvdGVjdAog ICAgICAod2hlbiAoPiAocG9wdXAtd2lkdGggdGlwKSAwKSAgICAgICAgICAgICAgICAgICA7IG5v dCB0byBiZSBjb3JydXB0ZWQKICAgICAgICAod2hlbiAoYW5kIChub3QgKGVxIHdpZHRoIChwb3B1 cC13aWR0aCB0aXApKSkgOyB0cnVuY2F0ZWQKICAgICAgICAgICAgICAgICAgIChub3QgdHJ1bmNh dGUpKQogICAgICAgICAgOzsgUmVmaWxsIG9uY2UgYWdhaW4gdG8gbGluZXMgYmUgZml0dGVkIHRv IHBvcHVwIHdpZHRoCiAgICAgICAgICAoc2V0cSB3aWR0aCAocG9wdXAtd2lkdGggdGlwKSkKICAg ICAgICAgIChzZXRxIGxpbmVzIChjZHIgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCB3 aWR0aCkpKSkKCiAgICAgICAgKHBvcHVwLXNldC1saXN0IHRpcCBsaW5lcykKICAgICAgICAocG9w dXAtZHJhdyB0aXApCiAgICAgICAgKGlmIG5vd2FpdAogICAgICAgICAgICB0aXAKICAgICAgICAg IChjbGVhci10aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHBy b21wdCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKQogICAgICAgICAgdCkpCiAgICAodW5sZXNzIG5v d2FpdAogICAgICAocG9wdXAtZGVsZXRlIHRpcCkpKSkKCgwKCjs7IFBvcHVwIG1lbnUKCihkZWZm YWNlIHBvcHVwLW1lbnUtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJsaWdodGdyYXkiIDpmb3Jl Z3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9wdXAgbWVudS4iCiAgOmdyb3VwICdwb3B1 cCkKCihkZWZmYWNlIHBvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3Vu ZCAic3RlZWxibHVlIiA6Zm9yZWdyb3VuZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHBvcHVwIG1l bnUgc2VsZWN0aW9uLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBwb3B1cC1tZW51LXNob3ct dGlwLWZ1bmN0aW9uICdwb3B1cC10aXAKICAiRnVuY3Rpb24gdXNlZCBmb3Igc2hvd2luZyB0b29s dGlwIGJ5IGBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscCcuIikKCihkZWZ2YXIgcG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHAtZnVuY3Rpb24gJ3BvcHVwLW1lbnUtc2hvdy1xdWljay1oZWxwCiAg IkZ1bmN0aW9uIHVzZWQgZm9yIHNob3dpbmcgcXVpY2sgaGVscCBieSBgcG9wdXAtbWVudSonLiIp CgooZGVmdW4gcG9wdXAtbWVudS1zaG93LWhlbHAgKG1lbnUgJm9wdGlvbmFsIHBlcnNpc3QgaXRl bSkKICAocG9wdXAtaXRlbS1zaG93LWhlbHAgKG9yIGl0ZW0gKHBvcHVwLXNlbGVjdGVkLWl0ZW0g bWVudSkpIHBlcnNpc3QpKQoKKGRlZnVuIHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiAobWVudSAm b3B0aW9uYWwgaXRlbSkKICAocG9wdXAtaXRlbS1kb2N1bWVudGF0aW9uIChvciBpdGVtIChwb3B1 cC1zZWxlY3RlZC1pdGVtIG1lbnUpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1zaG93LXF1aWNrLWhl bHAgKG1lbnUgJm9wdGlvbmFsIGl0ZW0gJnJlc3QgYXJncykKICAobGV0KiAoKHBvaW50IChwbGlz dC1nZXQgYXJncyA6cG9pbnQpKQogICAgICAgICAoaGVpZ2h0IChvciAocGxpc3QtZ2V0IGFyZ3Mg OmhlaWdodCkgKHBvcHVwLWhlaWdodCBtZW51KSkpCiAgICAgICAgIChtaW4taGVpZ2h0IChtaW4g aGVpZ2h0IChwb3B1cC1jdXJyZW50LWhlaWdodCBtZW51KSkpCiAgICAgICAgIChhcm91bmQgbmls KQogICAgICAgICAocGFyZW50LW9mZnNldCAocG9wdXAtb2Zmc2V0IG1lbnUpKQogICAgICAgICAo ZG9jIChwb3B1cC1tZW51LWRvY3VtZW50YXRpb24gbWVudSBpdGVtKSkpCiAgICAod2hlbiAoc3Ry aW5ncCBkb2MpCiAgICAgIChpZiAocG9wdXAtaGlkZGVuLXAgbWVudSkKICAgICAgICAgIChzZXRx IGFyb3VuZCB0CiAgICAgICAgICAgICAgICBtZW51IG5pbAogICAgICAgICAgICAgICAgcGFyZW50 LW9mZnNldCBuaWwpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKGxldCAoKHBvcHVw LXVzZS1vcHRpbWl6ZWQtY29sdW1uLWNvbXB1dGF0aW9uIG5pbCkpIDsgVG8gYXZvaWQgd3Jvbmcg cG9zaXRpb25pbmcKICAgICAgICAoYXBwbHkgcG9wdXAtbWVudS1zaG93LXRpcC1mdW5jdGlvbgog ICAgICAgICAgICAgICBkb2MKICAgICAgICAgICAgICAgOnBvaW50IHBvaW50CiAgICAgICAgICAg ICAgIDpoZWlnaHQgaGVpZ2h0CiAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQK ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgOnBhcmVudCBtZW51 CiAgICAgICAgICAgICAgIDpwYXJlbnQtb2Zmc2V0IHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgYXJncykpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSAoa2V5bWFw ICZvcHRpb25hbCBwcm9tcHQgdGltZW91dCkKICAoY2F0Y2ggJ3RpbWVvdXQKICAgIChsZXQgKCh0 aW1lciAoYW5kIHRpbWVvdXQKICAgICAgICAgICAgICAgICAgICAgIChydW4td2l0aC10aW1lciB0 aW1lb3V0IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxl bmd0aCAodGhpcy1jb21tYW5kLWtleXMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodGhyb3cgJ3RpbWVvdXQgbmlsKSkpKSkpCiAgICAgICAgICAob2xkLWds b2JhbC1tYXAgKGN1cnJlbnQtZ2xvYmFsLW1hcCkpCiAgICAgICAgICAodGVtcC1nbG9iYWwtbWFw IChtYWtlLXNwYXJzZS1rZXltYXApKQogICAgICAgICAgKG92ZXJyaWRpbmctdGVybWluYWwtbG9j YWwtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgICAgKHN1YnN0aXR1dGUta2V5LWRlZmlu aXRpb24gJ2tleWJvYXJkLXF1aXQgJ2tleWJvYXJkLXF1aXQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVtcC1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAoZGVmaW5l LWtleSB0ZW1wLWdsb2JhbC1tYXAgW21lbnUtYmFyXSAobG9va3VwLWtleSBvbGQtZ2xvYmFsLW1h cCBbbWVudS1iYXJdKSkKICAgICAgKGRlZmluZS1rZXkgdGVtcC1nbG9iYWwtbWFwIFt0b29sLWJh cl0gKGxvb2t1cC1rZXkgb2xkLWdsb2JhbC1tYXAgW3Rvb2wtYmFyXSkpCiAgICAgIChzZXQta2V5 bWFwLXBhcmVudCBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBrZXltYXApCiAgICAgIChp ZiAoY3VycmVudC1sb2NhbC1tYXApCiAgICAgICAgICAoZGVmaW5lLWtleSBvdmVycmlkaW5nLXRl cm1pbmFsLWxvY2FsLW1hcCBbbWVudS1iYXJdCiAgICAgICAgICAgIChsb29rdXAta2V5IChjdXJy ZW50LWxvY2FsLW1hcCkgW21lbnUtYmFyXSkpKQogICAgICAodW53aW5kLXByb3RlY3QKICAgICAg ICAgIChwcm9nbgogICAgICAgICAgICAodXNlLWdsb2JhbC1tYXAgdGVtcC1nbG9iYWwtbWFwKQog ICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMpCiAgICAgICAgICAgICh3aXRoLXRl bXAtbWVzc2FnZSBwcm9tcHQKICAgICAgICAgICAgICAocmVhZC1rZXktc2VxdWVuY2UgbmlsKSkp CiAgICAgICAgKHVzZS1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAgIChpZiB0aW1l ciAoY2FuY2VsLXRpbWVyIHRpbWVyKSkpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1mYWxsYmFjayAo ZXZlbnQgZGVmYXVsdCkpCgooZGVmdW4qIHBvcHVwLW1lbnUtZXZlbnQtbG9vcCAobWVudSBrZXlt YXAgZmFsbGJhY2sgJm9wdGlvbmFsIHByb21wdCBoZWxwLWRlbGF5IGlzZWFyY2ggaXNlYXJjaC1j dXJzb3ItY29sb3IgaXNlYXJjaC1rZXltYXAgaXNlYXJjaC1jYWxsYmFjayAmYXV4IGtleSBiaW5k aW5nKQogIChibG9jayBuaWwKICAgICh3aGlsZSAocG9wdXAtbGl2ZS1wIG1lbnUpCiAgICAgIChh bmQgaXNlYXJjaAogICAgICAgICAgIChwb3B1cC1pc2VhcmNoIG1lbnUKICAgICAgICAgICAgICAg ICAgICAgICAgICA6Y3Vyc29yLWNvbG9yIGlzZWFyY2gtY3Vyc29yLWNvbG9yCiAgICAgICAgICAg ICAgICAgICAgICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAg ICAgICAgIDpjYWxsYmFjayBpc2VhcmNoLWNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhlbHAtZGVsYXkgaGVscC1kZWxheSkKICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAg ICAgIChzZXRxIGtleSAocG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSBrZXltYXAgcHJvbXB0 IGhlbHAtZGVsYXkpKQogICAgICAoaWYgKG51bGwga2V5KQogICAgICAgICAgKHVubGVzcyAoZnVu Y2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBtZW51IG5pbCA6cHJvbXB0 IHByb21wdCkKICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFuZC1rZXlzKQogICAgICAgICAg ICAocHVzaCAocmVhZC1ldmVudCBwcm9tcHQpIHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAgICAg ICAgKGlmIChlcSAobG9va3VwLWtleSAoY3VycmVudC1nbG9iYWwtbWFwKSBrZXkpICdrZXlib2Fy ZC1xdWl0KQogICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAgICAgICAgKHNldHEgYmluZGlu ZyAobG9va3VwLWtleSBrZXltYXAga2V5KSkKICAgICAgICAoY29uZAogICAgICAgICAoKGVxIGJp bmRpbmcgJ3BvcHVwLWNsb3NlKQogICAgICAgICAgKGlmIChwb3B1cC1wYXJlbnQgbWVudSkKICAg ICAgICAgICAgICAocmV0dXJuKSkpCiAgICAgICAgICgobWVtcSBiaW5kaW5nICcocG9wdXAtc2Vs ZWN0IHBvcHVwLW9wZW4pKQogICAgICAgICAgKGxldCogKChpdGVtIChwb3B1cC1zZWxlY3RlZC1p dGVtIG1lbnUpKQogICAgICAgICAgICAgICAgIChzdWJsaXN0IChwb3B1cC1pdGVtLXN1Ymxpc3Qg aXRlbSkpKQogICAgICAgICAgICAoaWYgc3VibGlzdAogICAgICAgICAgICAgICAgKHBvcHVwLWFp ZiAocG9wdXAtY2FzY2FkZS1tZW51IHN1Ymxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6YXJvdW5kIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tbGVmdCAocG9wdXAtbWFyZ2luLWxlZnQg bWVudSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IChwb3B1cC1tYXJnaW4tcmlnaHQgbWVudSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6c2Nyb2xsLWJhciAocG9wdXAtc2Nyb2xsLWJhciBt ZW51KSkKICAgICAgICAgICAgICAgICAgICAoYW5kIGl0IChyZXR1cm4gaXQpKSkKICAgICAgICAg ICAgICAoaWYgKGVxIGJpbmRpbmcgJ3BvcHVwLXNlbGVjdCkKICAgICAgICAgICAgICAgICAgKHJl dHVybiAocG9wdXAtaXRlbS12YWx1ZS1vci1zZWxmIGl0ZW0pKSkpKSkKICAgICAgICAgKChlcSBi aW5kaW5nICdwb3B1cC1uZXh0KQogICAgICAgICAgKHBvcHVwLW5leHQgbWVudSkpCiAgICAgICAg ICgoZXEgYmluZGluZyAncG9wdXAtcHJldmlvdXMpCiAgICAgICAgICAocG9wdXAtcHJldmlvdXMg bWVudSkpCiAgICAgICAgICgoZXEgYmluZGluZyAncG9wdXAtaGVscCkKICAgICAgICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBtZW51KSkKICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2Vh cmNoKQogICAgICAgICAgKHBvcHVwLWlzZWFyY2ggbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgOmN1cnNvci1jb2xvciBpc2VhcmNoLWN1cnNvci1jb2xvcgogICAgICAgICAgICAgICAgICAg ICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAgICAgICAgOmNh bGxiYWNrIGlzZWFyY2gtY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwLWRl bGF5IGhlbHAtZGVsYXkpKQogICAgICAgICAoKGNvbW1hbmRwIGJpbmRpbmcpCiAgICAgICAgICAo Y2FsbC1pbnRlcmFjdGl2ZWx5IGJpbmRpbmcpKQogICAgICAgICAodAogICAgICAgICAgKGZ1bmNh bGwgZmFsbGJhY2sga2V5IChrZXktYmluZGluZyBrZXkpKSkpKSkpKQoKOzsgcG9wdXAtbWVudSBp cyB1c2VkIGJ5IG1vdXNlLmVsIHVuZmFpcmx5Li4uCihkZWZ1biogcG9wdXAtbWVudSogKGxpc3QK ICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICBwb2ludAogICAg ICAgICAgICAgICAgICAgICAoYXJvdW5kIHQpCiAgICAgICAgICAgICAgICAgICAgICh3aWR0aCAo cG9wdXAtcHJlZmVycmVkLXdpZHRoIGxpc3QpKQogICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0 IDE1KQogICAgICAgICAgICAgICAgICAgICBtYXJnaW4KICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAg ICAgICAgIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAg ICAgICAgICAgIHBhcmVudAogICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0CiAgICAg ICAgICAgICAgICAgICAgIChrZXltYXAgcG9wdXAtbWVudS1rZXltYXApCiAgICAgICAgICAgICAg ICAgICAgIChmYWxsYmFjayAncG9wdXAtbWVudS1mYWxsYmFjaykKICAgICAgICAgICAgICAgICAg ICAgaGVscC1kZWxheQogICAgICAgICAgICAgICAgICAgICBwcm9tcHQKICAgICAgICAgICAgICAg ICAgICAgaXNlYXJjaAogICAgICAgICAgICAgICAgICAgICAoaXNlYXJjaC1jdXJzb3ItY29sb3Ig cG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgIChpc2VhcmNo LWtleW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgaXNlYXJj aC1jYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAmYXV4IG1lbnUgZXZlbnQpCiAgKGFuZCAo ZXEgbWFyZ2luIHQpIChzZXRxIG1hcmdpbiAxKSkKICAob3IgbWFyZ2luLWxlZnQgKHNldHEgbWFy Z2luLWxlZnQgbWFyZ2luKSkKICAob3IgbWFyZ2luLXJpZ2h0IChzZXRxIG1hcmdpbi1yaWdodCBt YXJnaW4pKQogIChpZiAoYW5kIHNjcm9sbC1iYXIKICAgICAgICAgICAoaW50ZWdlcnAgbWFyZ2lu LXJpZ2h0KQogICAgICAgICAgICg+IG1hcmdpbi1yaWdodCAwKSkKICAgICAgOzsgTWFrZSBzY3Jv bGwtYmFyIHNwYWNlIGFzIG1hcmdpbi1yaWdodAogICAgICAoZGVjZiBtYXJnaW4tcmlnaHQpKQog IChzZXRxIG1lbnUgKHBvcHVwLWNyZWF0ZSBwb2ludCB3aWR0aCBoZWlnaHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg OmZhY2UgJ3BvcHVwLW1lbnUtZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0 aW9uLWZhY2UgJ3BvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgOm1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAg IDptYXJnaW4tcmlnaHQgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz Y3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN5bWJvbCBz eW1ib2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVudCBwYXJlbnQpKQogICh1bndp bmQtcHJvdGVjdAogICAgICAocHJvZ24KICAgICAgICAocG9wdXAtc2V0LWxpc3QgbWVudSBsaXN0 KQogICAgICAgIChwb3B1cC1kcmF3IG1lbnUpCiAgICAgICAgKHBvcHVwLW1lbnUtZXZlbnQtbG9v cCBtZW51IGtleW1hcCBmYWxsYmFjayBwcm9tcHQgaGVscC1kZWxheSBpc2VhcmNoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpc2VhcmNoLWN1cnNvci1jb2xvciBpc2VhcmNoLWtleW1h cCBpc2VhcmNoLWNhbGxiYWNrKSkKICAgIChwb3B1cC1kZWxldGUgbWVudSkpKQoKKGRlZnVuIHBv cHVwLWNhc2NhZGUtbWVudSAobGlzdCAmcmVzdCBhcmdzKQogICJTYW1lIHRvIGBwb3B1cC1tZW51 JywgYnV0IGFuIGVsZW1lbnQgb2YgYExJU1QnIGNhbiBiZQpsaXN0IG9mIHN1Ym1lbnUuIgogIChh cHBseSAncG9wdXAtbWVudSoKICAgICAgICAgKG1hcGNhciAobGFtYmRhIChpdGVtKQogICAgICAg ICAgICAgICAgICAgKGlmIChjb25zcCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgIChwb3B1 cC1tYWtlLWl0ZW0gKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOnN1Ymxpc3QgKGNkciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnN5bWJvbCAiPiIpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0pKQogICAgICAg ICAgICAgICAgIGxpc3QpCiAgICAgICAgIDpzeW1ib2wgdAogICAgICAgICBhcmdzKSkKCihkZWZ2 YXIgcG9wdXAtbWVudS1rZXltYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkK ICAgIChkZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtc2VsZWN0KQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1mIiAgICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwIFty aWdodF0gICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1iIiAgICAgICdw b3B1cC1jbG9zZSkKICAgIChkZWZpbmUta2V5IG1hcCBbbGVmdF0gICAgICAncG9wdXAtY2xvc2Up CgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1uIiAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmlu ZS1rZXkgbWFwIFtkb3duXSAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJc Qy1wIiAgICAgICdwb3B1cC1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBbdXBdICAgICAg ICAncG9wdXAtcHJldmlvdXMpCgogICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gICAgICAgICdwb3B1 cC1oZWxwKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIlxDLT8iKSAncG9wdXAtaGVscCkKCiAg ICAoZGVmaW5lLWtleSBtYXAgIlxDLXMiICAgICAgJ3BvcHVwLWlzZWFyY2gpCiAgICBtYXApKQoK KHByb3ZpZGUgJ3BvcHVwKQo7OzsgcG9wdXAuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="auto-complete.el" Ozs7IGF1dG8tY29tcGxldGUuZWwgLS0tIEF1dG8gQ29tcGxldGlvbiBmb3IgR05VIEVtYWNzCgo7 OyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsg QXV0aG9yOiBUb21vaGlybyBNYXRzdXlhbWEgPG0yeW0ucHViQGdtYWlsLmNvbT4KOzsgVVJMOiBo dHRwOi8vY3g0YS5vcmcvc29mdHdhcmUvYXV0by1jb21wbGV0ZQo7OyBLZXl3b3JkczogY29tcGxl dGlvbiwgY29udmVuaWVuY2UKOzsgVmVyc2lvbjogMS40Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENv bW1lbnRhcnk6Cjs7Cjs7IFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgd2F5IHRvIGNvbXBsZXRl IHdpdGggcG9wdXAgbWVudSBsaWtlOgo7Owo7OyAgICAgZGVmLSEtCjs7ICAgICArLS0tLS0tLS0t LS0tLS0tLS0rCjs7ICAgICB8ZGVmdW46Ojo6Ojo6Ojo6Ojp8Cjs7ICAgICB8ZGVmdmFyICAgICAg ICAgICB8Cjs7ICAgICB8ZGVmbWFjcm8gICAgICAgICB8Cjs7ICAgICB8ICAgICAgIC4uLiAgICAg ICB8Cjs7ICAgICArLS0tLS0tLS0tLS0tLS0tLS0rCjs7Cjs7IFlvdSBjYW4gY29tcGxldGUgYnkg dHlwaW5nIGFuZCBzZWxlY3RpbmcgbWVudS4KOzsKOzsgRW50aXJlIGRvY3VtZW50cyBhcmUgbG9j YXRlZCBpbiBkb2MvIGRpcmVjdG9yeS4KOzsgVGFrZSBhIGxvb2sgZm9yIGluZm9ybWF0aW9uLgo7 Owo7OyBFbmpveSEKCjs7OyBDb2RlOgoKDAoKKGV2YWwtd2hlbi1jb21waWxlCiAgKHJlcXVpcmUg J2NsKSkKCihyZXF1aXJlICdwb3B1cCkKCjs7OzsgR2xvYmFsIHN0dWZmCgooZGVmdW4gYWMtZXJy b3IgKCZvcHRpb25hbCB2YXIpCiAgIlJlcG9ydCBhbiBlcnJvciBhbmQgZGlzYWJsZSBgYXV0by1j b21wbGV0ZS1tb2RlJy4iCiAgKGlnbm9yZS1lcnJvcnMKICAgIChtZXNzYWdlICJhdXRvLWNvbXBs ZXRlIGVycm9yOiAlcyIgdmFyKQogICAgKGF1dG8tY29tcGxldGUtbW9kZSAtMSkKICAgIHZhcikp CgoMCgo7Ozs7IEN1c3RvbWl6YXRpb24KCihkZWZncm91cCBhdXRvLWNvbXBsZXRlIG5pbAogICJB dXRvIGNvbXBsZXRpb24uIgogIDpncm91cCAnY29tcGxldGlvbgogIDpwcmVmaXggImFjLSIpCgoo ZGVmY3VzdG9tIGFjLWRlbGF5IDAuMQogICJEZWxheSB0byBjb21wbGV0aW9ucyB3aWxsIGJlIGF2 YWlsYWJsZS4iCiAgOnR5cGUgJ2Zsb2F0CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1 c3RvbSBhYy1hdXRvLXNob3ctbWVudSAwLjgKICAiTm9uLW5pbCBtZWFucyBjb21wbGV0aW9uIG1l bnUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3Qg OnRhZyAiWWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQog ICAgICAgICAgICAgICAgIChmbG9hdCA6dGFnICJUaW1lciIpKQogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtc2hvdy1tZW51LWltbWVkaWF0ZWx5LW9uLWF1dG8tY29tcGxl dGUgdAogICJOb24tbmlsIG1lYW5zIG1lbnUgd2lsbCBiZSBzaG93ZWQgaW1tZWRpYXRlbHkgb24g YGF1dG8tY29tcGxldGUnLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21wbGV0 ZSkKCihkZWZjdXN0b20gYWMtZXhwYW5kLW9uLWF1dG8tY29tcGxldGUgdAogICJOb24tbmlsIG1l YW5zIGV4cGFuZCB3aG9sZSBjb21tb24gcGFydCBvbiBmaXJzdCB0aW1lIGBhdXRvLWNvbXBsZXRl Jy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9t IGFjLWRpc2FibGUtZmFjZXMgJyhmb250LWxvY2stY29tbWVudC1mYWNlIGZvbnQtbG9jay1zdHJp bmctZmFjZSBmb250LWxvY2stZG9jLWZhY2UpCiAgIk5vbi1uaWwgbWVhbnMgZGlzYWJsZSBhdXRv bWF0aWMgY29tcGxldGlvbiBvbiBzcGVjaWZpZWQgZmFjZXMuIgogIDp0eXBlICcocmVwZWF0IHN5 bWJvbCkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLXN0b3AtZmx5bWFr ZS1vbi1jb21wbGV0aW5nIHQKICAiTm9uLW5pbCBtZWFucyBkaXNibGUgZmx5bWFrZSB0ZW1wb3Jh cmlseSBvbiBjb21wbGV0aW5nLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtdXNlLWZ1enp5IHQKICAiTm9uLW5pbCBtZWFucyB1c2UgZnV6 enkgbWF0Y2hpbmcuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoK KGRlZmN1c3RvbSBhYy1mdXp6eS1jdXJzb3ItY29sb3IgInJlZCIKICAiQ3Vyc29yIGNvbG9yIGlu IGZ1enp5IG1vZGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoo ZGVmY3VzdG9tIGFjLXVzZS1jb21waGlzdCB0CiAgIk5vbi1uaWwgbWVhbnMgdXNlIGludGVsbGln ZW50IGNvbXBsZXRpb24gaGlzdG9yeS4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8t Y29tcGxldGUpCgooZGVmY3VzdG9tIGFjLWNvbXBoaXN0LXRocmVzaG9sZCAwLjcKICAiUGVyY2Vu dGFnZSBvZiBpZ25vcmluZyBsb3cgc2NvcmVkIGNhbmRpZGF0ZXMuIgogIDp0eXBlICdmbG9hdAog IDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtY29tcGhpc3QtZmlsZQogIChl eHBhbmQtZmlsZS1uYW1lIChjb25jYXQgKGlmIChib3VuZHAgJ3VzZXItZW1hY3MtZGlyZWN0b3J5 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItZW1hY3MtZGlyZWN0b3J5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+Ly5lbWFjcy5kLyIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiL2FjLWNvbXBoaXN0LmRhdCIpKQogICJDb21wbGV0aW9uIGhpc3Rvcnkg ZmlsZSBuYW1lLiIKICA6dHlwZSAnc3RyaW5nCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRl ZmN1c3RvbSBhYy11c2VyLWRpY3Rpb25hcnkgbmlsCiAgIlVzZXIgZGVmaW5lZCBkaWN0aW9uYXJ5 IgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVm Y3VzdG9tIGFjLWRpY3Rpb25hcnktZmlsZXMgJygifi8uZGljdCIpCiAgIkRpY3Rpb25hcnkgZmls ZXMuIgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihk ZWZ2YXJhbGlhcyAnYWMtdXNlci1kaWN0aW9uYXJ5LWZpbGVzICdhYy1kaWN0aW9uYXJ5LWZpbGVz KQoKKGRlZmN1c3RvbSBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzIG5pbAogICJEaWN0aW9uYXJ5 IGRpcmVjdG9yaWVzLiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmN1c3RvbSBhYy11c2UtcXVpY2staGVscCB0CiAgIk5vbi1uaWwgbWVhbnMg dXNlIHF1aWNrIGhlbHAuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRl KQoKKGRlZmN1c3RvbSBhYy1xdWljay1oZWxwLWRlbGF5IDEuNQogICJEZWxheSB0byBzaG93IHF1 aWNrIGhlbHAuIgogIDp0eXBlICdmbG9hdAogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtbWVudS1oZWlnaHQgMTAKICAiTWF4IGhlaWdodCBvZiBjYW5kaWRhdGUgbWVudS4i CiAgOnR5cGUgJ2ludGVnZXIKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihkZWZ2YXJhbGlhcyAn YWMtY2FuZGlkYXRlLW1lbnUtaGVpZ2h0ICdhYy1tZW51LWhlaWdodCkKCihkZWZjdXN0b20gYWMt cXVpY2staGVscC1oZWlnaHQgMjAKICAiTWF4IGhlaWdodCBvZiBxdWljayBoZWxwLiIKICA6dHlw ZSAnaW50ZWdlcgogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtcXVpY2st aGVscC1wcmVmZXItcG9zLXRpcCB0CiAgIlByZWZlciBuYXRpdmUgdG9vbHRpcCB3aXRoIHBvcy10 aXAgdGhhbiBvdmVybGF5IHBvcHVwIGZvciBkaXNwbGF5aW5nIHF1aWNrIGhlbHAuIgogIDp0eXBl ICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQooZGVmdmFyYWxpYXMgJ2FjLXF1aWNr LWhlbHAtcHJlZmVyLXggJ2FjLXF1aWNrLWhlbHAtcHJlZmVyLXBvcy10aXApCgooZGVmY3VzdG9t IGFjLWNhbmRpZGF0ZS1saW1pdCBuaWwKICAiTGltaXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuIE5v bi1pbnRlZ2VyIG1lYW5zIG5vIGxpbWl0LiIKICA6dHlwZSAnaW50ZWdlcgogIDpncm91cCAnYXV0 by1jb21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1jYW5kaWRhdGUtbWF4ICdhYy1jYW5kaWRhdGUt bGltaXQpCgooZGVmY3VzdG9tIGFjLW1vZGVzCiAgJyhlbWFjcy1saXNwLW1vZGUgbGlzcC1tb2Rl IGxpc3AtaW50ZXJhY3Rpb24tbW9kZQogICAgc2xpbWUtcmVwbC1tb2RlCiAgICBjLW1vZGUgY2Mt bW9kZSBjKystbW9kZQogICAgamF2YS1tb2RlIG1hbGFiYXItbW9kZSBjbG9qdXJlLW1vZGUgc2Nh bGEtbW9kZQogICAgc2NoZW1lLW1vZGUKICAgIG9jYW1sLW1vZGUgdHVhcmVnLW1vZGUgaGFza2Vs bC1tb2RlCiAgICBwZXJsLW1vZGUgY3BlcmwtbW9kZSBweXRob24tbW9kZSBydWJ5LW1vZGUKICAg IGVjbWFzY3JpcHQtbW9kZSBqYXZhc2NyaXB0LW1vZGUganMtbW9kZSBqczItbW9kZSBwaHAtbW9k ZSBjc3MtbW9kZQogICAgbWFrZWZpbGUtbW9kZSBzaC1tb2RlIGZvcnRyYW4tbW9kZSBmOTAtbW9k ZSBhZGEtbW9kZQogICAgeG1sLW1vZGUgc2dtbC1tb2RlCiAgICB0cy1tb2RlKQogICJNYWpvciBt b2RlcyBgYXV0by1jb21wbGV0ZS1tb2RlJyBjYW4gcnVuIG9uLiIKICA6dHlwZSAnKHJlcGVhdCBz eW1ib2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy1jb21wYXRpYmxl LXBhY2thZ2VzLXJlZ2V4cAogICJeYWMtIgogICJSZWdleHAgdG8gaW5kaWNhdGUgd2hhdCBwYWNr YWdlcyBjYW4gd29yayB3aXRoIGF1dG8tY29tcGxldGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3Jv dXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLW5vbi10cmlnZ2VyLWNvbW1hbmRzCiAg JygqdGFibGUtLWNlbGwtc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiQ29tbWFuZHMgdGhhdCBjYW4n dCBiZSB1c2VkIGFzIHRyaWdnZXJzIG9mIGBhdXRvLWNvbXBsZXRlJy4iCiAgOnR5cGUgJyhyZXBl YXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtdHJpZ2dl ci1jb21tYW5kcwogICcoc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiVHJpZ2dlciBjb21tYW5kcyB0 aGF0IHNwZWNpZnkgd2hldGhlciBgYXV0by1jb21wbGV0ZScgc2hvdWxkIHN0YXJ0IG9yIG5vdC4i CiAgOnR5cGUgJyhyZXBlYXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtdHJpZ2dlci1jb21tYW5kcy1vbi1jb21wbGV0aW5nCiAgJyhkZWxldGUtYmFja3dh cmQtY2hhcgogICAgYmFja3dhcmQtZGVsZXRlLWNoYXIKICAgIGJhY2t3YXJkLWRlbGV0ZS1jaGFy LXVudGFiaWZ5KQogICJUcmlnZ2VyIGNvbW1hbmRzIHRoYXQgc3BlY2lmeSB3aGV0aGVyIGBhdXRv LWNvbXBsZXRlJyBzaG91bGQgY29udGludWUgb3Igbm90LiIKICA6dHlwZSAnKHJlcGVhdCBzeW1i b2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy10cmlnZ2VyLWtleSBu aWwKICAiTm9uLW5pbCBtZWFucyBgYXV0by1jb21wbGV0ZScgd2lsbCBzdGFydCBieSB0eXBpbmcg dGhpcyBrZXkuCklmIHlvdSBzcGVjaWZ5IHRoaXMgVEFCLCBmb3IgZXhhbXBsZSwgYGF1dG8tY29t cGxldGUnIHdpbGwgc3RhcnQgYnkgdHlwaW5nIFRBQiwKYW5kIGlmIHRoZXJlIGlzIG5vIGNvbXBs ZXRpb25zLCBhbiBvcmlnaW5hbCBjb21tYW5kIHdpbGwgYmUgZmFsbGJhY2tlZC4iCiAgOnR5cGUg J3N0cmluZwogIDpncm91cCAnYXV0by1jb21wbGV0ZQogIDpzZXQgKGxhbWJkYSAoc3ltYm9sIHZh bHVlKQogICAgICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQogICAgICAgICAod2hlbiAo YW5kIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgJ2FjLXNldC10cmlnZ2VyLWtl eSkpCiAgICAgICAgICAgKGFjLXNldC10cmlnZ2VyLWtleSB2YWx1ZSkpKSkKCihkZWZjdXN0b20g YWMtYXV0by1zdGFydCAyCiAgIk5vbi1uaWwgbWVhbnMgY29tcGxldGlvbiB3aWxsIGJlIHN0YXJ0 ZWQgYXV0b21hdGljYWxseS4KUG9zaXRpdmUgaW50ZWdlciBtZWFucyBpZiBhIGxlbmd0aCBvZiBh IHdvcmQgeW91IGVudGVyZWQgaXMgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlLApjb21wbGV0aW9uIHdp bGwgYmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LgpJZiB5b3Ugc3BlY2lmeSBgbmlsJywgbmV2ZXIg YmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAi WWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQogICAgICAg ICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIlJlcXVpcmUiKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxl dGUpCgooZGVmY3VzdG9tIGFjLXN0b3Atd29yZHMgbmlsCiAgIkxpc3Qgb2Ygc3RyaW5nIHRvIHN0 b3AgY29tcGxldGlvbi4iCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKQogIDpncm91cCAnYXV0by1j b21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1pZ25vcmVzICdhYy1zdG9wLXdvcmRzKQoKKGRlZmN1 c3RvbSBhYy11c2UtZGljdGlvbmFyeS1hcy1zdG9wLXdvcmRzIHQKICAiTm9uLW5pbCBtZWFucyBh IGJ1ZmZlciByZWxhdGVkIGRpY3Rpb25hcnkgd2lsbCBiZSB0aG91Z2h0IG9mIGFzIHN0b3Agd29y ZHMuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3Rv bSBhYy1pZ25vcmUtY2FzZSAnc21hcnQKICAiTm9uLW5pbCBtZWFucyBhdXRvLWNvbXBsZXRlIGln bm9yZXMgY2FzZS4KSWYgdGhpcyB2YWx1ZSBpcyBgc21hcnQnLCBhdXRvLWNvbXBsZXRlIGlnbm9y ZXMgY2FzZSBvbmx5IHdoZW4KYSBwcmVmaXggZG9lbid0IGNvbnRhaW4gYW55IHVwcGVyIGNhc2Ug bGV0dGVycy4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIlllcyIgdCkKICAgICAgICAg ICAgICAgICAoY29uc3QgOnRhZyAiU21hcnQiIHNtYXJ0KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJObyIgbmlsKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LWR3aW0gdAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlJyB3b3JrcyBiYXNlZCBvbiBE byBXaGF0IEkgTWVhbi4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUp CgooZGVmY3VzdG9tIGFjLXVzZS1tZW51LW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBhIHNwZWNp YWwga2V5bWFwIGBhYy1tZW51LW1hcCcgb24gY29tcGxldGluZyBtZW51IHdpbGwgYmUgdXNlZC4i CiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LXVzZS1vdmVycmlkaW5nLWxvY2FsLW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBgb3ZlcnJpZGlu Zy1sb2NhbC1tYXAnIHdpbGwgYmUgdXNlZCB0byBoYWNrIGZvciBvdmVycmlkaW5nIGtleSBldmVu dHMgb24gYXV0by1jb3BsZXRpb24uIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmZhY2UgYWMtY29tcGxldGlvbi1mYWNlCiAgJygodCAoOmZvcmVncm91bmQg ImRhcmtncmF5IiA6dW5kZXJsaW5lIHQpKSkKICAiRmFjZSBmb3IgaW5saW5lIGNvbXBsZXRpb24i CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMtY2FuZGlkYXRlLWZhY2UKICAn KCh0ICg6YmFja2dyb3VuZCAibGlnaHRncmF5IiA6Zm9yZWdyb3VuZCAiYmxhY2siKSkpCiAgIkZh Y2UgZm9yIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMt c2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAic3RlZWxibHVlIiA6Zm9yZWdyb3Vu ZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHNlbGVjdGVkIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdh dXRvLWNvbXBsZXRlKQoKKGRlZnZhciBhdXRvLWNvbXBsZXRlLW1vZGUtaG9vayBuaWwKICAiSG9v ayBmb3IgYGF1dG8tY29tcGxldGUtbW9kZScuIikKCgwKCjs7OzsgSW50ZXJuYWwgdmFyaWFibGVz CgooZGVmdmFyIGF1dG8tY29tcGxldGUtbW9kZSBuaWwKICAiRHVtbXkgdmFyaWFibGUgdG8gc3Vw cHJlc3MgY29tcGlsZXIgd2FybmluZ3MuIikKCihkZWZ2YXIgYWMtY3Vyc29yLWNvbG9yIG5pbAog ICJPbGQgY3Vyc29yIGNvbG9yLiIpCgooZGVmdmFyIGFjLWlubGluZSBuaWwKICAiSW5saW5lIGNv bXBsZXRpb24gaW5zdGFuY2UuIikKCihkZWZ2YXIgYWMtbWVudSBuaWwKICAiTWVudSBpbnN0YW5j ZS4iKQoKKGRlZnZhciBhYy1zaG93LW1lbnUgbmlsCiAgIkZsYWcgdG8gc2hvdyBtZW51IG9uIHRp bWVyIHRpY2suIikKCihkZWZ2YXIgYWMtbGFzdC1jb21wbGV0aW9uIG5pbAogICJDb25zIG9mIHBy ZWZpeCBtYXJrZXIgYW5kIHNlbGVjdGVkIGl0ZW0gb2YgbGFzdCBjb21wbGV0aW9uLiIpCgooZGVm dmFyIGFjLXF1aWNrLWhlbHAgbmlsCiAgIlF1aWNrIGhlbHAgaW5zdGFuY2UiKQoKKGRlZnZhciBh Yy1jb21wbGV0aW5nIG5pbAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlLW1vZGUnIGlz IG5vdyB3b3JraW5nIG9uIGNvbXBsZXRpb24uIikKCihkZWZ2YXIgYWMtYnVmZmVyIG5pbAogICJC dWZmZXIgd2hlcmUgYXV0by1jb21wbGV0ZSBpcyBzdGFydGVkLiIpCgooZGVmdmFyIGFjLXBvaW50 IG5pbAogICJTdGFydCBwb2ludCBvZiBwcmVmaXguIikKCihkZWZ2YXIgYWMtbGFzdC1wb2ludCBu aWwKICAiTGFzdCBwb2ludCBvZiB1cGRhdGluZyBwYXR0ZXJuLiIpCgooZGVmdmFyIGFjLXByZWZp eCBuaWwKICAiUHJlZml4IHN0cmluZy4iKQooZGVmdmFyYWxpYXMgJ2FjLXRhcmdldCAnYWMtcHJl Zml4KQoKKGRlZnZhciBhYy1zZWxlY3RlZC1jYW5kaWRhdGUgbmlsCiAgIkxhc3Qgc2VsZWN0ZWQg Y2FuZGlkYXRlLiIpCgooZGVmdmFyIGFjLWNvbW1vbi1wYXJ0IG5pbAogICJDb21tb24gcGFydCBz dHJpbmcgb2YgbWVhbmluZ2Z1bCBjYW5kaWRhdGVzLgpJZiB0aGVyZSBpcyBubyBjb21tb24gcGFy dCwgdGhpcyB3aWxsIGJlIG5pbC4iKQoKKGRlZnZhciBhYy13aG9sZS1jb21tb24tcGFydCBuaWwK ICAiQ29tbW9uIHBhcnQgc3RyaW5nIG9mIHdob2xlIGNhbmRpZGF0ZXMuCklmIHRoZXJlIGlzIG5v IGNvbW1vbiBwYXJ0LCB0aGlzIHdpbGwgYmUgbmlsLiIpCgooZGVmdmFyIGFjLXByZWZpeC1vdmVy bGF5IG5pbAogICJPdmVybGF5IGZvciBwcmVmaXggc3RyaW5nLiIpCgooZGVmdmFyIGFjLXRpbWVy IG5pbAogICJDb21wbGV0aW9uIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtc2hvdy1tZW51LXRp bWVyIG5pbAogICJTaG93IG1lbnUgaWRsZSB0aW1lci4iKQoKKGRlZnZhciBhYy1xdWljay1oZWxw LXRpbWVyIG5pbAogICJRdWljayBoZWxwIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtdHJpZ2dl cmVkIG5pbAogICJGbGFnIHRvIHVwZGF0ZS4iKQoKKGRlZnZhciBhYy1saW1pdCBuaWwKICAiTGlt aXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgZm9yIGVhY2ggc291cmNlcy4iKQoKKGRlZnZhciBhYy1j YW5kaWRhdGVzIG5pbAogICJDdXJyZW50IGNhbmRpZGF0ZXMuIikKCihkZWZ2YXIgYWMtY2FuZGlk YXRlcy1jYWNoZSBuaWwKICAiQ2FuZGlkYXRlcyBjYWNoZSBmb3IgaW5kaXZpZHVhbCBzb3VyY2Vz LiIpCgooZGVmdmFyIGFjLWZ1enp5LWVuYWJsZSBuaWwKICAiTm9uLW5pbCBtZWFucyBmdXp6eSBt YXRjaGluZyBpcyBlbmFibGVkLiIpCgooZGVmdmFyIGFjLWR3aW0tZW5hYmxlIG5pbAogICJOb24t bmlsIG1lYW5zIERXSU0gY29tcGxldGlvbiB3aWxsIGJlIGFsbG93ZWQuIikKCihkZWZ2YXIgYWMt bW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkKICAiQXV0by1jb21wbGV0ZSBtb2RlIG1hcC4g SXQgaXMgYWxzbyB1c2VkIGZvciB0cmlnZ2VyIGtleSBjb21tYW5kLiBTZWUgYWxzbyBgYWMtdHJp Z2dlci1rZXknLiIpCgooZGVmdmFyIGFjLWNvbXBsZXRpbmctbWFwCiAgKGxldCAoKG1hcCAobWFr ZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlx0IiAnYWMtZXhwYW5kKQog ICAgKGRlZmluZS1rZXkgbWFwICJcciIgJ2FjLWNvbXBsZXRlKQogICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIk0tVEFCIikgJ2F1dG8tY29tcGxldGUpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLXMi ICdhYy1pc2VhcmNoKQoKICAgIChkZWZpbmUta2V5IG1hcCAiXE0tbiIgJ2FjLW5leHQpCiAgICAo ZGVmaW5lLWtleSBtYXAgIlxNLXAiICdhYy1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBb ZG93bl0gJ2FjLW5leHQpCiAgICAoZGVmaW5lLWtleSBtYXAgW3VwXSAnYWMtcHJldmlvdXMpCgog ICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gJ2FjLWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgW00t ZjFdICdhYy1wZXJzaXN0LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy0/IikgJ2Fj LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1NLT8iKSAnYWMtcGVyc2lzdC1oZWxw KQoKICAgIChkZWZpbmUta2V5IG1hcCBbQy1kb3duXSAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93 bikKICAgIChkZWZpbmUta2V5IG1hcCBbQy11cF0gJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQog ICAgKGRlZmluZS1rZXkgbWFwICJcQy1cTS1uIiAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93bikK ICAgIChkZWZpbmUta2V5IG1hcCAiXEMtXE0tcCIgJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQoK ICAgIChkb3RpbWVzIChpIDkpCiAgICAgIChsZXQgKChzeW1ib2wgKGludGVybiAoZm9ybWF0ICJh Yy1jb21wbGV0ZS0lZCIgKDErIGkpKSkpKQogICAgICAgIChmc2V0IHN5bWJvbAogICAgICAgICAg ICAgIGAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgKGludGVyYWN0aXZlKQogICAgICAgICAg ICAgICAgICh3aGVuIChhbmQgKGFjLW1lbnUtbGl2ZS1wKSAocG9wdXAtc2VsZWN0IGFjLW1lbnUg LGkpKQogICAgICAgICAgICAgICAgICAgKGFjLWNvbXBsZXRlKSkpKQogICAgICAgIChkZWZpbmUt a2V5IG1hcCAocmVhZC1rYmQtbWFjcm8gKGZvcm1hdCAiTS0lcyIgKDErIGkpKSkgc3ltYm9sKSkp CgogICAgbWFwKQogICJLZXltYXAgZm9yIGNvbXBsZXRpb24uIikKKGRlZnZhcmFsaWFzICdhYy1j b21wbGV0ZS1tb2RlLW1hcCAnYWMtY29tcGxldGluZy1tYXApCgooZGVmdmFyIGFjLW1lbnUtbWFw CiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAg IlxDLW4iICdhYy1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1wIiAnYWMtcHJldmlvdXMp CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKQog ICJLZXltYXAgZm9yIGNvbXBsZXRpb24gb24gY29tcGxldGluZyBtZW51LiIpCgooZGVmdmFyIGFj LWN1cnJlbnQtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoc2V0 LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKSkKCihkZWZ2YXIg YWMtbWF0Y2gtZnVuY3Rpb24gJ2FsbC1jb21wbGV0aW9ucwogICJEZWZhdWx0IG1hdGNoIGZ1bmN0 aW9uLiIpCgooZGVmdmFyIGFjLXByZWZpeC1kZWZpbml0aW9ucwogICcoKHN5bWJvbCAuIGFjLXBy ZWZpeC1zeW1ib2wpCiAgICAoZmlsZSAuIGFjLXByZWZpeC1maWxlKQogICAgKHZhbGlkLWZpbGUg LiBhYy1wcmVmaXgtdmFsaWQtZmlsZSkKICAgIChjLWRvdCAuIGFjLXByZWZpeC1jLWRvdCkKICAg IChjLWRvdC1yZWYgLiBhYy1wcmVmaXgtYy1kb3QtcmVmKSkKICAiUHJlZml4IGRlZmluaXRpb25z IGZvciBjb21tb24gdXNlLiIpCgooZGVmdmFyIGFjLXNvdXJjZXMgJyhhYy1zb3VyY2Utd29yZHMt aW4tc2FtZS1tb2RlLWJ1ZmZlcnMpCiAgIlNvdXJjZXMgZm9yIGNvbXBsZXRpb24uIikKKG1ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsICdhYy1zb3VyY2VzKQoKKGRlZnZhciBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICJDb21waWxlZCBzb3VyY2Ugb2YgYGFjLXNvdXJjZXMnLiIpCgooZGVmdmFy IGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAiQ3VycmVudCB3b3JraW5nIHNvdXJjZXMuIFRoaXMg aXMgc3VibGlzdCBvZiBgYWMtY29tcGlsZWQtc291cmNlcycuIikKCihkZWZ2YXIgYWMtb21uaS1j b21wbGV0aW9uLXNvdXJjZXMgbmlsCiAgIkRvIG5vdCB1c2UgdGhpcyBhbnltb3JlLiIpCgooZGVm dmFyIGFjLWN1cnJlbnQtcHJlZml4LWRlZiBuaWwpCgooZGVmdmFyIGFjLWlnbm9yaW5nLXByZWZp eC1kZWYgbmlsKQoKDAoKOzs7OyBJbnRlbGxpZ2VudCBjb21wbGV0aW9uIGhpc3RvcnkKCihkZWZ2 YXIgYWMtY29tcGhpc3QgbmlsCiAgIkRhdGFiYXNlIG9mIGNvbXBsZXRpb24gaGlzdG9yeS4iKQoK KGRlZnN1YnN0IGFjLWNvbXBoaXN0LW1ha2UtdGFiICgpCiAgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAnZXF1YWwpKQoKKGRlZnN1YnN0IGFjLWNvbXBoaXN0LXRhYiAoZGIpCiAgKG50aCAwIGRiKSkK CihkZWZzdWJzdCBhYy1jb21waGlzdC1jYWNoZSAoZGIpCiAgKG50aCAxIGRiKSkKCihkZWZ1biBh Yy1jb21waGlzdC1tYWtlICgmb3B0aW9uYWwgdGFiKQogIChsaXN0IChvciB0YWIgKGFjLWNvbXBo aXN0LW1ha2UtdGFiKSkgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwgOndlYWtuZXNzIHQp KSkKCihkZWZ1biBhYy1jb21waGlzdC1nZXQgKGRiIHN0cmluZyAmb3B0aW9uYWwgY3JlYXRlKQog IChsZXQqICgodGFiIChhYy1jb21waGlzdC10YWIgZGIpKQogICAgICAgICAoaW5kZXggKGdldGhh c2ggc3RyaW5nIHRhYikpKQogICAgKHdoZW4gKGFuZCBjcmVhdGUgKG51bGwgaW5kZXgpKQogICAg ICAoc2V0cSBpbmRleCAobWFrZS12ZWN0b3IgKGxlbmd0aCBzdHJpbmcpIDApKQogICAgICAocHV0 aGFzaCBzdHJpbmcgaW5kZXggdGFiKSkKICAgIGluZGV4KSkKCihkZWZ1biBhYy1jb21waGlzdC1h ZGQgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJlZml4ICgxLSAobGVu Z3RoIHN0cmluZykpKSkKICAod2hlbiAoPD0gMCBwcmVmaXgpCiAgICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCiAgICAobGV0ICgoc3RhdCAoYWMtY29tcGhp c3QtZ2V0IGRiIHN0cmluZyB0KSkpCiAgICAgIChpbmNmIChhcmVmIHN0YXQgcHJlZml4KSkKICAg ICAgKHJlbWhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkpCgooZGVmdW4gYWMt Y29tcGhpc3Qtc2NvcmUgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJl Zml4ICgxLSAobGVuZ3RoIHN0cmluZykpKSkKICAoaWYgKDw9IDAgcHJlZml4KQogICAgICAobGV0 ICgoY2FjaGUgKGdldGhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkKICAgICAg ICAob3IgKGFuZCBjYWNoZSAoYXJlZiBjYWNoZSBwcmVmaXgpKQogICAgICAgICAgICAobGV0ICgo c3RhdCAoYWMtY29tcGhpc3QtZ2V0IGRiIHN0cmluZykpCiAgICAgICAgICAgICAgICAgIChzY29y ZSAwLjApKQogICAgICAgICAgICAgICh3aGVuIHN0YXQKICAgICAgICAgICAgICAgIChsb29wIGZv ciBwIGZyb20gMCBiZWxvdyAobGVuZ3RoIHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgIDs7 IHNpZ21vaWQgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSA9IDUKICAgICAg ICAgICAgICAgICAgICAgIHdpdGggYiA9ICgvIDcwMC4wIGEpIDsgYm91bmRzIGZvciBhdm9pZGlu ZyByYW5nZSBlcnJvciBpbiBgZXhwJwogICAgICAgICAgICAgICAgICAgICAgd2l0aCBkID0gKC8g Ni4wIGEpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgeCA9IChtYXggKC0gYikgKG1pbiBiICgt IGQgKGFicyAoLSBwcmVmaXggcCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgciA9ICgv IDEuMCAoMSsgKGV4cCAoKiAoLSBhKSB4KSkpKQogICAgICAgICAgICAgICAgICAgICAgZG8KICAg ICAgICAgICAgICAgICAgICAgIChpbmNmIHNjb3JlICgqIChhcmVmIHN0YXQgcCkgcikpKSkKICAg ICAgICAgICAgICA7OyBXZWlnaHQgYnkgZGlzdGFuY2UKICAgICAgICAgICAgICAoaW5jZiBzY29y ZSAobWF4IDAuMCAoLSAwLjMgKC8gKC0gKGxlbmd0aCBzdHJpbmcpIHByZWZpeCkgMTAwLjApKSkp CiAgICAgICAgICAgICAgKHVubGVzcyBjYWNoZQogICAgICAgICAgICAgICAgKHNldHEgY2FjaGUg KG1ha2UtdmVjdG9yIChsZW5ndGggc3RyaW5nKSBuaWwpKQogICAgICAgICAgICAgICAgKHB1dGhh c2ggc3RyaW5nIGNhY2hlIChhYy1jb21waGlzdC1jYWNoZSBkYikpKQogICAgICAgICAgICAgIChh c2V0IGNhY2hlIHByZWZpeCBzY29yZSkKICAgICAgICAgICAgICBzY29yZSkpKQogICAgMC4wKSkK CihkZWZ1biBhYy1jb21waGlzdC1zb3J0IChkYiBjb2xsZWN0aW9uIHByZWZpeCAmb3B0aW9uYWwg dGhyZXNob2xkKQogIChsZXQgKHJlc3VsdAogICAgICAgIChuIDApCiAgICAgICAgKHRvdGFsIDAp CiAgICAgICAgKGN1ciAwKSkKICAgIChzZXRxIHJlc3VsdCAobWFwY2FyIChsYW1iZGEgKGEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgY3VyIHRocmVzaG9sZCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD49IGN1ciAoKiB0b3RhbCB0aHJlc2hvbGQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBjdXIgbmlsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluY2YgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpbmNmIGN1ciAoY2RyIGEpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIg YSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc29ydCAobWFwY2FyIChsYW1iZGEgKHN0cmlu ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoc2NvcmUg KGFjLWNvbXBoaXN0LXNjb3JlIGRiIHN0cmluZyBwcmVmaXgpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNmIHRvdGFsIHNjb3JlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgc3RyaW5nIHNjb3JlKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChhIGIpICg8IChjZHIgYikgKGNkciBhKSkpKSkp CiAgICAoaWYgdGhyZXNob2xkCiAgICAgICAgKGNvbnMgbiByZXN1bHQpCiAgICAgIHJlc3VsdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LXNlcmlhbGl6ZSAoZGIpCiAgKGxldCAoYWxpc3QpCiAgICAo bWFwaGFzaCAobGFtYmRhIChrIHYpCiAgICAgICAgICAgICAgIChwdXNoIChjb25zIGsgdikgYWxp c3QpKQogICAgICAgICAgICAgKGFjLWNvbXBoaXN0LXRhYiBkYikpCiAgICAobGlzdCBhbGlzdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LWRlc2VyaWFsaXplIChzZXhwKQogIChjb25kaXRpb24tY2Fz ZSBuaWwKICAgICAgKGFjLWNvbXBoaXN0LW1ha2UgKGxldCAoKHRhYiAoYWMtY29tcGhpc3QtbWFr ZS10YWIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwYyAobGFtYmRhIChjb25zKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggKGNhciBjb25zKSAoY2Ry IGNvbnMpIHRhYikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAwIHNleHAp KQogICAgICAgICAgICAgICAgICAgICAgICAgIHRhYikpCiAgICAoZXJyb3IgKG1lc3NhZ2UgIklu dmFsaWQgY29tcGhpc3QgZGIuIikgbmlsKSkpCgooZGVmdW4gYWMtY29tcGhpc3QtaW5pdCAoKQog IChhYy1jb21waGlzdC1sb2FkKQogIChhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICdhYy1jb21w aGlzdC1zYXZlKSkKCihkZWZ1biBhYy1jb21waGlzdC1sb2FkICgpCiAgKGludGVyYWN0aXZlKQog IChsZXQgKChkYiAoaWYgKGZpbGUtZXhpc3RzLXAgYWMtY29tcGhpc3QtZmlsZSkKICAgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CiAgICAgICAgICAgICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGFjLWNvbXBoaXN0LWZp bGUpCiAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAg ICAgICAgICAgICAoYWMtY29tcGhpc3QtZGVzZXJpYWxpemUgKHJlYWQgKGN1cnJlbnQtYnVmZmVy KSkpKSkpKSkKICAgIChzZXRxIGFjLWNvbXBoaXN0IChvciBkYiAoYWMtY29tcGhpc3QtbWFrZSkp KSkpCgooZGVmdW4gYWMtY29tcGhpc3Qtc2F2ZSAoKQogIChpbnRlcmFjdGl2ZSkKICAocmVxdWly ZSAncHApCiAgKGlnbm9yZS1lcnJvcnMKICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChwcCAo YWMtY29tcGhpc3Qtc2VyaWFsaXplIGFjLWNvbXBoaXN0KSAoY3VycmVudC1idWZmZXIpKQogICAg ICAod3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGFjLWNvbXBoaXN0LWZpbGUp KSkpCgoMCgo7Ozs7IERpY3Rpb25hcnkKKGRlZnZhciBhYy1idWZmZXItZGljdGlvbmFyeSBuaWwp CihkZWZ2YXIgYWMtZmlsZS1kaWN0aW9uYXJ5IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFs KSkKCihkZWZ1biBhYy1jbGVhci1kaWN0aW9uYXJ5LWNhY2hlICgpCiAgKGludGVyYWN0aXZlKQog IChkb2xpc3QgKGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQogICAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmZmVyCiAgICAgIChpZiAobG9jYWwtdmFyaWFibGUtcCAnYWMtYnVmZmVyLWRpY3Rpb25hcnkp CiAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnYWMtYnVmZmVyLWRpY3Rpb25hcnkpKSkp CiAgKGNscmhhc2ggYWMtZmlsZS1kaWN0aW9uYXJ5KSkKCihkZWZ1biBhYy1maWxlLWRpY3Rpb25h cnkgKGZpbGVuYW1lKQogIChsZXQgKChjYWNoZSAoZ2V0aGFzaCBmaWxlbmFtZSBhYy1maWxlLWRp Y3Rpb25hcnkgJ25vbmUpKSkKICAgIChpZiAoYW5kIGNhY2hlIChub3QgKGVxIGNhY2hlICdub25l KSkpCiAgICAgICAgY2FjaGUKICAgICAgKGxldCAocmVzdWx0KQogICAgICAgIChpZ25vcmUtZXJy b3JzCiAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZmlsZW5hbWUpCiAgICAgICAgICAgIChzZXRxIHJlc3VsdCAoc3BsaXQtc3RyaW5n IChidWZmZXItc3RyaW5nKSAiXG4iKSkpKQogICAgICAgIChwdXRoYXNoIGZpbGVuYW1lIHJlc3Vs dCBhYy1maWxlLWRpY3Rpb25hcnkpCiAgICAgICAgcmVzdWx0KSkpKQoKKGRlZnVuIGFjLW1vZGUt ZGljdGlvbmFyeSAobW9kZSkKICAobG9vcCBmb3IgbmFtZSBpbiAoY29ucyAoc3ltYm9sLW5hbWUg bW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycyAobGlzdCAoZmls ZS1uYW1lLWV4dGVuc2lvbiAoYnVmZmVyLWZpbGUtbmFtZSkpKSkpCiAgICAgICAgZm9yIGRpciBp biBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzCiAgICAgICAgZm9yIGZpbGUgPSAoY29uY2F0IGRp ciAiLyIgbmFtZSkKICAgICAgICBpZiAoZmlsZS1leGlzdHMtcCBmaWxlKQogICAgICAgIGFwcGVu ZCAoYWMtZmlsZS1kaWN0aW9uYXJ5IGZpbGUpKSkKCihkZWZ1biBhYy1idWZmZXItZGljdGlvbmFy eSAoJm9wdGlvbmFsIGJ1ZmZlcikKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAob3IgYnVmZmVyIChj dXJyZW50LWJ1ZmZlcikpCiAgICAoaWYgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLWJ1ZmZlci1kaWN0 aW9uYXJ5KQogICAgICAgIGFjLWJ1ZmZlci1kaWN0aW9uYXJ5CiAgICAgIChtYWtlLWxvY2FsLXZh cmlhYmxlICdhYy1idWZmZXItZGljdGlvbmFyeSkKICAgICAgKHNldHEgYWMtYnVmZmVyLWRpY3Rp b25hcnkKICAgICAgICAgICAgKGFwcGx5ICdhcHBlbmQKICAgICAgICAgICAgICAgICAgIGFjLXVz ZXItZGljdGlvbmFyeQogICAgICAgICAgICAgICAgICAgKGFjLW1vZGUtZGljdGlvbmFyeSBtYWpv ci1tb2RlKQogICAgICAgICAgICAgICAgICAgKG1hcGNhciAnYWMtZmlsZS1kaWN0aW9uYXJ5IGFj LWRpY3Rpb25hcnktZmlsZXMpKSkpKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0aW9uIGludGVybmFs cwoKKGRlZnVuIGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXAgKCkKICAiUmV0dXJuIG5vbi1uaWwg aWYgY3VycmVudCBsaW5lIGlzIGxvbmcgYW5kIHdyYXBwZWQgdG8gbmV4dCB2aXN1YWwgbGluZS4i CiAgKGFuZCAobm90IHRydW5jYXRlLWxpbmVzKQogICAgICAgKGVxIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikKICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICh2ZXJ0aWNh bC1tb3Rpb24gMSkKICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkpCgoo ZGVmdW4gYWMtc3RvcC13b3JkLXAgKHdvcmQpCiAgKG9yIChtZW1iZXIgd29yZCBhYy1zdG9wLXdv cmRzKQogICAgICAoaWYgYWMtdXNlLWRpY3Rpb25hcnktYXMtc3RvcC13b3JkcwogICAgICAgICAg KG1lbWJlciB3b3JkIChhYy1idWZmZXItZGljdGlvbmFyeSkpKSkpCgooZGVmdW4gYWMtcHJlZml4 LXN5bWJvbCAoKQogICJEZWZhdWx0IHByZWZpeCBkZWZpbml0aW9uIGZ1bmN0aW9uLiIKICAocmVx dWlyZSAndGhpbmdhdHB0KQogIChjYXItc2FmZSAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICdz eW1ib2wpKSkKKGRlZmFsaWFzICdhYy1wcmVmaXgtZGVmYXVsdCAnYWMtcHJlZml4LXN5bWJvbCkK CihkZWZ1biBhYy1wcmVmaXgtZmlsZSAoKQogICJGaWxlIHByZWZpeC4iCiAgKGxldCAoKHBvaW50 IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+JyBcdFxyXG5dIiBuaWwgdCkpKQogICAgKGlmIHBv aW50ICgxKyBwb2ludCkpKSkKCihkZWZ1biBhYy1wcmVmaXgtdmFsaWQtZmlsZSAoKQogICJFeGlz dGVkIChvciB0byBiZSBleGlzdGVkKSBmaWxlIHByZWZpeC4iCiAgKGxldCogKChsaW5lLWJlZyAo bGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQogICAgICAgICAoZW5kIChwb2ludCkpCiAgICAgICAg IChzdGFydCAob3IgKGxldCAoKHBvaW50IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+Jz0gXHRc clxuXSIgbGluZS1iZWcgdCkpKQogICAgICAgICAgICAgICAgICAgICAgKGlmIHBvaW50ICgxKyBw b2ludCkpKQogICAgICAgICAgICAgICAgICAgIGxpbmUtYmVnKSkKICAgICAgICAgKGZpbGUgKGJ1 ZmZlci1zdWJzdHJpbmcgc3RhcnQgZW5kKSkpCiAgICAoaWYgKGFuZCBmaWxlIChvciAoc3RyaW5n LW1hdGNoICJeLyIgZmlsZSkKICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHNldHEgZmlsZSAo YW5kIChzdHJpbmctbWF0Y2ggIl5bXi9dKi8iIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDAgZmlsZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmlsZS1kaXJlY3RvcnktcCBmaWxlKSkpKQogICAgICAgIHN0YXJ0KSkp CgooZGVmdW4gYWMtcHJlZml4LWMtZG90ICgpCiAgIkMtbGlrZSBsYW5ndWFnZXMgZG90KC4pIHBy ZWZpeC4iCiAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIlxcLlxcKFxcKD86W2EtekEtWjAtOV1b X2EtekEtWjAtOV0qXFwpP1xcKVxcPSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkp KQoKKGRlZnVuIGFjLXByZWZpeC1jLWRvdC1yZWYgKCkKICAiQy1saWtlIGxhbmd1YWdlcyBkb3Qo LikgYW5kIHJlZmVyZW5jZSgtPikgcHJlZml4LiIKICAoaWYgKHJlLXNlYXJjaC1iYWNrd2FyZCAi XFwoPzpcXC5cXHwtPlxcKVxcKFxcKD86W2EtekEtWjAtOV1bX2EtekEtWjAtOV0qXFwpP1xcKVxc PSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkpKQoKKGRlZnVuIGFjLWRlZmluZS1w cmVmaXggKG5hbWUgcHJlZml4KQogICJEZWZpbmUgbmV3IHByZWZpeCBkZWZpbml0aW9uLgpZb3Ug Y2FuIG5vdCB1c2UgaXQgaW4gc291cmNlIGRlZmluaXRpb24gbGlrZSAocHJlZml4IC4gYE5BTUUn KS4iCiAgKHB1c2ggKGNvbnMgbmFtZSBwcmVmaXgpIGFjLXByZWZpeC1kZWZpbml0aW9ucykpCgoo ZGVmdW4gYWMtbWF0Y2gtc3Vic3RyaW5nIChwcmVmaXggY2FuZGlkYXRlcykKICAobG9vcCB3aXRo IHJlZ2V4cCA9IChyZWdleHAtcXVvdGUgcHJlZml4KQogICAgICAgIGZvciBjYW5kaWRhdGUgaW4g Y2FuZGlkYXRlcwogICAgICAgIGlmIChzdHJpbmctbWF0Y2ggcmVnZXhwIGNhbmRpZGF0ZSkKICAg ICAgICBjb2xsZWN0IGNhbmRpZGF0ZSkpCgooZGVmc3Vic3QgYWMtc291cmNlLWVudGl0eSAoc291 cmNlKQogIChpZiAoc3ltYm9scCBzb3VyY2UpCiAgICAgIChzeW1ib2wtdmFsdWUgc291cmNlKQog ICAgc291cmNlKSkKCihkZWZ1biBhYy1zb3VyY2UtYXZhaWxhYmxlLXAgKHNvdXJjZSkKICAoaWYg KGFuZCAoc3ltYm9scCBzb3VyY2UpCiAgICAgICAgICAgKGdldCBzb3VyY2UgJ2F2YWlsYWJsZSkp CiAgICAgIChlcSAoZ2V0IHNvdXJjZSAnYXZhaWxhYmxlKSB0KQogICAgKGxldCogKChzcmMgKGFj LXNvdXJjZS1lbnRpdHkgc291cmNlKSkKICAgICAgICAgICAoYXZhaWwtcGFpciAoYXNzcSAnYXZh aWxhYmxlIHNyYykpCiAgICAgICAgICAgKGF2YWlsLWNvbmQgKGNkciBhdmFpbC1wYWlyKSkKICAg ICAgICAgICAoYXZhaWxhYmxlIChhbmQgKGlmIGF2YWlsLXBhaXIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzeW1i b2xwIGF2YWlsLWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IGF2YWlsLWNvbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGlzdHAgYXZh aWwtY29uZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgYXZhaWwtY29u ZCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsb29wIGZvciBmZWF0dXJlIGluIChhc3NvYy1kZWZhdWx0ICdkZXBlbmRzIHNyYykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzIChyZXF1aXJlIGZlYXR1cmUg bmlsIHQpIHJldHVybiBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxs eSByZXR1cm4gdCkpKSkKICAgICAgKGlmIChzeW1ib2xwIHNvdXJjZSkKICAgICAgICAgIChwdXQg c291cmNlICdhdmFpbGFibGUgKGlmIGF2YWlsYWJsZSB0ICdubykpKQogICAgICBhdmFpbGFibGUp KSkKCihkZWZ1biBhYy1jb21waWxlLXNvdXJjZXMgKHNvdXJjZXMpCiAgIkNvbXBpbGVkIGBTT1VS Q0VTJyBpbnRvIGV4cGFuZGVkIHNvdXJjZXMgc3R5bGUuIgogIChsb29wIGZvciBzb3VyY2UgaW4g c291cmNlcwogICAgICAgIGlmIChhYy1zb3VyY2UtYXZhaWxhYmxlLXAgc291cmNlKQogICAgICAg IGRvCiAgICAgICAgKHNldHEgc291cmNlIChhYy1zb3VyY2UtZW50aXR5IHNvdXJjZSkpCiAgICAg ICAgKGZsZXQgKChhZGQtYXR0cmlidXRlIChuYW1lIHZhbHVlICZvcHRpb25hbCBhcHBlbmQpIChh ZGQtdG8tbGlzdCAnc291cmNlIChjb25zIG5hbWUgdmFsdWUpIGFwcGVuZCkpKQogICAgICAgICAg OzsgcHJlZml4CiAgICAgICAgICAobGV0KiAoKHByZWZpeCAoYXNzb2MgJ3ByZWZpeCBzb3VyY2Up KQogICAgICAgICAgICAgICAgIChyZWFsIChhc3NvYy1kZWZhdWx0IChjZHIgcHJlZml4KSBhYy1w cmVmaXgtZGVmaW5pdGlvbnMpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgIChyZWFs CiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCByZWFsKSkKICAgICAgICAgICAg ICgobnVsbCBwcmVmaXgpCiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCAnYWMt cHJlZml4LWRlZmF1bHQpKSkpCiAgICAgICAgICA7OyBtYXRjaAogICAgICAgICAgKGxldCAoKG1h dGNoIChhc3NxICdtYXRjaCBzb3VyY2UpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAg ICgoZXEgKGNkciBtYXRjaCkgJ3N1YnN0cmluZykKICAgICAgICAgICAgICAoc2V0Y2RyIG1hdGNo ICdhYy1tYXRjaC1zdWJzdHJpbmcpKSkpKQogICAgICAgIGFuZCBjb2xsZWN0IHNvdXJjZSkpCgoo ZGVmdW4gYWMtY29tcGlsZWQtc291cmNlcyAoKQogIChvciBhYy1jb21waWxlZC1zb3VyY2VzCiAg ICAgIChzZXRxIGFjLWNvbXBpbGVkLXNvdXJjZXMKICAgICAgICAgICAgKGFjLWNvbXBpbGUtc291 cmNlcyBhYy1zb3VyY2VzKSkpKQoKKGRlZnN1YnN0IGFjLW1lbnUtbGl2ZS1wICgpCiAgKHBvcHVw LWxpdmUtcCBhYy1tZW51KSkKCihkZWZ1biBhYy1tZW51LWNyZWF0ZSAocG9pbnQgd2lkdGggaGVp Z2h0KQogIChzZXRxIGFjLW1lbnUKICAgICAgICAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhl aWdodAogICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAgICAgICAgICAg ICA6ZmFjZSAnYWMtY2FuZGlkYXRlLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3Rp b24tZmFjZSAnYWMtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzeW1ib2wg dAogICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgdAogICAgICAgICAgICAgICAgICAg ICAgOm1hcmdpbi1sZWZ0IDEpKSkKCihkZWZ1biBhYy1tZW51LWRlbGV0ZSAoKQogICh3aGVuIGFj LW1lbnUKICAgIChwb3B1cC1kZWxldGUgYWMtbWVudSkKICAgIChzZXRxIGFjLW1lbnUpKSkKCihk ZWZzdWJzdCBhYy1pbmxpbmUtb3ZlcmxheSAoKQogIChudGggMCBhYy1pbmxpbmUpKQoKKGRlZnN1 YnN0IGFjLWlubGluZS1saXZlLXAgKCkKICAoYW5kIGFjLWlubGluZSAoYWMtaW5saW5lLW92ZXJs YXkpIHQpKQoKKGRlZnVuIGFjLWlubGluZS1zaG93IChwb2ludCBzdHJpbmcpCiAgKHVubGVzcyBh Yy1pbmxpbmUKICAgIChzZXRxIGFjLWlubGluZSAobGlzdCBuaWwpKSkKICAoc2F2ZS1leGN1cnNp b24KICAgIChsZXQgKChvdmVybGF5IChhYy1pbmxpbmUtb3ZlcmxheSkpCiAgICAgICAgICAod2lk dGggMCkKICAgICAgICAgIChzdHJpbmctd2lkdGggKHN0cmluZy13aWR0aCBzdHJpbmcpKQogICAg ICAgICAgKGxlbmd0aCAwKQogICAgICAgICAgKG9yaWdpbmFsLXN0cmluZyBzdHJpbmcpKQogICAg ICA7OyBDYWxjdWxhdGUgc3RyaW5nIHNwYWNlIHRvIHNob3cgY29tcGxldGlvbgogICAgICAoZ290 by1jaGFyIHBvaW50KQogICAgICAobGV0IChjKQogICAgICAgICh3aGlsZSAoYW5kIChub3QgKGVv bHApKQogICAgICAgICAgICAgICAgICAgICg8IHdpZHRoIHN0cmluZy13aWR0aCkKICAgICAgICAg ICAgICAgICAgICAoc2V0cSBjIChjaGFyLWFmdGVyKSkKICAgICAgICAgICAgICAgICAgICAobm90 IChlcSBjID9cdCkpKSAgIDsgc3BlY2lhbCBjYXNlIGZvciB0YWIKICAgICAgICAoaW5jZiB3aWR0 aCAoY2hhci13aWR0aCBjKSkKICAgICAgICAoaW5jZiBsZW5ndGgpCiAgICAgICAgKGZvcndhcmQt Y2hhcikpKQoKICAgICAgOzsgU2hvdyBjb21wbGV0aW9uCiAgICAgIChnb3RvLWNoYXIgcG9pbnQp CiAgICAgIChjb25kCiAgICAgICAoKD0gd2lkdGggMCkKICAgICAgICA7OyBFbmQtb2YtbGluZQog ICAgICAgIDs7IERvIG5vdGhpbmcKICAgICAgICApCiAgICAgICAoKDw9IHdpZHRoIHN0cmluZy13 aWR0aCkKICAgICAgICA7OyBObyBzcGFjZSB0byBzaG93CiAgICAgICAgOzsgRG8gbm90aGluZwog ICAgICAgICkKICAgICAgICgoPiB3aWR0aCBzdHJpbmctd2lkdGgpCiAgICAgICAgOzsgTmVlZCB0 byBmaWxsIHNwYWNlCiAgICAgICAgKHNldHEgc3RyaW5nIChjb25jYXQgc3RyaW5nIChtYWtlLXN0 cmluZyAoLSB3aWR0aCBzdHJpbmctd2lkdGgpID8gKSkpKSkKICAgICAgKHNldHEgc3RyaW5nIChw cm9wZXJ0aXplIHN0cmluZyAnZmFjZSAnYWMtY29tcGxldGlvbi1mYWNlKSkKICAgICAgKGlmIG92 ZXJsYXkKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkg cG9pbnQgKCsgcG9pbnQgbGVuZ3RoKSkKICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkg J2ludmlzaWJsZSBuaWwpKQogICAgICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3ZlcmxheSBwb2lu dCAoKyBwb2ludCBsZW5ndGgpKSkKICAgICAgICAoc2V0ZiAobnRoIDAgYWMtaW5saW5lKSAgb3Zl cmxheSkKICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgOTk5OSkKICAgICAg ICA7OyBIZWxwIHByZWZpeC1vdmVybGF5IGluIHNvbWUgY2FzZXMKICAgICAgICAob3ZlcmxheS1w dXQgb3ZlcmxheSAna2V5bWFwIGFjLWN1cnJlbnQtbWFwKSkKICAgICAgOzsgVE9ETyBubyB3aWR0 aCBidXQgY2hhcgogICAgICAoaWYgKGVxIGxlbmd0aCAwKQogICAgICAgICAgOzsgQ2FzZTogRW5k LW9mLWxpbmUKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkg MCAxICdjdXJzb3IgdCBzdHJpbmcpCiAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdh ZnRlci1zdHJpbmcgc3RyaW5nKSkKICAgICAgICAobGV0ICgoZGlzcGxheSAoc3Vic3RyaW5nIHN0 cmluZyAwIDEpKQogICAgICAgICAgICAgIChhZnRlci1zdHJpbmcgKHN1YnN0cmluZyBzdHJpbmcg MSkpKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgZGlzcGxheSkKICAg ICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgYWZ0ZXItc3RyaW5nKSkp CiAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdzdHJpbmcgb3JpZ2luYWwtc3RyaW5nKSkpKQoK KGRlZnVuIGFjLWlubGluZS1kZWxldGUgKCkKICAod2hlbiAoYWMtaW5saW5lLWxpdmUtcCkKICAg IChhYy1pbmxpbmUtaGlkZSkKICAgIChkZWxldGUtb3ZlcmxheSAoYWMtaW5saW5lLW92ZXJsYXkp KQogICAgKHNldHEgYWMtaW5saW5lIG5pbCkpKQoKKGRlZnVuIGFjLWlubGluZS1oaWRlICgpCiAg KHdoZW4gKGFjLWlubGluZS1saXZlLXApCiAgICAobGV0ICgob3ZlcmxheSAoYWMtaW5saW5lLW92 ZXJsYXkpKQogICAgICAgICAgKGJ1ZmZlci11bmRvLWxpc3QgdCkpCiAgICAgICh3aGVuIG92ZXJs YXkKICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1pbikp CiAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ludmlzaWJsZSB0KQogICAgICAgIChvdmVy bGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAgICAgICAob3ZlcmxheS1wdXQgb3Zlcmxh eSAnYWZ0ZXItc3RyaW5nIG5pbCkpKSkpCgooZGVmdW4gYWMtaW5saW5lLXVwZGF0ZSAoKQogIChp ZiAoYW5kIGFjLWNvbXBsZXRpbmcgYWMtcHJlZml4IChzdHJpbmdwIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgKGxldCAoKGNvbW1vbi1wYXJ0LWxlbmd0aCAobGVuZ3RoIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgICAgICAgKHByZWZpeC1sZW5ndGggKGxlbmd0aCBhYy1wcmVmaXgpKSkKICAgICAgICAo aWYgKD4gY29tbW9uLXBhcnQtbGVuZ3RoIHByZWZpeC1sZW5ndGgpCiAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkKICAgICAgICAgICAgICAoYWMtaW5saW5l LXNob3cgKHBvaW50KSAoc3Vic3RyaW5nIGFjLWNvbW1vbi1wYXJ0IHByZWZpeC1sZW5ndGgpKSkK ICAgICAgICAgIChhYy1pbmxpbmUtZGVsZXRlKSkpCiAgICAoYWMtaW5saW5lLWRlbGV0ZSkpKQoK KGRlZnVuIGFjLXB1dC1wcmVmaXgtb3ZlcmxheSAoKQogICh1bmxlc3MgYWMtcHJlZml4LW92ZXJs YXkKICAgIChsZXQgKG5ld2xpbmUpCiAgICAgIDs7IEluc2VydCBuZXdsaW5lIHRvIG1ha2Ugc3Vy ZSB0aGF0IGN1cnNvciBhbHdheXMgb24gdGhlIG92ZXJsYXkKICAgICAgKHdoZW4gKGFuZCAoZXEg YWMtcG9pbnQgKHBvaW50LW1heCkpCiAgICAgICAgICAgICAgICAgKGVxIGFjLXBvaW50IChwb2lu dCkpKQogICAgICAgIChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGluc2VydCAi XG4iKSkKICAgICAgICAoc2V0cSBuZXdsaW5lIHQpKQogICAgICAoc2V0cSBhYy1wcmVmaXgtb3Zl cmxheSAobWFrZS1vdmVybGF5IGFjLXBvaW50ICgxKyAocG9pbnQpKSBuaWwgdCB0KSkKICAgICAg KG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICdwcmlvcml0eSA5OTk5KQogICAgICAob3Zl cmxheS1wdXQgYWMtcHJlZml4LW92ZXJsYXkgJ2tleW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkK ICAgICAgKG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICduZXdsaW5lIG5ld2xpbmUpKSkp CgooZGVmdW4gYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5ICgpCiAgKHdoZW4gYWMtcHJlZml4LW92 ZXJsYXkKICAgICh3aGVuIChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAnbmV3bGluZSkK ICAgICAgOzsgUmVtb3ZlIGluc2VydGVkIG5ld2xpbmUKICAgICAgKHBvcHVwLXNhdmUtYnVmZmVy LXN0YXRlCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaWYgKGVxIChj aGFyLWJlZm9yZSkgP1xuKQogICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpCiAgICAoZGVs ZXRlLW92ZXJsYXkgYWMtcHJlZml4LW92ZXJsYXkpKSkKCihkZWZ1biBhYy1hY3RpdmF0ZS1jb21w bGV0aW5nLW1hcCAoKQogIChpZiAoYW5kIGFjLXNob3ctbWVudSBhYy11c2UtbWVudS1tYXApCiAg ICAgIChzZXQta2V5bWFwLXBhcmVudCBhYy1jdXJyZW50LW1hcCBhYy1tZW51LW1hcCkpCiAgKHdo ZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAgIChudWxsIG92 ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwKSkKICAgIChzZXRxIG92ZXJyaWRpbmctdGVybWlu YWwtbG9jYWwtbWFwIGFjLWN1cnJlbnQtbWFwKSkKICAod2hlbiBhYy1wcmVmaXgtb3ZlcmxheQog ICAgKHNldC1rZXltYXAtcGFyZW50IChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAna2V5 bWFwKSBhYy1jdXJyZW50LW1hcCkpKQoKKGRlZnVuIGFjLWRlYWN0aXZhdGUtY29tcGxldGluZy1t YXAgKCkKICAoc2V0LWtleW1hcC1wYXJlbnQgYWMtY3VycmVudC1tYXAgYWMtY29tcGxldGluZy1t YXApCiAgKHdoZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAg IChlcSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBhYy1jdXJyZW50LW1hcCkpCiAgICAo c2V0cSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBuaWwpKQogICh3aGVuIGFjLXByZWZp eC1vdmVybGF5CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgKG92ZXJsYXktZ2V0IGFjLXByZWZpeC1v dmVybGF5ICdrZXltYXApIG5pbCkpKQoKKGRlZnN1YnN0IGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSAo KQogIChpZiBhYy1tZW51CiAgICAgIChwb3B1cC1zZWxlY3RlZC1pdGVtIGFjLW1lbnUpKSkKCihk ZWZ1biBhYy1wcmVmaXggKHJlcXVpcmVzIGlnbm9yZS1saXN0KQogIChsb29wIHdpdGggY3VycmVu dCA9IChwb2ludCkKICAgICAgICB3aXRoIHBvaW50CiAgICAgICAgd2l0aCBwcmVmaXgtZGVmCiAg ICAgICAgd2l0aCBzb3VyY2VzCiAgICAgICAgZm9yIHNvdXJjZSBpbiAoYWMtY29tcGlsZWQtc291 cmNlcykKICAgICAgICBmb3IgcHJlZml4ID0gKGFzc29jLWRlZmF1bHQgJ3ByZWZpeCBzb3VyY2Up CiAgICAgICAgZm9yIHJlcSA9IChvciAoYXNzb2MtZGVmYXVsdCAncmVxdWlyZXMgc291cmNlKSBy ZXF1aXJlcyAxKQoKICAgICAgICBpZiAobnVsbCBwcmVmaXgtZGVmKQogICAgICAgIGRvCiAgICAg ICAgKHVubGVzcyAobWVtYmVyIHByZWZpeCBpZ25vcmUtbGlzdCkKICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAoc2V0cSBwb2ludCAoY29uZAogICAgICAgICAgICAgICAgICAg ICAgICAgKChzeW1ib2xwIHByZWZpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmdwIHByZWZpeCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQgKGNvbmNhdCBw cmVmaXggIlxcPSIpIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yICht YXRjaC1iZWdpbm5pbmcgMSkgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKChzdHJpbmdwIChjYXItc2FmZSBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIChsZXQgKChyZWdleHAgKG50aCAwIHByZWZpeCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVuZCAobnRoIDEgcHJlZml4KSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ3JvdXAgKG50aCAyIHByZWZpeCkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJkIChjb25jYXQgcmVnZXhwICJcXD0iKSBuaWwgdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIGVuZCAnbWF0Y2gt ZW5kICdtYXRjaC1iZWdpbm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChvciBncm91cCAwKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgKGV2YWwgcHJlZml4KSkpKQogICAgICAgICAgICAoaWYgKGFu ZCBwb2ludAogICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcnAgcmVxKQogICAgICAgICAgICAg ICAgICAgICAoPCAoLSBjdXJyZW50IHBvaW50KSByZXEpKQogICAgICAgICAgICAgICAgKHNldHEg cG9pbnQgbmlsKSkKICAgICAgICAgICAgKGlmIHBvaW50CiAgICAgICAgICAgICAgICAoc2V0cSBw cmVmaXgtZGVmIHByZWZpeCkpKSkKICAgICAgICAKICAgICAgICBpZiAoZXF1YWwgcHJlZml4IHBy ZWZpeC1kZWYpIGRvIChwdXNoIHNvdXJjZSBzb3VyY2VzKQoKICAgICAgICBmaW5hbGx5IHJldHVy bgogICAgICAgIChhbmQgcG9pbnQgKGxpc3QgcHJlZml4LWRlZiBwb2ludCAobnJldmVyc2Ugc291 cmNlcykpKSkpCgooZGVmdW4gYWMtaW5pdCAoKQogICJJbml0aWFsaXplIGN1cnJlbnQgc291cmNl cyB0byBzdGFydCBjb21wbGV0aW9uLiIKICAoc2V0cSBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbCkK ICAobG9vcCBmb3Igc291cmNlIGluIGFjLWN1cnJlbnQtc291cmNlcwogICAgICAgIGZvciBmdW5j dGlvbiA9IChhc3NvYy1kZWZhdWx0ICdpbml0IHNvdXJjZSkKICAgICAgICBpZiBmdW5jdGlvbiBk bwogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgKGNvbmQKICAgICAgICAgICAoKGZ1 bmN0aW9ucCBmdW5jdGlvbikKICAgICAgICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24pKQogICAgICAg ICAgICh0CiAgICAgICAgICAgIChldmFsIGZ1bmN0aW9uKSkpKSkpCgooZGVmdW4gYWMtY2FuZGlk YXRlcy0xIChzb3VyY2UpCiAgKGxldCogKChkby1jYWNoZSAoYXNzcSAnY2FjaGUgc291cmNlKSkK ICAgICAgICAgKGZ1bmN0aW9uIChhc3NvYy1kZWZhdWx0ICdjYW5kaWRhdGVzIHNvdXJjZSkpCiAg ICAgICAgIChhY3Rpb24gKGFzc29jLWRlZmF1bHQgJ2FjdGlvbiBzb3VyY2UpKQogICAgICAgICAo ZG9jdW1lbnQgKGFzc29jLWRlZmF1bHQgJ2RvY3VtZW50IHNvdXJjZSkpCiAgICAgICAgIChzeW1i b2wgKGFzc29jLWRlZmF1bHQgJ3N5bWJvbCBzb3VyY2UpKQogICAgICAgICAoYWMtbGltaXQgKG9y IChhc3NvYy1kZWZhdWx0ICdsaW1pdCBzb3VyY2UpIGFjLWxpbWl0KSkKICAgICAgICAgKGZhY2Ug KG9yIChhc3NvYy1kZWZhdWx0ICdmYWNlIHNvdXJjZSkgKGFzc29jLWRlZmF1bHQgJ2NhbmRpZGF0 ZS1mYWNlIHNvdXJjZSkpKQogICAgICAgICAoc2VsZWN0aW9uLWZhY2UgKGFzc29jLWRlZmF1bHQg J3NlbGVjdGlvbi1mYWNlIHNvdXJjZSkpCiAgICAgICAgIChjYWNoZSAoYW5kIGRvLWNhY2hlIChh c3NxIHNvdXJjZSBhYy1jYW5kaWRhdGVzLWNhY2hlKSkpCiAgICAgICAgIChjYW5kaWRhdGVzIChj ZHIgY2FjaGUpKSkKICAgICh1bmxlc3MgY2FjaGUKICAgICAgKHNldHEgY2FuZGlkYXRlcyAoc2F2 ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKChmdW5jdGlvbnAgZnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGZ1bmN0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBmdW5jdGlvbikpKSkpCiAgICAgIDs7IENvbnZl cnQgKG5hbWUgdmFsdWUpIGZvcm1hdCBjYW5kaWRhdGVzIGludG8gbmFtZSB3aXRoIHRleHQgcHJv cGVydGllcy4KICAgICAgKHNldHEgY2FuZGlkYXRlcyAobWFwY2FyIChsYW1iZGEgKGNhbmRpZGF0 ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChjb25zcCBjYW5kaWRhdGUp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAoY2FyIGNh bmRpZGF0ZSkgJ3ZhbHVlIChjZHIgY2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fu ZGlkYXRlcykpCiAgICAgICh3aGVuIGRvLWNhY2hlCiAgICAgICAgKHB1c2ggKGNvbnMgc291cmNl IGNhbmRpZGF0ZXMpIGFjLWNhbmRpZGF0ZXMtY2FjaGUpKSkKICAgIChzZXRxIGNhbmRpZGF0ZXMg KGZ1bmNhbGwgKG9yIChhc3NvYy1kZWZhdWx0ICdtYXRjaCBzb3VyY2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYy1tYXRjaC1mdW5jdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgOzsgUmVtb3ZlIGV4dHJhIGl0 ZW1zIHJlZ2FyZGluZyB0byBhYy1saW1pdAogICAgKGlmIChhbmQgKGludGVnZXJwIGFjLWxpbWl0 KSAoPiBhYy1saW1pdCAxKSAoPiAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAg ICAoc2V0Y2RyIChudGhjZHIgKDEtIGFjLWxpbWl0KSBjYW5kaWRhdGVzKSBuaWwpKQogICAgOzsg UHV0IGNhbmRpZGF0ZSBwcm9wZXJ0aWVzCiAgICAoc2V0cSBjYW5kaWRhdGVzIChtYXBjYXIgKGxh bWJkYSAoY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcHVwLWl0 ZW0tcHJvcGVydGl6ZSBjYW5kaWRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbiBhY3Rpb24KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50IGRv Y3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwb3B1cC1mYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NlbGVjdGlvbi1mYWNlIHNlbGVjdGlvbi1mYWNlKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzKSkKICAgIGNhbmRpZGF0ZXMpKQoKKGRl ZnVuIGFjLWNhbmRpZGF0ZXMgKCkKICAiUHJvZHVjZSBjYW5kaWRhdGVzIGZvciBjdXJyZW50IHNv dXJjZXMuIgogIChsb29wIHdpdGggY29tcGxldGlvbi1pZ25vcmUtY2FzZSA9IChvciAoZXEgYWMt aWdub3JlLWNhc2UgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFuZCAoZXEgYWMtaWdub3JlLWNhc2UgJ3NtYXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpIChub3Qg KHN0cmluZy1tYXRjaCAiW1s6dXBwZXI6XV0iIGFjLXByZWZpeCkpKSkpCiAgICAgICAgd2l0aCBj YXNlLWZvbGQtc2VhcmNoID0gY29tcGxldGlvbi1pZ25vcmUtY2FzZQogICAgICAgIHdpdGggcHJl Zml4LWxlbiA9IChsZW5ndGggYWMtcHJlZml4KQogICAgICAgIGZvciBzb3VyY2UgaW4gYWMtY3Vy cmVudC1zb3VyY2VzCiAgICAgICAgYXBwZW5kIChhYy1jYW5kaWRhdGVzLTEgc291cmNlKSBpbnRv IGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybgogICAgICAgIChwcm9nbgogICAgICAg ICAgKGRlbGV0ZS1kdXBzIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaWYgKGFuZCBhYy11c2UtY29t cGhpc3QgYWMtY29tcGhpc3QpCiAgICAgICAgICAgICAgKGlmIGFjLXNob3ctbWVudQogICAgICAg ICAgICAgICAgICAobGV0KiAoKHBhaXIgKGFjLWNvbXBoaXN0LXNvcnQgYWMtY29tcGhpc3QgY2Fu ZGlkYXRlcyBwcmVmaXgtbGVuIGFjLWNvbXBoaXN0LXRocmVzaG9sZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAobiAoY2FyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3Vs dCAoY2RyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGlmICg+IG4gMCkg KG50aGNkciAoMS0gbikgcmVzdWx0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChj ZHIgY29ucykpKQogICAgICAgICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBuaWwp KQogICAgICAgICAgICAgICAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0ICh0cnktY29tcGxldGlv biBhYy1wcmVmaXggcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1j b21tb24tcGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAg ICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBjZHIpKQogICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkKICAgICAgICAgICAgICAgIChzZXRxIGNhbmRpZGF0ZXMgKGFjLWNvbXBoaXN0 LXNvcnQgYWMtY29tcGhpc3QgY2FuZGlkYXRlcyBwcmVmaXgtbGVuKSkKICAgICAgICAgICAgICAg IChzZXRxIGFjLWNvbW1vbi1wYXJ0IChpZiBjYW5kaWRhdGVzIChwb3B1cC14LXRvLXN0cmluZyAo Y2FyIGNhbmRpZGF0ZXMpKSkpCiAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1jb21tb24t cGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAgICAgICAg ICAgY2FuZGlkYXRlcykKICAgICAgICAgICAgKHNldHEgYWMtY29tbW9uLXBhcnQgKHRyeS1jb21w bGV0aW9uIGFjLXByZWZpeCBjYW5kaWRhdGVzKSkKICAgICAgICAgICAgKHNldHEgYWMtd2hvbGUt Y29tbW9uLXBhcnQgYWMtY29tbW9uLXBhcnQpCiAgICAgICAgICAgIGNhbmRpZGF0ZXMpKSkpCgoo ZGVmdW4gYWMtdXBkYXRlLWNhbmRpZGF0ZXMgKGN1cnNvciBzY3JvbGwtdG9wKQogICJVcGRhdGUg Y2FuZGlkYXRlcyBvZiBtZW51IHRvIGBhYy1jYW5kaWRhdGVzJyBhbmQgcmVkcmF3IGl0LiIKICAo c2V0ZiAocG9wdXAtY3Vyc29yIGFjLW1lbnUpIGN1cnNvcgogICAgICAgIChwb3B1cC1zY3JvbGwt dG9wIGFjLW1lbnUpIHNjcm9sbC10b3ApCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKD0gKGxlbmd0 aCBhYy1jYW5kaWRhdGVzKSAxKSkKICAoaWYgYWMtY2FuZGlkYXRlcwogICAgICAocHJvZ24KICAg ICAgICAoc2V0cSBhYy1jb21wbGV0aW5nIHQpCiAgICAgICAgKGFjLWFjdGl2YXRlLWNvbXBsZXRp bmctbWFwKSkKICAgIChzZXRxIGFjLWNvbXBsZXRpbmcgbmlsKQogICAgKGFjLWRlYWN0aXZhdGUt Y29tcGxldGluZy1tYXApKQogIChhYy1pbmxpbmUtdXBkYXRlKQogIChwb3B1cC1zZXQtbGlzdCBh Yy1tZW51IGFjLWNhbmRpZGF0ZXMpCiAgKGlmIChhbmQgKG5vdCBhYy1mdXp6eS1lbmFibGUpCiAg ICAgICAgICAgKDw9IChsZW5ndGggYWMtY2FuZGlkYXRlcykgMSkpCiAgICAgIChwb3B1cC1oaWRl IGFjLW1lbnUpCiAgICAoaWYgYWMtc2hvdy1tZW51CiAgICAgICAgKHBvcHVwLWRyYXcgYWMtbWVu dSkpKSkKCihkZWZ1biBhYy1yZXBvc2l0aW9uICgpCiAgIkZvcmNlIHRvIHJlZHJhdyBjYW5kaWRh dGUgbWVudSB3aXRoIGN1cnJlbnQgYGFjLWNhbmRpZGF0ZXMnLiIKICAobGV0ICgoY3Vyc29yIChw b3B1cC1jdXJzb3IgYWMtbWVudSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVwLXNjcm9sbC10 b3AgYWMtbWVudSkpCiAgICAgICAgKGhlaWdodCAocG9wdXAtaGVpZ2h0IGFjLW1lbnUpKSkKICAg IChhYy1tZW51LWRlbGV0ZSkKICAgIChhYy1tZW51LWNyZWF0ZSBhYy1wb2ludCAocG9wdXAtcHJl ZmVycmVkLXdpZHRoIGFjLWNhbmRpZGF0ZXMpIGhlaWdodCkKICAgIChhYy11cGRhdGUtY2FuZGlk YXRlcyBjdXJzb3Igc2Nyb2xsLXRvcCkpKQoKKGRlZnVuIGFjLWNsZWFudXAgKCkKICAiQ2xlYW51 cCBhdXRvIGNvbXBsZXRpb24uIgogIChpZiBhYy1jdXJzb3ItY29sb3IKICAgICAgKHNldC1jdXJz b3ItY29sb3IgYWMtY3Vyc29yLWNvbG9yKSkKICAod2hlbiAoYW5kIGFjLXVzZS1jb21waGlzdCBh Yy1jb21waGlzdCkKICAgICh3aGVuIChhbmQgKG51bGwgYWMtc2VsZWN0ZWQtY2FuZGlkYXRlKQog ICAgICAgICAgICAgICAobWVtYmVyIGFjLXByZWZpeCBhYy1jYW5kaWRhdGVzKSkKICAgICAgOzsg QXNzdW1lIGNhbmRpZGF0ZSBpcyBzZWxlY3RlZCBieSBqdXN0IHR5cGluZwogICAgICAoc2V0cSBh Yy1zZWxlY3RlZC1jYW5kaWRhdGUgYWMtcHJlZml4KQogICAgICAoc2V0cSBhYy1sYXN0LXBvaW50 IGFjLXBvaW50KSkKICAgICh3aGVuIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZQogICAgICAoYWMtY29t cGhpc3QtYWRkIGFjLWNvbXBoaXN0CiAgICAgICAgICAgICAgICAgICAgICAgYWMtc2VsZWN0ZWQt Y2FuZGlkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFjLWxhc3QtcG9pbnQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gYWMtbGFzdC1wb2ludCBhYy1wb2ludCkKICAgICAgICAg ICAgICAgICAgICAgICAgIChsZW5ndGggYWMtcHJlZml4KSkpKSkKICAoYWMtZGVhY3RpdmF0ZS1j b21wbGV0aW5nLW1hcCkKICAoYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5KQogIChhYy1yZW1vdmUt cXVpY2staGVscCkKICAoYWMtaW5saW5lLWRlbGV0ZSkKICAoYWMtbWVudS1kZWxldGUpCiAgKGFj LWNhbmNlbC10aW1lcikKICAoYWMtY2FuY2VsLXNob3ctbWVudS10aW1lcikKICAoYWMtY2FuY2Vs LXF1aWNrLWhlbHAtdGltZXIpCiAgKHNldHEgYWMtY3Vyc29yLWNvbG9yIG5pbAogICAgICAgIGFj LWlubGluZSBuaWwKICAgICAgICBhYy1zaG93LW1lbnUgbmlsCiAgICAgICAgYWMtbWVudSBuaWwK ICAgICAgICBhYy1jb21wbGV0aW5nIG5pbAogICAgICAgIGFjLXBvaW50IG5pbAogICAgICAgIGFj LWxhc3QtcG9pbnQgbmlsCiAgICAgICAgYWMtcHJlZml4IG5pbAogICAgICAgIGFjLXByZWZpeC1v dmVybGF5IG5pbAogICAgICAgIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwKICAgICAgICBhYy1j b21tb24tcGFydCBuaWwKICAgICAgICBhYy13aG9sZS1jb21tb24tcGFydCBuaWwKICAgICAgICBh Yy10cmlnZ2VyZWQgbmlsCiAgICAgICAgYWMtbGltaXQgbmlsCiAgICAgICAgYWMtY2FuZGlkYXRl cyBuaWwKICAgICAgICBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbAogICAgICAgIGFjLWZ1enp5LWVu YWJsZSBuaWwKICAgICAgICBhYy1kd2ltLWVuYWJsZSBuaWwKICAgICAgICBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICAgICAgIGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAgICAgICBhYy1jdXJy ZW50LXByZWZpeC1kZWYgbmlsCiAgICAgICAgYWMtaWdub3JpbmctcHJlZml4LWRlZiBuaWwpKQoK KGRlZnN1YnN0IGFjLWFib3J0ICgpCiAgIkFib3J0IGNvbXBsZXRpb24uIgogIChhYy1jbGVhbnVw KSkKCihkZWZ1biBhYy1leHBhbmQtc3RyaW5nIChzdHJpbmcgJm9wdGlvbmFsIHJlbW92ZS11bmRv LWJvdW5kYXJ5KQogICJFeHBhbmQgYFNUUklORycgaW50byB0aGUgYnVmZmVyIGFuZCB1cGRhdGUg YGFjLXByZWZpeCcgdG8gYFNUUklORycuClRoaXMgZnVuY3Rpb24gcmVjb3JkcyBkZWxldGlvbiBh bmQgaW5zZXJ0aW9uIHNlcXVlbmNlcyBieSBgdW5kby1ib3VuZGFyeScuCklmIGByZW1vdmUtdW5k by1ib3VuZGFyeScgaXMgbm9uLW5pbCwgdGhpcyBmdW5jdGlvbiBhbHNvIHJlbW92ZXMgYHVuZG8t Ym91bmRhcnknCnRoYXQgaGF2ZSBiZWVuIG1hZGUgYmVmb3JlIGluIHRoaXMgZnVuY3Rpb24uIgog ICh3aGVuIChub3QgKGVxdWFsIHN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyBhYy1wb2ludCAocG9p bnQpKSkpCiAgICAodW5kby1ib3VuZGFyeSkKICAgIDs7IFdlIGNhbid0IHVzZSBwcmltaXRpdmUt dW5kbyBzaW5jZSBpdCB1bmRvZXMgYnkKICAgIDs7IGdyb3VwcywgZGl2aWRlZCBieSBib3VuZGFy aWVzLgogICAgOzsgV2UgZG9uJ3Qgd2FudCBib3VuZGFyeSBiZXR3ZWVuIGRlbGV0aW9uIGFuZCBp bnNlcnRpb24uCiAgICA7OyBTbyBkbyBpdCBtYW51YWxseS4KICAgIDs7IERlbGV0ZSByZWdpb24g c2lsZW50bHkgZm9yIHVuZG86CiAgICAoaWYgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAgICAo cHJvZ24KICAgICAgICAgIChsZXQgKGJ1ZmZlci11bmRvLWxpc3QpCiAgICAgICAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChwb2ludCkp KSkKICAgICAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxpc3QKICAgICAgICAgICAgICAgIChudGhj ZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChw b2ludCkpKQogICAgKGluc2VydCBzdHJpbmcpCiAgICA7OyBTb21ldGltZXMsIHBvc3NpYmxlIHdo ZW4gb21uaS1jb21wbGV0aW9uIHVzZWQsIChpbnNlcnQpIGFkZGVkCiAgICA7OyB0byBidWZmZXIt dW5kby1saXN0IHN0cmFuZ2UgcmVjb3JkIGFib3V0IHBvc2l0aW9uIGNoYW5nZXMuCiAgICA7OyBE ZWxldGUgaXQgaGVyZToKICAgICh3aGVuIChhbmQgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAg ICAgICAgICAgKGludGVnZXJwIChjYWRyIGJ1ZmZlci11bmRvLWxpc3QpKSkKICAgICAgKHNldGNk ciBidWZmZXItdW5kby1saXN0IChudGhjZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAodW5k by1ib3VuZGFyeSkKICAgIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBzdHJpbmcpCiAgICAo c2V0cSBhYy1wcmVmaXggc3RyaW5nKSkpCgooZGVmdW4gYWMtc2V0LXRyaWdnZXIta2V5IChrZXkp CiAgIlNldCBgYWMtdHJpZ2dlci1rZXknIHRvIGBLRVknLiBJdCBpcyByZWNvbW1lbWRlZCB0byB1 c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNldHEnLiIKICA7OyBSZW1vdmUg b2xkIG1hcHBpbmcKICAod2hlbiBhYy10cmlnZ2VyLWtleQogICAgKGRlZmluZS1rZXkgYWMtbW9k ZS1tYXAgKHJlYWQta2JkLW1hY3JvIGFjLXRyaWdnZXIta2V5KSBuaWwpKQoKICA7OyBNYWtlIG5l dyBtYXBwaW5nCiAgKHNldHEgYWMtdHJpZ2dlci1rZXkga2V5KQogICh3aGVuIGtleQogICAgKGRl ZmluZS1rZXkgYWMtbW9kZS1tYXAgKHJlYWQta2JkLW1hY3JvIGtleSkgJ2FjLXRyaWdnZXIta2V5 LWNvbW1hbmQpKSkKCihkZWZ1biBhYy1zZXQtdGltZXIgKCkKICAodW5sZXNzIGFjLXRpbWVyCiAg ICAoc2V0cSBhYy10aW1lciAocnVuLXdpdGgtaWRsZS10aW1lciBhYy1kZWxheSBhYy1kZWxheSAn YWMtdXBkYXRlLWdyZWVkeSkpKSkKCihkZWZ1biBhYy1jYW5jZWwtdGltZXIgKCkKICAod2hlbiAo dGltZXJwIGFjLXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy10aW1lcikKICAgIChzZXRxIGFj LXRpbWVyIG5pbCkpKQoKKGRlZnVuIGFjLXVwZGF0ZSAoJm9wdGlvbmFsIGZvcmNlKQogICh3aGVu IChhbmQgYXV0by1jb21wbGV0ZS1tb2RlCiAgICAgICAgICAgICBhYy1wcmVmaXgKICAgICAgICAg ICAgIChvciBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICBmb3JjZSkKICAgICAgICAgICAg IChub3QgaXNlYXJjaC1tb2RlKSkKICAgIChhYy1wdXQtcHJlZml4LW92ZXJsYXkpCiAgICAoc2V0 cSBhYy1jYW5kaWRhdGVzIChhYy1jYW5kaWRhdGVzKSkKICAgIChsZXQgKChwcmVmZXJyZWQtd2lk dGggKHBvcHVwLXByZWZlcnJlZC13aWR0aCBhYy1jYW5kaWRhdGVzKSkpCiAgICAgIDs7IFJlcG9z aXRpb24gaWYgbmVlZGVkCiAgICAgICh3aGVuIChvciAobnVsbCBhYy1tZW51KQogICAgICAgICAg ICAgICAgKD49IChwb3B1cC13aWR0aCBhYy1tZW51KSBwcmVmZXJyZWQtd2lkdGgpCiAgICAgICAg ICAgICAgICAoPD0gKHBvcHVwLXdpZHRoIGFjLW1lbnUpICgtIHByZWZlcnJlZC13aWR0aCAxMCkp CiAgICAgICAgICAgICAgICAoYW5kICg+IChwb3B1cC1kaXJlY3Rpb24gYWMtbWVudSkgMCkKICAg ICAgICAgICAgICAgICAgICAgKGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXApKSkKICAgICAgICAo YWMtaW5saW5lLWhpZGUpIDsgSGlkZSBvdmVybGF5IHRvIGNhbGN1bGF0ZSBjb3JyZWN0IGNvbHVt bgogICAgICAgIChhYy1tZW51LWRlbGV0ZSkKICAgICAgICAoYWMtbWVudS1jcmVhdGUgYWMtcG9p bnQgcHJlZmVycmVkLXdpZHRoIGFjLW1lbnUtaGVpZ2h0KSkpCiAgICAoYWMtdXBkYXRlLWNhbmRp ZGF0ZXMgMCAwKQogICAgdCkpCgooZGVmdW4gYWMtdXBkYXRlLWdyZWVkeSAoJm9wdGlvbmFsIGZv cmNlKQogIChsZXQgKHJlc3VsdCkKICAgICh3aGlsZSAod2hlbiAoYW5kIChzZXRxIHJlc3VsdCAo YWMtdXBkYXRlIGZvcmNlKSkKICAgICAgICAgICAgICAgICAgICAgIChudWxsIGFjLWNhbmRpZGF0 ZXMpKQogICAgICAgICAgICAgKGFkZC10by1saXN0ICdhYy1pZ25vcmluZy1wcmVmaXgtZGVmIGFj LWN1cnJlbnQtcHJlZml4LWRlZikKICAgICAgICAgICAgIChhYy1zdGFydCA6Zm9yY2UtaW5pdCB0 KQogICAgICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmKSkKICAgIHJlc3VsdCkpCgooZGVm dW4gYWMtc2V0LXNob3ctbWVudS10aW1lciAoKQogICh3aGVuIChhbmQgKG9yIChpbnRlZ2VycCBh Yy1hdXRvLXNob3ctbWVudSkgKGZsb2F0cCBhYy1hdXRvLXNob3ctbWVudSkpCiAgICAgICAgICAg ICAobnVsbCBhYy1zaG93LW1lbnUtdGltZXIpKQogICAgKHNldHEgYWMtc2hvdy1tZW51LXRpbWVy IChydW4td2l0aC1pZGxlLXRpbWVyIGFjLWF1dG8tc2hvdy1tZW51IGFjLWF1dG8tc2hvdy1tZW51 ICdhYy1zaG93LW1lbnUpKSkpCgooZGVmdW4gYWMtY2FuY2VsLXNob3ctbWVudS10aW1lciAoKQog ICh3aGVuICh0aW1lcnAgYWMtc2hvdy1tZW51LXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy1z aG93LW1lbnUtdGltZXIpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUtdGltZXIgbmlsKSkpCgooZGVm dW4gYWMtc2hvdy1tZW51ICgpCiAgKHdoZW4gKG5vdCAoZXEgYWMtc2hvdy1tZW51IHQpKQogICAg KHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAoYWMtaW5saW5lLWhpZGUpCiAgICAoYWMtcmVtb3Zl LXF1aWNrLWhlbHApCiAgICAoYWMtdXBkYXRlIHQpKSkKCihkZWZ1biBhYy1oZWxwICgmb3B0aW9u YWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLW1lbnUKICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBhYy1tZW51IHBlcnNpc3QpKSkKCihkZWZ1biBhYy1wZXJzaXN0LWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGFjLWhlbHAgdCkpCgooZGVmdW4gYWMtbGFzdC1oZWxw ICgmb3B0aW9uYWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLWxhc3Qt Y29tcGxldGlvbgogICAgKHBvcHVwLWl0ZW0tc2hvdy1oZWxwIChjZHIgYWMtbGFzdC1jb21wbGV0 aW9uKSBwZXJzaXN0KSkpCgooZGVmdW4gYWMtbGFzdC1wZXJzaXN0LWhlbHAgKCkKICAoaW50ZXJh Y3RpdmUpCiAgKGFjLWxhc3QtaGVscCB0KSkKCihkZWZ1biBhYy1zZXQtcXVpY2staGVscC10aW1l ciAoKQogICh3aGVuIChhbmQgYWMtdXNlLXF1aWNrLWhlbHAKICAgICAgICAgICAgIChudWxsIGFj LXF1aWNrLWhlbHAtdGltZXIpKQogICAgKHNldHEgYWMtcXVpY2staGVscC10aW1lciAocnVuLXdp dGgtaWRsZS10aW1lciBhYy1xdWljay1oZWxwLWRlbGF5IGFjLXF1aWNrLWhlbHAtZGVsYXkgJ2Fj LXF1aWNrLWhlbHApKSkpCgooZGVmdW4gYWMtY2FuY2VsLXF1aWNrLWhlbHAtdGltZXIgKCkKICAo d2hlbiAodGltZXJwIGFjLXF1aWNrLWhlbHAtdGltZXIpCiAgICAoY2FuY2VsLXRpbWVyIGFjLXF1 aWNrLWhlbHAtdGltZXIpCiAgICAoc2V0cSBhYy1xdWljay1oZWxwLXRpbWVyIG5pbCkpKQoKKGRl ZnVuIGFjLXBvcy10aXAtc2hvdy1xdWljay1oZWxwIChtZW51ICZvcHRpb25hbCBpdGVtICZyZXN0 IGFyZ3MpCiAgKGxldCogKChwb2ludCAocGxpc3QtZ2V0IGFyZ3MgOnBvaW50KSkKICAgICAgICAg KGFyb3VuZCBuaWwpCiAgICAgICAgIChwYXJlbnQtb2Zmc2V0IChwb3B1cC1vZmZzZXQgbWVudSkp CiAgICAgICAgIChkb2MgKHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiBtZW51IGl0ZW0pKSkKICAg ICh3aGVuIChzdHJpbmdwIGRvYykKICAgICAgKGlmIChwb3B1cC1oaWRkZW4tcCBtZW51KQogICAg ICAgICAgKHNldHEgYXJvdW5kIHQpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKHdp dGgtbm8td2FybmluZ3MKICAgICAgICAocG9zLXRpcC1zaG93IGRvYwogICAgICAgICAgICAgICAg ICAgICAgJ3BvcHVwLXRpcC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAob3IgcG9pbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb3B1cC1jaGlsZC1wb2ludCBtZW51IHBhcmVudC1vZmZzZXQpKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICBuaWwgMAogICAg ICAgICAgICAgICAgICAgICAgcG9wdXAtdGlwLW1heC13aWR0aAogICAgICAgICAgICAgICAgICAg ICAgbmlsIG5pbAogICAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90IGFyb3VuZCkgMCkpCiAg ICAgICAgKHVubGVzcyAocGxpc3QtZ2V0IGFyZ3MgOm5vd2FpdCkKICAgICAgICAgIChjbGVhci10 aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgICAg IChwdXNoIChyZWFkLWV2ZW50IChwbGlzdC1nZXQgYXJncyA6cHJvbXB0KSkgdW5yZWFkLWNvbW1h bmQtZXZlbnRzKQogICAgICAgICAgICAocG9zLXRpcC1oaWRlKSkKICAgICAgICAgIHQpKSkpKQoK KGRlZnVuIGFjLXF1aWNrLWhlbHAtdXNlLXBvcy10aXAtcCAoKQogIChhbmQgYWMtcXVpY2staGVs cC1wcmVmZXItcG9zLXRpcAogICAgICAgd2luZG93LXN5c3RlbQogICAgICAgKGZlYXR1cmVwICdw b3MtdGlwKSkpCgooZGVmdW4gYWMtcXVpY2staGVscCAoJm9wdGlvbmFsIGZvcmNlKQogIChpbnRl cmFjdGl2ZSkKICAod2hlbiAoYW5kIChvciBmb3JjZSAobnVsbCB0aGlzLWNvbW1hbmQpKQogICAg ICAgICAgICAgKGFjLW1lbnUtbGl2ZS1wKQogICAgICAgICAgICAgKG51bGwgYWMtcXVpY2staGVs cCkpCiAgICAgIChzZXRxIGFjLXF1aWNrLWhlbHAKICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIChh Yy1xdWljay1oZWxwLXVzZS1wb3MtdGlwLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAnYWMt cG9zLXRpcC1zaG93LXF1aWNrLWhlbHAKICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHApCiAgICAgICAgICAgICAgICAgICAgIGFjLW1lbnUgbmlsCiAgICAg ICAgICAgICAgICAgICAgIDpwb2ludCBhYy1wb2ludAogICAgICAgICAgICAgICAgICAgICA6aGVp Z2h0IGFjLXF1aWNrLWhlbHAtaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgIDpub3dhaXQgdCkp KSkKCihkZWZ1biBhYy1yZW1vdmUtcXVpY2staGVscCAoKQogICh3aGVuIChhYy1xdWljay1oZWxw LXVzZS1wb3MtdGlwLXApCiAgICAod2l0aC1uby13YXJuaW5ncwogICAgICAocG9zLXRpcC1oaWRl KSkpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAgKHBvcHVwLWRlbGV0ZSBhYy1xdWljay1oZWxw KQogICAgKHNldHEgYWMtcXVpY2staGVscCBuaWwpKSkKCihkZWZ1biBhYy1sYXN0LXF1aWNrLWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFuZCBhYy1sYXN0LWNvbXBsZXRpb24KICAg ICAgICAgICAgIChlcSAobWFya2VyLWJ1ZmZlciAoY2FyIGFjLWxhc3QtY29tcGxldGlvbikpCiAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAobGV0ICgoZG9jIChwb3B1cC1p dGVtLWRvY3VtZW50YXRpb24gKGNkciBhYy1sYXN0LWNvbXBsZXRpb24pKSkKICAgICAgICAgIChw b2ludCAobWFya2VyLXBvc2l0aW9uIChjYXIgYWMtbGFzdC1jb21wbGV0aW9uKSkpKQogICAgICAo d2hlbiAoc3RyaW5ncCBkb2MpCiAgICAgICAgKGlmIChhYy1xdWljay1oZWxwLXVzZS1wb3MtdGlw LXApCiAgICAgICAgICAgICh3aXRoLW5vLXdhcm5pbmdzIChwb3MtdGlwLXNob3cgZG9jIG5pbCBw b2ludCBuaWwgMCkpCiAgICAgICAgICAocG9wdXAtdGlwIGRvYwogICAgICAgICAgICAgICAgICAg ICA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAg ICAgICAgICAgIDpzY3JvbGwtYmFyIHQKICAgICAgICAgICAgICAgICAgICAgOm1hcmdpbiB0KSkp KSkpCgooZGVmbWFjcm8gYWMtZGVmaW5lLXF1aWNrLWhlbHAtY29tbWFuZCAobmFtZSBhcmdsaXN0 ICZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKHByb2duCiAgICAgKGRlZnVu ICxuYW1lICxhcmdsaXN0ICxAYm9keSkKICAgICAocHV0ICcsbmFtZSAnYWMtcXVpY2staGVscC1j b21tYW5kIHQpKSkKCihhYy1kZWZpbmUtcXVpY2staGVscC1jb21tYW5kIGFjLXF1aWNrLWhlbHAt c2Nyb2xsLWRvd24gKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAg KHBvcHVwLXNjcm9sbC1kb3duIGFjLXF1aWNrLWhlbHApKSkKCihhYy1kZWZpbmUtcXVpY2staGVs cC1jb21tYW5kIGFjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwICgpCiAgKGludGVyYWN0aXZlKQogICh3 aGVuIGFjLXF1aWNrLWhlbHAKICAgIChwb3B1cC1zY3JvbGwtdXAgYWMtcXVpY2staGVscCkpKQoK DAoKOzs7OyBBdXRvIGNvbXBsZXRpb24gaXNlYXJjaAoKKGRlZnVuIGFjLWlzZWFyY2gtY2FsbGJh Y2sgKGxpc3QpCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKGVxIChsZW5ndGggbGlzdCkgMSkpKQoK KGRlZnVuIGFjLWlzZWFyY2ggKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2 ZS1wKQogICAgKGFjLWNhbmNlbC1zaG93LW1lbnUtdGltZXIpCiAgICAoYWMtY2FuY2VsLXF1aWNr LWhlbHAtdGltZXIpCiAgICAoYWMtc2hvdy1tZW51KQogICAgKHBvcHVwLWlzZWFyY2ggYWMtbWVu dSA6Y2FsbGJhY2sgJ2FjLWlzZWFyY2gtY2FsbGJhY2spKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0 aW9uIGNvbW1hbmRzCgooZGVmdW4gYXV0by1jb21wbGV0ZSAoJm9wdGlvbmFsIHNvdXJjZXMpCiAg IlN0YXJ0IGF1dG8tY29tcGxldGlvbiBhdCBjdXJyZW50IHBvaW50LiIKICAoaW50ZXJhY3RpdmUp CiAgKGxldCAoKG1lbnUtbGl2ZSAoYWMtbWVudS1saXZlLXApKQogICAgICAgIChpbmxpbmUtbGl2 ZSAoYWMtaW5saW5lLWxpdmUtcCkpKQogICAgKGFjLWFib3J0KQogICAgKGxldCAoKGFjLXNvdXJj ZXMgKG9yIHNvdXJjZXMgYWMtc291cmNlcykpKQogICAgICAoaWYgKG9yIGFjLXNob3ctbWVudS1p bW1lZGlhdGVseS1vbi1hdXRvLWNvbXBsZXRlCiAgICAgICAgICAgICAgaW5saW5lLWxpdmUpCiAg ICAgICAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkpCiAgICAgIChhYy1zdGFydCkpCiAgICAod2hl biAoYWMtdXBkYXRlLWdyZWVkeSB0KQogICAgICA7OyBUT0RPIE5vdCB0byBjYXVzZSBpbmxpbmUg Y29tcGxldGlvbiB0byBiZSBkaXNydXB0ZWQuCiAgICAgIChpZiAoYWMtaW5saW5lLWxpdmUtcCkK ICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkpCiAgICAgIDs7IE5vdCB0byBleHBhbmQgd2hlbiBp dCBpcyBmaXJzdCB0aW1lIHRvIGNvbXBsZXRlCiAgICAgICh3aGVuIChhbmQgKG9yIChhbmQgKG5v dCBhYy1leHBhbmQtb24tYXV0by1jb21wbGV0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAo PiAobGVuZ3RoIGFjLWNhbmRpZGF0ZXMpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBtZW51LWxpdmUpKQogICAgICAgICAgICAgICAgICAgICAobm90IChsZXQgKChhYy1jb21tb24t cGFydCBhYy13aG9sZS1jb21tb24tcGFydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YWMtZXhwYW5kLWNvbW1vbikpKSkKICAgICAgICAgICAgICAgICBhYy11c2UtZnV6enkKICAgICAg ICAgICAgICAgICAobnVsbCBhYy1jYW5kaWRhdGVzKSkKICAgICAgICAoYWMtZnV6enktY29tcGxl dGUpKSkpKQoKKGRlZnVuIGFjLWZ1enp5LWNvbXBsZXRlICgpCiAgIlN0YXJ0IGZ1enp5IGNvbXBs ZXRpb24gYXQgY3VycmVudCBwb2ludC4iCiAgKGludGVyYWN0aXZlKQogICh3aGVuIChyZXF1aXJl ICdmdXp6eSBuaWwpCiAgICAodW5sZXNzIChhYy1tZW51LWxpdmUtcCkKICAgICAgKGFjLXN0YXJ0 KSkKICAgIChsZXQgKChhYy1tYXRjaC1mdW5jdGlvbiAnZnV6enktYWxsLWNvbXBsZXRpb25zKSkK ICAgICAgKHVubGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAoc2V0cSBhYy1jdXJzb3ItY29s b3IgKGZyYW1lLXBhcmFtZXRlciAoc2VsZWN0ZWQtZnJhbWUpICdjdXJzb3ItY29sb3IpKSkKICAg ICAgKGlmIGFjLWZ1enp5LWN1cnNvci1jb2xvcgogICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Ig YWMtZnV6enktY3Vyc29yLWNvbG9yKSkKICAgICAgKHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAg IChzZXRxIGFjLWZ1enp5LWVuYWJsZSB0KQogICAgICAoc2V0cSBhYy10cmlnZ2VyZWQgbmlsKQog ICAgICAoYWMtdXBkYXRlIHQpKSkKICB0KQoKKGRlZnVuIGFjLW5leHQgKCkKICAiU2VsZWN0IG5l eHQgY2FuZGlkYXRlLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQog ICAgKHBvcHVwLW5leHQgYWMtbWVudSkKICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAgKGlm IChlcSB0aGlzLWNvbW1hbmQgJ2FjLW5leHQpCiAgICAgICAgKHNldHEgYWMtZHdpbS1lbmFibGUg dCkpKSkKCihkZWZ1biBhYy1wcmV2aW91cyAoKQogICJTZWxlY3QgcHJldmlvdXMgY2FuZGlkYXRl LiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQogICAgKHBvcHVwLXBy ZXZpb3VzIGFjLW1lbnUpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkKICAgIChpZiAoZXEgdGhp cy1jb21tYW5kICdhYy1wcmV2aW91cykKICAgICAgICAoc2V0cSBhYy1kd2ltLWVuYWJsZSB0KSkp KQoKKGRlZnVuIGFjLWV4cGFuZCAoKQogICJUcnkgZXhwYW5kLCBhbmQgaWYgZXhwYW5kZWQgdHdp Y2UsIHNlbGVjdCBuZXh0IGNhbmRpZGF0ZS4iCiAgKGludGVyYWN0aXZlKQogICh1bmxlc3MgKGFj LWV4cGFuZC1jb21tb24pCiAgICAobGV0ICgoc3RyaW5nIChhYy1zZWxlY3RlZC1jYW5kaWRhdGUp KSkKICAgICAgKHdoZW4gc3RyaW5nCiAgICAgICAgKHdoZW4gKGVxdWFsIGFjLXByZWZpeCBzdHJp bmcpCiAgICAgICAgICAoYWMtbmV4dCkKICAgICAgICAgIChzZXRxIHN0cmluZyAoYWMtc2VsZWN0 ZWQtY2FuZGlkYXRlKSkpCiAgICAgICAgKGFjLWV4cGFuZC1zdHJpbmcgc3RyaW5nIChlcSBsYXN0 LWNvbW1hbmQgdGhpcy1jb21tYW5kKSkKICAgICAgICA7OyBEbyByZXBvc2l0aW9uIGlmIG1lbnUg YXQgbG9uZyBsaW5lCiAgICAgICAgKGlmIChhbmQgKD4gKHBvcHVwLWRpcmVjdGlvbiBhYy1tZW51 KSAwKQogICAgICAgICAgICAgICAgIChhYy1tZW51LWF0LXdyYXBwZXItbGluZS1wKSkKICAgICAg ICAgICAgKGFjLXJlcG9zaXRpb24pKQogICAgICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAg ICAgIHN0cmluZykpKSkKCihkZWZ1biBhYy1leHBhbmQtY29tbW9uICgpCiAgIlRyeSB0byBleHBh bmQgbWVhbmluZ2Z1bCBjb21tb24gcGFydC4iCiAgKGludGVyYWN0aXZlKQogIChpZiAoYW5kIGFj LWR3aW0gYWMtZHdpbS1lbmFibGUpCiAgICAgIChhYy1jb21wbGV0ZSkKICAgICh3aGVuIChhbmQg KGFjLWlubGluZS1saXZlLXApCiAgICAgICAgICAgICAgIGFjLWNvbW1vbi1wYXJ0KQogICAgICAo YWMtaW5saW5lLWhpZGUpIAogICAgICAoYWMtZXhwYW5kLXN0cmluZyBhYy1jb21tb24tcGFydCAo ZXEgbGFzdC1jb21tYW5kIHRoaXMtY29tbWFuZCkpCiAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0 IG5pbCkKICAgICAgdCkpKQoKKGRlZnVuIGFjLWNvbXBsZXRlICgpCiAgIlRyeSBjb21wbGV0ZS4i CiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoY2FuZGlkYXRlIChhYy1zZWxlY3RlZC1jYW5kaWRh dGUpKQogICAgICAgICAoYWN0aW9uIChwb3B1cC1pdGVtLXByb3BlcnR5IGNhbmRpZGF0ZSAnYWN0 aW9uKSkKICAgICAgICAgKGZhbGxiYWNrIG5pbCkpCiAgICAod2hlbiBjYW5kaWRhdGUKICAgICAg KHVubGVzcyAoYWMtZXhwYW5kLXN0cmluZyBjYW5kaWRhdGUpCiAgICAgICAgKHNldHEgZmFsbGJh Y2sgdCkpCiAgICAgIDs7IFJlbWVtYmVyIHRvIHNob3cgaGVscCBsYXRlcgogICAgICAod2hlbiAo YW5kIGFjLXBvaW50IGNhbmRpZGF0ZSkKICAgICAgICAodW5sZXNzIGFjLWxhc3QtY29tcGxldGlv bgogICAgICAgICAgKHNldHEgYWMtbGFzdC1jb21wbGV0aW9uIChjb25zIChtYWtlLW1hcmtlcikg bmlsKSkpCiAgICAgICAgKHNldC1tYXJrZXIgKGNhciBhYy1sYXN0LWNvbXBsZXRpb24pIGFjLXBv aW50IGFjLWJ1ZmZlcikKICAgICAgICAoc2V0Y2RyIGFjLWxhc3QtY29tcGxldGlvbiBjYW5kaWRh dGUpKSkKICAgIChhYy1hYm9ydCkKICAgIChjb25kCiAgICAgKGFjdGlvbgogICAgICAoZnVuY2Fs bCBhY3Rpb24pKQogICAgIChmYWxsYmFjawogICAgICAoYWMtZmFsbGJhY2stY29tbWFuZCkpKQog ICAgY2FuZGlkYXRlKSkKCihkZWZ1biogYWMtc3RhcnQgKCZrZXkKICAgICAgICAgICAgICAgICAg cmVxdWlyZXMKICAgICAgICAgICAgICAgICAgZm9yY2UtaW5pdCkKICAiU3RhcnQgY29tcGxldGlv bi4iCiAgKGludGVyYWN0aXZlKQogIChpZiAobm90IGF1dG8tY29tcGxldGUtbW9kZSkKICAgICAg KG1lc3NhZ2UgImF1dG8tY29tcGxldGUtbW9kZSBpcyBub3QgZW5hYmxlZCIpCiAgICAobGV0KiAo KGluZm8gKGFjLXByZWZpeCByZXF1aXJlcyBhYy1pZ25vcmluZy1wcmVmaXgtZGVmKSkKICAgICAg ICAgICAocHJlZml4LWRlZiAobnRoIDAgaW5mbykpCiAgICAgICAgICAgKHBvaW50IChudGggMSBp bmZvKSkKICAgICAgICAgICAoc291cmNlcyAobnRoIDIgaW5mbykpCiAgICAgICAgICAgcHJlZml4 CiAgICAgICAgICAgKGluaXQgKG9yIGZvcmNlLWluaXQgKG5vdCAoZXEgYWMtcG9pbnQgcG9pbnQp KSkpKQogICAgICAoaWYgKG9yIChudWxsIHBvaW50KQogICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgKHNldHEgcHJlZml4IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMg cG9pbnQgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAoYWMtc3RvcC13b3JkLXAgcHJlZml4KSkp CiAgICAgICAgICAocHJvZzEgbmlsCiAgICAgICAgICAgIChhYy1hYm9ydCkpCiAgICAgICAgKHVu bGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAgIChzZXRxIGFjLWN1cnNvci1jb2xvciAoZnJh bWUtcGFyYW1ldGVyIChzZWxlY3RlZC1mcmFtZSkgJ2N1cnNvci1jb2xvcikpKQogICAgICAgIChz ZXRxIGFjLXNob3ctbWVudSAob3IgYWMtc2hvdy1tZW51IChpZiAoZXEgYWMtYXV0by1zaG93LW1l bnUgdCkgdCkpCiAgICAgICAgICAgICAgYWMtY3VycmVudC1zb3VyY2VzIHNvdXJjZXMKICAgICAg ICAgICAgICBhYy1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKQogICAgICAgICAgICAgIGFjLXBvaW50 IHBvaW50CiAgICAgICAgICAgICAgYWMtcHJlZml4IHByZWZpeAogICAgICAgICAgICAgIGFjLWxp bWl0IGFjLWNhbmRpZGF0ZS1saW1pdAogICAgICAgICAgICAgIGFjLXRyaWdnZXJlZCB0CiAgICAg ICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmIHByZWZpeC1kZWYpCiAgICAgICAgKHdoZW4g KG9yIGluaXQgKG51bGwgYWMtcHJlZml4LW92ZXJsYXkpKQogICAgICAgICAgKGFjLWluaXQpKQog ICAgICAgIChhYy1zZXQtdGltZXIpCiAgICAgICAgKGFjLXNldC1zaG93LW1lbnUtdGltZXIpCiAg ICAgICAgKGFjLXNldC1xdWljay1oZWxwLXRpbWVyKQogICAgICAgIChhYy1wdXQtcHJlZml4LW92 ZXJsYXkpKSkpKQoKKGRlZnVuIGFjLXN0b3AgKCkKICAiU3RvcCBjb21wbGV0aW9uZy4iCiAgKGlu dGVyYWN0aXZlKQogIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwpCiAgKGFjLWFib3J0 KSkKCihkZWZ1biBhYy10cmlnZ2VyLWtleS1jb21tYW5kICgmb3B0aW9uYWwgZm9yY2UpCiAgKGlu dGVyYWN0aXZlICJQIikKICAoaWYgKG9yIGZvcmNlIChhYy10cmlnZ2VyLWNvbW1hbmQtcCBsYXN0 LWNvbW1hbmQpKQogICAgICAoYXV0by1jb21wbGV0ZSkKICAgIChhYy1mYWxsYmFjay1jb21tYW5k ICdhYy10cmlnZ2VyLWtleS1jb21tYW5kKSkpCgoMCgo7Ozs7IEJhc2ljIGNhY2hlIGZhY2lsaXR5 CgooZGVmdmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1taW51dGUtdGltZXIgbmlsKQooZGVm dmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIG5pbCkKKGRlZnZhciBhYy1jbGVhci12 YXJpYWJsZXMtZXZlcnktbWludXRlIG5pbCkKKGRlZnZhciBhYy1taW51dGVzLWNvdW50ZXIgMCkK CihkZWZ1biBhYy1jbGVhci12YXJpYWJsZS1hZnRlci1zYXZlICh2YXJpYWJsZSAmb3B0aW9uYWwg cHJlZCkKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIChjb25z IHZhcmlhYmxlIHByZWQpKSkKCihkZWZ1biBhYy1jbGVhci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSAo KQogIChkb2xpc3QgKHBhaXIgYWMtY2xlYXItdmFyaWFibGVzLWFmdGVyLXNhdmUpCiAgICAoaWYg KG9yIChudWxsIChjZHIgcGFpcikpCiAgICAgICAgICAgIChmdW5jYWxsIChjZHIgcGFpcikpKQog ICAgICAgIChzZXQgKGNhciBwYWlyKSBuaWwpKSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFibGUt ZXZlcnktbWludXRlcyAodmFyaWFibGUgbWludXRlcykKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFy LXZhcmlhYmxlcy1ldmVyeS1taW51dGUgKGNvbnMgdmFyaWFibGUgbWludXRlcykpKQoKKGRlZnVu IGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5LW1pbnV0ZSAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZh cmlhYmxlLWV2ZXJ5LW1pbnV0ZXMgdmFyaWFibGUgMSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFi bGUtZXZlcnktMTAtbWludXRlcyAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5 LW1pbnV0ZXMgdmFyaWFibGUgMTApKQoKKGRlZnVuIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1t aW51dGUgKCkKICAoaW5jZiBhYy1taW51dGVzLWNvdW50ZXIpCiAgKGRvbGlzdCAocGFpciBhYy1j bGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlKQogICAgKGlmIChlcSAoJSBhYy1taW51dGVzLWNv dW50ZXIgKGNkciBwYWlyKSkgMCkKICAgICAgICAoc2V0IChjYXIgcGFpcikgbmlsKSkpKQoKDAoK Ozs7OyBBdXRvIGNvbXBsZXRlIG1vZGUKCihkZWZ1biBhYy1jdXJzb3Itb24tZGlhYmxlLWZhY2Ut cCAoJm9wdGlvbmFsIHBvaW50KQogIChtZW1xIChnZXQtdGV4dC1wcm9wZXJ0eSAob3IgcG9pbnQg KHBvaW50KSkgJ2ZhY2UpIGFjLWRpc2FibGUtZmFjZXMpKQoKKGRlZnVuIGFjLXRyaWdnZXItY29t bWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFORCcgaXMgYSB0cmln Z2VyIGNvbW1hbmQuIgogIChhbmQgKHN5bWJvbHAgY29tbWFuZCkKICAgICAgIChub3QgKG1lbXEg Y29tbWFuZCBhYy1ub24tdHJpZ2dlci1jb21tYW5kcykpCiAgICAgICAob3IgKG1lbXEgY29tbWFu ZCBhYy10cmlnZ2VyLWNvbW1hbmRzKQogICAgICAgICAgIChzdHJpbmctbWF0Y2ggInNlbGYtaW5z ZXJ0LWNvbW1hbmQiIChzeW1ib2wtbmFtZSBjb21tYW5kKSkKICAgICAgICAgICAoc3RyaW5nLW1h dGNoICJlbGVjdHJpYyIgKHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpKQoKKGRlZnVuIGFjLWZhbGxi YWNrLWNvbW1hbmQgKCZvcHRpb25hbCBleGNlcHQtY29tbWFuZCkKICAobGV0KiAoKGF1dG8tY29t cGxldGUtbW9kZSBuaWwpCiAgICAgICAgIChrZXlzICh0aGlzLWNvbW1hbmQta2V5cy12ZWN0b3Ip KQogICAgICAgICAoY29tbWFuZCAoaWYga2V5cyAoa2V5LWJpbmRpbmcga2V5cykpKSkKICAgICh3 aGVuIChhbmQgKGNvbW1hbmRwIGNvbW1hbmQpCiAgICAgICAgICAgICAgIChub3QgKGVxIGNvbW1h bmQgZXhjZXB0LWNvbW1hbmQpKSkKICAgICAgKHNldHEgdGhpcy1jb21tYW5kIGNvbW1hbmQpCiAg ICAgIChjYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpKSkKCihkZWZ1biBhYy1jb21wYXRpYmxl LXBhY2thZ2UtY29tbWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFO RCcgaXMgY29tcGF0aWJsZSB3aXRoIGF1dG8tY29tcGxldGUuIgogIChhbmQgKHN5bWJvbHAgY29t bWFuZCkKICAgICAgIChzdHJpbmctbWF0Y2ggYWMtY29tcGF0aWJsZS1wYWNrYWdlcy1yZWdleHAg KHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpCgooZGVmdW4gYWMtaGFuZGxlLXByZS1jb21tYW5kICgp CiAgKGNvbmRpdGlvbi1jYXNlIHZhcgogICAgICAoaWYgKG9yIChzZXRxIGFjLXRyaWdnZXJlZCAo YW5kIChub3QgYWMtZnV6enktZW5hYmxlKSA7IGlnbm9yZSBrZXkgc3RvcmtlcyBpbiBmdXp6eSBt b2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChlcSB0aGlzLWNv bW1hbmQgJ2F1dG8tY29tcGxldGUpIDsgc3BlY2lhbCBjYXNlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhYy10cmlnZ2VyLWNvbW1hbmQtcCB0aGlzLWNvbW1hbmQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgYWMtY29tcGxl dGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IHRoaXMtY29tbWFuZCBhYy10cmlnZ2VyLWNvbW1hbmRzLW9uLWNvbXBsZXRpbmcpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChhYy1jdXJzb3Itb24tZGlhYmxl LWZhY2UtcCkpKSkKICAgICAgICAgICAgICAoYWMtY29tcGF0aWJsZS1wYWNrYWdlLWNvbW1hbmQt cCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChpZiAob3IgKG5v dCAoc3ltYm9scCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgICAgICAgICAgIChub3QgKGdldCB0 aGlzLWNvbW1hbmQgJ2FjLXF1aWNrLWhlbHAtY29tbWFuZCkpKQogICAgICAgICAgICAgICAgKGFj LXJlbW92ZS1xdWljay1oZWxwKSkKICAgICAgICAgICAgOzsgTm90IHRvIGNhdXNlIGlubGluZSBj b21wbGV0aW9uIHRvIGJlIGRpc3J1cHRlZC4KICAgICAgICAgICAgKGFjLWlubGluZS1oaWRlKSkK ICAgICAgICAoYWMtYWJvcnQpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIpKSkpCgooZGVmdW4g YWMtaGFuZGxlLXBvc3QtY29tbWFuZCAoKQogIChjb25kaXRpb24tY2FzZSB2YXIKICAgICAgKHdo ZW4gKGFuZCBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICAob3IgYWMtYXV0by1zdGFydAog ICAgICAgICAgICAgICAgICAgICBhYy1jb21wbGV0aW5nKQogICAgICAgICAgICAgICAgIChub3Qg aXNlYXJjaC1tb2RlKSkKICAgICAgICAoc2V0cSBhYy1sYXN0LXBvaW50IChwb2ludCkpCiAgICAg ICAgKGFjLXN0YXJ0IDpyZXF1aXJlcyAodW5sZXNzIGFjLWNvbXBsZXRpbmcgYWMtYXV0by1zdGFy dCkpCiAgICAgICAgKGFjLWlubGluZS11cGRhdGUpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIp KSkpCgooZGVmdW4gYWMtc2V0dXAgKCkKICAoaWYgYWMtdHJpZ2dlci1rZXkKICAgICAgKGFjLXNl dC10cmlnZ2VyLWtleSBhYy10cmlnZ2VyLWtleSkpCiAgKGlmIGFjLXVzZS1jb21waGlzdAogICAg ICAoYWMtY29tcGhpc3QtaW5pdCkpCiAgKHVubGVzcyBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnkt bWludXRlLXRpbWVyCiAgICAoc2V0cSBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlLXRp bWVyIChydW4td2l0aC10aW1lciA2MCA2MCAnYWMtY2xlYXItdmFyaWFibGVzLWV2ZXJ5LW1pbnV0 ZSkpKQogIChpZiBhYy1zdG9wLWZseW1ha2Utb24tY29tcGxldGluZwogICAgICAoZGVmYWR2aWNl IGZseW1ha2Utb24tdGltZXItZXZlbnQgKGFyb3VuZCBhYy1mbHltYWtlLXN0b3AtYWR2aWNlIGFj dGl2YXRlKQogICAgICAgICh1bmxlc3MgYWMtY29tcGxldGluZwogICAgICAgICAgYWQtZG8taXQp KQogICAgKGFkLWRpc2FibGUtYWR2aWNlICdmbHltYWtlLW9uLXRpbWVyLWV2ZW50ICdhcm91bmQg J2FjLWZseW1ha2Utc3RvcC1hZHZpY2UpKSkKCihkZWZpbmUtbWlub3ItbW9kZSBhdXRvLWNvbXBs ZXRlLW1vZGUKICAiQXV0b0NvbXBsZXRlIG1vZGUiCiAgOmxpZ2h0ZXIgIiBBQyIKICA6a2V5bWFw IGFjLW1vZGUtbWFwCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlCiAgKGlmIGF1dG8tY29tcGxldGUt bW9kZQogICAgICAocHJvZ24KICAgICAgICAoYWMtc2V0dXApCiAgICAgICAgKGFkZC1ob29rICdw cmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNvbW1hbmQgbmlsIHQpCiAgICAgICAgKGFk ZC1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAnYWMtaGFuZGxlLXBvc3QtY29tbWFuZCBuaWwgdCkK ICAgICAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAnYWMtY2xlYXItdmFyaWFibGVzLWFm dGVyLXNhdmUgbmlsIHQpCiAgICAgICAgKHJ1bi1ob29rcyAnYXV0by1jb21wbGV0ZS1tb2RlLWhv b2spKQogICAgKHJlbW92ZS1ob29rICdwcmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNv bW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2FjLWhhbmRsZS1w b3N0LWNvbW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdhYy1jbGVh ci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSB0KQogICAgKGFjLWFib3J0KSkpCgooZGVmdW4gYXV0by1j b21wbGV0ZS1tb2RlLW1heWJlICgpCiAgIldoYXQgYnVmZmVyIGBhdXRvLWNvbXBsZXRlLW1vZGUn IHByZWZlcnMuIgogIChpZiAoYW5kIChub3QgKG1pbmlidWZmZXJwIChjdXJyZW50LWJ1ZmZlcikp KQogICAgICAgICAgIChtZW1xIG1ham9yLW1vZGUgYWMtbW9kZXMpKQogICAgICAoYXV0by1jb21w bGV0ZS1tb2RlIDEpKSkKCihkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUgZ2xvYmFsLWF1dG8tY29t cGxldGUtbW9kZQogIGF1dG8tY29tcGxldGUtbW9kZSBhdXRvLWNvbXBsZXRlLW1vZGUtbWF5YmUK ICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoMCgo7Ozs7IENvbXBhdGliaWxpdGllcyB3aXRoIG90 aGVyIGV4dGVuc2lvbnMKCihkZWZ1biBhYy1mbHlzcGVsbC13b3JrYXJvdW5kICgpCiAgIkZseXNw ZWxsIHVzZXMgYHNpdC1mb3InIGZvciBkZWxheWluZyBpdHMgcHJvY2Vzcy4gVW5mb3J0dW5hdGVs bHksCml0IHN0b3BzIGF1dG8gY29tcGxldGlvbiB3aGljaCBpcyB0cmlnZ2VyIHdpdGggYHJ1bi13 aXRoLWlkbGUtdGltZXInLgpUaGlzIHdvcmthcm91bmQgYXZvaWQgZmx5c3BlbGwgcHJvY2Vzc2Vz IHdoZW4gYXV0byBjb21wbGV0aW9uIGlzIGJlaW5nIHN0YXJ0ZWQuIgogIChpbnRlcmFjdGl2ZSkK ICAoZGVmYWR2aWNlIGZseXNwZWxsLXBvc3QtY29tbWFuZC1ob29rIChhcm91bmQgYWMtZmx5c3Bl bGwtd29ya2Fyb3VuZCBhY3RpdmF0ZSkKICAgICh1bmxlc3MgYWMtdHJpZ2dlcmVkCiAgICAgIGFk LWRvLWl0KSkpCgooZGVmdW4gYWMtbGludW0td29ya2Fyb3VuZCAoKQogICJsaW51bS1tb2RlIHRy aWVzIHRvIGRpc3BsYXkgdGhlIGxpbmUgbnVtYmVycyBldmVuIGZvciB0aGUKY29tcGxldGlvbiBt ZW51LiBUaGlzIHdvcmthcm91bmQgc3RvcHMgdGhhdCBhbm5veWluZyBiZWhhdmlvci4iCiAgKGlu dGVyYWN0aXZlKQogIChkZWZhZHZpY2UgbGludW0tdXBkYXRlIChhcm91bmQgYWMtbGludW0tdXBk YXRlLXdvcmthcm91bmQgYWN0aXZhdGUpCiAgICAodW5sZXNzIGFjLWNvbXBsZXRpbmcKICAgICAg YWQtZG8taXQpKSkKCgwKCjs7OzsgU3RhbmRhcmQgc291cmNlcwoKKGRlZm1hY3JvIGFjLWRlZmlu ZS1zb3VyY2UgKG5hbWUgc291cmNlKQogICJTb3VyY2UgZGVmaW5pdGlvbiBtYWNyby4gSXQgZGVm aW5lcyBhIGNvbXBsZXRlIGNvbW1hbmQgYWxzby4iCiAgKGRlY2xhcmUgKGluZGVudCAxKSkKICBg KHByb2duCiAgICAgKGRlZnZhciAsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUp KQogICAgICAgLHNvdXJjZSkKICAgICAoZGVmdW4gLChpbnRlcm4gKGZvcm1hdCAiYWMtY29tcGxl dGUtJXMiIG5hbWUpKSAoKQogICAgICAgKGludGVyYWN0aXZlKQogICAgICAgKGF1dG8tY29tcGxl dGUgJygsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUpKSkpKSkpCgo7OyBXb3Jk cyBpbiBidWZmZXIgc291cmNlCihkZWZ2YXIgYWMtd29yZC1pbmRleCBuaWwpCgooZGVmdW4gYWMt Y2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciAocG9pbnQgcHJlZml4IGxpbWl0KQogIChsZXQgKChp IDApCiAgICAgICAgY2FuZGlkYXRlCiAgICAgICAgY2FuZGlkYXRlcwogICAgICAgIChyZWdleHAg KGNvbmNhdCAiXFxfPCIgKHJlZ2V4cC1xdW90ZSBwcmVmaXgpICJcXChcXHN3XFx8XFxzX1xcKStc XF8+IikpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAg ICAoZ290by1jaGFyIHBvaW50KQogICAgICAod2hpbGUgKGFuZCAob3IgKG5vdCAoaW50ZWdlcnAg bGltaXQpKSAoPCBpIGxpbWl0KSkKICAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2Fy ZCByZWdleHAgbmlsIHQpKQogICAgICAgIChzZXRxIGNhbmRpZGF0ZSAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgMCkpCiAgICAgICAgKHVubGVzcyAobWVtYmVyIGNhbmRpZGF0ZSBjYW5kaWRh dGVzKQogICAgICAgICAgKHB1c2ggY2FuZGlkYXRlIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaW5j ZiBpKSkpCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAgICAoZ290by1jaGFyICgrIHBvaW50 IChsZW5ndGggcHJlZml4KSkpCiAgICAgICh3aGlsZSAoYW5kIChvciAobm90IChpbnRlZ2VycCBs aW1pdCkpICg8IGkgbGltaXQpKQogICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQg cmVnZXhwIG5pbCB0KSkKICAgICAgICAoc2V0cSBjYW5kaWRhdGUgKG1hdGNoLXN0cmluZy1uby1w cm9wZXJ0aWVzIDApKQogICAgICAgICh1bmxlc3MgKG1lbWJlciBjYW5kaWRhdGUgY2FuZGlkYXRl cykKICAgICAgICAgIChwdXNoIGNhbmRpZGF0ZSBjYW5kaWRhdGVzKQogICAgICAgICAgKGluY2Yg aSkpKQogICAgICAobnJldmVyc2UgY2FuZGlkYXRlcykpKSkKCihkZWZ1biBhYy1pbmNyZW1lbnRh bC11cGRhdGUtd29yZC1pbmRleCAoKQogICh1bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdv cmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKGlm IChudWxsIGFjLXdvcmQtaW5kZXgpCiAgICAgIChzZXRxIGFjLXdvcmQtaW5kZXggKGNvbnMgbmls IG5pbCkpKQogIDs7IE1hcmsgaW5jb21wbGV0ZQogIChpZiAoY2FyIGFjLXdvcmQtaW5kZXgpCiAg ICAgIChzZXRjYXIgYWMtd29yZC1pbmRleCBuaWwpKQogIChsZXQgKChpbmRleCAoY2RyIGFjLXdv cmQtaW5kZXgpKQogICAgICAgICh3b3JkcyAoYWMtY2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciBh Yy1wb2ludCBhYy1wcmVmaXggKG9yIChhbmQgKGludGVnZXJwIGFjLWxpbWl0KSBhYy1saW1pdCkg MTApKSkpCiAgICAoZG9saXN0ICh3b3JkIHdvcmRzKQogICAgICAodW5sZXNzIChtZW1iZXIgd29y ZCBpbmRleCkKICAgICAgICAocHVzaCB3b3JkIGluZGV4KQogICAgICAgIChzZXRjZHIgYWMtd29y ZC1pbmRleCBpbmRleCkpKSkpCgooZGVmdW4gYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSAoKQogICh1 bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdvcmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12 YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKHdoZW4gKGFuZCAobm90IChjYXIgYWMtd29yZC1p bmRleCkpCiAgICAgICAgICAgICAoPCAoYnVmZmVyLXNpemUpIDEwNDg1NzYpKQogICAgOzsgQ29t cGxldGUgaW5kZXgKICAgIChzZXRxIGFjLXdvcmQtaW5kZXgKICAgICAgICAgIChjb25zIHQKICAg ICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGll cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcKD86XlxcfFxcXz5cXCkuKj9cXCg/OlxcXzxcXHwkXFwpIikpKSkpCgooZGVmdW4gYWMtdXBk YXRlLXdvcmQtaW5kZXggKCkKICAoZG9saXN0IChidWZmZXIgKGJ1ZmZlci1saXN0KSkKICAgICh3 aGVuIChvciBhYy1mdXp6eS1lbmFibGUKICAgICAgICAgICAgICAobm90IChlcSBidWZmZXIgKGN1 cnJlbnQtYnVmZmVyKSkpKQogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAg ICAoYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSkpKSkpCgooZGVmdW4gYWMtd29yZC1jYW5kaWRhdGVz ICgmb3B0aW9uYWwgYnVmZmVyLXByZWQpCiAgKGxvb3AgaW5pdGlhbGx5ICh1bmxlc3MgYWMtZnV6 enktZW5hYmxlIChhYy1pbmNyZW1lbnRhbC11cGRhdGUtd29yZC1pbmRleCkpCiAgICAgICAgZm9y IGJ1ZmZlciBpbiAoYnVmZmVyLWxpc3QpCiAgICAgICAgaWYgKGFuZCAob3IgKG5vdCAoaW50ZWdl cnAgYWMtbGltaXQpKSAoPCAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAgICAg ICAgICAgIChpZiBidWZmZXItcHJlZCAoZnVuY2FsbCBidWZmZXItcHJlZCBidWZmZXIpIHQpKQog ICAgICAgIGFwcGVuZCAoZnVuY2FsbCBhYy1tYXRjaC1mdW5jdGlvbgogICAgICAgICAgICAgICAg ICAgICAgICBhYy1wcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAobG9jYWwtdmFy aWFibGUtcCAnYWMtd29yZC1pbmRleCBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNkciAoYnVmZmVyLWxvY2FsLXZhbHVlICdhYy13b3JkLWluZGV4IGJ1ZmZlcikpKSkKICAg ICAgICBpbnRvIGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybiBjYW5kaWRhdGVzKSkK CihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWJ1ZmZlcgogICcoKGNhbmRpZGF0ZXMgLiBhYy13 b3JkLWNhbmRpZGF0ZXMpKSkKCihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWFsbC1idWZmZXIK ICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAuIGFjLXdv cmQtY2FuZGlkYXRlcykpKQoKKGFjLWRlZmluZS1zb3VyY2Ugd29yZHMtaW4tc2FtZS1tb2RlLWJ1 ZmZlcnMKICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAu IChhYy13b3JkLWNhbmRpZGF0ZXMKICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGJ1ZmZlcikK ICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1wIChidWZmZXItbG9jYWwtdmFsdWUg J21ham9yLW1vZGUgYnVmZmVyKSkpKSkpKQoKOzsgTGlzcCBzeW1ib2xzIHNvdXJjZQooZGVmdmFy IGFjLXN5bWJvbHMtY2FjaGUgbmlsKQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRl cyAnYWMtc3ltYm9scy1jYWNoZSkKCihkZWZ1biBhYy1zeW1ib2wtZmlsZSAoc3ltYm9sIHR5cGUp CiAgKGlmIChmYm91bmRwICdmaW5kLWxpc3Atb2JqZWN0LWZpbGUtbmFtZSkKICAgICAgKGZpbmQt bGlzcC1vYmplY3QtZmlsZS1uYW1lIHN5bWJvbCB0eXBlKQogICAgKGxldCAoKGZpbGUtbmFtZSAo d2l0aC1uby13YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgIChkZXNjcmliZS1zaW1wbGlm eS1saWItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2wtZmlsZSBzeW1i b2wgdHlwZSkpKSkpCiAgICAgICh3aGVuIChlcXVhbCBmaWxlLW5hbWUgImxvYWRkZWZzLmVsIikK ICAgICAgICA7OyBGaW5kIHRoZSByZWFsIGRlZiBzaXRlIG9mIHRoZSBwcmVsb2FkZWQgb2JqZWN0 LgogICAgICAgIChsZXQgKChsb2NhdGlvbiAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmaW5kLWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3ltYm9sIHN5bWJvbCBuaWwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAibG9hZGRlZnMuZWwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlu ZC12YXJpYWJsZS1ub3NlbGVjdCBzeW1ib2wgZmlsZS1uYW1lKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAoZXJyb3IgbmlsKSkpKQogICAgICAgICAgKHdoZW4gbG9jYXRpb24KICAgICAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGNhciBsb2NhdGlvbikKICAgICAgICAgICAgICAod2hl biAoY2RyIGxvY2F0aW9uKQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2RyIGxvY2F0aW9u KSkpCiAgICAgICAgICAgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZAogICAgICAgICAgICAg ICAgICAgICAiXjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gXFwoLipcXCkiIG5pbCB0KQog ICAgICAgICAgICAgICAgKHNldHEgZmlsZS1uYW1lIChtYXRjaC1zdHJpbmcgMSkpKSkpKSkKICAg ICAgKGlmIChhbmQgKG51bGwgZmlsZS1uYW1lKQogICAgICAgICAgICAgICAob3IgKGVxIHR5cGUg J2RlZnVuKQogICAgICAgICAgICAgICAgICAgKGludGVnZXJwIChnZXQgc3ltYm9sICd2YXJpYWJs ZS1kb2N1bWVudGF0aW9uKSkpKQogICAgICAgICAgOzsgSXQncyBhIG9iamVjdCBub3QgZGVmaW5l ZCBpbiBFbGlzcCBidXQgaW4gQy4KICAgICAgICAgIChpZiAoZ2V0LWJ1ZmZlciAiICpET0MqIikK ICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAoaGVs cC1DLWZpbGUtbmFtZSAoc3ltYm9sLWZ1bmN0aW9uIHN5bWJvbCkgJ3N1YnIpCiAgICAgICAgICAg ICAgICAoaGVscC1DLWZpbGUtbmFtZSBzeW1ib2wgJ3ZhcikpCiAgICAgICAgICAgICdDLXNvdXJj ZSkKICAgICAgICBmaWxlLW5hbWUpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24g KHN5bWJvbCkKICAoaWYgKHN0cmluZ3Agc3ltYm9sKQogICAgICAoc2V0cSBzeW1ib2wgKGludGVy bi1zb2Z0IHN5bWJvbCkpKQogIChpZ25vcmUtZXJyb3JzCiAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAobGV0ICgoc3RhbmRhcmQtb3V0cHV0IChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgIChw cmluMSBzeW1ib2wpCiAgICAgICAgKHByaW5jICIgaXMgIikKICAgICAgICAoY29uZAogICAgICAg ICAoKGZib3VuZHAgc3ltYm9sKQogICAgICAgICAgOzsgaW1wb3J0IGhlbHAteHJlZi1mb2xsb3dp bmcKICAgICAgICAgIChyZXF1aXJlICdoZWxwLW1vZGUpCiAgICAgICAgICAobGV0ICgoaGVscC14 cmVmLWZvbGxvd2luZyB0KSkKICAgICAgICAgICAgKGRlc2NyaWJlLWZ1bmN0aW9uLTEgc3ltYm9s KSkKICAgICAgICAgIChidWZmZXItc3RyaW5nKSkKICAgICAgICAgKChib3VuZHAgc3ltYm9sKQog ICAgICAgICAgKGxldCAoKGZpbGUtbmFtZSAgKGFjLXN5bWJvbC1maWxlIHN5bWJvbCAnZGVmdmFy KSkpCiAgICAgICAgICAgIChwcmluYyAiYSB2YXJpYWJsZSIpCiAgICAgICAgICAgICh3aGVuIGZp bGUtbmFtZQogICAgICAgICAgICAgIChwcmluYyAiIGRlZmluZWQgaW4gYCIpCiAgICAgICAgICAg ICAgKHByaW5jIChpZiAoZXEgZmlsZS1uYW1lICdDLXNvdXJjZSkKICAgICAgICAgICAgICAgICAg ICAgICAgICJDIHNvdXJjZSBjb2RlIgogICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUt bm9uZGlyZWN0b3J5IGZpbGUtbmFtZSkpKSkKICAgICAgICAgICAgKHByaW5jICInLlxuXG4iKQog ICAgICAgICAgICAocHJpbmMgKG9yIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAndmFy aWFibGUtZG9jdW1lbnRhdGlvbiB0KQogICAgICAgICAgICAgICAgICAgICAgICJOb3QgZG9jdW1l bnRlZC4iKSkKICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkKICAgICAgICAgKChmYWNlcCBz eW1ib2wpCiAgICAgICAgICAobGV0ICgoZmlsZS1uYW1lICAoYWMtc3ltYm9sLWZpbGUgc3ltYm9s ICdkZWZmYWNlKSkpCiAgICAgICAgICAgIChwcmluYyAiYSBmYWNlIikKICAgICAgICAgICAgKHdo ZW4gZmlsZS1uYW1lCiAgICAgICAgICAgICAgKHByaW5jICIgZGVmaW5lZCBpbiBgIikKICAgICAg ICAgICAgICAocHJpbmMgKGlmIChlcSBmaWxlLW5hbWUgJ0Mtc291cmNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgIkMgc291cmNlIGNvZGUiCiAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkpKQogICAgICAgICAgICAocHJpbmMgIicuXG5c biIpCiAgICAgICAgICAgIChwcmluYyAob3IgKGRvY3VtZW50YXRpb24tcHJvcGVydHkgc3ltYm9s ICdmYWNlLWRvY3VtZW50YXRpb24gdCkKICAgICAgICAgICAgICAgICAgICAgICAiTm90IGRvY3Vt ZW50ZWQuIikpCiAgICAgICAgICAgIChidWZmZXItc3RyaW5nKSkpCiAgICAgICAgICh0CiAgICAg ICAgICAobGV0ICgoZG9jIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAnZ3JvdXAtZG9j dW1lbnRhdGlvbiB0KSkpCiAgICAgICAgICAgICh3aGVuIGRvYwogICAgICAgICAgICAgIChwcmlu YyAiYSBncm91cC5cblxuIikKICAgICAgICAgICAgICAocHJpbmMgZG9jKQogICAgICAgICAgICAg IChidWZmZXItc3RyaW5nKSkpKSkpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWNhbmRpZGF0ZXMgKCkK ICAob3IgYWMtc3ltYm9scy1jYWNoZQogICAgICAoc2V0cSBhYy1zeW1ib2xzLWNhY2hlCiAgICAg ICAgICAgIChsb29wIGZvciB4IGJlaW5nIHRoZSBzeW1ib2xzCiAgICAgICAgICAgICAgICAgIGlm IChvciAoZmJvdW5kcCB4KQogICAgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcCB4KQogICAg ICAgICAgICAgICAgICAgICAgICAgKHN5bWJvbC1wbGlzdCB4KSkKICAgICAgICAgICAgICAgICAg Y29sbGVjdCAoc3ltYm9sLW5hbWUgeCkpKSkpCgooYWMtZGVmaW5lLXNvdXJjZSBzeW1ib2xzCiAg JygoY2FuZGlkYXRlcyAuIGFjLXN5bWJvbC1jYW5kaWRhdGVzKQogICAgKGRvY3VtZW50IC4gYWMt c3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gInMiKQogICAgKGNhY2hlKSkpCgo7 OyBMaXNwIGZ1bmN0aW9ucyBzb3VyY2UKKGRlZnZhciBhYy1mdW5jdGlvbnMtY2FjaGUgbmlsKQoo YWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtZnVuY3Rpb25zLWNhY2hlKQoK KGRlZnVuIGFjLWZ1bmN0aW9uLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtZnVuY3Rpb25zLWNhY2hl CiAgICAgIChzZXRxIGFjLWZ1bmN0aW9ucy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3IgeCBi ZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoZmJvdW5kcCB4KQogICAgICAg ICAgICAgICAgICBjb2xsZWN0IChzeW1ib2wtbmFtZSB4KSkpKSkKCihhYy1kZWZpbmUtc291cmNl IGZ1bmN0aW9ucwogICcoKGNhbmRpZGF0ZXMgLiBhYy1mdW5jdGlvbi1jYW5kaWRhdGVzKQogICAg KGRvY3VtZW50IC4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gImYiKQog ICAgKHByZWZpeCAuICIoXFwoXFwoPzpcXHN3XFx8XFxzX1xcKStcXCkiKQogICAgKGNhY2hlKSkp Cgo7OyBMaXNwIHZhcmlhYmxlcyBzb3VyY2UKKGRlZnZhciBhYy12YXJpYWJsZXMtY2FjaGUgbmls KQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtdmFyaWFibGVzLWNhY2hl KQoKKGRlZnVuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtdmFyaWFibGVzLWNh Y2hlCiAgICAgIChzZXRxIGFjLXZhcmlhYmxlcy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3Ig eCBiZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoYm91bmRwIHgpCiAgICAg ICAgICAgICAgICAgIGNvbGxlY3QgKHN5bWJvbC1uYW1lIHgpKSkpKQoKKGFjLWRlZmluZS1zb3Vy Y2UgdmFyaWFibGVzCiAgJygoY2FuZGlkYXRlcyAuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMpCiAg ICAoZG9jdW1lbnQgLiBhYy1zeW1ib2wtZG9jdW1lbnRhdGlvbikKICAgIChzeW1ib2wgLiAidiIp CiAgICAoY2FjaGUpKSkKCjs7IExpc3AgZmVhdHVyZXMgc291cmNlCihkZWZ2YXIgYWMtZW1hY3Mt bGlzcC1mZWF0dXJlcyBuaWwpCihhYy1jbGVhci12YXJpYWJsZS1ldmVyeS0xMC1taW51dGVzICdh Yy1lbWFjcy1saXNwLWZlYXR1cmVzKQoKKGRlZnVuIGFjLWVtYWNzLWxpc3AtZmVhdHVyZS1jYW5k aWRhdGVzICgpCiAgKG9yIGFjLWVtYWNzLWxpc3AtZmVhdHVyZXMKICAgICAgKGlmIChmYm91bmRw ICdmaW5kLWxpYnJhcnktc3VmZml4ZXMpCiAgICAgICAgICAobGV0ICgoc3VmZml4IChjb25jYXQg KHJlZ2V4cC1vcHQgKGZpbmQtbGlicmFyeS1zdWZmaXhlcykgdCkgIlxcJyIpKSkKICAgICAgICAg ICAgKHNldHEgYWMtZW1hY3MtbGlzcC1mZWF0dXJlcwogICAgICAgICAgICAgICAgICAoYXBwZW5k IChtYXBjYXIgJ3ByaW4xLXRvLXN0cmluZyBmZWF0dXJlcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAobG9vcCBmb3IgZGlyIGluIGxvYWQtcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChmaWxlLWRpcmVjdG9yeS1wIGRpcikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcHBlbmQgKGxvb3AgZm9yIGZpbGUgaW4gKGRpcmVjdG9yeS1maWxlcyBkaXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmctbWF0 Y2ggc3VmZml4IGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbGxlY3QgKHN1YnN0cmluZyBmaWxlIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKSkpKSkp KQoKKGFjLWRlZmluZS1zb3VyY2UgZmVhdHVyZXMKICAnKChkZXBlbmRzIGZpbmQtZnVuYykKICAg IChjYW5kaWRhdGVzIC4gYWMtZW1hY3MtbGlzcC1mZWF0dXJlLWNhbmRpZGF0ZXMpCiAgICAocHJl Zml4IC4gInJlcXVpcmUgKydcXChcXCg/Olxcc3dcXHxcXHNfXFwpKlxcKSIpCiAgICAocmVxdWly ZXMgLiAwKSkpCgooZGVmdmFyYWxpYXMgJ2FjLXNvdXJjZS1lbWFjcy1saXNwLWZlYXR1cmVzICdh Yy1zb3VyY2UtZmVhdHVyZXMpCgo7OyBBYmJyZXYgc291cmNlCihhYy1kZWZpbmUtc291cmNlIGFi YnJldgogICcoKGNhbmRpZGF0ZXMgLiAobWFwY2FyICdwb3B1cC14LXRvLXN0cmluZyAoYXBwZW5k ICh2Y29uY2F0IGxvY2FsLWFiYnJldi10YWJsZSBnbG9iYWwtYWJicmV2LXRhYmxlKSBuaWwpKSkK ICAgIChhY3Rpb24gLiBleHBhbmQtYWJicmV2KQogICAgKHN5bWJvbCAuICJhIikKICAgIChjYWNo ZSkpKQoKOzsgRmlsZXMgaW4gY3VycmVudCBkaXJlY3Rvcnkgc291cmNlCihhYy1kZWZpbmUtc291 cmNlIGZpbGVzLWluLWN1cnJlbnQtZGlyCiAgJygoY2FuZGlkYXRlcyAuIChkaXJlY3RvcnktZmls ZXMgZGVmYXVsdC1kaXJlY3RvcnkpKQogICAgKGNhY2hlKSkpCgo7OyBGaWxlbmFtZSBzb3VyY2UK KGRlZnZhciBhYy1maWxlbmFtZS1jYWNoZSBuaWwpCgooZGVmdW4gYWMtZmlsZW5hbWUtY2FuZGlk YXRlICgpCiAgKHVubGVzcyAoZmlsZS1yZWd1bGFyLXAgYWMtcHJlZml4KQogICAgKGlnbm9yZS1l cnJvcnMKICAgICAgKGxvb3Agd2l0aCBkaXIgPSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBhYy1wcmVm aXgpCiAgICAgICAgICAgIHdpdGggZmlsZXMgPSAob3IgKGFzc29jLWRlZmF1bHQgZGlyIGFjLWZp bGVuYW1lLWNhY2hlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlcyAo ZGlyZWN0b3J5LWZpbGVzIGRpciBuaWwgIl5bXi5dIikpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgZGlyIGZpbGVzKSBhYy1maWxlbmFtZS1jYWNoZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKSkKICAgICAgICAgICAgZm9yIGZpbGUgaW4g ZmlsZXMKICAgICAgICAgICAgZm9yIHBhdGggPSAoY29uY2F0IGRpciBmaWxlKQogICAgICAgICAg ICBjb2xsZWN0IChpZiAoZmlsZS1kaXJlY3RvcnktcCBwYXRoKQogICAgICAgICAgICAgICAgICAg ICAgICAoY29uY2F0IHBhdGggIi8iKQogICAgICAgICAgICAgICAgICAgICAgcGF0aCkpKSkpCgoo YWMtZGVmaW5lLXNvdXJjZSBmaWxlbmFtZQogICcoKGluaXQgLiAoc2V0cSBhYy1maWxlbmFtZS1j YWNoZSBuaWwpKQogICAgKGNhbmRpZGF0ZXMgLiBhYy1maWxlbmFtZS1jYW5kaWRhdGUpCiAgICAo cHJlZml4IC4gdmFsaWQtZmlsZSkKICAgIChyZXF1aXJlcyAuIDApCiAgICAoYWN0aW9uIC4gYWMt c3RhcnQpCiAgICAobGltaXQgLiBuaWwpKSkKCjs7IERpY3Rpb25hcnkgc291cmNlCihhYy1kZWZp bmUtc291cmNlIGRpY3Rpb25hcnkKICAnKChjYW5kaWRhdGVzIC4gYWMtYnVmZmVyLWRpY3Rpb25h cnkpCiAgICAoc3ltYm9sIC4gImQiKSkpCgoocHJvdmlkZSAnYXV0by1jb21wbGV0ZSkKOzs7IGF1 dG8tY29tcGxldGUuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_-- From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 10 14:18:43 2011 Received: (at control) by debbugs.gnu.org; 10 Dec 2011 19:18:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZSRW-0003tU-M5 for submit@debbugs.gnu.org; Sat, 10 Dec 2011 14:18:42 -0500 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZSRO-0003tH-Lc for control@debbugs.gnu.org; Sat, 10 Dec 2011 14:18:41 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1RZSQN-0007BZ-SG for control@debbugs.gnu.org; Sat, 10 Dec 2011 14:17:32 -0500 Date: Sat, 10 Dec 2011 14:17:31 -0500 Message-Id: Subject: control message for bug 10263 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -6.4 (------) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.4 (------) merge 10159 10263 severity 10263 important From unknown Sat Aug 16 12:46:04 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: yagnesh raghava Subject: bug#10263: closed (Re: bug#10263: 24.0.92; emacs crash with auto-complete plugin) Message-ID: References: <831uscmc8b.fsf@gnu.org> X-Gnu-PR-Message: they-closed 10263 X-Gnu-PR-Package: emacs Reply-To: 10263@debbugs.gnu.org Date: Sat, 10 Dec 2011 19:59:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1323547142-21510-1" This is a multi-part message in MIME format... ------------=_1323547142-21510-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #10263: 24.0.92; emacs crash with auto-complete plugin which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 10263@debbugs.gnu.org. --=20 10263: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D10263 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1323547142-21510-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 10263-done) by debbugs.gnu.org; 10 Dec 2011 19:58:15 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZT3n-0005Zv-Eo for submit@debbugs.gnu.org; Sat, 10 Dec 2011 14:58:15 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZT3j-0005Zm-Jf for 10263-done@debbugs.gnu.org; Sat, 10 Dec 2011 14:58:13 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0LW000H007BEL200@a-mtaout20.012.net.il> for 10263-done@debbugs.gnu.org; Sat, 10 Dec 2011 21:57:07 +0200 (IST) Received: from HOME-C4E4A596F7 ([77.124.199.182]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0LW000GYM7F647V0@a-mtaout20.012.net.il>; Sat, 10 Dec 2011 21:57:07 +0200 (IST) Date: Sat, 10 Dec 2011 21:57:08 +0200 From: Eli Zaretskii Subject: Re: bug#10263: 24.0.92; emacs crash with auto-complete plugin In-reply-to: X-012-Sender: halo1@inter.net.il To: yagnesh raghava Message-id: <831uscmc8b.fsf@gnu.org> References: X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 10263-done Cc: 10263-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > From: yagnesh raghava > Date: Sat, 10 Dec 2011 10:40:23 +0000 > > emacs crashing on when writing text in telugu-itrans (infact with any > Indian script input method) while auto-complete-mode[1] enabled. Fixed in revision 106658 on the trunk. ------------=_1323547142-21510-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 10 Dec 2011 16:55:43 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZQD5-0000JL-Gb for submit@debbugs.gnu.org; Sat, 10 Dec 2011 11:55:43 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZKga-0000Qm-7F for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:01:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ah-BT for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:44 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RECEIVED_FROM_WINDOWS_HOST autolearn=no version=3.3.2 Received: from lists.gnu.org ([140.186.70.17]:54445) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfV-0006Ab-8q for submit@debbugs.gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Received: from eggs.gnu.org ([140.186.70.92]:42832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfO-0001BN-M3 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:37 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZKfI-00069D-75 for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:30 -0500 Received: from snt0-omc1-s9.snt0.hotmail.com ([65.55.90.20]:16595) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZKfH-000699-LD for bug-gnu-emacs@gnu.org; Sat, 10 Dec 2011 06:00:24 -0500 Received: from SNT125-W35 ([65.55.90.7]) by snt0-omc1-s9.snt0.hotmail.com with Microsoft SMTPSVC(6.0.3790.4675); Sat, 10 Dec 2011 02:40:21 -0800 Message-ID: Content-Type: multipart/mixed; boundary="_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_" X-Originating-IP: [221.115.36.228] From: yagnesh raghava To: Subject: 24.0.92; emacs crash with auto-complete plugin Date: Sat, 10 Dec 2011 10:40:23 +0000 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 10 Dec 2011 10:40:21.0183 (UTC) FILETIME=[1DB444F0:01CCB728] X-detected-operating-system: by eggs.gnu.org: Windows 2000 SP4, XP SP1+ X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Sat, 10 Dec 2011 11:55:38 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: multipart/alternative; boundary="_d185ed41-e455-4c9f-8109-7d2dd82de41c_" --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable emacs crashing on when writing text in telugu-itrans (infact with any Indian script input method) while auto-complete-mode[1] enabled. I can reproduce this on my ubuntu 11.10 and 10.04. here is how one can reproduce. ---------------------------------------------------- emacs -Q =3B start emacs with out any customizations M-x load-file popup.el =3B file attached to this mail M-x load-file auto-complete.el =3B file attached to this mail M-x switch-to-buffer *scratch* RET M-x auto-complete-mode =3B enable auto-complete-mode C-\ telugu-itrans RET =3B change input method to telugu =3B lets type any word twice for eg: nuvvu nuvvu nuvvu nuvvu ---------------------------------------------------- now emacs crashes Footnotes: [1] http://cx4a.org/software/auto-complete/ = --_d185ed41-e455-4c9f-8109-7d2dd82de41c_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
emacs crashing on when writing text in telugu-itrans (infact with any
In= dian script input method) =3B while auto-complete-mode[1] enabled.
<= br>I can reproduce this on my ubuntu 11.10 and 10.04.

here is how on= e can reproduce.
----------------------------------------------------emacs -Q =3B start emacs with out any customizations
M-x load-file popu= p.el =3B file attached to this mail
M-x load-file auto-complete.el =3B f= ile attached to this mail
M-x switch-to-buffer *scratch* RET
M-x auto= -complete-mode =3B enable auto-complete-mode
C-\ telugu-itrans RET =3B c= hange input method to telugu
=3B lets type any word twice for eg: nuvvu = nuvvu
nuvvu nuvvu
---------------------------------------------------= -

now emacs crashes

Footnotes:
[1] =3B http://cx4a.org= /software/auto-complete/

= --_d185ed41-e455-4c9f-8109-7d2dd82de41c_-- --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="popup.el" Ozs7IHBvcHVwLmVsIC0tLSBWaXN1YWwgcG9wdXAgaW50ZXJmYWNlCgo7OyBDb3B5cmlnaHQgKEMp IDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsgQXV0aG9yOiBUb21vaGlybyBNYXRz dXlhbWEgPHRvbW9AY3g0YS5vcmc+Cjs7IEtleXdvcmRzOiBsaXNwCjs7IFZlcnNpb246IDAuNAoK OzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKOzsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKOzsgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KCjs7IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo7OyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgo7OyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCjs7IEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgo7OyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQo7 OyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KCjs7OyBDb21tZW50YXJ5OgoKOzsgCgo7OzsgQ29kZToKCihldmFsLXdo ZW4tY29tcGlsZQogIChyZXF1aXJlICdjbCkpCgoMCgo7OyBVdGlsaXRpZXMKCihkZWZ2YXIgcG9w dXAtdXNlLW9wdGltaXplZC1jb2x1bW4tY29tcHV0YXRpb24gdAogICJVc2Ugb3B0aW1pemVkIGNv bHVtbiBjb21wdXRhdGlvbiByb3V0aW5lLgpJZiB0aGVyZSBpcyBhIHByb2JsZW0sIHBsZWFzZSBz ZXQgaXQgdG8gbmlsLiIpCgo7OyBCb3Jyb3dlZCBmcm9tIGFueXRoaW5nLmVsCihkZWZtYWNybyBw b3B1cC1haWYgKHRlc3QtZm9ybSB0aGVuLWZvcm0gJnJlc3QgZWxzZS1mb3JtcykKICAiQW5hcGhv cmljIGlmLiBUZW1wb3JhcnkgdmFyaWFibGUgYGl0JyBpcyB0aGUgcmVzdWx0IG9mIHRlc3QtZm9y bS4iCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKGxldCAoKGl0ICx0ZXN0LWZvcm0pKQogICAg IChpZiBpdCAsdGhlbi1mb3JtICxAZWxzZS1mb3JtcykpKQoKKGRlZnVuIHBvcHVwLXgtdG8tc3Ry aW5nICh4KQogICJDb252ZXJ0IGFueSBvYmplY3QgdG8gc3RyaW5nIGVmZmVjaWVudGx5LgpUaGlz IGlzIGZhc3RlciB0aGFuIHByaW4xLXRvLXN0cmluZyBpbiBtYW55IGNhc2VzLiIKICAodHlwZWNh c2UgeAogICAgKHN0cmluZyB4KQogICAgKHN5bWJvbCAoc3ltYm9sLW5hbWUgeCkpCiAgICAoaW50 ZWdlciAobnVtYmVyLXRvLXN0cmluZyB4KSkKICAgIChmbG9hdCAobnVtYmVyLXRvLXN0cmluZyB4 KSkKICAgICh0IChmb3JtYXQgIiVzIiB4KSkpKQoKKGRlZnVuIHBvcHVwLXN1YnN0cmluZy1ieS13 aWR0aCAoc3RyaW5nIHdpZHRoKQogICJSZXR1cm4gY29ucyBvZiBzdWJzdHJpbmcgYW5kIHJlbWFp bmluZyBzdHJpbmcgYnkgYFdJRFRIJy4iCiAgOzsgRXhwYW5kIHRhYnMgd2l0aCA0IHNwYWNlcwog IChzZXRxIHN0cmluZyAocmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nICJcdCIgIiAgICAiIHN0cmlu ZykpCiAgKGxvb3Agd2l0aCBsZW4gPSAobGVuZ3RoIHN0cmluZykKICAgICAgICB3aXRoIHcgPSAw CiAgICAgICAgZm9yIGwgZnJvbSAwCiAgICAgICAgZm9yIGMgaW4gKGFwcGVuZCBzdHJpbmcgbmls KQogICAgICAgIHdoaWxlICg8PSAoaW5jZiB3IChjaGFyLXdpZHRoIGMpKSB3aWR0aCkKICAgICAg ICBmaW5hbGx5IHJldHVybgogICAgICAgIChpZiAoPCBsIGxlbikKICAgICAgICAgICAgKGNvbnMg KHN1YnN0cmluZyBzdHJpbmcgMCBsKSAoc3Vic3RyaW5nIHN0cmluZyBsKSkKICAgICAgICAgIChs aXN0IHN0cmluZykpKSkKCihkZWZ1biBwb3B1cC1maWxsLXN0cmluZyAoc3RyaW5nICZvcHRpb25h bCB3aWR0aCBtYXgtd2lkdGgganVzdGlmeSBzcXVlZXplKQogICJTcGxpdCBTVFJJTkcgaW50byBm aXhlZCB3aWR0aCBzdHJpbmdzIGFuZCByZXR1cm4gYSBjb25zIGNlbGwgbGlrZQpcKFdJRFRIIC4g Uk9XUykuIEhlcmUsIHRoZSBjYXIgV0lEVEggaW5kaWNhdGVzIHRoZSBhY3R1YWwgbWF4aW0gd2lk dGggb2YgUk9XUy4KClRoZSBhcmd1bWVudCBXSURUSCBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIGZp bGxpbmcgZWFjaCBwYXJhZ3JhcGguIFdJRFRIIG5pbAptZWFucyBkb24ndCBwZXJmb3JtIGFueSBq dXN0aWZpY2F0aW9uIGFuZCB3b3JkIHdyYXAuIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uCmRvZXNu J3QgYWRkIGFueSBwYWRkaW5nIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBlYWNoIHJvdy4KCk1B WC1XSURUSCwgaWYgV0lEVEggaXMgbmlsLCBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9m IGNvbHVtbnMuCgpUaGUgb3B0aW9uYWwgZm91cnRoIGFyZ3VtZW50IEpVU1RJRlkgc3BlY2lmaWVz IHdoaWNoIGtpbmQgb2YganVzdGlmaWNhdGlvbgp0byBkbzogYGZ1bGwnLCBgbGVmdCcsIGByaWdo dCcsIGBjZW50ZXInLCBvciBgbm9uZScgKGVxdWl2YWxlbnQgdG8gbmlsKS4KQSB2YWx1ZSBvZiB0 IG1lYW5zIGhhbmRsZSBlYWNoIHBhcmFncmFwaCBhcyBzcGVjaWZpZWQgYnkgaXRzIHRleHQgcHJv cGVydGllcy4KClNRVUVFWkUgbmlsIG1lYW5zIGxlYXZlIHdoaXRlc3BhY2VzIG90aGVyIHRoYW4g bGluZSBicmVha3MgdW50b3VjaGVkLiIKICAoaWYgKGVxIHdpZHRoIDApCiAgICAgIChlcnJvciAi Q2FuJ3QgZmlsbCBzdHJpbmcgd2l0aCAwIHdpZHRoIikpCiAgKGlmIHdpZHRoCiAgICAgIChzZXRx IG1heC13aWR0aCB3aWR0aCkpCiAgKHdpdGgtdGVtcC1idWZmZXIKICAgIChsZXQgKCh0YWItd2lk dGggNCkKICAgICAgICAgIChmaWxsLWNvbHVtbiB3aWR0aCkKICAgICAgICAgIChsZWZ0LW1hcmdp biAwKQogICAgICAgICAgKGtpbnNva3UtbGltaXQgMSkKICAgICAgICAgIGluZGVudC10YWJzLW1v ZGUKICAgICAgICAgIHJvdyByb3dzKQogICAgICAoaW5zZXJ0IHN0cmluZykKICAgICAgKHVudGFi aWZ5IChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAoaWYgd2lkdGgKICAgICAgICAgIChm aWxsLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBqdXN0aWZ5IChub3Qgc3F1ZWV6ZSkp KQogICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAoc2V0cSB3aWR0aCAwKQogICAg ICAod2hpbGUgKHByb2cyCiAgICAgICAgICAgICAgICAgKGxldCAoKGxpbmUgKGJ1ZmZlci1zdWJz dHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KSAocHJvZ24gKGVuZC1v Zi1saW5lKSAocG9pbnQpKSkpKQogICAgICAgICAgICAgICAgICAgKGlmIG1heC13aWR0aAogICAg ICAgICAgICAgICAgICAgICAgICh3aGlsZSAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSByb3cgKHRydW5jYXRlLXN0cmluZy10by13aWR0aCBsaW5lIG1heC13aWR0 aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAobWF4IHdpZHRo IChzdHJpbmctd2lkdGggcm93KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1 c2ggcm93IHJvd3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChub3QgKD0g KGxlbmd0aCByb3cpIChsZW5ndGggbGluZSkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBsaW5lIChzdWJzdHJpbmcgbGluZSAobGVuZ3RoIHJvdykpKSkpKQogICAg ICAgICAgICAgICAgICAgICAoc2V0cSB3aWR0aCAobWF4IHdpZHRoIChzdHJpbmctd2lkdGggbGlu ZSkpKQogICAgICAgICAgICAgICAgICAgICAocHVzaCBsaW5lIHJvd3MpKSkKICAgICAgICAgICAg ICAgICAoPCAocG9pbnQpIChwb2ludC1tYXgpKQogICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9m LWxpbmUgMikpKQogICAgICAoY29ucyB3aWR0aCAobnJldmVyc2Ugcm93cykpKSkpCgooZGVmbWFj cm8gcG9wdXAtc2F2ZS1idWZmZXItc3RhdGUgKCZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVu dCAwKSkKICBgKHNhdmUtZXhjdXJzaW9uCiAgICAgKGxldCAoKGJ1ZmZlci11bmRvLWxpc3QgdCkK ICAgICAgICAgICAoYnVmZmVyLXJlYWQtb25seSBuaWwpCiAgICAgICAgICAgKG1vZGlmaWVkIChi dWZmZXItbW9kaWZpZWQtcCkpKQogICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgKHBy b2duICxAYm9keSkKICAgICAgICAgKHNldC1idWZmZXItbW9kaWZpZWQtcCBtb2RpZmllZCkpKSkp CiAgCihkZWZ1biBwb3B1cC1wcmVmZXJyZWQtd2lkdGggKGxpc3QpCiAgIlJldHVybiBwcmVmZXJy ZWQgd2lkdGggb2YgcG9wdXAgdG8gc2hvdyBgTElTVCcgYmVhdXRpZnVsbHkuIgogIChsb29wIHdp dGggdGFiLXdpZHRoID0gNAogICAgICAgIGZvciBpdGVtIGluIGxpc3QKICAgICAgICBmb3Igc3Vt bWFyeSA9IChwb3B1cC1pdGVtLXN1bW1hcnkgaXRlbSkKICAgICAgICBtYXhpbWl6ZSAoc3RyaW5n LXdpZHRoIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKSkgaW50byB3aWR0aAogICAgICAgIGlmIChz dHJpbmdwIHN1bW1hcnkpCiAgICAgICAgbWF4aW1pemUgKCsgKHN0cmluZy13aWR0aCBzdW1tYXJ5 KSAyKSBpbnRvIHN1bW1hcnktd2lkdGgKICAgICAgICBmaW5hbGx5IHJldHVybiAoKiAoY2VpbGlu ZyAoLyAoKyAob3Igd2lkdGggMCkgKG9yIHN1bW1hcnktd2lkdGggMCkpIDEwLjApKSAxMCkpKQoK Ozsgd2luZG93LWZ1bGwtd2lkdGgtcCBpcyBub3QgZGVmaW5lZCBpbiBFbWFjcyAyMi4xCihkZWZ1 biBwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wICgmb3B0aW9uYWwgd2luZG93KQogIChpZiAoZmJv dW5kcCAnd2luZG93LWZ1bGwtd2lkdGgtcCkKICAgICAgKHdpbmRvdy1mdWxsLXdpZHRoLXAgd2lu ZG93KQogICAgKD0gKHdpbmRvdy13aWR0aCB3aW5kb3cpIChmcmFtZS13aWR0aCAod2luZG93LWZy YW1lIChvciB3aW5kb3cgKHNlbGVjdGVkLXdpbmRvdykpKSkpKSkKCjs7IHRydW5jYXRlZC1wYXJ0 aWFsLXdpZHRoLXdpbmRvdy1wIGlzIG5vdCBkZWZpbmVkIGluIEVtYWNzIDIyCihkZWZ1biBwb3B1 cC10cnVuY2F0ZWQtcGFydGlhbC13aWR0aC13aW5kb3ctcCAoJm9wdGlvbmFsIHdpbmRvdykKICAo dW5sZXNzIHdpbmRvdwogICAgKHNldHEgd2luZG93IChzZWxlY3RlZC13aW5kb3cpKSkKICAodW5s ZXNzIChwb3B1cC13aW5kb3ctZnVsbC13aWR0aC1wIHdpbmRvdykKICAgIChsZXQgKCh0LXAtdy13 IChidWZmZXItbG9jYWwtdmFsdWUgJ3RydW5jYXRlLXBhcnRpYWwtd2lkdGgtd2luZG93cwoJCQkJ ICAgICAgICh3aW5kb3ctYnVmZmVyIHdpbmRvdykpKSkKICAgICAgKGlmIChpbnRlZ2VycCB0LXAt dy13KQoJICAoPCAod2luZG93LXdpZHRoIHdpbmRvdykgdC1wLXctdykKCXQtcC13LXcpKSkpCgoo ZGVmdW4gcG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4gKCkKICAob3IgKHdoZW4gKGFuZCBw b3B1cC11c2Utb3B0aW1pemVkLWNvbHVtbi1jb21wdXRhdGlvbgogICAgICAgICAgICAgICAgIChl cSAod2luZG93LWhzY3JvbGwpIDApKQogICAgICAgIChsZXQgKChjdXJyZW50LWNvbHVtbiAoY3Vy cmVudC1jb2x1bW4pKSkKICAgICAgICAgIChpZiAob3IgKHBvcHVwLXRydW5jYXRlZC1wYXJ0aWFs LXdpZHRoLXdpbmRvdy1wKQogICAgICAgICAgICAgICAgICB0cnVuY2F0ZS1saW5lcwogICAgICAg ICAgICAgICAgICAoPCBjdXJyZW50LWNvbHVtbiAod2luZG93LXdpZHRoKSkpCiAgICAgICAgICAg ICAgY3VycmVudC1jb2x1bW4pKSkKICAgICAgKGNhciAocG9zbi1jb2wtcm93IChwb3NuLWF0LXBv aW50KSkpKSkKCihkZWZ1biBwb3B1cC1sYXN0LWxpbmUtb2YtYnVmZmVyLXAgKCkKICAoc2F2ZS1l eGN1cnNpb24gKGVuZC1vZi1saW5lKSAoLz0gKGZvcndhcmQtbGluZSkgMCkpKQoKKGRlZnVuIHBv cHVwLWxvb2t1cC1rZXktYnktZXZlbnQgKGZ1bmN0aW9uIGV2ZW50KQogIChvciAoZnVuY2FsbCBm dW5jdGlvbiAodmVjdG9yIGV2ZW50KSkKICAgICAgKGlmIChzeW1ib2xwIGV2ZW50KQogICAgICAg ICAgKHBvcHVwLWFpZiAoZ2V0IGV2ZW50ICdldmVudC1zeW1ib2wtZWxlbWVudC1tYXNrKQogICAg ICAgICAgICAgIChmdW5jYWxsIGZ1bmN0aW9uICh2ZWN0b3IgKGxvZ2lvciAob3IgKGdldCAoY2Fy IGl0KSAnYXNjaWktY2hhcmFjdGVyKSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoY2FkciBpdCkpKSkpKSkpCgoMCgo7OyBQb3B1cCBjb21tb24KCihk ZWZncm91cCBwb3B1cCBuaWwKICAiVmlzdWFsIHBvcHVwIGludGVyZmFjZSIKICA6Z3JvdXAgJ2xp c3AKICA6cHJlZml4ICJwb3B1cC0iKQoKKGRlZmZhY2UgcG9wdXAtZmFjZQogICcoKHQgKDpiYWNr Z3JvdW5kICJsaWdodGdyYXkiIDpmb3JlZ3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9w dXAuIgogIDpncm91cCAncG9wdXApCgooZGVmZmFjZSBwb3B1cC1zY3JvbGwtYmFyLWZvcmVncm91 bmQtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJibGFjayIpKSkKICAiRm9yZWdyb3VuZCBmYWNl IGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZmZhY2UgcG9wdXAtc2Nyb2xs LWJhci1iYWNrZ3JvdW5kLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAiZ3JheSIpKSkKICAiQmFj a2dyb3VuZCBmYWNlIGZvciBzY3JvbGwtYmFyLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBw b3B1cC1pbnN0YW5jZXMgbmlsCiAgIlBvcHVwIGluc3RhbmNlcy4iKQoKKGRlZnZhciBwb3B1cC1z Y3JvbGwtYmFyLWZvcmVncm91bmQtY2hhcgogIChwcm9wZXJ0aXplICIgIiAnZmFjZSAncG9wdXAt c2Nyb2xsLWJhci1mb3JlZ3JvdW5kLWZhY2UpCiAgIkZvcmVncm91bmQgY2hhcmFjdGVyIGZvciBz Y3JvbGwtYmFyLiIpCgooZGVmdmFyIHBvcHVwLXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyCiAg KHByb3BlcnRpemUgIiAiICdmYWNlICdwb3B1cC1zY3JvbGwtYmFyLWJhY2tncm91bmQtZmFjZSkK ICAiQmFja2dyb3VuZCBjaGFyYWN0ZXIgZm9yIHNjcm9sbC1iYXIuIikKCihkZWZzdHJ1Y3QgcG9w dXAKICBwb2ludCByb3cgY29sdW1uIHdpZHRoIGhlaWdodCBtaW4taGVpZ2h0IGRpcmVjdGlvbiBv dmVybGF5cwogIHBhcmVudCBkZXB0aAogIGZhY2Ugc2VsZWN0aW9uLWZhY2UKICBtYXJnaW4tbGVm dCBtYXJnaW4tcmlnaHQgbWFyZ2luLWxlZnQtY2FuY2VsIHNjcm9sbC1iYXIgc3ltYm9sCiAgY3Vy c29yIG9mZnNldCBzY3JvbGwtdG9wIGN1cnJlbnQtaGVpZ2h0IGxpc3QgbmV3bGluZXMKICBwYXR0 ZXJuIG9yaWdpbmFsLWxpc3QpCgooZGVmdW4gcG9wdXAtaXRlbS1wcm9wZXJ0aXplIChpdGVtICZy ZXN0IHByb3BlcnRpZXMpCiAgIlNhbWUgdG8gYHByb3BlcnRpemVgIGJ1dCB0aGlzIGF2b2lkcyBv dmVycmlkaW5nIGV4aXN0ZWQgdmFsdWUgd2l0aCBgbmlsYCBwcm9wZXJ0eS4iCiAgKGxldCAocHJv cHMpCiAgICAod2hpbGUgcHJvcGVydGllcwogICAgICAod2hlbiAoY2FkciBwcm9wZXJ0aWVzKQog ICAgICAgIChwdXNoIChjYXIgcHJvcGVydGllcykgcHJvcHMpCiAgICAgICAgKHB1c2ggKGNhZHIg cHJvcGVydGllcykgcHJvcHMpKQogICAgICAoc2V0cSBwcm9wZXJ0aWVzIChjZGRyIHByb3BlcnRp ZXMpKSkKICAgIChhcHBseSAncHJvcGVydGl6ZQogICAgICAgICAgIChwb3B1cC14LXRvLXN0cmlu ZyBpdGVtKQogICAgICAgICAgIChucmV2ZXJzZSBwcm9wcykpKSkKCihkZWZ1biBwb3B1cC1pdGVt LXByb3BlcnR5IChpdGVtIHByb3BlcnR5KQogIChpZiAoc3RyaW5ncCBpdGVtKQogICAgICAoZ2V0 LXRleHQtcHJvcGVydHkgMCBwcm9wZXJ0eSBpdGVtKSkpCgooZGVmdW4qIHBvcHVwLW1ha2UtaXRl bSAobmFtZQogICAgICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAg ICAgICAgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVwLWZhY2UKICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGVjdGlvbi1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICBz dWJsaXN0CiAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudAogICAgICAgICAgICAgICAg ICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5KQogICJVdGls aXR5IGZ1bmN0aW9uIHRvIG1ha2UgcG9wdXAgaXRlbS4KU2VlIGFsc28gYHBvcHVwLWl0ZW0tcHJv cGVydGl6ZScuIgogIChwb3B1cC1pdGVtLXByb3BlcnRpemUgbmFtZQogICAgICAgICAgICAgICAg ICAgICAgICAgJ3ZhbHVlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtZmFj ZSBwb3B1cC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0aW9uLWZhY2Ugc2Vs ZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICdkb2N1bWVudCBkb2N1bWVudAog ICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAgICAgICAgICAg ICAgICAgICdzdW1tYXJ5IHN1bW1hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJsaXN0 IHN1Ymxpc3QpKQoKKGRlZnN1YnN0IHBvcHVwLWl0ZW0tdmFsdWUgKGl0ZW0pICAgICAgICAgICAg ICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkgaXRlbSAndmFsdWUpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS12YWx1ZS1vci1zZWxmIChpdGVtKSAgICAgICAob3IgKHBvcHVwLWl0ZW0tdmFsdWUgaXRlbSkg aXRlbSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXBvcHVwLWZhY2UgKGl0ZW0pICAgICAgICAgIChw b3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3BvcHVwLWZhY2UpKQooZGVmc3Vic3QgcG9wdXAtaXRl bS1zZWxlY3Rpb24tZmFjZSAoaXRlbSkgICAgICAocG9wdXAtaXRlbS1wcm9wZXJ0eSBpdGVtICdz ZWxlY3Rpb24tZmFjZSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLWRvY3VtZW50IChpdGVtKSAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ2RvY3VtZW50KSkKKGRlZnN1YnN0IHBv cHVwLWl0ZW0tc3VtbWFyeSAoaXRlbSkgICAgICAgICAgICAgKHBvcHVwLWl0ZW0tcHJvcGVydHkg aXRlbSAnc3VtbWFyeSkpCihkZWZzdWJzdCBwb3B1cC1pdGVtLXN5bWJvbCAoaXRlbSkgICAgICAg ICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0ZW0gJ3N5bWJvbCkpCihkZWZzdWJzdCBwb3B1 cC1pdGVtLXN1Ymxpc3QgKGl0ZW0pICAgICAgICAgICAgIChwb3B1cC1pdGVtLXByb3BlcnR5IGl0 ZW0gJ3N1Ymxpc3QpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tZG9jdW1lbnRhdGlvbiAoaXRlbSkKICAo bGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50IGl0ZW0pKSkKICAgIChpZiAoZnVuY3Rpb25w IGRvYykKICAgICAgICAoc2V0cSBkb2MgKGZ1bmNhbGwgZG9jIChwb3B1cC1pdGVtLXZhbHVlLW9y LXNlbGYgaXRlbSkpKSkKICAgIGRvYykpCgooZGVmdW4gcG9wdXAtaXRlbS1zaG93LWhlbHAtMSAo aXRlbSkKICAobGV0ICgoZG9jIChwb3B1cC1pdGVtLWRvY3VtZW50YXRpb24gaXRlbSkpKQogICAg KHdoZW4gZG9jCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAi ICpQb3B1cCBIZWxwKiIpCiAgICAgICAgKGVyYXNlLWJ1ZmZlcikKICAgICAgICAoaW5zZXJ0IGRv YykKICAgICAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICAgICAgIChkaXNwbGF5LWJ1ZmZl ciAoY3VycmVudC1idWZmZXIpKSkKICAgICAgdCkpKQoKKGRlZnVuIHBvcHVwLWl0ZW0tc2hvdy1o ZWxwIChpdGVtICZvcHRpb25hbCBwZXJzaXN0KQogICh3aGVuIGl0ZW0KICAgIChpZiAobm90IHBl cnNpc3QpCiAgICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICAgKHdoZW4gKHBv cHVwLWl0ZW0tc2hvdy1oZWxwLTEgaXRlbSkKICAgICAgICAgICAgKGJsb2NrIG5pbAogICAgICAg ICAgICAgICh3aGlsZSB0CiAgICAgICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMp CiAgICAgICAgICAgICAgICAobGV0ICgoa2V5IChyZWFkLWtleS1zZXF1ZW5jZS12ZWN0b3Igbmls KSkpCiAgICAgICAgICAgICAgICAgIChjYXNlIChrZXktYmluZGluZyBrZXkpCiAgICAgICAgICAg ICAgICAgICAgKCdzY3JvbGwtb3RoZXItd2luZG93CiAgICAgICAgICAgICAgICAgICAgIChzY3Jv bGwtb3RoZXItd2luZG93KSkKICAgICAgICAgICAgICAgICAgICAoJ3Njcm9sbC1vdGhlci13aW5k b3ctZG93bgogICAgICAgICAgICAgICAgICAgICAoc2Nyb2xsLW90aGVyLXdpbmRvdy1kb3duIG5p bCkpCiAgICAgICAgICAgICAgICAgICAgKHQKICAgICAgICAgICAgICAgICAgICAgKHNldHEgdW5y ZWFkLWNvbW1hbmQtZXZlbnRzIChhcHBlbmQga2V5IHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAg ICAgICAgICAgICAgICAgICAgIChyZXR1cm4pKSkpKSkpKQogICAgICAocG9wdXAtaXRlbS1zaG93 LWhlbHAtMSBpdGVtKSkpKQoKKGRlZnVuIHBvcHVwLXNldC1saXN0IChwb3B1cCBsaXN0KQogIChw b3B1cC1zZXQtZmlsdGVyZWQtbGlzdCBwb3B1cCBsaXN0KQogIChzZXRmIChwb3B1cC1wYXR0ZXJu IHBvcHVwKSBuaWwpCiAgKHNldGYgKHBvcHVwLW9yaWdpbmFsLWxpc3QgcG9wdXApIGxpc3QpKQog IAooZGVmdW4gcG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgKHBvcHVwIGxpc3QpCiAgKHNldGYgKHBv cHVwLWxpc3QgcG9wdXApIGxpc3QKICAgICAgICAocG9wdXAtb2Zmc2V0IHBvcHVwKSAoaWYgKD4g KHBvcHVwLWRpcmVjdGlvbiBwb3B1cCkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1heCAoLSAocG9wdXAtaGVpZ2h0 IHBvcHVwKSAobGVuZ3RoIGxpc3QpKSAwKSkpKQoKKGRlZnVuIHBvcHVwLXNlbGVjdGVkLWl0ZW0g KHBvcHVwKQogIChudGggKHBvcHVwLWN1cnNvciBwb3B1cCkgKHBvcHVwLWxpc3QgcG9wdXApKSkK CihkZWZ1biBwb3B1cC1zZWxlY3RlZC1saW5lIChwb3B1cCkKICAoLSAocG9wdXAtY3Vyc29yIHBv cHVwKSAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWxpbmUtb3Zlcmxh eSAocG9wdXAgbGluZSkKICAoYXJlZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIGxpbmUpKQoKKGRl ZnVuIHBvcHVwLXNlbGVjdGVkLWxpbmUtb3ZlcmxheSAocG9wdXApCiAgKHBvcHVwLWxpbmUtb3Zl cmxheSBwb3B1cCAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLWhp ZGUtbGluZSAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1vdmVybGF5 IHBvcHVwIGxpbmUpKSkKICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAg IChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgbmlsKSkpCgooZGVmdW4gcG9wdXAt bGluZS1oaWRkZW4tcCAocG9wdXAgbGluZSkKICAobGV0ICgob3ZlcmxheSAocG9wdXAtbGluZS1v dmVybGF5IHBvcHVwIGxpbmUpKSkKICAgIChhbmQgKGVxIChvdmVybGF5LWdldCBvdmVybGF5ICdk aXNwbGF5KSBuaWwpCiAgICAgICAgIChlcSAob3ZlcmxheS1nZXQgb3ZlcmxheSAnYWZ0ZXItc3Ry aW5nKSBuaWwpKSkpCgooZGVmdW4gcG9wdXAtc2V0LWxpbmUtaXRlbSAocG9wdXAgbGluZSBpdGVt IGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBzeW1ib2wgc3Vt bWFyeSkKICAobGV0KiAoKG92ZXJsYXkgKHBvcHVwLWxpbmUtb3ZlcmxheSBwb3B1cCBsaW5lKSkK ICAgICAgICAgKGNvbnRlbnQgKHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyBwb3B1cCAocG9wdXAt eC10by1zdHJpbmcgaXRlbSkgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHN5bWJvbCBzdW1tYXJ5 KSkKICAgICAgICAgKHN0YXJ0IDApCiAgICAgICAgIChwcmVmaXggKG92ZXJsYXktZ2V0IG92ZXJs YXkgJ3ByZWZpeCkpCiAgICAgICAgIChwb3N0Zml4IChvdmVybGF5LWdldCBvdmVybGF5ICdwb3N0 Zml4KSkKICAgICAgICAgZW5kKQogICAgOzsgT3ZlcmxhcCBmYWNlIHByb3BlcnRpZXMKICAgIChp ZiAoZ2V0LXRleHQtcHJvcGVydHkgc3RhcnQgJ2ZhY2UgY29udGVudCkKICAgICAgICAoc2V0cSBz dGFydCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkK ICAgICh3aGlsZSAoYW5kIHN0YXJ0IChzZXRxIGVuZCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hh bmdlIHN0YXJ0ICdmYWNlIGNvbnRlbnQpKSkKICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IHN0YXJ0 IGVuZCAnZmFjZSBmYWNlIGNvbnRlbnQpCiAgICAgIChzZXRxIHN0YXJ0IChuZXh0LXNpbmdsZS1w cm9wZXJ0eS1jaGFuZ2UgZW5kICdmYWNlIGNvbnRlbnQpKSkKICAgIChpZiBzdGFydAogICAgICAg IChwdXQtdGV4dC1wcm9wZXJ0eSBzdGFydCAobGVuZ3RoIGNvbnRlbnQpICdmYWNlIGZhY2UgY29u dGVudCkpCiAgICAodW5sZXNzIChvdmVybGF5LWdldCBvdmVybGF5ICdkYW5nbGUpCiAgICAgIChv dmVybGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IChjb25jYXQgcHJlZml4IChzdWJzdHJpbmcgY29u dGVudCAwIDEpKSkKICAgICAgKHNldHEgcHJlZml4IG5pbAogICAgICAgICAgICBjb250ZW50IChj b25jYXQgKHN1YnN0cmluZyBjb250ZW50IDEpKSkpCiAgICAob3ZlcmxheS1wdXQgb3ZlcmxheQog ICAgICAgICAgICAgICAgICdhZnRlci1zdHJpbmcKICAgICAgICAgICAgICAgICAoY29uY2F0IHBy ZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudAogICAgICAgICAgICAgICAgICAg ICAgICAgc2Nyb2xsLWJhci1jaGFyCiAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0Zml4KSkp KQoKKGRlZnVuIHBvcHVwLWNyZWF0ZS1saW5lLXN0cmluZyAocG9wdXAgc3RyaW5nIG1hcmdpbi1s ZWZ0IG1hcmdpbi1yaWdodCBzeW1ib2wgc3VtbWFyeSkKICAobGV0KiAoKHBvcHVwLXdpZHRoIChw b3B1cC13aWR0aCBwb3B1cCkpCiAgICAgICAgIChzdW1tYXJ5LXdpZHRoIChzdHJpbmctd2lkdGgg c3VtbWFyeSkpCiAgICAgICAgIChzdHJpbmcgKGNhciAocG9wdXAtc3Vic3RyaW5nLWJ5LXdpZHRo IHN0cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo LSBwb3B1cC13aWR0aAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKD4gc3VtbWFyeS13aWR0aCAwKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgc3VtbWFyeS13aWR0aCAyKQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkpKQogICAg ICAgICAoc3RyaW5nLXdpZHRoIChzdHJpbmctd2lkdGggc3RyaW5nKSkpCiAgICAoY29uY2F0IG1h cmdpbi1sZWZ0CiAgICAgICAgICAgIHN0cmluZwogICAgICAgICAgICAobWFrZS1zdHJpbmcgKG1h eCAoLSBwb3B1cC13aWR0aCBzdHJpbmctd2lkdGggc3VtbWFyeS13aWR0aCkgMCkgPyApCiAgICAg ICAgICAgIHN1bW1hcnkKICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAgIG1hcmdpbi1yaWdo dCkpKQoKKGRlZnVuIHBvcHVwLWxpdmUtcCAocG9wdXApCiAgKGFuZCBwb3B1cCAocG9wdXAtb3Zl cmxheXMgcG9wdXApIHQpKQoKKGRlZnVuIHBvcHVwLWNoaWxkLXBvaW50IChwb3B1cCAmb3B0aW9u YWwgb2Zmc2V0KQogIChvdmVybGF5LWVuZCAocG9wdXAtbGluZS1vdmVybGF5IHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIG9mZnNldAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAocG9wdXAtc2VsZWN0ZWQtbGluZSBwb3B1cCkpKSkpCgoo ZGVmdW4qIHBvcHVwLWNyZWF0ZSAocG9pbnQKICAgICAgICAgICAgICAgICAgICAgIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICBoZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICZrZXkKICAg ICAgICAgICAgICAgICAgICAgIG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAgICAgIGFyb3Vu ZAogICAgICAgICAgICAgICAgICAgICAgKGZhY2UgJ3BvcHVwLWZhY2UpCiAgICAgICAgICAgICAg ICAgICAgICAoc2VsZWN0aW9uLWZhY2UgZmFjZSkKICAgICAgICAgICAgICAgICAgICAgIHNjcm9s bC1iYXIKICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAg ICAgICBtYXJnaW4tcmlnaHQKICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbAogICAgICAgICAg ICAgICAgICAgICAgcGFyZW50CiAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0KQog IChvciBtYXJnaW4tbGVmdCAoc2V0cSBtYXJnaW4tbGVmdCAwKSkKICAob3IgbWFyZ2luLXJpZ2h0 IChzZXRxIG1hcmdpbi1yaWdodCAwKSkKICAodW5sZXNzIHBvaW50CiAgICAoc2V0cSBwb2ludAog ICAgICAgICAgKGlmIHBhcmVudCAocG9wdXAtY2hpbGQtcG9pbnQgcGFyZW50IHBhcmVudC1vZmZz ZXQpIChwb2ludCkpKSkKCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoZ290by1jaGFyIHBvaW50KQog ICAgKGxldCogKChyb3cgKGxpbmUtbnVtYmVyLWF0LXBvcykpCiAgICAgICAgICAgKGNvbHVtbiAo cG9wdXAtY3VycmVudC1waHlzaWNhbC1jb2x1bW4pKQogICAgICAgICAgIChvdmVybGF5cyAobWFr ZS12ZWN0b3IgaGVpZ2h0IG5pbCkpCiAgICAgICAgICAgKHBvcHVwLXdpZHRoICgrIHdpZHRoCiAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzY3JvbGwtYmFyIDEgMCkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBzeW1ib2wgMiAwKSkpCiAg ICAgICAgICAgbWFyZ2luLWxlZnQtY2FuY2VsCiAgICAgICAgICAgKHdpbmRvdyAoc2VsZWN0ZWQt d2luZG93KSkKICAgICAgICAgICAod2luZG93LXN0YXJ0ICh3aW5kb3ctc3RhcnQpKQogICAgICAg ICAgICh3aW5kb3ctaHNjcm9sbCAod2luZG93LWhzY3JvbGwpKQogICAgICAgICAgICh3aW5kb3ct d2lkdGggKHdpbmRvdy13aWR0aCkpCiAgICAgICAgICAgKHJpZ2h0ICgrIGNvbHVtbiBwb3B1cC13 aWR0aCkpCiAgICAgICAgICAgKG92ZXJmbG93IChhbmQgKD4gcmlnaHQgd2luZG93LXdpZHRoKQog ICAgICAgICAgICAgICAgICAgICAgICAgICg+PSByaWdodCBwb3B1cC13aWR0aCkpKQogICAgICAg ICAgIChmb2xkYWJsZSAoYW5kIChudWxsIHBhcmVudCkKICAgICAgICAgICAgICAgICAgICAgICAg ICAoPj0gY29sdW1uIHBvcHVwLXdpZHRoKSkpCiAgICAgICAgICAgKGRpcmVjdGlvbiAob3IKICAg ICAgICAgICAgICAgICAgICAgICA7OyBDdXJyZW50bHkgdGhlIGRpcmVjdGlvbiBvZiBjYXNjYWRl IHBvcHVwIHdvbid0IGJlIGNoYW5nZWQKICAgICAgICAgICAgICAgICAgICAgICAoYW5kIHBhcmVu dCAocG9wdXAtZGlyZWN0aW9uIHBhcmVudCkpCgogICAgICAgICAgICAgICAgICAgICAgIDs7IENh bGN1bGF0ZSBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGFuZCAoPiByb3cg aGVpZ2h0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg+IGhlaWdodCAoLSAobWF4 IDEgKC0gKHdpbmRvdy1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoaWYgbW9kZS1saW5lLWZvcm1hdCAxIDApCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgaGVhZGVyLWxp bmUtZm9ybWF0IDEgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoY291bnQtbGluZXMgd2luZG93LXN0YXJ0IChwb2ludCkpKSkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIC0xCiAgICAgICAgICAgICAgICAgICAgICAgICAxKSkpCiAgICAgICAgICAg KGRlcHRoIChpZiBwYXJlbnQgKDErIChwb3B1cC1kZXB0aCBwYXJlbnQpKSAwKSkKICAgICAgICAg ICAobmV3bGluZXMgKG1heCAwICgrICgtIGhlaWdodCAoY291bnQtbGluZXMgcG9pbnQgKHBvaW50 LW1heCkpKSAoaWYgYXJvdW5kIDEgMCkpKSkKICAgICAgICAgICBjdXJyZW50LWNvbHVtbikKICAg ICAgKHdoZW4gKD4gbmV3bGluZXMgMCkKICAgICAgICAocG9wdXAtc2F2ZS1idWZmZXItc3RhdGUK ICAgICAgICAgIChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAgICAgICAoaW5zZXJ0IChtYWtl LXN0cmluZyBuZXdsaW5lcyA/XG4pKSkpCiAgICAgIAogICAgICAoaWYgb3ZlcmZsb3cKICAgICAg ICAgIChpZiBmb2xkYWJsZQogICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGRl Y2YgY29sdW1uICgtIHBvcHVwLXdpZHRoIG1hcmdpbi1sZWZ0IG1hcmdpbi1yaWdodCkpCiAgICAg ICAgICAgICAgICAodW5sZXNzIGFyb3VuZCAobW92ZS10by1jb2x1bW4gY29sdW1uKSkpCiAgICAg ICAgICAgICh3aGVuIChub3QgdHJ1bmNhdGUtbGluZXMpCiAgICAgICAgICAgICAgOzsgQ3V0IG91 dCBvdmVyZmxvdwogICAgICAgICAgICAgIChsZXQgKChkICgxKyAoLSBwb3B1cC13aWR0aCAoLSB3 aW5kb3ctd2lkdGggY29sdW1uKSkpKSkKICAgICAgICAgICAgICAgIChkZWNmIHBvcHVwLXdpZHRo IGQpCiAgICAgICAgICAgICAgICAoZGVjZiB3aWR0aCBkKSkpCiAgICAgICAgICAgIChkZWNmIGNv bHVtbiBtYXJnaW4tbGVmdCkpCiAgICAgICAgKGRlY2YgY29sdW1uIG1hcmdpbi1sZWZ0KSkKICAg ICAgKHdoZW4gKGFuZCAobnVsbCBwYXJlbnQpCiAgICAgICAgICAgICAgICAgKDwgY29sdW1uIDAp KQogICAgICAgICAgOzsgQ2FuY2VsIG1hcmdpbiBsZWZ0CiAgICAgICAgKHNldHEgY29sdW1uIDAp CiAgICAgICAgKGRlY2YgcG9wdXAtd2lkdGggbWFyZ2luLWxlZnQpCiAgICAgICAgKHNldHEgbWFy Z2luLWxlZnQtY2FuY2VsIHQpKQogICAgICAKICAgICAgKGRvdGltZXMgKGkgaGVpZ2h0KQogICAg ICAgIChsZXQgKG92ZXJsYXkgYmVnaW4gdyAoZGFuZ2xlIHQpIChwcmVmaXggIiIpIChwb3N0Zml4 ICIiKSkKICAgICAgICAgICh3aGVuIGFyb3VuZAogICAgICAgICAgICAoaWYgKD49IGVtYWNzLW1h am9yLXZlcnNpb24gMjMpCiAgICAgICAgICAgICAgICAodmVydGljYWwtbW90aW9uIChjb25zIGNv bHVtbiBkaXJlY3Rpb24pKQogICAgICAgICAgICAgICh2ZXJ0aWNhbC1tb3Rpb24gZGlyZWN0aW9u KQogICAgICAgICAgICAgIChtb3ZlLXRvLWNvbHVtbiAoKyAoY3VycmVudC1jb2x1bW4pIGNvbHVt bikpKSkKCSAgKHNldHEgYXJvdW5kIHQKICAgICAgICAgICAgICAgIGN1cnJlbnQtY29sdW1uIChw b3B1cC1jdXJyZW50LXBoeXNpY2FsLWNvbHVtbikpCgogICAgICAgICAgKHdoZW4gKD4gY3VycmVu dC1jb2x1bW4gY29sdW1uKQogICAgICAgICAgICAoYmFja3dhcmQtY2hhcikKICAgICAgICAgICAg KHNldHEgY3VycmVudC1jb2x1bW4gKHBvcHVwLWN1cnJlbnQtcGh5c2ljYWwtY29sdW1uKSkpCiAg ICAgICAgICAod2hlbiAoPCBjdXJyZW50LWNvbHVtbiBjb2x1bW4pCiAgICAgICAgICAgIDs7IEV4 dGVuZCBzaG9ydCBidWZmZXIgbGluZXMgYnkgcG9wdXAgcHJlZml4IChsaW5lIG9mIHNwYWNlcykK ICAgICAgICAgICAgKHNldHEgcHJlZml4IChtYWtlLXN0cmluZyAoKyAoaWYgKD0gY3VycmVudC1j b2x1bW4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0g d2luZG93LWhzY3JvbGwgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKC0gY29sdW1uIGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA/ICkpKQoKICAgICAgICAgIChzZXRxIGJlZ2luIChwb2ludCkpCiAgICAg ICAgICAoc2V0cSB3ICgrIHBvcHVwLXdpZHRoIChsZW5ndGggcHJlZml4KSkpCiAgICAgICAgICAo d2hpbGUgKGFuZCAobm90IChlb2xwKSkgKD4gdyAwKSkKICAgICAgICAgICAgKHNldHEgZGFuZ2xl IG5pbCkKICAgICAgICAgICAgKGRlY2YgdyAoY2hhci13aWR0aCAoY2hhci1hZnRlcikpKQogICAg ICAgICAgICAoZm9yd2FyZC1jaGFyKSkKICAgICAgICAgIChpZiAoPCB3IDApCiAgICAgICAgICAg ICAgKHNldHEgcG9zdGZpeCAobWFrZS1zdHJpbmcgKC0gdykgPyApKSkKCiAgICAgICAgICAoc2V0 cSBvdmVybGF5IChtYWtlLW92ZXJsYXkgYmVnaW4gKHBvaW50KSkpCiAgICAgICAgICAob3Zlcmxh eS1wdXQgb3ZlcmxheSAnd2luZG93IHdpbmRvdykKICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVy bGF5ICdkYW5nbGUgZGFuZ2xlKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3ByZWZp eCBwcmVmaXgpCiAgICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncG9zdGZpeCBwb3N0Zml4 KQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ3dpZHRoIHdpZHRoKQogICAgICAgICAg KGFzZXQgb3ZlcmxheXMKCQkoaWYgKD4gZGlyZWN0aW9uIDApIGkgKC0gaGVpZ2h0IGkgMSkpCgkJ b3ZlcmxheSkpKQogICAgICAobG9vcCBmb3IgcCBmcm9tICgtIDEwMDAwICgqIGRlcHRoIDEwMDAp KQogICAgICAgICAgICBmb3Igb3ZlcmxheSBpbiAobnJldmVyc2UgKGFwcGVuZCBvdmVybGF5cyBu aWwpKQogICAgICAgICAgICBkbyAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgcCkpCiAg ICAgIChsZXQgKChpdCAobWFrZS1wb3B1cCA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDpyb3cgcm93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y29sdW1uIGNv bHVtbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOndpZHRoIHdpZHRoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA6aGVpZ2h0IGhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgOm1pbi1oZWlnaHQgbWluLWhlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOmRp cmVjdGlvbiBkaXJlY3Rpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFy ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZGVwdGggZGVwdGgKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpmYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz ZWxlY3Rpb24tZmFjZSBzZWxlY3Rpb24tZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg Om1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IG1hcmdpbi1yaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1hcmdp bi1sZWZ0LWNhbmNlbCBtYXJnaW4tbGVmdC1jYW5jZWwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDpzY3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz eW1ib2wgc3ltYm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y3Vyc29yIDAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpzY3JvbGwtdG9wIDAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDpjdXJyZW50LWhlaWdodCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bGlz dCBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpuZXdsaW5lcyBuZXdsaW5lcwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgOm92ZXJsYXlzIG92ZXJsYXlzKSkpCiAgICAgICAgKHB1 c2ggaXQgcG9wdXAtaW5zdGFuY2VzKQogICAgICAgIGl0KSkpKQoKKGRlZnVuIHBvcHVwLWRlbGV0 ZSAocG9wdXApCiAgKHdoZW4gKHBvcHVwLWxpdmUtcCBwb3B1cCkKICAgIChwb3B1cC1oaWRlIHBv cHVwKQogICAgKG1hcGMgJ2RlbGV0ZS1vdmVybGF5IChwb3B1cC1vdmVybGF5cyBwb3B1cCkpCiAg ICAoc2V0ZiAocG9wdXAtb3ZlcmxheXMgcG9wdXApIG5pbCkKICAgIChzZXRxIHBvcHVwLWluc3Rh bmNlcyAoZGVscSBwb3B1cCBwb3B1cC1pbnN0YW5jZXMpKQogICAgKGxldCAoKG5ld2xpbmVzIChw b3B1cC1uZXdsaW5lcyBwb3B1cCkpKQogICAgICAod2hlbiAoPiBuZXdsaW5lcyAwKQogICAgICAg IChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4 KSkKICAgICAgICAgIChkb3RpbWVzIChpIG5ld2xpbmVzKQogICAgICAgICAgICAoaWYgKD0gKGNo YXItYmVmb3JlKSA/XG4pCiAgICAgICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpKSkpCiAg bmlsKQoKKGRlZnVuIHBvcHVwLWRyYXcgKHBvcHVwKQogIChsb29wIHdpdGggaGVpZ2h0ID0gKHBv cHVwLWhlaWdodCBwb3B1cCkKICAgICAgICB3aXRoIG1pbi1oZWlnaHQgPSAocG9wdXAtbWluLWhl aWdodCBwb3B1cCkKICAgICAgICB3aXRoIHBvcHVwLWZhY2UgPSAocG9wdXAtZmFjZSBwb3B1cCkK ICAgICAgICB3aXRoIHNlbGVjdGlvbi1mYWNlID0gKHBvcHVwLXNlbGVjdGlvbi1mYWNlIHBvcHVw KQogICAgICAgIHdpdGggbGlzdCA9IChwb3B1cC1saXN0IHBvcHVwKQogICAgICAgIHdpdGggbGVu Z3RoID0gKGxlbmd0aCBsaXN0KQogICAgICAgIHdpdGggdGh1bS1zaXplID0gKG1heCAoLyAoKiBo ZWlnaHQgaGVpZ2h0KSAobWF4IGxlbmd0aCAxKSkgMSkKICAgICAgICB3aXRoIHBhZ2Utc2l6ZSA9 ICgvICgrIDAuMCAobWF4IGxlbmd0aCAxKSkgaGVpZ2h0KQogICAgICAgIHdpdGggc2Nyb2xsLWJh ciA9IChwb3B1cC1zY3JvbGwtYmFyIHBvcHVwKQogICAgICAgIHdpdGggbWFyZ2luLWxlZnQgPSAo bWFrZS1zdHJpbmcgKGlmIChwb3B1cC1tYXJnaW4tbGVmdC1jYW5jZWwgcG9wdXApIDAgKHBvcHVw LW1hcmdpbi1sZWZ0IHBvcHVwKSkgPyApCiAgICAgICAgd2l0aCBtYXJnaW4tcmlnaHQgPSAobWFr ZS1zdHJpbmcgKHBvcHVwLW1hcmdpbi1yaWdodCBwb3B1cCkgPyApCiAgICAgICAgd2l0aCBzeW1i b2wgPSAocG9wdXAtc3ltYm9sIHBvcHVwKQogICAgICAgIHdpdGggY3Vyc29yID0gKHBvcHVwLWN1 cnNvciBwb3B1cCkKICAgICAgICB3aXRoIHNjcm9sbC10b3AgPSAocG9wdXAtc2Nyb2xsLXRvcCBw b3B1cCkKICAgICAgICB3aXRoIG9mZnNldCA9IChwb3B1cC1vZmZzZXQgcG9wdXApCiAgICAgICAg Zm9yIG8gZnJvbSBvZmZzZXQKICAgICAgICBmb3IgaSBmcm9tIHNjcm9sbC10b3AKICAgICAgICB3 aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICBmb3IgaXRlbSBpbiAobnRoY2RyIHNjcm9sbC10b3Ag bGlzdCkKICAgICAgICBmb3IgcGFnZS1pbmRleCA9ICgqIHRodW0tc2l6ZSAoLyBvIHRodW0tc2l6 ZSkpCiAgICAgICAgZm9yIGZhY2UgPSAoaWYgKD0gaSBjdXJzb3IpCiAgICAgICAgICAgICAgICAg ICAgICAgKG9yIChwb3B1cC1pdGVtLXNlbGVjdGlvbi1mYWNlIGl0ZW0pIHNlbGVjdGlvbi1mYWNl KQogICAgICAgICAgICAgICAgICAgICAob3IgKHBvcHVwLWl0ZW0tcG9wdXAtZmFjZSBpdGVtKSBw b3B1cC1mYWNlKSkKICAgICAgICBmb3IgZW1wdHktY2hhciA9IChwcm9wZXJ0aXplICIgIiAnZmFj ZSBmYWNlKQogICAgICAgIGZvciBzY3JvbGwtYmFyLWNoYXIgPSAoaWYgc2Nyb2xsLWJhcgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKDw9IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbXB0eS1jaGFyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgoYW5kICg+IHBhZ2Utc2l6ZSAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg+PSBjdXJzb3IgKCogcGFnZS1pbmRleCBwYWdlLXNpemUpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8IGN1cnNvciAoKiAoKyBwYWdlLWluZGV4IHRo dW0tc2l6ZSkgcGFnZS1zaXplKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBvcHVwLXNjcm9sbC1iYXItZm9yZWdyb3VuZC1jaGFyKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVw LXNjcm9sbC1iYXItYmFja2dyb3VuZC1jaGFyKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiIikKICAgICAgICBmb3Igc3ltID0gKGlmIHN5bWJvbAogICAgICAgICAgICAgICAgICAg ICAgKGNvbmNhdCAiICIgKG9yIChwb3B1cC1pdGVtLXN5bWJvbCBpdGVtKSAiICIpKQogICAgICAg ICAgICAgICAgICAgICIiKQogICAgICAgIGZvciBzdW1tYXJ5ID0gKG9yIChwb3B1cC1pdGVtLXN1 bW1hcnkgaXRlbSkgIiIpCiAgICAgICAgCiAgICAgICAgZG8KICAgICAgICA7OyBTaG93IGxpbmUg YW5kIHNldCBpdGVtIHRvIHRoZSBsaW5lCiAgICAgICAgKHBvcHVwLXNldC1saW5lLWl0ZW0gcG9w dXAgbyBpdGVtIGZhY2UgbWFyZ2luLWxlZnQgbWFyZ2luLXJpZ2h0IHNjcm9sbC1iYXItY2hhciBz eW0gc3VtbWFyeSkKICAgICAgICAKICAgICAgICBmaW5hbGx5CiAgICAgICAgOzsgUmVtZW1iZXIg Y3VycmVudCBoZWlnaHQKICAgICAgICAoc2V0ZiAocG9wdXAtY3VycmVudC1oZWlnaHQgcG9wdXAp ICgtIG8gb2Zmc2V0KSkKCiAgICAgICAgOzsgSGlkZSByZW1haW5pbmcgbGluZXMKICAgICAgICAo bGV0ICgoc2Nyb2xsLWJhci1jaGFyIChpZiBzY3JvbGwtYmFyIChwcm9wZXJ0aXplICIgIiAnZmFj ZSBwb3B1cC1mYWNlKSAiIikpCiAgICAgICAgICAgICAgKHN5bWJvbCAoaWYgc3ltYm9sICIgIiAi IikpKQogICAgICAgICAgKGlmICg+IChwb3B1cC1kaXJlY3Rpb24gcG9wdXApIDApCiAgICAgICAg ICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAod2hlbiBtaW4taGVpZ2h0CiAgICAgICAgICAg ICAgICAgICh3aGlsZSAoPCBvIG1pbi1oZWlnaHQpCiAgICAgICAgICAgICAgICAgICAgKHBvcHVw LXNldC1saW5lLWl0ZW0gcG9wdXAgbyAiIiBwb3B1cC1mYWNlIG1hcmdpbi1sZWZ0IG1hcmdpbi1y aWdodCBzY3JvbGwtYmFyLWNoYXIgc3ltYm9sICIiKQogICAgICAgICAgICAgICAgICAgIChpbmNm IG8pKSkKICAgICAgICAgICAgICAgICh3aGlsZSAoPCBvIGhlaWdodCkKICAgICAgICAgICAgICAg ICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBvKQogICAgICAgICAgICAgICAgICAoaW5jZiBvKSkp CiAgICAgICAgICAgIChsb29wIHdpdGggaCA9IChpZiBtaW4taGVpZ2h0ICgtIGhlaWdodCBtaW4t aGVpZ2h0KSBvZmZzZXQpCiAgICAgICAgICAgICAgICAgIGZvciBvIGZyb20gMCBiZWxvdyBvZmZz ZXQKICAgICAgICAgICAgICAgICAgaWYgKDwgbyBoKQogICAgICAgICAgICAgICAgICBkbyAocG9w dXAtaGlkZS1saW5lIHBvcHVwIG8pCiAgICAgICAgICAgICAgICAgIGlmICg+PSBvIGgpCiAgICAg ICAgICAgICAgICAgIGRvIChwb3B1cC1zZXQtbGluZS1pdGVtIHBvcHVwIG8gIiIgcG9wdXAtZmFj ZSBtYXJnaW4tbGVmdCBtYXJnaW4tcmlnaHQgc2Nyb2xsLWJhci1jaGFyIHN5bWJvbCAiIikpKSkp KQoKKGRlZnVuIHBvcHVwLWhpZGUgKHBvcHVwKQogIChkb3RpbWVzIChpIChwb3B1cC1oZWlnaHQg cG9wdXApKQogICAgKHBvcHVwLWhpZGUtbGluZSBwb3B1cCBpKSkpCgooZGVmdW4gcG9wdXAtaGlk ZGVuLXAgKHBvcHVwKQogIChsZXQgKChoaWRkZW4gdCkpCiAgICAod2hlbiAocG9wdXAtbGl2ZS1w IHBvcHVwKQogICAgICAoZG90aW1lcyAoaSAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAo dW5sZXNzIChwb3B1cC1saW5lLWhpZGRlbi1wIHBvcHVwIGkpCiAgICAgICAgICAoc2V0cSBoaWRk ZW4gbmlsKSkpKQogICAgaGlkZGVuKSkKCihkZWZ1biBwb3B1cC1zZWxlY3QgKHBvcHVwIGkpCiAg KHNldHEgaSAoKyBpIChwb3B1cC1vZmZzZXQgcG9wdXApKSkKICAod2hlbiAoYW5kICg8PSAwIGkp ICg8IGkgKHBvcHVwLWhlaWdodCBwb3B1cCkpKQogICAgKHNldGYgKHBvcHVwLWN1cnNvciBwb3B1 cCkgaSkKICAgIChwb3B1cC1kcmF3IHBvcHVwKQogICAgdCkpCgooZGVmdW4gcG9wdXAtbmV4dCAo cG9wdXApCiAgKGxldCAoKGhlaWdodCAocG9wdXAtaGVpZ2h0IHBvcHVwKSkKICAgICAgICAoY3Vy c29yICgxKyAocG9wdXAtY3Vyc29yIHBvcHVwKSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVw LXNjcm9sbC10b3AgcG9wdXApKQogICAgICAgIChsZW5ndGggKGxlbmd0aCAocG9wdXAtbGlzdCBw b3B1cCkpKSkKICAgIChjb25kCiAgICAgKCg+PSBjdXJzb3IgbGVuZ3RoKQogICAgICA7OyBCYWNr IHRvIGZpcnN0IHBhZ2UKICAgICAgKHNldHEgY3Vyc29yIDAKICAgICAgICAgICAgc2Nyb2xsLXRv cCAwKSkKICAgICAoKD0gY3Vyc29yICgrIHNjcm9sbC10b3AgaGVpZ2h0KSkKICAgICAgOzsgR28g dG8gbmV4dCBwYWdlCiAgICAgIChzZXRxIHNjcm9sbC10b3AgKG1pbiAoMSsgc2Nyb2xsLXRvcCkg KG1heCAoLSBsZW5ndGggaGVpZ2h0KSAwKSkpKSkKICAgIChzZXRmIChwb3B1cC1jdXJzb3IgcG9w dXApIGN1cnNvcgogICAgICAgICAgKHBvcHVwLXNjcm9sbC10b3AgcG9wdXApIHNjcm9sbC10b3Ap CiAgICAocG9wdXAtZHJhdyBwb3B1cCkpKQoKKGRlZnVuIHBvcHVwLXByZXZpb3VzIChwb3B1cCkK ICAobGV0ICgoaGVpZ2h0IChwb3B1cC1oZWlnaHQgcG9wdXApKQogICAgICAgIChjdXJzb3IgKDEt IChwb3B1cC1jdXJzb3IgcG9wdXApKSkKICAgICAgICAoc2Nyb2xsLXRvcCAocG9wdXAtc2Nyb2xs LXRvcCBwb3B1cCkpCiAgICAgICAgKGxlbmd0aCAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkp KQogICAgKGNvbmQKICAgICAoKDwgY3Vyc29yIDApCiAgICAgIDs7IEdvIHRvIGxhc3QgcGFnZQog ICAgICAoc2V0cSBjdXJzb3IgKDEtIGxlbmd0aCkKICAgICAgICAgICAgc2Nyb2xsLXRvcCAobWF4 ICgtIGxlbmd0aCBoZWlnaHQpIDApKSkKICAgICAoKD0gY3Vyc29yICgxLSBzY3JvbGwtdG9wKSkK ICAgICAgOzsgR28gdG8gcHJldmlvdXMgcGFnZQogICAgICAoZGVjZiBzY3JvbGwtdG9wKSkpCiAg ICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBjdXJzb3IKICAgICAgICAgIChwb3B1cC1zY3Jv bGwtdG9wIHBvcHVwKSBzY3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCihkZWZ1 biBwb3B1cC1zY3JvbGwtZG93biAocG9wdXAgJm9wdGlvbmFsIG4pCiAgKGxldCAoKHNjcm9sbC10 b3AgKG1pbiAoKyAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgKG9yIG4gMSkpCiAgICAgICAgICAg ICAgICAgICAgICAgICAoLSAobGVuZ3RoIChwb3B1cC1saXN0IHBvcHVwKSkgKHBvcHVwLWhlaWdo dCBwb3B1cCkpKSkpCiAgICAoc2V0ZiAocG9wdXAtY3Vyc29yIHBvcHVwKSBzY3JvbGwtdG9wCiAg ICAgICAgICAocG9wdXAtc2Nyb2xsLXRvcCBwb3B1cCkgc2Nyb2xsLXRvcCkKICAgIChwb3B1cC1k cmF3IHBvcHVwKSkpCgooZGVmdW4gcG9wdXAtc2Nyb2xsLXVwIChwb3B1cCAmb3B0aW9uYWwgbikK ICAobGV0ICgoc2Nyb2xsLXRvcCAobWF4ICgtIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSAob3Ig biAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgIDApKSkKICAgIChzZXRmIChwb3B1cC1jdXJz b3IgcG9wdXApIHNjcm9sbC10b3AKICAgICAgICAgIChwb3B1cC1zY3JvbGwtdG9wIHBvcHVwKSBz Y3JvbGwtdG9wKQogICAgKHBvcHVwLWRyYXcgcG9wdXApKSkKCgwKCjs7IFBvcHVwIGlzZWFyY2gK CihkZWZmYWNlIHBvcHVwLWlzZWFyY2gtbWF0Y2gKICAnKCh0ICg6YmFja2dyb3VuZCAic2t5IGJs dWUiKSkpCiAgIlBvcHVwIGlzZWFyY2ggbWF0Y2ggZmFjZS4iCiAgOmdyb3VwICdwb3B1cCkKCihk ZWZ2YXIgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IgImJsdWUiKQoKKGRlZnZhciBwb3B1cC1p c2VhcmNoLWtleW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkpKQogICAgOyhk ZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtaXNlYXJjaC1kb25lKQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1nIiAgICAgICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgIChkZWZpbmUt a2V5IG1hcCAiXEMtaCIgICAgICAncG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAoZGVmaW5lLWtl eSBtYXAgKGtiZCAiREVMIikgJ3BvcHVwLWlzZWFyY2gtZGVsZXRlKQogICAgbWFwKSkKCihkZWZz dWJzdCBwb3B1cC1pc2VhcmNoLWNoYXItcCAoY2hhcikKICAoYW5kIChpbnRlZ2VycCBjaGFyKQog ICAgICAgKDw9IDMyIGNoYXIpCiAgICAgICAoPD0gY2hhciAxMjYpKSkKCihkZWZ1biBwb3B1cC1p c2VhcmNoLWZpbHRlci1saXN0IChwYXR0ZXJuIGxpc3QpCiAgKGxvb3Agd2l0aCByZWdleHAgPSAo cmVnZXhwLXF1b3RlIHBhdHRlcm4pCiAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdAogICAgICAgIGRv CiAgICAgICAgKHVubGVzcyAoc3RyaW5ncCBpdGVtKQogICAgICAgICAgKHNldHEgaXRlbSAocG9w dXAtaXRlbS1wcm9wZXJ0aXplIChwb3B1cC14LXRvLXN0cmluZyBpdGVtKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpdGVtKSkpCiAgICAgICAgaWYg KHN0cmluZy1tYXRjaCByZWdleHAgaXRlbSkKICAgICAgICBjb2xsZWN0IChsZXQgKChiZWcgKG1h dGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgIChlbmQgKG1hdGNoLWVuZCAw KSkpCiAgICAgICAgICAgICAgICAgIChhbHRlci10ZXh0LXByb3BlcnR5IDAgKGxlbmd0aCBpdGVt KSAnZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChw cm9wKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVx IHByb3AgJ3BvcHVwLWlzZWFyY2gtbWF0Y2gpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwcm9wKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXRlbSkKICAgICAgICAgICAgICAgICAgKHB1dC10ZXh0LXByb3BlcnR5IGJlZyBlbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWNlICdwb3B1cC1pc2VhcmNoLW1h dGNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtKQogICAgICAgICAg ICAgICAgICBpdGVtKSkpCgooZGVmdW4gcG9wdXAtaXNlYXJjaC1wcm9tcHQgKHBvcHVwIHBhdHRl cm4pCiAgKGZvcm1hdCAiUGF0dGVybjogJXMiIChpZiAoPSAobGVuZ3RoIChwb3B1cC1saXN0IHBv cHVwKSkgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wZXJ0aXplIHBhdHRlcm4g J2ZhY2UgJ2lzZWFyY2gtZmFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuKSkp CgooZGVmdW4gcG9wdXAtaXNlYXJjaC11cGRhdGUgKHBvcHVwIHBhdHRlcm4gJm9wdGlvbmFsIGNh bGxiYWNrKQogIChzZXRmIChwb3B1cC1jdXJzb3IgcG9wdXApIDAKICAgICAgICAocG9wdXAtc2Ny b2xsLXRvcCBwb3B1cCkgMAogICAgICAgIChwb3B1cC1wYXR0ZXJuIHBvcHVwKSBwYXR0ZXJuKQog IChsZXQgKChsaXN0IChwb3B1cC1pc2VhcmNoLWZpbHRlci1saXN0IHBhdHRlcm4gKHBvcHVwLW9y aWdpbmFsLWxpc3QgcG9wdXApKSkpCiAgICAocG9wdXAtc2V0LWZpbHRlcmVkLWxpc3QgcG9wdXAg bGlzdCkKICAgIChpZiBjYWxsYmFjawogICAgICAgIChmdW5jYWxsIGNhbGxiYWNrIGxpc3QpKSkK ICAocG9wdXAtZHJhdyBwb3B1cCkpCgooZGVmdW4qIHBvcHVwLWlzZWFyY2ggKHBvcHVwCiAgICAg ICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICAgIChjdXJzb3ItY29s b3IgcG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgICAgKGtl eW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj awogICAgICAgICAgICAgICAgICAgICAgIGhlbHAtZGVsYXkpCiAgKGxldCAoKGxpc3QgKHBvcHVw LW9yaWdpbmFsLWxpc3QgcG9wdXApKQogICAgICAgIChwYXR0ZXJuIChvciAocG9wdXAtcGF0dGVy biBwb3B1cCkgIiIpKQogICAgICAgIChvbGQtY3Vyc29yLWNvbG9yIChmcmFtZS1wYXJhbWV0ZXIg KHNlbGVjdGVkLWZyYW1lKSAnY3Vyc29yLWNvbG9yKSkKICAgICAgICBwcm9tcHQga2V5IGJpbmRp bmcgZG9uZSkKICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICh1bmxlc3MgKGJsb2NrIG5pbAog ICAgICAgICAgICAgICAgICAoaWYgY3Vyc29yLWNvbG9yCiAgICAgICAgICAgICAgICAgICAgICAo c2V0LWN1cnNvci1jb2xvciBjdXJzb3ItY29sb3IpKQogICAgICAgICAgICAgICAgICAod2hpbGUg dAogICAgICAgICAgICAgICAgICAgIChzZXRxIHByb21wdCAocG9wdXAtaXNlYXJjaC1wcm9tcHQg cG9wdXAgcGF0dGVybikpCiAgICAgICAgICAgICAgICAgICAgKHNldHEga2V5IChwb3B1cC1tZW51 LXJlYWQta2V5LXNlcXVlbmNlIGtleW1hcCBwcm9tcHQgaGVscC1kZWxheSkpCiAgICAgICAgICAg ICAgICAgICAgKGlmIChudWxsIGtleSkKICAgICAgICAgICAgICAgICAgICAgICAgKHVubGVzcyAo ZnVuY2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBwb3B1cCBuaWwgOnBy b21wdCBwcm9tcHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFu ZC1rZXlzKQogICAgICAgICAgICAgICAgICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHByb21w dCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKSkKICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGJp bmRpbmcgKGxvb2t1cC1rZXkga2V5bWFwIGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAoY29u ZAogICAgICAgICAgICAgICAgICAgICAgICgoYW5kIChzdHJpbmdwIGtleSkKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAocG9wdXAtaXNlYXJjaC1jaGFyLXAgKGFyZWYga2V5IDApKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKHNldHEgcGF0dGVybiAoY29uY2F0IHBhdHRlcm4ga2V5KSkp CiAgICAgICAgICAgICAgICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWRvbmUp CiAgICAgICAgICAgICAgICAgICAgICAgIChyZXR1cm4gdCkpCiAgICAgICAgICAgICAgICAgICAg ICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2VhcmNoLWNhbmNlbCkKICAgICAgICAgICAgICAgICAg ICAgICAgKHJldHVybiBuaWwpKQogICAgICAgICAgICAgICAgICAgICAgICgoZXEgYmluZGluZyAn cG9wdXAtaXNlYXJjaC1kZWxldGUpCiAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoPiAobGVu Z3RoIHBhdHRlcm4pIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBwYXR0ZXJu IChzdWJzdHJpbmcgcGF0dGVybiAwICgxLSAobGVuZ3RoIHBhdHRlcm4pKSkpKSkKICAgICAgICAg ICAgICAgICAgICAgICAodAogICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB1bnJlYWQtY29t bWFuZC1ldmVudHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGVuZCAobGlzdGlm eS1rZXktc2VxdWVuY2Uga2V5KSB1bnJlYWQtY29tbWFuZC1ldmVudHMpKQogICAgICAgICAgICAg ICAgICAgICAgICAocmV0dXJuIHQpKSkKICAgICAgICAgICAgICAgICAgICAgIChwb3B1cC1pc2Vh cmNoLXVwZGF0ZSBwb3B1cCBwYXR0ZXJuIGNhbGxiYWNrKSkpKQogICAgICAgICAgKHBvcHVwLWlz ZWFyY2gtdXBkYXRlIHBvcHVwICIiIGNhbGxiYWNrKQogICAgICAgICAgdCkgOyBSZXR1cm4gbm9u LW5pbCBpZiBpc2VhcmNoIGlzIGNhbmNlbGxlZAogICAgICAoaWYgb2xkLWN1cnNvci1jb2xvcgog ICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Igb2xkLWN1cnNvci1jb2xvcikpKSkpCgoMCgo7OyBQ b3B1cCB0aXAKCihkZWZmYWNlIHBvcHVwLXRpcC1mYWNlCiAgJygodCAoOmJhY2tncm91bmQgImto YWtpMSIgOmZvcmVncm91bmQgImJsYWNrIikpKQogICJGYWNlIGZvciBwb3B1cCB0aXAuIgogIDpn cm91cCAncG9wdXApCgooZGVmdmFyIHBvcHVwLXRpcC1tYXgtd2lkdGggODApCgooZGVmdW4qIHBv cHVwLXRpcCAoc3RyaW5nCiAgICAgICAgICAgICAgICAgICAma2V5CiAgICAgICAgICAgICAgICAg ICBwb2ludAogICAgICAgICAgICAgICAgICAgKGFyb3VuZCB0KQogICAgICAgICAgICAgICAgICAg d2lkdGgKICAgICAgICAgICAgICAgICAgIChoZWlnaHQgMTUpCiAgICAgICAgICAgICAgICAgICBt aW4taGVpZ2h0CiAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZQogICAgICAgICAgICAgICAgICAg bWFyZ2luCiAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICBzY3JvbGwtYmFyCiAgICAgICAgICAgICAg ICAgICBwYXJlbnQKICAgICAgICAgICAgICAgICAgIHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgICAgIG5vd2FpdAogICAgICAgICAgICAgICAgICAgcHJvbXB0CiAgICAgICAgICAgICAgICAg ICAmYXV4IHRpcCBsaW5lcykKICAoaWYgKGJ1ZmZlcnAgc3RyaW5nKQogICAgICAoc2V0cSBzdHJp bmcgKHdpdGgtY3VycmVudC1idWZmZXIgc3RyaW5nIChidWZmZXItc3RyaW5nKSkpKQogIDs7IFRP RE8gc3RyaXAgdGV4dCAobWFpbmx5IGZhY2UpIHByb3BlcnRpZXMKICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCgogIChhbmQgKGVxIG1hcmdpbiB0KSAoc2V0 cSBtYXJnaW4gMSkpCiAgKG9yIG1hcmdpbi1sZWZ0IChzZXRxIG1hcmdpbi1sZWZ0IG1hcmdpbikp CiAgKG9yIG1hcmdpbi1yaWdodCAoc2V0cSBtYXJnaW4tcmlnaHQgbWFyZ2luKSkKICAKICAobGV0 ICgoaXQgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCBwb3B1cC10aXAtbWF4LXdpZHRo KSkpCiAgICAoc2V0cSB3aWR0aCAoY2FyIGl0KQogICAgICAgICAgbGluZXMgKGNkciBpdCkpKQog IAogIChzZXRxIHRpcCAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhlaWdodAogICAgICAgICAg ICAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQKICAgICAgICAgICAgICAgICAg ICAgICAgICA6YXJvdW5kIGFyb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4t bGVmdCBtYXJnaW4tbGVmdAogICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tcmlnaHQg bWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgc2Nyb2xs LWJhcgogICAgICAgICAgICAgICAgICAgICAgICAgIDpmYWNlICdwb3B1cC10aXAtZmFjZQogICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFyZW50CiAgICAgICAgICAgICAgICAgICAg ICAgICAgOnBhcmVudC1vZmZzZXQgcGFyZW50LW9mZnNldCkpCgogICh1bndpbmQtcHJvdGVjdAog ICAgICAod2hlbiAoPiAocG9wdXAtd2lkdGggdGlwKSAwKSAgICAgICAgICAgICAgICAgICA7IG5v dCB0byBiZSBjb3JydXB0ZWQKICAgICAgICAod2hlbiAoYW5kIChub3QgKGVxIHdpZHRoIChwb3B1 cC13aWR0aCB0aXApKSkgOyB0cnVuY2F0ZWQKICAgICAgICAgICAgICAgICAgIChub3QgdHJ1bmNh dGUpKQogICAgICAgICAgOzsgUmVmaWxsIG9uY2UgYWdhaW4gdG8gbGluZXMgYmUgZml0dGVkIHRv IHBvcHVwIHdpZHRoCiAgICAgICAgICAoc2V0cSB3aWR0aCAocG9wdXAtd2lkdGggdGlwKSkKICAg ICAgICAgIChzZXRxIGxpbmVzIChjZHIgKHBvcHVwLWZpbGwtc3RyaW5nIHN0cmluZyB3aWR0aCB3 aWR0aCkpKSkKCiAgICAgICAgKHBvcHVwLXNldC1saXN0IHRpcCBsaW5lcykKICAgICAgICAocG9w dXAtZHJhdyB0aXApCiAgICAgICAgKGlmIG5vd2FpdAogICAgICAgICAgICB0aXAKICAgICAgICAg IChjbGVhci10aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgIChwdXNoIChyZWFkLWV2ZW50IHBy b21wdCkgdW5yZWFkLWNvbW1hbmQtZXZlbnRzKQogICAgICAgICAgdCkpCiAgICAodW5sZXNzIG5v d2FpdAogICAgICAocG9wdXAtZGVsZXRlIHRpcCkpKSkKCgwKCjs7IFBvcHVwIG1lbnUKCihkZWZm YWNlIHBvcHVwLW1lbnUtZmFjZQogICcoKHQgKDpiYWNrZ3JvdW5kICJsaWdodGdyYXkiIDpmb3Jl Z3JvdW5kICJibGFjayIpKSkKICAiRmFjZSBmb3IgcG9wdXAgbWVudS4iCiAgOmdyb3VwICdwb3B1 cCkKCihkZWZmYWNlIHBvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3Vu ZCAic3RlZWxibHVlIiA6Zm9yZWdyb3VuZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHBvcHVwIG1l bnUgc2VsZWN0aW9uLiIKICA6Z3JvdXAgJ3BvcHVwKQoKKGRlZnZhciBwb3B1cC1tZW51LXNob3ct dGlwLWZ1bmN0aW9uICdwb3B1cC10aXAKICAiRnVuY3Rpb24gdXNlZCBmb3Igc2hvd2luZyB0b29s dGlwIGJ5IGBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscCcuIikKCihkZWZ2YXIgcG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHAtZnVuY3Rpb24gJ3BvcHVwLW1lbnUtc2hvdy1xdWljay1oZWxwCiAg IkZ1bmN0aW9uIHVzZWQgZm9yIHNob3dpbmcgcXVpY2sgaGVscCBieSBgcG9wdXAtbWVudSonLiIp CgooZGVmdW4gcG9wdXAtbWVudS1zaG93LWhlbHAgKG1lbnUgJm9wdGlvbmFsIHBlcnNpc3QgaXRl bSkKICAocG9wdXAtaXRlbS1zaG93LWhlbHAgKG9yIGl0ZW0gKHBvcHVwLXNlbGVjdGVkLWl0ZW0g bWVudSkpIHBlcnNpc3QpKQoKKGRlZnVuIHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiAobWVudSAm b3B0aW9uYWwgaXRlbSkKICAocG9wdXAtaXRlbS1kb2N1bWVudGF0aW9uIChvciBpdGVtIChwb3B1 cC1zZWxlY3RlZC1pdGVtIG1lbnUpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1zaG93LXF1aWNrLWhl bHAgKG1lbnUgJm9wdGlvbmFsIGl0ZW0gJnJlc3QgYXJncykKICAobGV0KiAoKHBvaW50IChwbGlz dC1nZXQgYXJncyA6cG9pbnQpKQogICAgICAgICAoaGVpZ2h0IChvciAocGxpc3QtZ2V0IGFyZ3Mg OmhlaWdodCkgKHBvcHVwLWhlaWdodCBtZW51KSkpCiAgICAgICAgIChtaW4taGVpZ2h0IChtaW4g aGVpZ2h0IChwb3B1cC1jdXJyZW50LWhlaWdodCBtZW51KSkpCiAgICAgICAgIChhcm91bmQgbmls KQogICAgICAgICAocGFyZW50LW9mZnNldCAocG9wdXAtb2Zmc2V0IG1lbnUpKQogICAgICAgICAo ZG9jIChwb3B1cC1tZW51LWRvY3VtZW50YXRpb24gbWVudSBpdGVtKSkpCiAgICAod2hlbiAoc3Ry aW5ncCBkb2MpCiAgICAgIChpZiAocG9wdXAtaGlkZGVuLXAgbWVudSkKICAgICAgICAgIChzZXRx IGFyb3VuZCB0CiAgICAgICAgICAgICAgICBtZW51IG5pbAogICAgICAgICAgICAgICAgcGFyZW50 LW9mZnNldCBuaWwpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKGxldCAoKHBvcHVw LXVzZS1vcHRpbWl6ZWQtY29sdW1uLWNvbXB1dGF0aW9uIG5pbCkpIDsgVG8gYXZvaWQgd3Jvbmcg cG9zaXRpb25pbmcKICAgICAgICAoYXBwbHkgcG9wdXAtbWVudS1zaG93LXRpcC1mdW5jdGlvbgog ICAgICAgICAgICAgICBkb2MKICAgICAgICAgICAgICAgOnBvaW50IHBvaW50CiAgICAgICAgICAg ICAgIDpoZWlnaHQgaGVpZ2h0CiAgICAgICAgICAgICAgIDptaW4taGVpZ2h0IG1pbi1oZWlnaHQK ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgOnBhcmVudCBtZW51 CiAgICAgICAgICAgICAgIDpwYXJlbnQtb2Zmc2V0IHBhcmVudC1vZmZzZXQKICAgICAgICAgICAg ICAgYXJncykpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSAoa2V5bWFw ICZvcHRpb25hbCBwcm9tcHQgdGltZW91dCkKICAoY2F0Y2ggJ3RpbWVvdXQKICAgIChsZXQgKCh0 aW1lciAoYW5kIHRpbWVvdXQKICAgICAgICAgICAgICAgICAgICAgIChydW4td2l0aC10aW1lciB0 aW1lb3V0IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEg KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoemVyb3AgKGxl bmd0aCAodGhpcy1jb21tYW5kLWtleXMpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAodGhyb3cgJ3RpbWVvdXQgbmlsKSkpKSkpCiAgICAgICAgICAob2xkLWds b2JhbC1tYXAgKGN1cnJlbnQtZ2xvYmFsLW1hcCkpCiAgICAgICAgICAodGVtcC1nbG9iYWwtbWFw IChtYWtlLXNwYXJzZS1rZXltYXApKQogICAgICAgICAgKG92ZXJyaWRpbmctdGVybWluYWwtbG9j YWwtbWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgICAgKHN1YnN0aXR1dGUta2V5LWRlZmlu aXRpb24gJ2tleWJvYXJkLXF1aXQgJ2tleWJvYXJkLXF1aXQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGVtcC1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAoZGVmaW5l LWtleSB0ZW1wLWdsb2JhbC1tYXAgW21lbnUtYmFyXSAobG9va3VwLWtleSBvbGQtZ2xvYmFsLW1h cCBbbWVudS1iYXJdKSkKICAgICAgKGRlZmluZS1rZXkgdGVtcC1nbG9iYWwtbWFwIFt0b29sLWJh cl0gKGxvb2t1cC1rZXkgb2xkLWdsb2JhbC1tYXAgW3Rvb2wtYmFyXSkpCiAgICAgIChzZXQta2V5 bWFwLXBhcmVudCBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBrZXltYXApCiAgICAgIChp ZiAoY3VycmVudC1sb2NhbC1tYXApCiAgICAgICAgICAoZGVmaW5lLWtleSBvdmVycmlkaW5nLXRl cm1pbmFsLWxvY2FsLW1hcCBbbWVudS1iYXJdCiAgICAgICAgICAgIChsb29rdXAta2V5IChjdXJy ZW50LWxvY2FsLW1hcCkgW21lbnUtYmFyXSkpKQogICAgICAodW53aW5kLXByb3RlY3QKICAgICAg ICAgIChwcm9nbgogICAgICAgICAgICAodXNlLWdsb2JhbC1tYXAgdGVtcC1nbG9iYWwtbWFwKQog ICAgICAgICAgICAoY2xlYXItdGhpcy1jb21tYW5kLWtleXMpCiAgICAgICAgICAgICh3aXRoLXRl bXAtbWVzc2FnZSBwcm9tcHQKICAgICAgICAgICAgICAocmVhZC1rZXktc2VxdWVuY2UgbmlsKSkp CiAgICAgICAgKHVzZS1nbG9iYWwtbWFwIG9sZC1nbG9iYWwtbWFwKQogICAgICAgIChpZiB0aW1l ciAoY2FuY2VsLXRpbWVyIHRpbWVyKSkpKSkpCgooZGVmdW4gcG9wdXAtbWVudS1mYWxsYmFjayAo ZXZlbnQgZGVmYXVsdCkpCgooZGVmdW4qIHBvcHVwLW1lbnUtZXZlbnQtbG9vcCAobWVudSBrZXlt YXAgZmFsbGJhY2sgJm9wdGlvbmFsIHByb21wdCBoZWxwLWRlbGF5IGlzZWFyY2ggaXNlYXJjaC1j dXJzb3ItY29sb3IgaXNlYXJjaC1rZXltYXAgaXNlYXJjaC1jYWxsYmFjayAmYXV4IGtleSBiaW5k aW5nKQogIChibG9jayBuaWwKICAgICh3aGlsZSAocG9wdXAtbGl2ZS1wIG1lbnUpCiAgICAgIChh bmQgaXNlYXJjaAogICAgICAgICAgIChwb3B1cC1pc2VhcmNoIG1lbnUKICAgICAgICAgICAgICAg ICAgICAgICAgICA6Y3Vyc29yLWNvbG9yIGlzZWFyY2gtY3Vyc29yLWNvbG9yCiAgICAgICAgICAg ICAgICAgICAgICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAg ICAgICAgIDpjYWxsYmFjayBpc2VhcmNoLWNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAg ICAgOmhlbHAtZGVsYXkgaGVscC1kZWxheSkKICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAg ICAgIChzZXRxIGtleSAocG9wdXAtbWVudS1yZWFkLWtleS1zZXF1ZW5jZSBrZXltYXAgcHJvbXB0 IGhlbHAtZGVsYXkpKQogICAgICAoaWYgKG51bGwga2V5KQogICAgICAgICAgKHVubGVzcyAoZnVu Y2FsbCBwb3B1cC1tZW51LXNob3ctcXVpY2staGVscC1mdW5jdGlvbiBtZW51IG5pbCA6cHJvbXB0 IHByb21wdCkKICAgICAgICAgICAgKGNsZWFyLXRoaXMtY29tbWFuZC1rZXlzKQogICAgICAgICAg ICAocHVzaCAocmVhZC1ldmVudCBwcm9tcHQpIHVucmVhZC1jb21tYW5kLWV2ZW50cykpCiAgICAg ICAgKGlmIChlcSAobG9va3VwLWtleSAoY3VycmVudC1nbG9iYWwtbWFwKSBrZXkpICdrZXlib2Fy ZC1xdWl0KQogICAgICAgICAgICAoa2V5Ym9hcmQtcXVpdCkpCiAgICAgICAgKHNldHEgYmluZGlu ZyAobG9va3VwLWtleSBrZXltYXAga2V5KSkKICAgICAgICAoY29uZAogICAgICAgICAoKGVxIGJp bmRpbmcgJ3BvcHVwLWNsb3NlKQogICAgICAgICAgKGlmIChwb3B1cC1wYXJlbnQgbWVudSkKICAg ICAgICAgICAgICAocmV0dXJuKSkpCiAgICAgICAgICgobWVtcSBiaW5kaW5nICcocG9wdXAtc2Vs ZWN0IHBvcHVwLW9wZW4pKQogICAgICAgICAgKGxldCogKChpdGVtIChwb3B1cC1zZWxlY3RlZC1p dGVtIG1lbnUpKQogICAgICAgICAgICAgICAgIChzdWJsaXN0IChwb3B1cC1pdGVtLXN1Ymxpc3Qg aXRlbSkpKQogICAgICAgICAgICAoaWYgc3VibGlzdAogICAgICAgICAgICAgICAgKHBvcHVwLWFp ZiAocG9wdXAtY2FzY2FkZS1tZW51IHN1Ymxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6YXJvdW5kIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDptYXJnaW4tbGVmdCAocG9wdXAtbWFyZ2luLWxlZnQg bWVudSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWFy Z2luLXJpZ2h0IChwb3B1cC1tYXJnaW4tcmlnaHQgbWVudSkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6c2Nyb2xsLWJhciAocG9wdXAtc2Nyb2xsLWJhciBt ZW51KSkKICAgICAgICAgICAgICAgICAgICAoYW5kIGl0IChyZXR1cm4gaXQpKSkKICAgICAgICAg ICAgICAoaWYgKGVxIGJpbmRpbmcgJ3BvcHVwLXNlbGVjdCkKICAgICAgICAgICAgICAgICAgKHJl dHVybiAocG9wdXAtaXRlbS12YWx1ZS1vci1zZWxmIGl0ZW0pKSkpKSkKICAgICAgICAgKChlcSBi aW5kaW5nICdwb3B1cC1uZXh0KQogICAgICAgICAgKHBvcHVwLW5leHQgbWVudSkpCiAgICAgICAg ICgoZXEgYmluZGluZyAncG9wdXAtcHJldmlvdXMpCiAgICAgICAgICAocG9wdXAtcHJldmlvdXMg bWVudSkpCiAgICAgICAgICgoZXEgYmluZGluZyAncG9wdXAtaGVscCkKICAgICAgICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBtZW51KSkKICAgICAgICAgKChlcSBiaW5kaW5nICdwb3B1cC1pc2Vh cmNoKQogICAgICAgICAgKHBvcHVwLWlzZWFyY2ggbWVudQogICAgICAgICAgICAgICAgICAgICAg ICAgOmN1cnNvci1jb2xvciBpc2VhcmNoLWN1cnNvci1jb2xvcgogICAgICAgICAgICAgICAgICAg ICAgICAgOmtleW1hcCBpc2VhcmNoLWtleW1hcAogICAgICAgICAgICAgICAgICAgICAgICAgOmNh bGxiYWNrIGlzZWFyY2gtY2FsbGJhY2sKICAgICAgICAgICAgICAgICAgICAgICAgIDpoZWxwLWRl bGF5IGhlbHAtZGVsYXkpKQogICAgICAgICAoKGNvbW1hbmRwIGJpbmRpbmcpCiAgICAgICAgICAo Y2FsbC1pbnRlcmFjdGl2ZWx5IGJpbmRpbmcpKQogICAgICAgICAodAogICAgICAgICAgKGZ1bmNh bGwgZmFsbGJhY2sga2V5IChrZXktYmluZGluZyBrZXkpKSkpKSkpKQoKOzsgcG9wdXAtbWVudSBp cyB1c2VkIGJ5IG1vdXNlLmVsIHVuZmFpcmx5Li4uCihkZWZ1biogcG9wdXAtbWVudSogKGxpc3QK ICAgICAgICAgICAgICAgICAgICAgJmtleQogICAgICAgICAgICAgICAgICAgICBwb2ludAogICAg ICAgICAgICAgICAgICAgICAoYXJvdW5kIHQpCiAgICAgICAgICAgICAgICAgICAgICh3aWR0aCAo cG9wdXAtcHJlZmVycmVkLXdpZHRoIGxpc3QpKQogICAgICAgICAgICAgICAgICAgICAoaGVpZ2h0 IDE1KQogICAgICAgICAgICAgICAgICAgICBtYXJnaW4KICAgICAgICAgICAgICAgICAgICAgbWFy Z2luLWxlZnQKICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAg ICAgICAgIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgc3ltYm9sCiAgICAgICAgICAg ICAgICAgICAgIHBhcmVudAogICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb2Zmc2V0CiAgICAg ICAgICAgICAgICAgICAgIChrZXltYXAgcG9wdXAtbWVudS1rZXltYXApCiAgICAgICAgICAgICAg ICAgICAgIChmYWxsYmFjayAncG9wdXAtbWVudS1mYWxsYmFjaykKICAgICAgICAgICAgICAgICAg ICAgaGVscC1kZWxheQogICAgICAgICAgICAgICAgICAgICBwcm9tcHQKICAgICAgICAgICAgICAg ICAgICAgaXNlYXJjaAogICAgICAgICAgICAgICAgICAgICAoaXNlYXJjaC1jdXJzb3ItY29sb3Ig cG9wdXAtaXNlYXJjaC1jdXJzb3ItY29sb3IpCiAgICAgICAgICAgICAgICAgICAgIChpc2VhcmNo LWtleW1hcCBwb3B1cC1pc2VhcmNoLWtleW1hcCkKICAgICAgICAgICAgICAgICAgICAgaXNlYXJj aC1jYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAmYXV4IG1lbnUgZXZlbnQpCiAgKGFuZCAo ZXEgbWFyZ2luIHQpIChzZXRxIG1hcmdpbiAxKSkKICAob3IgbWFyZ2luLWxlZnQgKHNldHEgbWFy Z2luLWxlZnQgbWFyZ2luKSkKICAob3IgbWFyZ2luLXJpZ2h0IChzZXRxIG1hcmdpbi1yaWdodCBt YXJnaW4pKQogIChpZiAoYW5kIHNjcm9sbC1iYXIKICAgICAgICAgICAoaW50ZWdlcnAgbWFyZ2lu LXJpZ2h0KQogICAgICAgICAgICg+IG1hcmdpbi1yaWdodCAwKSkKICAgICAgOzsgTWFrZSBzY3Jv bGwtYmFyIHNwYWNlIGFzIG1hcmdpbi1yaWdodAogICAgICAoZGVjZiBtYXJnaW4tcmlnaHQpKQog IChzZXRxIG1lbnUgKHBvcHVwLWNyZWF0ZSBwb2ludCB3aWR0aCBoZWlnaHQKICAgICAgICAgICAg ICAgICAgICAgICAgICAgOmFyb3VuZCBhcm91bmQKICAgICAgICAgICAgICAgICAgICAgICAgICAg OmZhY2UgJ3BvcHVwLW1lbnUtZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICA6c2VsZWN0 aW9uLWZhY2UgJ3BvcHVwLW1lbnUtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAg ICAgICAgOm1hcmdpbi1sZWZ0IG1hcmdpbi1sZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAg IDptYXJnaW4tcmlnaHQgbWFyZ2luLXJpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDpz Y3JvbGwtYmFyIHNjcm9sbC1iYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnN5bWJvbCBz eW1ib2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVudCBwYXJlbnQpKQogICh1bndp bmQtcHJvdGVjdAogICAgICAocHJvZ24KICAgICAgICAocG9wdXAtc2V0LWxpc3QgbWVudSBsaXN0 KQogICAgICAgIChwb3B1cC1kcmF3IG1lbnUpCiAgICAgICAgKHBvcHVwLW1lbnUtZXZlbnQtbG9v cCBtZW51IGtleW1hcCBmYWxsYmFjayBwcm9tcHQgaGVscC1kZWxheSBpc2VhcmNoCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpc2VhcmNoLWN1cnNvci1jb2xvciBpc2VhcmNoLWtleW1h cCBpc2VhcmNoLWNhbGxiYWNrKSkKICAgIChwb3B1cC1kZWxldGUgbWVudSkpKQoKKGRlZnVuIHBv cHVwLWNhc2NhZGUtbWVudSAobGlzdCAmcmVzdCBhcmdzKQogICJTYW1lIHRvIGBwb3B1cC1tZW51 JywgYnV0IGFuIGVsZW1lbnQgb2YgYExJU1QnIGNhbiBiZQpsaXN0IG9mIHN1Ym1lbnUuIgogIChh cHBseSAncG9wdXAtbWVudSoKICAgICAgICAgKG1hcGNhciAobGFtYmRhIChpdGVtKQogICAgICAg ICAgICAgICAgICAgKGlmIChjb25zcCBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgIChwb3B1 cC1tYWtlLWl0ZW0gKGNhciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOnN1Ymxpc3QgKGNkciBpdGVtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnN5bWJvbCAiPiIpCiAgICAgICAgICAgICAgICAgICAgIGl0ZW0pKQogICAgICAg ICAgICAgICAgIGxpc3QpCiAgICAgICAgIDpzeW1ib2wgdAogICAgICAgICBhcmdzKSkKCihkZWZ2 YXIgcG9wdXAtbWVudS1rZXltYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkK ICAgIChkZWZpbmUta2V5IG1hcCAiXHIiICAgICAgICAncG9wdXAtc2VsZWN0KQogICAgKGRlZmlu ZS1rZXkgbWFwICJcQy1mIiAgICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwIFty aWdodF0gICAgICdwb3B1cC1vcGVuKQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1iIiAgICAgICdw b3B1cC1jbG9zZSkKICAgIChkZWZpbmUta2V5IG1hcCBbbGVmdF0gICAgICAncG9wdXAtY2xvc2Up CgogICAgKGRlZmluZS1rZXkgbWFwICJcQy1uIiAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmlu ZS1rZXkgbWFwIFtkb3duXSAgICAgICdwb3B1cC1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJc Qy1wIiAgICAgICdwb3B1cC1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBbdXBdICAgICAg ICAncG9wdXAtcHJldmlvdXMpCgogICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gICAgICAgICdwb3B1 cC1oZWxwKQogICAgKGRlZmluZS1rZXkgbWFwIChrYmQgIlxDLT8iKSAncG9wdXAtaGVscCkKCiAg ICAoZGVmaW5lLWtleSBtYXAgIlxDLXMiICAgICAgJ3BvcHVwLWlzZWFyY2gpCiAgICBtYXApKQoK KHByb3ZpZGUgJ3BvcHVwKQo7OzsgcG9wdXAuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_ Content-Type: text/x-emacs-lisp Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="auto-complete.el" Ozs7IGF1dG8tY29tcGxldGUuZWwgLS0tIEF1dG8gQ29tcGxldGlvbiBmb3IgR05VIEVtYWNzCgo7 OyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgIFRvbW9oaXJvIE1hdHN1eWFtYQoKOzsg QXV0aG9yOiBUb21vaGlybyBNYXRzdXlhbWEgPG0yeW0ucHViQGdtYWlsLmNvbT4KOzsgVVJMOiBo dHRwOi8vY3g0YS5vcmcvc29mdHdhcmUvYXV0by1jb21wbGV0ZQo7OyBLZXl3b3JkczogY29tcGxl dGlvbiwgY29udmVuaWVuY2UKOzsgVmVyc2lvbjogMS40Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENv bW1lbnRhcnk6Cjs7Cjs7IFRoaXMgZXh0ZW5zaW9uIHByb3ZpZGVzIGEgd2F5IHRvIGNvbXBsZXRl IHdpdGggcG9wdXAgbWVudSBsaWtlOgo7Owo7OyAgICAgZGVmLSEtCjs7ICAgICArLS0tLS0tLS0t LS0tLS0tLS0rCjs7ICAgICB8ZGVmdW46Ojo6Ojo6Ojo6Ojp8Cjs7ICAgICB8ZGVmdmFyICAgICAg ICAgICB8Cjs7ICAgICB8ZGVmbWFjcm8gICAgICAgICB8Cjs7ICAgICB8ICAgICAgIC4uLiAgICAg ICB8Cjs7ICAgICArLS0tLS0tLS0tLS0tLS0tLS0rCjs7Cjs7IFlvdSBjYW4gY29tcGxldGUgYnkg dHlwaW5nIGFuZCBzZWxlY3RpbmcgbWVudS4KOzsKOzsgRW50aXJlIGRvY3VtZW50cyBhcmUgbG9j YXRlZCBpbiBkb2MvIGRpcmVjdG9yeS4KOzsgVGFrZSBhIGxvb2sgZm9yIGluZm9ybWF0aW9uLgo7 Owo7OyBFbmpveSEKCjs7OyBDb2RlOgoKDAoKKGV2YWwtd2hlbi1jb21waWxlCiAgKHJlcXVpcmUg J2NsKSkKCihyZXF1aXJlICdwb3B1cCkKCjs7OzsgR2xvYmFsIHN0dWZmCgooZGVmdW4gYWMtZXJy b3IgKCZvcHRpb25hbCB2YXIpCiAgIlJlcG9ydCBhbiBlcnJvciBhbmQgZGlzYWJsZSBgYXV0by1j b21wbGV0ZS1tb2RlJy4iCiAgKGlnbm9yZS1lcnJvcnMKICAgIChtZXNzYWdlICJhdXRvLWNvbXBs ZXRlIGVycm9yOiAlcyIgdmFyKQogICAgKGF1dG8tY29tcGxldGUtbW9kZSAtMSkKICAgIHZhcikp CgoMCgo7Ozs7IEN1c3RvbWl6YXRpb24KCihkZWZncm91cCBhdXRvLWNvbXBsZXRlIG5pbAogICJB dXRvIGNvbXBsZXRpb24uIgogIDpncm91cCAnY29tcGxldGlvbgogIDpwcmVmaXggImFjLSIpCgoo ZGVmY3VzdG9tIGFjLWRlbGF5IDAuMQogICJEZWxheSB0byBjb21wbGV0aW9ucyB3aWxsIGJlIGF2 YWlsYWJsZS4iCiAgOnR5cGUgJ2Zsb2F0CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1 c3RvbSBhYy1hdXRvLXNob3ctbWVudSAwLjgKICAiTm9uLW5pbCBtZWFucyBjb21wbGV0aW9uIG1l bnUgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNob3duLiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3Qg OnRhZyAiWWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQog ICAgICAgICAgICAgICAgIChmbG9hdCA6dGFnICJUaW1lciIpKQogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtc2hvdy1tZW51LWltbWVkaWF0ZWx5LW9uLWF1dG8tY29tcGxl dGUgdAogICJOb24tbmlsIG1lYW5zIG1lbnUgd2lsbCBiZSBzaG93ZWQgaW1tZWRpYXRlbHkgb24g YGF1dG8tY29tcGxldGUnLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21wbGV0 ZSkKCihkZWZjdXN0b20gYWMtZXhwYW5kLW9uLWF1dG8tY29tcGxldGUgdAogICJOb24tbmlsIG1l YW5zIGV4cGFuZCB3aG9sZSBjb21tb24gcGFydCBvbiBmaXJzdCB0aW1lIGBhdXRvLWNvbXBsZXRl Jy4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9t IGFjLWRpc2FibGUtZmFjZXMgJyhmb250LWxvY2stY29tbWVudC1mYWNlIGZvbnQtbG9jay1zdHJp bmctZmFjZSBmb250LWxvY2stZG9jLWZhY2UpCiAgIk5vbi1uaWwgbWVhbnMgZGlzYWJsZSBhdXRv bWF0aWMgY29tcGxldGlvbiBvbiBzcGVjaWZpZWQgZmFjZXMuIgogIDp0eXBlICcocmVwZWF0IHN5 bWJvbCkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLXN0b3AtZmx5bWFr ZS1vbi1jb21wbGV0aW5nIHQKICAiTm9uLW5pbCBtZWFucyBkaXNibGUgZmx5bWFrZSB0ZW1wb3Jh cmlseSBvbiBjb21wbGV0aW5nLiIKICA6dHlwZSAnYm9vbGVhbgogIDpncm91cCAnYXV0by1jb21w bGV0ZSkKCihkZWZjdXN0b20gYWMtdXNlLWZ1enp5IHQKICAiTm9uLW5pbCBtZWFucyB1c2UgZnV6 enkgbWF0Y2hpbmcuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoK KGRlZmN1c3RvbSBhYy1mdXp6eS1jdXJzb3ItY29sb3IgInJlZCIKICAiQ3Vyc29yIGNvbG9yIGlu IGZ1enp5IG1vZGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoo ZGVmY3VzdG9tIGFjLXVzZS1jb21waGlzdCB0CiAgIk5vbi1uaWwgbWVhbnMgdXNlIGludGVsbGln ZW50IGNvbXBsZXRpb24gaGlzdG9yeS4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8t Y29tcGxldGUpCgooZGVmY3VzdG9tIGFjLWNvbXBoaXN0LXRocmVzaG9sZCAwLjcKICAiUGVyY2Vu dGFnZSBvZiBpZ25vcmluZyBsb3cgc2NvcmVkIGNhbmRpZGF0ZXMuIgogIDp0eXBlICdmbG9hdAog IDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtY29tcGhpc3QtZmlsZQogIChl eHBhbmQtZmlsZS1uYW1lIChjb25jYXQgKGlmIChib3VuZHAgJ3VzZXItZW1hY3MtZGlyZWN0b3J5 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItZW1hY3MtZGlyZWN0b3J5CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ+Ly5lbWFjcy5kLyIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiL2FjLWNvbXBoaXN0LmRhdCIpKQogICJDb21wbGV0aW9uIGhpc3Rvcnkg ZmlsZSBuYW1lLiIKICA6dHlwZSAnc3RyaW5nCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRl ZmN1c3RvbSBhYy11c2VyLWRpY3Rpb25hcnkgbmlsCiAgIlVzZXIgZGVmaW5lZCBkaWN0aW9uYXJ5 IgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVm Y3VzdG9tIGFjLWRpY3Rpb25hcnktZmlsZXMgJygifi8uZGljdCIpCiAgIkRpY3Rpb25hcnkgZmls ZXMuIgogIDp0eXBlICcocmVwZWF0IHN0cmluZykKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihk ZWZ2YXJhbGlhcyAnYWMtdXNlci1kaWN0aW9uYXJ5LWZpbGVzICdhYy1kaWN0aW9uYXJ5LWZpbGVz KQoKKGRlZmN1c3RvbSBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzIG5pbAogICJEaWN0aW9uYXJ5 IGRpcmVjdG9yaWVzLiIKICA6dHlwZSAnKHJlcGVhdCBzdHJpbmcpCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmN1c3RvbSBhYy11c2UtcXVpY2staGVscCB0CiAgIk5vbi1uaWwgbWVhbnMg dXNlIHF1aWNrIGhlbHAuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRl KQoKKGRlZmN1c3RvbSBhYy1xdWljay1oZWxwLWRlbGF5IDEuNQogICJEZWxheSB0byBzaG93IHF1 aWNrIGhlbHAuIgogIDp0eXBlICdmbG9hdAogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtbWVudS1oZWlnaHQgMTAKICAiTWF4IGhlaWdodCBvZiBjYW5kaWRhdGUgbWVudS4i CiAgOnR5cGUgJ2ludGVnZXIKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCihkZWZ2YXJhbGlhcyAn YWMtY2FuZGlkYXRlLW1lbnUtaGVpZ2h0ICdhYy1tZW51LWhlaWdodCkKCihkZWZjdXN0b20gYWMt cXVpY2staGVscC1oZWlnaHQgMjAKICAiTWF4IGhlaWdodCBvZiBxdWljayBoZWxwLiIKICA6dHlw ZSAnaW50ZWdlcgogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtcXVpY2st aGVscC1wcmVmZXItcG9zLXRpcCB0CiAgIlByZWZlciBuYXRpdmUgdG9vbHRpcCB3aXRoIHBvcy10 aXAgdGhhbiBvdmVybGF5IHBvcHVwIGZvciBkaXNwbGF5aW5nIHF1aWNrIGhlbHAuIgogIDp0eXBl ICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQooZGVmdmFyYWxpYXMgJ2FjLXF1aWNr LWhlbHAtcHJlZmVyLXggJ2FjLXF1aWNrLWhlbHAtcHJlZmVyLXBvcy10aXApCgooZGVmY3VzdG9t IGFjLWNhbmRpZGF0ZS1saW1pdCBuaWwKICAiTGltaXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuIE5v bi1pbnRlZ2VyIG1lYW5zIG5vIGxpbWl0LiIKICA6dHlwZSAnaW50ZWdlcgogIDpncm91cCAnYXV0 by1jb21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1jYW5kaWRhdGUtbWF4ICdhYy1jYW5kaWRhdGUt bGltaXQpCgooZGVmY3VzdG9tIGFjLW1vZGVzCiAgJyhlbWFjcy1saXNwLW1vZGUgbGlzcC1tb2Rl IGxpc3AtaW50ZXJhY3Rpb24tbW9kZQogICAgc2xpbWUtcmVwbC1tb2RlCiAgICBjLW1vZGUgY2Mt bW9kZSBjKystbW9kZQogICAgamF2YS1tb2RlIG1hbGFiYXItbW9kZSBjbG9qdXJlLW1vZGUgc2Nh bGEtbW9kZQogICAgc2NoZW1lLW1vZGUKICAgIG9jYW1sLW1vZGUgdHVhcmVnLW1vZGUgaGFza2Vs bC1tb2RlCiAgICBwZXJsLW1vZGUgY3BlcmwtbW9kZSBweXRob24tbW9kZSBydWJ5LW1vZGUKICAg IGVjbWFzY3JpcHQtbW9kZSBqYXZhc2NyaXB0LW1vZGUganMtbW9kZSBqczItbW9kZSBwaHAtbW9k ZSBjc3MtbW9kZQogICAgbWFrZWZpbGUtbW9kZSBzaC1tb2RlIGZvcnRyYW4tbW9kZSBmOTAtbW9k ZSBhZGEtbW9kZQogICAgeG1sLW1vZGUgc2dtbC1tb2RlCiAgICB0cy1tb2RlKQogICJNYWpvciBt b2RlcyBgYXV0by1jb21wbGV0ZS1tb2RlJyBjYW4gcnVuIG9uLiIKICA6dHlwZSAnKHJlcGVhdCBz eW1ib2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy1jb21wYXRpYmxl LXBhY2thZ2VzLXJlZ2V4cAogICJeYWMtIgogICJSZWdleHAgdG8gaW5kaWNhdGUgd2hhdCBwYWNr YWdlcyBjYW4gd29yayB3aXRoIGF1dG8tY29tcGxldGUuIgogIDp0eXBlICdzdHJpbmcKICA6Z3Jv dXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFjLW5vbi10cmlnZ2VyLWNvbW1hbmRzCiAg JygqdGFibGUtLWNlbGwtc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiQ29tbWFuZHMgdGhhdCBjYW4n dCBiZSB1c2VkIGFzIHRyaWdnZXJzIG9mIGBhdXRvLWNvbXBsZXRlJy4iCiAgOnR5cGUgJyhyZXBl YXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZjdXN0b20gYWMtdHJpZ2dl ci1jb21tYW5kcwogICcoc2VsZi1pbnNlcnQtY29tbWFuZCkKICAiVHJpZ2dlciBjb21tYW5kcyB0 aGF0IHNwZWNpZnkgd2hldGhlciBgYXV0by1jb21wbGV0ZScgc2hvdWxkIHN0YXJ0IG9yIG5vdC4i CiAgOnR5cGUgJyhyZXBlYXQgc3ltYm9sKQogIDpncm91cCAnYXV0by1jb21wbGV0ZSkKCihkZWZj dXN0b20gYWMtdHJpZ2dlci1jb21tYW5kcy1vbi1jb21wbGV0aW5nCiAgJyhkZWxldGUtYmFja3dh cmQtY2hhcgogICAgYmFja3dhcmQtZGVsZXRlLWNoYXIKICAgIGJhY2t3YXJkLWRlbGV0ZS1jaGFy LXVudGFiaWZ5KQogICJUcmlnZ2VyIGNvbW1hbmRzIHRoYXQgc3BlY2lmeSB3aGV0aGVyIGBhdXRv LWNvbXBsZXRlJyBzaG91bGQgY29udGludWUgb3Igbm90LiIKICA6dHlwZSAnKHJlcGVhdCBzeW1i b2wpCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3RvbSBhYy10cmlnZ2VyLWtleSBu aWwKICAiTm9uLW5pbCBtZWFucyBgYXV0by1jb21wbGV0ZScgd2lsbCBzdGFydCBieSB0eXBpbmcg dGhpcyBrZXkuCklmIHlvdSBzcGVjaWZ5IHRoaXMgVEFCLCBmb3IgZXhhbXBsZSwgYGF1dG8tY29t cGxldGUnIHdpbGwgc3RhcnQgYnkgdHlwaW5nIFRBQiwKYW5kIGlmIHRoZXJlIGlzIG5vIGNvbXBs ZXRpb25zLCBhbiBvcmlnaW5hbCBjb21tYW5kIHdpbGwgYmUgZmFsbGJhY2tlZC4iCiAgOnR5cGUg J3N0cmluZwogIDpncm91cCAnYXV0by1jb21wbGV0ZQogIDpzZXQgKGxhbWJkYSAoc3ltYm9sIHZh bHVlKQogICAgICAgICAoc2V0LWRlZmF1bHQgc3ltYm9sIHZhbHVlKQogICAgICAgICAod2hlbiAo YW5kIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgKGZib3VuZHAgJ2FjLXNldC10cmlnZ2VyLWtl eSkpCiAgICAgICAgICAgKGFjLXNldC10cmlnZ2VyLWtleSB2YWx1ZSkpKSkKCihkZWZjdXN0b20g YWMtYXV0by1zdGFydCAyCiAgIk5vbi1uaWwgbWVhbnMgY29tcGxldGlvbiB3aWxsIGJlIHN0YXJ0 ZWQgYXV0b21hdGljYWxseS4KUG9zaXRpdmUgaW50ZWdlciBtZWFucyBpZiBhIGxlbmd0aCBvZiBh IHdvcmQgeW91IGVudGVyZWQgaXMgbGFyZ2VyIHRoYW4gdGhlIHZhbHVlLApjb21wbGV0aW9uIHdp bGwgYmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LgpJZiB5b3Ugc3BlY2lmeSBgbmlsJywgbmV2ZXIg YmUgc3RhcnRlZCBhdXRvbWF0aWNhbGx5LiIKICA6dHlwZSAnKGNob2ljZSAoY29uc3QgOnRhZyAi WWVzIiB0KQogICAgICAgICAgICAgICAgIChjb25zdCA6dGFnICJOZXZlciIgbmlsKQogICAgICAg ICAgICAgICAgIChpbnRlZ2VyIDp0YWcgIlJlcXVpcmUiKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxl dGUpCgooZGVmY3VzdG9tIGFjLXN0b3Atd29yZHMgbmlsCiAgIkxpc3Qgb2Ygc3RyaW5nIHRvIHN0 b3AgY29tcGxldGlvbi4iCiAgOnR5cGUgJyhyZXBlYXQgc3RyaW5nKQogIDpncm91cCAnYXV0by1j b21wbGV0ZSkKKGRlZnZhcmFsaWFzICdhYy1pZ25vcmVzICdhYy1zdG9wLXdvcmRzKQoKKGRlZmN1 c3RvbSBhYy11c2UtZGljdGlvbmFyeS1hcy1zdG9wLXdvcmRzIHQKICAiTm9uLW5pbCBtZWFucyBh IGJ1ZmZlciByZWxhdGVkIGRpY3Rpb25hcnkgd2lsbCBiZSB0aG91Z2h0IG9mIGFzIHN0b3Agd29y ZHMuIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmN1c3Rv bSBhYy1pZ25vcmUtY2FzZSAnc21hcnQKICAiTm9uLW5pbCBtZWFucyBhdXRvLWNvbXBsZXRlIGln bm9yZXMgY2FzZS4KSWYgdGhpcyB2YWx1ZSBpcyBgc21hcnQnLCBhdXRvLWNvbXBsZXRlIGlnbm9y ZXMgY2FzZSBvbmx5IHdoZW4KYSBwcmVmaXggZG9lbid0IGNvbnRhaW4gYW55IHVwcGVyIGNhc2Ug bGV0dGVycy4iCiAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcgIlllcyIgdCkKICAgICAgICAg ICAgICAgICAoY29uc3QgOnRhZyAiU21hcnQiIHNtYXJ0KQogICAgICAgICAgICAgICAgIChjb25z dCA6dGFnICJObyIgbmlsKSkKICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LWR3aW0gdAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlJyB3b3JrcyBiYXNlZCBvbiBE byBXaGF0IEkgTWVhbi4iCiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUp CgooZGVmY3VzdG9tIGFjLXVzZS1tZW51LW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBhIHNwZWNp YWwga2V5bWFwIGBhYy1tZW51LW1hcCcgb24gY29tcGxldGluZyBtZW51IHdpbGwgYmUgdXNlZC4i CiAgOnR5cGUgJ2Jvb2xlYW4KICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgooZGVmY3VzdG9tIGFj LXVzZS1vdmVycmlkaW5nLWxvY2FsLW1hcCBuaWwKICAiTm9uLW5pbCBtZWFucyBgb3ZlcnJpZGlu Zy1sb2NhbC1tYXAnIHdpbGwgYmUgdXNlZCB0byBoYWNrIGZvciBvdmVycmlkaW5nIGtleSBldmVu dHMgb24gYXV0by1jb3BsZXRpb24uIgogIDp0eXBlICdib29sZWFuCiAgOmdyb3VwICdhdXRvLWNv bXBsZXRlKQoKKGRlZmZhY2UgYWMtY29tcGxldGlvbi1mYWNlCiAgJygodCAoOmZvcmVncm91bmQg ImRhcmtncmF5IiA6dW5kZXJsaW5lIHQpKSkKICAiRmFjZSBmb3IgaW5saW5lIGNvbXBsZXRpb24i CiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMtY2FuZGlkYXRlLWZhY2UKICAn KCh0ICg6YmFja2dyb3VuZCAibGlnaHRncmF5IiA6Zm9yZWdyb3VuZCAiYmxhY2siKSkpCiAgIkZh Y2UgZm9yIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlKQoKKGRlZmZhY2UgYWMt c2VsZWN0aW9uLWZhY2UKICAnKCh0ICg6YmFja2dyb3VuZCAic3RlZWxibHVlIiA6Zm9yZWdyb3Vu ZCAid2hpdGUiKSkpCiAgIkZhY2UgZm9yIHNlbGVjdGVkIGNhbmRpZGF0ZS4iCiAgOmdyb3VwICdh dXRvLWNvbXBsZXRlKQoKKGRlZnZhciBhdXRvLWNvbXBsZXRlLW1vZGUtaG9vayBuaWwKICAiSG9v ayBmb3IgYGF1dG8tY29tcGxldGUtbW9kZScuIikKCgwKCjs7OzsgSW50ZXJuYWwgdmFyaWFibGVz CgooZGVmdmFyIGF1dG8tY29tcGxldGUtbW9kZSBuaWwKICAiRHVtbXkgdmFyaWFibGUgdG8gc3Vw cHJlc3MgY29tcGlsZXIgd2FybmluZ3MuIikKCihkZWZ2YXIgYWMtY3Vyc29yLWNvbG9yIG5pbAog ICJPbGQgY3Vyc29yIGNvbG9yLiIpCgooZGVmdmFyIGFjLWlubGluZSBuaWwKICAiSW5saW5lIGNv bXBsZXRpb24gaW5zdGFuY2UuIikKCihkZWZ2YXIgYWMtbWVudSBuaWwKICAiTWVudSBpbnN0YW5j ZS4iKQoKKGRlZnZhciBhYy1zaG93LW1lbnUgbmlsCiAgIkZsYWcgdG8gc2hvdyBtZW51IG9uIHRp bWVyIHRpY2suIikKCihkZWZ2YXIgYWMtbGFzdC1jb21wbGV0aW9uIG5pbAogICJDb25zIG9mIHBy ZWZpeCBtYXJrZXIgYW5kIHNlbGVjdGVkIGl0ZW0gb2YgbGFzdCBjb21wbGV0aW9uLiIpCgooZGVm dmFyIGFjLXF1aWNrLWhlbHAgbmlsCiAgIlF1aWNrIGhlbHAgaW5zdGFuY2UiKQoKKGRlZnZhciBh Yy1jb21wbGV0aW5nIG5pbAogICJOb24tbmlsIG1lYW5zIGBhdXRvLWNvbXBsZXRlLW1vZGUnIGlz IG5vdyB3b3JraW5nIG9uIGNvbXBsZXRpb24uIikKCihkZWZ2YXIgYWMtYnVmZmVyIG5pbAogICJC dWZmZXIgd2hlcmUgYXV0by1jb21wbGV0ZSBpcyBzdGFydGVkLiIpCgooZGVmdmFyIGFjLXBvaW50 IG5pbAogICJTdGFydCBwb2ludCBvZiBwcmVmaXguIikKCihkZWZ2YXIgYWMtbGFzdC1wb2ludCBu aWwKICAiTGFzdCBwb2ludCBvZiB1cGRhdGluZyBwYXR0ZXJuLiIpCgooZGVmdmFyIGFjLXByZWZp eCBuaWwKICAiUHJlZml4IHN0cmluZy4iKQooZGVmdmFyYWxpYXMgJ2FjLXRhcmdldCAnYWMtcHJl Zml4KQoKKGRlZnZhciBhYy1zZWxlY3RlZC1jYW5kaWRhdGUgbmlsCiAgIkxhc3Qgc2VsZWN0ZWQg Y2FuZGlkYXRlLiIpCgooZGVmdmFyIGFjLWNvbW1vbi1wYXJ0IG5pbAogICJDb21tb24gcGFydCBz dHJpbmcgb2YgbWVhbmluZ2Z1bCBjYW5kaWRhdGVzLgpJZiB0aGVyZSBpcyBubyBjb21tb24gcGFy dCwgdGhpcyB3aWxsIGJlIG5pbC4iKQoKKGRlZnZhciBhYy13aG9sZS1jb21tb24tcGFydCBuaWwK ICAiQ29tbW9uIHBhcnQgc3RyaW5nIG9mIHdob2xlIGNhbmRpZGF0ZXMuCklmIHRoZXJlIGlzIG5v IGNvbW1vbiBwYXJ0LCB0aGlzIHdpbGwgYmUgbmlsLiIpCgooZGVmdmFyIGFjLXByZWZpeC1vdmVy bGF5IG5pbAogICJPdmVybGF5IGZvciBwcmVmaXggc3RyaW5nLiIpCgooZGVmdmFyIGFjLXRpbWVy IG5pbAogICJDb21wbGV0aW9uIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtc2hvdy1tZW51LXRp bWVyIG5pbAogICJTaG93IG1lbnUgaWRsZSB0aW1lci4iKQoKKGRlZnZhciBhYy1xdWljay1oZWxw LXRpbWVyIG5pbAogICJRdWljayBoZWxwIGlkbGUgdGltZXIuIikKCihkZWZ2YXIgYWMtdHJpZ2dl cmVkIG5pbAogICJGbGFnIHRvIHVwZGF0ZS4iKQoKKGRlZnZhciBhYy1saW1pdCBuaWwKICAiTGlt aXQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMgZm9yIGVhY2ggc291cmNlcy4iKQoKKGRlZnZhciBhYy1j YW5kaWRhdGVzIG5pbAogICJDdXJyZW50IGNhbmRpZGF0ZXMuIikKCihkZWZ2YXIgYWMtY2FuZGlk YXRlcy1jYWNoZSBuaWwKICAiQ2FuZGlkYXRlcyBjYWNoZSBmb3IgaW5kaXZpZHVhbCBzb3VyY2Vz LiIpCgooZGVmdmFyIGFjLWZ1enp5LWVuYWJsZSBuaWwKICAiTm9uLW5pbCBtZWFucyBmdXp6eSBt YXRjaGluZyBpcyBlbmFibGVkLiIpCgooZGVmdmFyIGFjLWR3aW0tZW5hYmxlIG5pbAogICJOb24t bmlsIG1lYW5zIERXSU0gY29tcGxldGlvbiB3aWxsIGJlIGFsbG93ZWQuIikKCihkZWZ2YXIgYWMt bW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkKICAiQXV0by1jb21wbGV0ZSBtb2RlIG1hcC4g SXQgaXMgYWxzbyB1c2VkIGZvciB0cmlnZ2VyIGtleSBjb21tYW5kLiBTZWUgYWxzbyBgYWMtdHJp Z2dlci1rZXknLiIpCgooZGVmdmFyIGFjLWNvbXBsZXRpbmctbWFwCiAgKGxldCAoKG1hcCAobWFr ZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAgIlx0IiAnYWMtZXhwYW5kKQog ICAgKGRlZmluZS1rZXkgbWFwICJcciIgJ2FjLWNvbXBsZXRlKQogICAgKGRlZmluZS1rZXkgbWFw IChrYmQgIk0tVEFCIikgJ2F1dG8tY29tcGxldGUpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLXMi ICdhYy1pc2VhcmNoKQoKICAgIChkZWZpbmUta2V5IG1hcCAiXE0tbiIgJ2FjLW5leHQpCiAgICAo ZGVmaW5lLWtleSBtYXAgIlxNLXAiICdhYy1wcmV2aW91cykKICAgIChkZWZpbmUta2V5IG1hcCBb ZG93bl0gJ2FjLW5leHQpCiAgICAoZGVmaW5lLWtleSBtYXAgW3VwXSAnYWMtcHJldmlvdXMpCgog ICAgKGRlZmluZS1rZXkgbWFwIFtmMV0gJ2FjLWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgW00t ZjFdICdhYy1wZXJzaXN0LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy0/IikgJ2Fj LWhlbHApCiAgICAoZGVmaW5lLWtleSBtYXAgKGtiZCAiQy1NLT8iKSAnYWMtcGVyc2lzdC1oZWxw KQoKICAgIChkZWZpbmUta2V5IG1hcCBbQy1kb3duXSAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93 bikKICAgIChkZWZpbmUta2V5IG1hcCBbQy11cF0gJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQog ICAgKGRlZmluZS1rZXkgbWFwICJcQy1cTS1uIiAnYWMtcXVpY2staGVscC1zY3JvbGwtZG93bikK ICAgIChkZWZpbmUta2V5IG1hcCAiXEMtXE0tcCIgJ2FjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwKQoK ICAgIChkb3RpbWVzIChpIDkpCiAgICAgIChsZXQgKChzeW1ib2wgKGludGVybiAoZm9ybWF0ICJh Yy1jb21wbGV0ZS0lZCIgKDErIGkpKSkpKQogICAgICAgIChmc2V0IHN5bWJvbAogICAgICAgICAg ICAgIGAobGFtYmRhICgpCiAgICAgICAgICAgICAgICAgKGludGVyYWN0aXZlKQogICAgICAgICAg ICAgICAgICh3aGVuIChhbmQgKGFjLW1lbnUtbGl2ZS1wKSAocG9wdXAtc2VsZWN0IGFjLW1lbnUg LGkpKQogICAgICAgICAgICAgICAgICAgKGFjLWNvbXBsZXRlKSkpKQogICAgICAgIChkZWZpbmUt a2V5IG1hcCAocmVhZC1rYmQtbWFjcm8gKGZvcm1hdCAiTS0lcyIgKDErIGkpKSkgc3ltYm9sKSkp CgogICAgbWFwKQogICJLZXltYXAgZm9yIGNvbXBsZXRpb24uIikKKGRlZnZhcmFsaWFzICdhYy1j b21wbGV0ZS1tb2RlLW1hcCAnYWMtY29tcGxldGluZy1tYXApCgooZGVmdmFyIGFjLW1lbnUtbWFw CiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoZGVmaW5lLWtleSBtYXAg IlxDLW4iICdhYy1uZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1wIiAnYWMtcHJldmlvdXMp CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKQog ICJLZXltYXAgZm9yIGNvbXBsZXRpb24gb24gY29tcGxldGluZyBtZW51LiIpCgooZGVmdmFyIGFj LWN1cnJlbnQtbWFwCiAgKGxldCAoKG1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkpCiAgICAoc2V0 LWtleW1hcC1wYXJlbnQgbWFwIGFjLWNvbXBsZXRpbmctbWFwKQogICAgbWFwKSkKCihkZWZ2YXIg YWMtbWF0Y2gtZnVuY3Rpb24gJ2FsbC1jb21wbGV0aW9ucwogICJEZWZhdWx0IG1hdGNoIGZ1bmN0 aW9uLiIpCgooZGVmdmFyIGFjLXByZWZpeC1kZWZpbml0aW9ucwogICcoKHN5bWJvbCAuIGFjLXBy ZWZpeC1zeW1ib2wpCiAgICAoZmlsZSAuIGFjLXByZWZpeC1maWxlKQogICAgKHZhbGlkLWZpbGUg LiBhYy1wcmVmaXgtdmFsaWQtZmlsZSkKICAgIChjLWRvdCAuIGFjLXByZWZpeC1jLWRvdCkKICAg IChjLWRvdC1yZWYgLiBhYy1wcmVmaXgtYy1kb3QtcmVmKSkKICAiUHJlZml4IGRlZmluaXRpb25z IGZvciBjb21tb24gdXNlLiIpCgooZGVmdmFyIGFjLXNvdXJjZXMgJyhhYy1zb3VyY2Utd29yZHMt aW4tc2FtZS1tb2RlLWJ1ZmZlcnMpCiAgIlNvdXJjZXMgZm9yIGNvbXBsZXRpb24uIikKKG1ha2Ut dmFyaWFibGUtYnVmZmVyLWxvY2FsICdhYy1zb3VyY2VzKQoKKGRlZnZhciBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICJDb21waWxlZCBzb3VyY2Ugb2YgYGFjLXNvdXJjZXMnLiIpCgooZGVmdmFy IGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAiQ3VycmVudCB3b3JraW5nIHNvdXJjZXMuIFRoaXMg aXMgc3VibGlzdCBvZiBgYWMtY29tcGlsZWQtc291cmNlcycuIikKCihkZWZ2YXIgYWMtb21uaS1j b21wbGV0aW9uLXNvdXJjZXMgbmlsCiAgIkRvIG5vdCB1c2UgdGhpcyBhbnltb3JlLiIpCgooZGVm dmFyIGFjLWN1cnJlbnQtcHJlZml4LWRlZiBuaWwpCgooZGVmdmFyIGFjLWlnbm9yaW5nLXByZWZp eC1kZWYgbmlsKQoKDAoKOzs7OyBJbnRlbGxpZ2VudCBjb21wbGV0aW9uIGhpc3RvcnkKCihkZWZ2 YXIgYWMtY29tcGhpc3QgbmlsCiAgIkRhdGFiYXNlIG9mIGNvbXBsZXRpb24gaGlzdG9yeS4iKQoK KGRlZnN1YnN0IGFjLWNvbXBoaXN0LW1ha2UtdGFiICgpCiAgKG1ha2UtaGFzaC10YWJsZSA6dGVz dCAnZXF1YWwpKQoKKGRlZnN1YnN0IGFjLWNvbXBoaXN0LXRhYiAoZGIpCiAgKG50aCAwIGRiKSkK CihkZWZzdWJzdCBhYy1jb21waGlzdC1jYWNoZSAoZGIpCiAgKG50aCAxIGRiKSkKCihkZWZ1biBh Yy1jb21waGlzdC1tYWtlICgmb3B0aW9uYWwgdGFiKQogIChsaXN0IChvciB0YWIgKGFjLWNvbXBo aXN0LW1ha2UtdGFiKSkgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAnZXF1YWwgOndlYWtuZXNzIHQp KSkKCihkZWZ1biBhYy1jb21waGlzdC1nZXQgKGRiIHN0cmluZyAmb3B0aW9uYWwgY3JlYXRlKQog IChsZXQqICgodGFiIChhYy1jb21waGlzdC10YWIgZGIpKQogICAgICAgICAoaW5kZXggKGdldGhh c2ggc3RyaW5nIHRhYikpKQogICAgKHdoZW4gKGFuZCBjcmVhdGUgKG51bGwgaW5kZXgpKQogICAg ICAoc2V0cSBpbmRleCAobWFrZS12ZWN0b3IgKGxlbmd0aCBzdHJpbmcpIDApKQogICAgICAocHV0 aGFzaCBzdHJpbmcgaW5kZXggdGFiKSkKICAgIGluZGV4KSkKCihkZWZ1biBhYy1jb21waGlzdC1h ZGQgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJlZml4ICgxLSAobGVu Z3RoIHN0cmluZykpKSkKICAod2hlbiAoPD0gMCBwcmVmaXgpCiAgICAoc2V0cSBzdHJpbmcgKHN1 YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0cmluZykpCiAgICAobGV0ICgoc3RhdCAoYWMtY29tcGhp c3QtZ2V0IGRiIHN0cmluZyB0KSkpCiAgICAgIChpbmNmIChhcmVmIHN0YXQgcHJlZml4KSkKICAg ICAgKHJlbWhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkpCgooZGVmdW4gYWMt Y29tcGhpc3Qtc2NvcmUgKGRiIHN0cmluZyBwcmVmaXgpCiAgKHNldHEgcHJlZml4IChtaW4gcHJl Zml4ICgxLSAobGVuZ3RoIHN0cmluZykpKSkKICAoaWYgKDw9IDAgcHJlZml4KQogICAgICAobGV0 ICgoY2FjaGUgKGdldGhhc2ggc3RyaW5nIChhYy1jb21waGlzdC1jYWNoZSBkYikpKSkKICAgICAg ICAob3IgKGFuZCBjYWNoZSAoYXJlZiBjYWNoZSBwcmVmaXgpKQogICAgICAgICAgICAobGV0ICgo c3RhdCAoYWMtY29tcGhpc3QtZ2V0IGRiIHN0cmluZykpCiAgICAgICAgICAgICAgICAgIChzY29y ZSAwLjApKQogICAgICAgICAgICAgICh3aGVuIHN0YXQKICAgICAgICAgICAgICAgIChsb29wIGZv ciBwIGZyb20gMCBiZWxvdyAobGVuZ3RoIHN0cmluZykKICAgICAgICAgICAgICAgICAgICAgIDs7 IHNpZ21vaWQgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAgIHdpdGggYSA9IDUKICAgICAg ICAgICAgICAgICAgICAgIHdpdGggYiA9ICgvIDcwMC4wIGEpIDsgYm91bmRzIGZvciBhdm9pZGlu ZyByYW5nZSBlcnJvciBpbiBgZXhwJwogICAgICAgICAgICAgICAgICAgICAgd2l0aCBkID0gKC8g Ni4wIGEpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgeCA9IChtYXggKC0gYikgKG1pbiBiICgt IGQgKGFicyAoLSBwcmVmaXggcCkpKSkpCiAgICAgICAgICAgICAgICAgICAgICBmb3IgciA9ICgv IDEuMCAoMSsgKGV4cCAoKiAoLSBhKSB4KSkpKQogICAgICAgICAgICAgICAgICAgICAgZG8KICAg ICAgICAgICAgICAgICAgICAgIChpbmNmIHNjb3JlICgqIChhcmVmIHN0YXQgcCkgcikpKSkKICAg ICAgICAgICAgICA7OyBXZWlnaHQgYnkgZGlzdGFuY2UKICAgICAgICAgICAgICAoaW5jZiBzY29y ZSAobWF4IDAuMCAoLSAwLjMgKC8gKC0gKGxlbmd0aCBzdHJpbmcpIHByZWZpeCkgMTAwLjApKSkp CiAgICAgICAgICAgICAgKHVubGVzcyBjYWNoZQogICAgICAgICAgICAgICAgKHNldHEgY2FjaGUg KG1ha2UtdmVjdG9yIChsZW5ndGggc3RyaW5nKSBuaWwpKQogICAgICAgICAgICAgICAgKHB1dGhh c2ggc3RyaW5nIGNhY2hlIChhYy1jb21waGlzdC1jYWNoZSBkYikpKQogICAgICAgICAgICAgIChh c2V0IGNhY2hlIHByZWZpeCBzY29yZSkKICAgICAgICAgICAgICBzY29yZSkpKQogICAgMC4wKSkK CihkZWZ1biBhYy1jb21waGlzdC1zb3J0IChkYiBjb2xsZWN0aW9uIHByZWZpeCAmb3B0aW9uYWwg dGhyZXNob2xkKQogIChsZXQgKHJlc3VsdAogICAgICAgIChuIDApCiAgICAgICAgKHRvdGFsIDAp CiAgICAgICAgKGN1ciAwKSkKICAgIChzZXRxIHJlc3VsdCAobWFwY2FyIChsYW1iZGEgKGEpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgY3VyIHRocmVzaG9sZCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKD49IGN1ciAoKiB0b3RhbCB0aHJlc2hvbGQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBjdXIgbmlsKQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGluY2YgbikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChpbmNmIGN1ciAoY2RyIGEpKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjYXIg YSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc29ydCAobWFwY2FyIChsYW1iZGEgKHN0cmlu ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoc2NvcmUg KGFjLWNvbXBoaXN0LXNjb3JlIGRiIHN0cmluZyBwcmVmaXgpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbmNmIHRvdGFsIHNjb3JlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgc3RyaW5nIHNjb3JlKSkpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24pCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobGFtYmRhIChhIGIpICg8IChjZHIgYikgKGNkciBhKSkpKSkp CiAgICAoaWYgdGhyZXNob2xkCiAgICAgICAgKGNvbnMgbiByZXN1bHQpCiAgICAgIHJlc3VsdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LXNlcmlhbGl6ZSAoZGIpCiAgKGxldCAoYWxpc3QpCiAgICAo bWFwaGFzaCAobGFtYmRhIChrIHYpCiAgICAgICAgICAgICAgIChwdXNoIChjb25zIGsgdikgYWxp c3QpKQogICAgICAgICAgICAgKGFjLWNvbXBoaXN0LXRhYiBkYikpCiAgICAobGlzdCBhbGlzdCkp KQoKKGRlZnVuIGFjLWNvbXBoaXN0LWRlc2VyaWFsaXplIChzZXhwKQogIChjb25kaXRpb24tY2Fz ZSBuaWwKICAgICAgKGFjLWNvbXBoaXN0LW1ha2UgKGxldCAoKHRhYiAoYWMtY29tcGhpc3QtbWFr ZS10YWIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAobWFwYyAobGFtYmRhIChjb25zKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHB1dGhhc2ggKGNhciBjb25zKSAoY2Ry IGNvbnMpIHRhYikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAwIHNleHAp KQogICAgICAgICAgICAgICAgICAgICAgICAgIHRhYikpCiAgICAoZXJyb3IgKG1lc3NhZ2UgIklu dmFsaWQgY29tcGhpc3QgZGIuIikgbmlsKSkpCgooZGVmdW4gYWMtY29tcGhpc3QtaW5pdCAoKQog IChhYy1jb21waGlzdC1sb2FkKQogIChhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICdhYy1jb21w aGlzdC1zYXZlKSkKCihkZWZ1biBhYy1jb21waGlzdC1sb2FkICgpCiAgKGludGVyYWN0aXZlKQog IChsZXQgKChkYiAoaWYgKGZpbGUtZXhpc3RzLXAgYWMtY29tcGhpc3QtZmlsZSkKICAgICAgICAg ICAgICAgIChpZ25vcmUtZXJyb3JzCiAgICAgICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVy CiAgICAgICAgICAgICAgICAgICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGFjLWNvbXBoaXN0LWZp bGUpCiAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAg ICAgICAgICAgICAoYWMtY29tcGhpc3QtZGVzZXJpYWxpemUgKHJlYWQgKGN1cnJlbnQtYnVmZmVy KSkpKSkpKSkKICAgIChzZXRxIGFjLWNvbXBoaXN0IChvciBkYiAoYWMtY29tcGhpc3QtbWFrZSkp KSkpCgooZGVmdW4gYWMtY29tcGhpc3Qtc2F2ZSAoKQogIChpbnRlcmFjdGl2ZSkKICAocmVxdWly ZSAncHApCiAgKGlnbm9yZS1lcnJvcnMKICAgICh3aXRoLXRlbXAtYnVmZmVyCiAgICAgIChwcCAo YWMtY29tcGhpc3Qtc2VyaWFsaXplIGFjLWNvbXBoaXN0KSAoY3VycmVudC1idWZmZXIpKQogICAg ICAod3JpdGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpIGFjLWNvbXBoaXN0LWZpbGUp KSkpCgoMCgo7Ozs7IERpY3Rpb25hcnkKKGRlZnZhciBhYy1idWZmZXItZGljdGlvbmFyeSBuaWwp CihkZWZ2YXIgYWMtZmlsZS1kaWN0aW9uYXJ5IChtYWtlLWhhc2gtdGFibGUgOnRlc3QgJ2VxdWFs KSkKCihkZWZ1biBhYy1jbGVhci1kaWN0aW9uYXJ5LWNhY2hlICgpCiAgKGludGVyYWN0aXZlKQog IChkb2xpc3QgKGJ1ZmZlciAoYnVmZmVyLWxpc3QpKQogICAgKHdpdGgtY3VycmVudC1idWZmZXIg YnVmZmVyCiAgICAgIChpZiAobG9jYWwtdmFyaWFibGUtcCAnYWMtYnVmZmVyLWRpY3Rpb25hcnkp CiAgICAgICAgICAoa2lsbC1sb2NhbC12YXJpYWJsZSAnYWMtYnVmZmVyLWRpY3Rpb25hcnkpKSkp CiAgKGNscmhhc2ggYWMtZmlsZS1kaWN0aW9uYXJ5KSkKCihkZWZ1biBhYy1maWxlLWRpY3Rpb25h cnkgKGZpbGVuYW1lKQogIChsZXQgKChjYWNoZSAoZ2V0aGFzaCBmaWxlbmFtZSBhYy1maWxlLWRp Y3Rpb25hcnkgJ25vbmUpKSkKICAgIChpZiAoYW5kIGNhY2hlIChub3QgKGVxIGNhY2hlICdub25l KSkpCiAgICAgICAgY2FjaGUKICAgICAgKGxldCAocmVzdWx0KQogICAgICAgIChpZ25vcmUtZXJy b3JzCiAgICAgICAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAgICAgICAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZmlsZW5hbWUpCiAgICAgICAgICAgIChzZXRxIHJlc3VsdCAoc3BsaXQtc3RyaW5n IChidWZmZXItc3RyaW5nKSAiXG4iKSkpKQogICAgICAgIChwdXRoYXNoIGZpbGVuYW1lIHJlc3Vs dCBhYy1maWxlLWRpY3Rpb25hcnkpCiAgICAgICAgcmVzdWx0KSkpKQoKKGRlZnVuIGFjLW1vZGUt ZGljdGlvbmFyeSAobW9kZSkKICAobG9vcCBmb3IgbmFtZSBpbiAoY29ucyAoc3ltYm9sLW5hbWUg bW9kZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAoaWdub3JlLWVycm9ycyAobGlzdCAoZmls ZS1uYW1lLWV4dGVuc2lvbiAoYnVmZmVyLWZpbGUtbmFtZSkpKSkpCiAgICAgICAgZm9yIGRpciBp biBhYy1kaWN0aW9uYXJ5LWRpcmVjdG9yaWVzCiAgICAgICAgZm9yIGZpbGUgPSAoY29uY2F0IGRp ciAiLyIgbmFtZSkKICAgICAgICBpZiAoZmlsZS1leGlzdHMtcCBmaWxlKQogICAgICAgIGFwcGVu ZCAoYWMtZmlsZS1kaWN0aW9uYXJ5IGZpbGUpKSkKCihkZWZ1biBhYy1idWZmZXItZGljdGlvbmFy eSAoJm9wdGlvbmFsIGJ1ZmZlcikKICAod2l0aC1jdXJyZW50LWJ1ZmZlciAob3IgYnVmZmVyIChj dXJyZW50LWJ1ZmZlcikpCiAgICAoaWYgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLWJ1ZmZlci1kaWN0 aW9uYXJ5KQogICAgICAgIGFjLWJ1ZmZlci1kaWN0aW9uYXJ5CiAgICAgIChtYWtlLWxvY2FsLXZh cmlhYmxlICdhYy1idWZmZXItZGljdGlvbmFyeSkKICAgICAgKHNldHEgYWMtYnVmZmVyLWRpY3Rp b25hcnkKICAgICAgICAgICAgKGFwcGx5ICdhcHBlbmQKICAgICAgICAgICAgICAgICAgIGFjLXVz ZXItZGljdGlvbmFyeQogICAgICAgICAgICAgICAgICAgKGFjLW1vZGUtZGljdGlvbmFyeSBtYWpv ci1tb2RlKQogICAgICAgICAgICAgICAgICAgKG1hcGNhciAnYWMtZmlsZS1kaWN0aW9uYXJ5IGFj LWRpY3Rpb25hcnktZmlsZXMpKSkpKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0aW9uIGludGVybmFs cwoKKGRlZnVuIGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXAgKCkKICAiUmV0dXJuIG5vbi1uaWwg aWYgY3VycmVudCBsaW5lIGlzIGxvbmcgYW5kIHdyYXBwZWQgdG8gbmV4dCB2aXN1YWwgbGluZS4i CiAgKGFuZCAobm90IHRydW5jYXRlLWxpbmVzKQogICAgICAgKGVxIChsaW5lLWJlZ2lubmluZy1w b3NpdGlvbikKICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICh2ZXJ0aWNh bC1tb3Rpb24gMSkKICAgICAgICAgICAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikpKSkpCgoo ZGVmdW4gYWMtc3RvcC13b3JkLXAgKHdvcmQpCiAgKG9yIChtZW1iZXIgd29yZCBhYy1zdG9wLXdv cmRzKQogICAgICAoaWYgYWMtdXNlLWRpY3Rpb25hcnktYXMtc3RvcC13b3JkcwogICAgICAgICAg KG1lbWJlciB3b3JkIChhYy1idWZmZXItZGljdGlvbmFyeSkpKSkpCgooZGVmdW4gYWMtcHJlZml4 LXN5bWJvbCAoKQogICJEZWZhdWx0IHByZWZpeCBkZWZpbml0aW9uIGZ1bmN0aW9uLiIKICAocmVx dWlyZSAndGhpbmdhdHB0KQogIChjYXItc2FmZSAoYm91bmRzLW9mLXRoaW5nLWF0LXBvaW50ICdz eW1ib2wpKSkKKGRlZmFsaWFzICdhYy1wcmVmaXgtZGVmYXVsdCAnYWMtcHJlZml4LXN5bWJvbCkK CihkZWZ1biBhYy1wcmVmaXgtZmlsZSAoKQogICJGaWxlIHByZWZpeC4iCiAgKGxldCAoKHBvaW50 IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+JyBcdFxyXG5dIiBuaWwgdCkpKQogICAgKGlmIHBv aW50ICgxKyBwb2ludCkpKSkKCihkZWZ1biBhYy1wcmVmaXgtdmFsaWQtZmlsZSAoKQogICJFeGlz dGVkIChvciB0byBiZSBleGlzdGVkKSBmaWxlIHByZWZpeC4iCiAgKGxldCogKChsaW5lLWJlZyAo bGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQogICAgICAgICAoZW5kIChwb2ludCkpCiAgICAgICAg IChzdGFydCAob3IgKGxldCAoKHBvaW50IChyZS1zZWFyY2gtYmFja3dhcmQgIltcIjw+Jz0gXHRc clxuXSIgbGluZS1iZWcgdCkpKQogICAgICAgICAgICAgICAgICAgICAgKGlmIHBvaW50ICgxKyBw b2ludCkpKQogICAgICAgICAgICAgICAgICAgIGxpbmUtYmVnKSkKICAgICAgICAgKGZpbGUgKGJ1 ZmZlci1zdWJzdHJpbmcgc3RhcnQgZW5kKSkpCiAgICAoaWYgKGFuZCBmaWxlIChvciAoc3RyaW5n LW1hdGNoICJeLyIgZmlsZSkKICAgICAgICAgICAgICAgICAgICAgIChhbmQgKHNldHEgZmlsZSAo YW5kIChzdHJpbmctbWF0Y2ggIl5bXi9dKi8iIGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDAgZmlsZSkpKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAoZmlsZS1kaXJlY3RvcnktcCBmaWxlKSkpKQogICAgICAgIHN0YXJ0KSkp CgooZGVmdW4gYWMtcHJlZml4LWMtZG90ICgpCiAgIkMtbGlrZSBsYW5ndWFnZXMgZG90KC4pIHBy ZWZpeC4iCiAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIlxcLlxcKFxcKD86W2EtekEtWjAtOV1b X2EtekEtWjAtOV0qXFwpP1xcKVxcPSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkp KQoKKGRlZnVuIGFjLXByZWZpeC1jLWRvdC1yZWYgKCkKICAiQy1saWtlIGxhbmd1YWdlcyBkb3Qo LikgYW5kIHJlZmVyZW5jZSgtPikgcHJlZml4LiIKICAoaWYgKHJlLXNlYXJjaC1iYWNrd2FyZCAi XFwoPzpcXC5cXHwtPlxcKVxcKFxcKD86W2EtekEtWjAtOV1bX2EtekEtWjAtOV0qXFwpP1xcKVxc PSIgbmlsIHQpCiAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkpKQoKKGRlZnVuIGFjLWRlZmluZS1w cmVmaXggKG5hbWUgcHJlZml4KQogICJEZWZpbmUgbmV3IHByZWZpeCBkZWZpbml0aW9uLgpZb3Ug Y2FuIG5vdCB1c2UgaXQgaW4gc291cmNlIGRlZmluaXRpb24gbGlrZSAocHJlZml4IC4gYE5BTUUn KS4iCiAgKHB1c2ggKGNvbnMgbmFtZSBwcmVmaXgpIGFjLXByZWZpeC1kZWZpbml0aW9ucykpCgoo ZGVmdW4gYWMtbWF0Y2gtc3Vic3RyaW5nIChwcmVmaXggY2FuZGlkYXRlcykKICAobG9vcCB3aXRo IHJlZ2V4cCA9IChyZWdleHAtcXVvdGUgcHJlZml4KQogICAgICAgIGZvciBjYW5kaWRhdGUgaW4g Y2FuZGlkYXRlcwogICAgICAgIGlmIChzdHJpbmctbWF0Y2ggcmVnZXhwIGNhbmRpZGF0ZSkKICAg ICAgICBjb2xsZWN0IGNhbmRpZGF0ZSkpCgooZGVmc3Vic3QgYWMtc291cmNlLWVudGl0eSAoc291 cmNlKQogIChpZiAoc3ltYm9scCBzb3VyY2UpCiAgICAgIChzeW1ib2wtdmFsdWUgc291cmNlKQog ICAgc291cmNlKSkKCihkZWZ1biBhYy1zb3VyY2UtYXZhaWxhYmxlLXAgKHNvdXJjZSkKICAoaWYg KGFuZCAoc3ltYm9scCBzb3VyY2UpCiAgICAgICAgICAgKGdldCBzb3VyY2UgJ2F2YWlsYWJsZSkp CiAgICAgIChlcSAoZ2V0IHNvdXJjZSAnYXZhaWxhYmxlKSB0KQogICAgKGxldCogKChzcmMgKGFj LXNvdXJjZS1lbnRpdHkgc291cmNlKSkKICAgICAgICAgICAoYXZhaWwtcGFpciAoYXNzcSAnYXZh aWxhYmxlIHNyYykpCiAgICAgICAgICAgKGF2YWlsLWNvbmQgKGNkciBhdmFpbC1wYWlyKSkKICAg ICAgICAgICAoYXZhaWxhYmxlIChhbmQgKGlmIGF2YWlsLXBhaXIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzeW1i b2xwIGF2YWlsLWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jYWxs IGF2YWlsLWNvbmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGlzdHAgYXZh aWwtY29uZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2YWwgYXZhaWwtY29u ZCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIChsb29wIGZvciBmZWF0dXJlIGluIChhc3NvYy1kZWZhdWx0ICdkZXBlbmRzIHNyYykK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzIChyZXF1aXJlIGZlYXR1cmUg bmlsIHQpIHJldHVybiBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxs eSByZXR1cm4gdCkpKSkKICAgICAgKGlmIChzeW1ib2xwIHNvdXJjZSkKICAgICAgICAgIChwdXQg c291cmNlICdhdmFpbGFibGUgKGlmIGF2YWlsYWJsZSB0ICdubykpKQogICAgICBhdmFpbGFibGUp KSkKCihkZWZ1biBhYy1jb21waWxlLXNvdXJjZXMgKHNvdXJjZXMpCiAgIkNvbXBpbGVkIGBTT1VS Q0VTJyBpbnRvIGV4cGFuZGVkIHNvdXJjZXMgc3R5bGUuIgogIChsb29wIGZvciBzb3VyY2UgaW4g c291cmNlcwogICAgICAgIGlmIChhYy1zb3VyY2UtYXZhaWxhYmxlLXAgc291cmNlKQogICAgICAg IGRvCiAgICAgICAgKHNldHEgc291cmNlIChhYy1zb3VyY2UtZW50aXR5IHNvdXJjZSkpCiAgICAg ICAgKGZsZXQgKChhZGQtYXR0cmlidXRlIChuYW1lIHZhbHVlICZvcHRpb25hbCBhcHBlbmQpIChh ZGQtdG8tbGlzdCAnc291cmNlIChjb25zIG5hbWUgdmFsdWUpIGFwcGVuZCkpKQogICAgICAgICAg OzsgcHJlZml4CiAgICAgICAgICAobGV0KiAoKHByZWZpeCAoYXNzb2MgJ3ByZWZpeCBzb3VyY2Up KQogICAgICAgICAgICAgICAgIChyZWFsIChhc3NvYy1kZWZhdWx0IChjZHIgcHJlZml4KSBhYy1w cmVmaXgtZGVmaW5pdGlvbnMpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAgIChyZWFs CiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCByZWFsKSkKICAgICAgICAgICAg ICgobnVsbCBwcmVmaXgpCiAgICAgICAgICAgICAgKGFkZC1hdHRyaWJ1dGUgJ3ByZWZpeCAnYWMt cHJlZml4LWRlZmF1bHQpKSkpCiAgICAgICAgICA7OyBtYXRjaAogICAgICAgICAgKGxldCAoKG1h dGNoIChhc3NxICdtYXRjaCBzb3VyY2UpKSkKICAgICAgICAgICAgKGNvbmQKICAgICAgICAgICAg ICgoZXEgKGNkciBtYXRjaCkgJ3N1YnN0cmluZykKICAgICAgICAgICAgICAoc2V0Y2RyIG1hdGNo ICdhYy1tYXRjaC1zdWJzdHJpbmcpKSkpKQogICAgICAgIGFuZCBjb2xsZWN0IHNvdXJjZSkpCgoo ZGVmdW4gYWMtY29tcGlsZWQtc291cmNlcyAoKQogIChvciBhYy1jb21waWxlZC1zb3VyY2VzCiAg ICAgIChzZXRxIGFjLWNvbXBpbGVkLXNvdXJjZXMKICAgICAgICAgICAgKGFjLWNvbXBpbGUtc291 cmNlcyBhYy1zb3VyY2VzKSkpKQoKKGRlZnN1YnN0IGFjLW1lbnUtbGl2ZS1wICgpCiAgKHBvcHVw LWxpdmUtcCBhYy1tZW51KSkKCihkZWZ1biBhYy1tZW51LWNyZWF0ZSAocG9pbnQgd2lkdGggaGVp Z2h0KQogIChzZXRxIGFjLW1lbnUKICAgICAgICAocG9wdXAtY3JlYXRlIHBvaW50IHdpZHRoIGhl aWdodAogICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAgICAgICAgICAg ICA6ZmFjZSAnYWMtY2FuZGlkYXRlLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzZWxlY3Rp b24tZmFjZSAnYWMtc2VsZWN0aW9uLWZhY2UKICAgICAgICAgICAgICAgICAgICAgIDpzeW1ib2wg dAogICAgICAgICAgICAgICAgICAgICAgOnNjcm9sbC1iYXIgdAogICAgICAgICAgICAgICAgICAg ICAgOm1hcmdpbi1sZWZ0IDEpKSkKCihkZWZ1biBhYy1tZW51LWRlbGV0ZSAoKQogICh3aGVuIGFj LW1lbnUKICAgIChwb3B1cC1kZWxldGUgYWMtbWVudSkKICAgIChzZXRxIGFjLW1lbnUpKSkKCihk ZWZzdWJzdCBhYy1pbmxpbmUtb3ZlcmxheSAoKQogIChudGggMCBhYy1pbmxpbmUpKQoKKGRlZnN1 YnN0IGFjLWlubGluZS1saXZlLXAgKCkKICAoYW5kIGFjLWlubGluZSAoYWMtaW5saW5lLW92ZXJs YXkpIHQpKQoKKGRlZnVuIGFjLWlubGluZS1zaG93IChwb2ludCBzdHJpbmcpCiAgKHVubGVzcyBh Yy1pbmxpbmUKICAgIChzZXRxIGFjLWlubGluZSAobGlzdCBuaWwpKSkKICAoc2F2ZS1leGN1cnNp b24KICAgIChsZXQgKChvdmVybGF5IChhYy1pbmxpbmUtb3ZlcmxheSkpCiAgICAgICAgICAod2lk dGggMCkKICAgICAgICAgIChzdHJpbmctd2lkdGggKHN0cmluZy13aWR0aCBzdHJpbmcpKQogICAg ICAgICAgKGxlbmd0aCAwKQogICAgICAgICAgKG9yaWdpbmFsLXN0cmluZyBzdHJpbmcpKQogICAg ICA7OyBDYWxjdWxhdGUgc3RyaW5nIHNwYWNlIHRvIHNob3cgY29tcGxldGlvbgogICAgICAoZ290 by1jaGFyIHBvaW50KQogICAgICAobGV0IChjKQogICAgICAgICh3aGlsZSAoYW5kIChub3QgKGVv bHApKQogICAgICAgICAgICAgICAgICAgICg8IHdpZHRoIHN0cmluZy13aWR0aCkKICAgICAgICAg ICAgICAgICAgICAoc2V0cSBjIChjaGFyLWFmdGVyKSkKICAgICAgICAgICAgICAgICAgICAobm90 IChlcSBjID9cdCkpKSAgIDsgc3BlY2lhbCBjYXNlIGZvciB0YWIKICAgICAgICAoaW5jZiB3aWR0 aCAoY2hhci13aWR0aCBjKSkKICAgICAgICAoaW5jZiBsZW5ndGgpCiAgICAgICAgKGZvcndhcmQt Y2hhcikpKQoKICAgICAgOzsgU2hvdyBjb21wbGV0aW9uCiAgICAgIChnb3RvLWNoYXIgcG9pbnQp CiAgICAgIChjb25kCiAgICAgICAoKD0gd2lkdGggMCkKICAgICAgICA7OyBFbmQtb2YtbGluZQog ICAgICAgIDs7IERvIG5vdGhpbmcKICAgICAgICApCiAgICAgICAoKDw9IHdpZHRoIHN0cmluZy13 aWR0aCkKICAgICAgICA7OyBObyBzcGFjZSB0byBzaG93CiAgICAgICAgOzsgRG8gbm90aGluZwog ICAgICAgICkKICAgICAgICgoPiB3aWR0aCBzdHJpbmctd2lkdGgpCiAgICAgICAgOzsgTmVlZCB0 byBmaWxsIHNwYWNlCiAgICAgICAgKHNldHEgc3RyaW5nIChjb25jYXQgc3RyaW5nIChtYWtlLXN0 cmluZyAoLSB3aWR0aCBzdHJpbmctd2lkdGgpID8gKSkpKSkKICAgICAgKHNldHEgc3RyaW5nIChw cm9wZXJ0aXplIHN0cmluZyAnZmFjZSAnYWMtY29tcGxldGlvbi1mYWNlKSkKICAgICAgKGlmIG92 ZXJsYXkKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkg cG9pbnQgKCsgcG9pbnQgbGVuZ3RoKSkKICAgICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkg J2ludmlzaWJsZSBuaWwpKQogICAgICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3ZlcmxheSBwb2lu dCAoKyBwb2ludCBsZW5ndGgpKSkKICAgICAgICAoc2V0ZiAobnRoIDAgYWMtaW5saW5lKSAgb3Zl cmxheSkKICAgICAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAncHJpb3JpdHkgOTk5OSkKICAgICAg ICA7OyBIZWxwIHByZWZpeC1vdmVybGF5IGluIHNvbWUgY2FzZXMKICAgICAgICAob3ZlcmxheS1w dXQgb3ZlcmxheSAna2V5bWFwIGFjLWN1cnJlbnQtbWFwKSkKICAgICAgOzsgVE9ETyBubyB3aWR0 aCBidXQgY2hhcgogICAgICAoaWYgKGVxIGxlbmd0aCAwKQogICAgICAgICAgOzsgQ2FzZTogRW5k LW9mLWxpbmUKICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAocHV0LXRleHQtcHJvcGVydHkg MCAxICdjdXJzb3IgdCBzdHJpbmcpCiAgICAgICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdh ZnRlci1zdHJpbmcgc3RyaW5nKSkKICAgICAgICAobGV0ICgoZGlzcGxheSAoc3Vic3RyaW5nIHN0 cmluZyAwIDEpKQogICAgICAgICAgICAgIChhZnRlci1zdHJpbmcgKHN1YnN0cmluZyBzdHJpbmcg MSkpKQogICAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2Rpc3BsYXkgZGlzcGxheSkKICAg ICAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdhZnRlci1zdHJpbmcgYWZ0ZXItc3RyaW5nKSkp CiAgICAgIChvdmVybGF5LXB1dCBvdmVybGF5ICdzdHJpbmcgb3JpZ2luYWwtc3RyaW5nKSkpKQoK KGRlZnVuIGFjLWlubGluZS1kZWxldGUgKCkKICAod2hlbiAoYWMtaW5saW5lLWxpdmUtcCkKICAg IChhYy1pbmxpbmUtaGlkZSkKICAgIChkZWxldGUtb3ZlcmxheSAoYWMtaW5saW5lLW92ZXJsYXkp KQogICAgKHNldHEgYWMtaW5saW5lIG5pbCkpKQoKKGRlZnVuIGFjLWlubGluZS1oaWRlICgpCiAg KHdoZW4gKGFjLWlubGluZS1saXZlLXApCiAgICAobGV0ICgob3ZlcmxheSAoYWMtaW5saW5lLW92 ZXJsYXkpKQogICAgICAgICAgKGJ1ZmZlci11bmRvLWxpc3QgdCkpCiAgICAgICh3aGVuIG92ZXJs YXkKICAgICAgICAobW92ZS1vdmVybGF5IG92ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1pbikp CiAgICAgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkgJ2ludmlzaWJsZSB0KQogICAgICAgIChvdmVy bGF5LXB1dCBvdmVybGF5ICdkaXNwbGF5IG5pbCkKICAgICAgICAob3ZlcmxheS1wdXQgb3Zlcmxh eSAnYWZ0ZXItc3RyaW5nIG5pbCkpKSkpCgooZGVmdW4gYWMtaW5saW5lLXVwZGF0ZSAoKQogIChp ZiAoYW5kIGFjLWNvbXBsZXRpbmcgYWMtcHJlZml4IChzdHJpbmdwIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgKGxldCAoKGNvbW1vbi1wYXJ0LWxlbmd0aCAobGVuZ3RoIGFjLWNvbW1vbi1wYXJ0KSkK ICAgICAgICAgICAgKHByZWZpeC1sZW5ndGggKGxlbmd0aCBhYy1wcmVmaXgpKSkKICAgICAgICAo aWYgKD4gY29tbW9uLXBhcnQtbGVuZ3RoIHByZWZpeC1sZW5ndGgpCiAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkKICAgICAgICAgICAgICAoYWMtaW5saW5l LXNob3cgKHBvaW50KSAoc3Vic3RyaW5nIGFjLWNvbW1vbi1wYXJ0IHByZWZpeC1sZW5ndGgpKSkK ICAgICAgICAgIChhYy1pbmxpbmUtZGVsZXRlKSkpCiAgICAoYWMtaW5saW5lLWRlbGV0ZSkpKQoK KGRlZnVuIGFjLXB1dC1wcmVmaXgtb3ZlcmxheSAoKQogICh1bmxlc3MgYWMtcHJlZml4LW92ZXJs YXkKICAgIChsZXQgKG5ld2xpbmUpCiAgICAgIDs7IEluc2VydCBuZXdsaW5lIHRvIG1ha2Ugc3Vy ZSB0aGF0IGN1cnNvciBhbHdheXMgb24gdGhlIG92ZXJsYXkKICAgICAgKHdoZW4gKGFuZCAoZXEg YWMtcG9pbnQgKHBvaW50LW1heCkpCiAgICAgICAgICAgICAgICAgKGVxIGFjLXBvaW50IChwb2lu dCkpKQogICAgICAgIChwb3B1cC1zYXZlLWJ1ZmZlci1zdGF0ZQogICAgICAgICAgKGluc2VydCAi XG4iKSkKICAgICAgICAoc2V0cSBuZXdsaW5lIHQpKQogICAgICAoc2V0cSBhYy1wcmVmaXgtb3Zl cmxheSAobWFrZS1vdmVybGF5IGFjLXBvaW50ICgxKyAocG9pbnQpKSBuaWwgdCB0KSkKICAgICAg KG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICdwcmlvcml0eSA5OTk5KQogICAgICAob3Zl cmxheS1wdXQgYWMtcHJlZml4LW92ZXJsYXkgJ2tleW1hcCAobWFrZS1zcGFyc2Uta2V5bWFwKSkK ICAgICAgKG92ZXJsYXktcHV0IGFjLXByZWZpeC1vdmVybGF5ICduZXdsaW5lIG5ld2xpbmUpKSkp CgooZGVmdW4gYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5ICgpCiAgKHdoZW4gYWMtcHJlZml4LW92 ZXJsYXkKICAgICh3aGVuIChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAnbmV3bGluZSkK ICAgICAgOzsgUmVtb3ZlIGluc2VydGVkIG5ld2xpbmUKICAgICAgKHBvcHVwLXNhdmUtYnVmZmVy LXN0YXRlCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWF4KSkKICAgICAgICAoaWYgKGVxIChj aGFyLWJlZm9yZSkgP1xuKQogICAgICAgICAgICAoZGVsZXRlLWNoYXIgLTEpKSkpCiAgICAoZGVs ZXRlLW92ZXJsYXkgYWMtcHJlZml4LW92ZXJsYXkpKSkKCihkZWZ1biBhYy1hY3RpdmF0ZS1jb21w bGV0aW5nLW1hcCAoKQogIChpZiAoYW5kIGFjLXNob3ctbWVudSBhYy11c2UtbWVudS1tYXApCiAg ICAgIChzZXQta2V5bWFwLXBhcmVudCBhYy1jdXJyZW50LW1hcCBhYy1tZW51LW1hcCkpCiAgKHdo ZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAgIChudWxsIG92 ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwKSkKICAgIChzZXRxIG92ZXJyaWRpbmctdGVybWlu YWwtbG9jYWwtbWFwIGFjLWN1cnJlbnQtbWFwKSkKICAod2hlbiBhYy1wcmVmaXgtb3ZlcmxheQog ICAgKHNldC1rZXltYXAtcGFyZW50IChvdmVybGF5LWdldCBhYy1wcmVmaXgtb3ZlcmxheSAna2V5 bWFwKSBhYy1jdXJyZW50LW1hcCkpKQoKKGRlZnVuIGFjLWRlYWN0aXZhdGUtY29tcGxldGluZy1t YXAgKCkKICAoc2V0LWtleW1hcC1wYXJlbnQgYWMtY3VycmVudC1tYXAgYWMtY29tcGxldGluZy1t YXApCiAgKHdoZW4gKGFuZCBhYy11c2Utb3ZlcnJpZGluZy1sb2NhbC1tYXAKICAgICAgICAgICAg IChlcSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBhYy1jdXJyZW50LW1hcCkpCiAgICAo c2V0cSBvdmVycmlkaW5nLXRlcm1pbmFsLWxvY2FsLW1hcCBuaWwpKQogICh3aGVuIGFjLXByZWZp eC1vdmVybGF5CiAgICAoc2V0LWtleW1hcC1wYXJlbnQgKG92ZXJsYXktZ2V0IGFjLXByZWZpeC1v dmVybGF5ICdrZXltYXApIG5pbCkpKQoKKGRlZnN1YnN0IGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSAo KQogIChpZiBhYy1tZW51CiAgICAgIChwb3B1cC1zZWxlY3RlZC1pdGVtIGFjLW1lbnUpKSkKCihk ZWZ1biBhYy1wcmVmaXggKHJlcXVpcmVzIGlnbm9yZS1saXN0KQogIChsb29wIHdpdGggY3VycmVu dCA9IChwb2ludCkKICAgICAgICB3aXRoIHBvaW50CiAgICAgICAgd2l0aCBwcmVmaXgtZGVmCiAg ICAgICAgd2l0aCBzb3VyY2VzCiAgICAgICAgZm9yIHNvdXJjZSBpbiAoYWMtY29tcGlsZWQtc291 cmNlcykKICAgICAgICBmb3IgcHJlZml4ID0gKGFzc29jLWRlZmF1bHQgJ3ByZWZpeCBzb3VyY2Up CiAgICAgICAgZm9yIHJlcSA9IChvciAoYXNzb2MtZGVmYXVsdCAncmVxdWlyZXMgc291cmNlKSBy ZXF1aXJlcyAxKQoKICAgICAgICBpZiAobnVsbCBwcmVmaXgtZGVmKQogICAgICAgIGRvCiAgICAg ICAgKHVubGVzcyAobWVtYmVyIHByZWZpeCBpZ25vcmUtbGlzdCkKICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAoc2V0cSBwb2ludCAoY29uZAogICAgICAgICAgICAgICAgICAg ICAgICAgKChzeW1ib2xwIHByZWZpeCkKICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY2Fs bCBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAgICAgICAgKChzdHJpbmdwIHByZWZpeCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQgKGNvbmNhdCBw cmVmaXggIlxcPSIpIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yICht YXRjaC1iZWdpbm5pbmcgMSkgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogICAgICAgICAgICAgICAg ICAgICAgICAgKChzdHJpbmdwIChjYXItc2FmZSBwcmVmaXgpKQogICAgICAgICAgICAgICAgICAg ICAgICAgIChsZXQgKChyZWdleHAgKG50aCAwIHByZWZpeCkpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGVuZCAobnRoIDEgcHJlZml4KSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoZ3JvdXAgKG50aCAyIHByZWZpeCkpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJkIChjb25jYXQgcmVnZXhwICJcXD0iKSBuaWwgdCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIGVuZCAnbWF0Y2gt ZW5kICdtYXRjaC1iZWdpbm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChvciBncm91cCAwKSkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICh0CiAgICAg ICAgICAgICAgICAgICAgICAgICAgKGV2YWwgcHJlZml4KSkpKQogICAgICAgICAgICAoaWYgKGFu ZCBwb2ludAogICAgICAgICAgICAgICAgICAgICAoaW50ZWdlcnAgcmVxKQogICAgICAgICAgICAg ICAgICAgICAoPCAoLSBjdXJyZW50IHBvaW50KSByZXEpKQogICAgICAgICAgICAgICAgKHNldHEg cG9pbnQgbmlsKSkKICAgICAgICAgICAgKGlmIHBvaW50CiAgICAgICAgICAgICAgICAoc2V0cSBw cmVmaXgtZGVmIHByZWZpeCkpKSkKICAgICAgICAKICAgICAgICBpZiAoZXF1YWwgcHJlZml4IHBy ZWZpeC1kZWYpIGRvIChwdXNoIHNvdXJjZSBzb3VyY2VzKQoKICAgICAgICBmaW5hbGx5IHJldHVy bgogICAgICAgIChhbmQgcG9pbnQgKGxpc3QgcHJlZml4LWRlZiBwb2ludCAobnJldmVyc2Ugc291 cmNlcykpKSkpCgooZGVmdW4gYWMtaW5pdCAoKQogICJJbml0aWFsaXplIGN1cnJlbnQgc291cmNl cyB0byBzdGFydCBjb21wbGV0aW9uLiIKICAoc2V0cSBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbCkK ICAobG9vcCBmb3Igc291cmNlIGluIGFjLWN1cnJlbnQtc291cmNlcwogICAgICAgIGZvciBmdW5j dGlvbiA9IChhc3NvYy1kZWZhdWx0ICdpbml0IHNvdXJjZSkKICAgICAgICBpZiBmdW5jdGlvbiBk bwogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgKGNvbmQKICAgICAgICAgICAoKGZ1 bmN0aW9ucCBmdW5jdGlvbikKICAgICAgICAgICAgKGZ1bmNhbGwgZnVuY3Rpb24pKQogICAgICAg ICAgICh0CiAgICAgICAgICAgIChldmFsIGZ1bmN0aW9uKSkpKSkpCgooZGVmdW4gYWMtY2FuZGlk YXRlcy0xIChzb3VyY2UpCiAgKGxldCogKChkby1jYWNoZSAoYXNzcSAnY2FjaGUgc291cmNlKSkK ICAgICAgICAgKGZ1bmN0aW9uIChhc3NvYy1kZWZhdWx0ICdjYW5kaWRhdGVzIHNvdXJjZSkpCiAg ICAgICAgIChhY3Rpb24gKGFzc29jLWRlZmF1bHQgJ2FjdGlvbiBzb3VyY2UpKQogICAgICAgICAo ZG9jdW1lbnQgKGFzc29jLWRlZmF1bHQgJ2RvY3VtZW50IHNvdXJjZSkpCiAgICAgICAgIChzeW1i b2wgKGFzc29jLWRlZmF1bHQgJ3N5bWJvbCBzb3VyY2UpKQogICAgICAgICAoYWMtbGltaXQgKG9y IChhc3NvYy1kZWZhdWx0ICdsaW1pdCBzb3VyY2UpIGFjLWxpbWl0KSkKICAgICAgICAgKGZhY2Ug KG9yIChhc3NvYy1kZWZhdWx0ICdmYWNlIHNvdXJjZSkgKGFzc29jLWRlZmF1bHQgJ2NhbmRpZGF0 ZS1mYWNlIHNvdXJjZSkpKQogICAgICAgICAoc2VsZWN0aW9uLWZhY2UgKGFzc29jLWRlZmF1bHQg J3NlbGVjdGlvbi1mYWNlIHNvdXJjZSkpCiAgICAgICAgIChjYWNoZSAoYW5kIGRvLWNhY2hlIChh c3NxIHNvdXJjZSBhYy1jYW5kaWRhdGVzLWNhY2hlKSkpCiAgICAgICAgIChjYW5kaWRhdGVzIChj ZHIgY2FjaGUpKSkKICAgICh1bmxlc3MgY2FjaGUKICAgICAgKHNldHEgY2FuZGlkYXRlcyAoc2F2 ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAg ICAgICAgICAgICAgKChmdW5jdGlvbnAgZnVuY3Rpb24pCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChmdW5jYWxsIGZ1bmN0aW9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAodAogICAg ICAgICAgICAgICAgICAgICAgICAgICAoZXZhbCBmdW5jdGlvbikpKSkpCiAgICAgIDs7IENvbnZl cnQgKG5hbWUgdmFsdWUpIGZvcm1hdCBjYW5kaWRhdGVzIGludG8gbmFtZSB3aXRoIHRleHQgcHJv cGVydGllcy4KICAgICAgKHNldHEgY2FuZGlkYXRlcyAobWFwY2FyIChsYW1iZGEgKGNhbmRpZGF0 ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChjb25zcCBjYW5kaWRhdGUp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvcGVydGl6ZSAoY2FyIGNh bmRpZGF0ZSkgJ3ZhbHVlIChjZHIgY2FuZGlkYXRlKSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fu ZGlkYXRlcykpCiAgICAgICh3aGVuIGRvLWNhY2hlCiAgICAgICAgKHB1c2ggKGNvbnMgc291cmNl IGNhbmRpZGF0ZXMpIGFjLWNhbmRpZGF0ZXMtY2FjaGUpKSkKICAgIChzZXRxIGNhbmRpZGF0ZXMg KGZ1bmNhbGwgKG9yIChhc3NvYy1kZWZhdWx0ICdtYXRjaCBzb3VyY2UpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhYy1tYXRjaC1mdW5jdGlvbikKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgOzsgUmVtb3ZlIGV4dHJhIGl0 ZW1zIHJlZ2FyZGluZyB0byBhYy1saW1pdAogICAgKGlmIChhbmQgKGludGVnZXJwIGFjLWxpbWl0 KSAoPiBhYy1saW1pdCAxKSAoPiAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAg ICAoc2V0Y2RyIChudGhjZHIgKDEtIGFjLWxpbWl0KSBjYW5kaWRhdGVzKSBuaWwpKQogICAgOzsg UHV0IGNhbmRpZGF0ZSBwcm9wZXJ0aWVzCiAgICAoc2V0cSBjYW5kaWRhdGVzIChtYXBjYXIgKGxh bWJkYSAoY2FuZGlkYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcHVwLWl0 ZW0tcHJvcGVydGl6ZSBjYW5kaWRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ2FjdGlvbiBhY3Rpb24KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5bWJvbCBzeW1ib2wKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50IGRv Y3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICdwb3B1cC1mYWNlIGZhY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ3NlbGVjdGlvbi1mYWNlIHNlbGVjdGlvbi1mYWNlKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGVzKSkKICAgIGNhbmRpZGF0ZXMpKQoKKGRl ZnVuIGFjLWNhbmRpZGF0ZXMgKCkKICAiUHJvZHVjZSBjYW5kaWRhdGVzIGZvciBjdXJyZW50IHNv dXJjZXMuIgogIChsb29wIHdpdGggY29tcGxldGlvbi1pZ25vcmUtY2FzZSA9IChvciAoZXEgYWMt aWdub3JlLWNhc2UgdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGFuZCAoZXEgYWMtaWdub3JlLWNhc2UgJ3NtYXJ0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIG5pbCkpIChub3Qg KHN0cmluZy1tYXRjaCAiW1s6dXBwZXI6XV0iIGFjLXByZWZpeCkpKSkpCiAgICAgICAgd2l0aCBj YXNlLWZvbGQtc2VhcmNoID0gY29tcGxldGlvbi1pZ25vcmUtY2FzZQogICAgICAgIHdpdGggcHJl Zml4LWxlbiA9IChsZW5ndGggYWMtcHJlZml4KQogICAgICAgIGZvciBzb3VyY2UgaW4gYWMtY3Vy cmVudC1zb3VyY2VzCiAgICAgICAgYXBwZW5kIChhYy1jYW5kaWRhdGVzLTEgc291cmNlKSBpbnRv IGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybgogICAgICAgIChwcm9nbgogICAgICAg ICAgKGRlbGV0ZS1kdXBzIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaWYgKGFuZCBhYy11c2UtY29t cGhpc3QgYWMtY29tcGhpc3QpCiAgICAgICAgICAgICAgKGlmIGFjLXNob3ctbWVudQogICAgICAg ICAgICAgICAgICAobGV0KiAoKHBhaXIgKGFjLWNvbXBoaXN0LXNvcnQgYWMtY29tcGhpc3QgY2Fu ZGlkYXRlcyBwcmVmaXgtbGVuIGFjLWNvbXBoaXN0LXRocmVzaG9sZCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAobiAoY2FyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3Vs dCAoY2RyIHBhaXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnMgKGlmICg+IG4gMCkg KG50aGNkciAoMS0gbikgcmVzdWx0KSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoY2RyIChj ZHIgY29ucykpKQogICAgICAgICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBuaWwp KQogICAgICAgICAgICAgICAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0ICh0cnktY29tcGxldGlv biBhYy1wcmVmaXggcmVzdWx0KSkKICAgICAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1j b21tb24tcGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAg ICAgICAgICAgICAgIChpZiBjb25zIChzZXRjZHIgY29ucyBjZHIpKQogICAgICAgICAgICAgICAg ICAgIHJlc3VsdCkKICAgICAgICAgICAgICAgIChzZXRxIGNhbmRpZGF0ZXMgKGFjLWNvbXBoaXN0 LXNvcnQgYWMtY29tcGhpc3QgY2FuZGlkYXRlcyBwcmVmaXgtbGVuKSkKICAgICAgICAgICAgICAg IChzZXRxIGFjLWNvbW1vbi1wYXJ0IChpZiBjYW5kaWRhdGVzIChwb3B1cC14LXRvLXN0cmluZyAo Y2FyIGNhbmRpZGF0ZXMpKSkpCiAgICAgICAgICAgICAgICAoc2V0cSBhYy13aG9sZS1jb21tb24t cGFydCAodHJ5LWNvbXBsZXRpb24gYWMtcHJlZml4IGNhbmRpZGF0ZXMpKQogICAgICAgICAgICAg ICAgY2FuZGlkYXRlcykKICAgICAgICAgICAgKHNldHEgYWMtY29tbW9uLXBhcnQgKHRyeS1jb21w bGV0aW9uIGFjLXByZWZpeCBjYW5kaWRhdGVzKSkKICAgICAgICAgICAgKHNldHEgYWMtd2hvbGUt Y29tbW9uLXBhcnQgYWMtY29tbW9uLXBhcnQpCiAgICAgICAgICAgIGNhbmRpZGF0ZXMpKSkpCgoo ZGVmdW4gYWMtdXBkYXRlLWNhbmRpZGF0ZXMgKGN1cnNvciBzY3JvbGwtdG9wKQogICJVcGRhdGUg Y2FuZGlkYXRlcyBvZiBtZW51IHRvIGBhYy1jYW5kaWRhdGVzJyBhbmQgcmVkcmF3IGl0LiIKICAo c2V0ZiAocG9wdXAtY3Vyc29yIGFjLW1lbnUpIGN1cnNvcgogICAgICAgIChwb3B1cC1zY3JvbGwt dG9wIGFjLW1lbnUpIHNjcm9sbC10b3ApCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKD0gKGxlbmd0 aCBhYy1jYW5kaWRhdGVzKSAxKSkKICAoaWYgYWMtY2FuZGlkYXRlcwogICAgICAocHJvZ24KICAg ICAgICAoc2V0cSBhYy1jb21wbGV0aW5nIHQpCiAgICAgICAgKGFjLWFjdGl2YXRlLWNvbXBsZXRp bmctbWFwKSkKICAgIChzZXRxIGFjLWNvbXBsZXRpbmcgbmlsKQogICAgKGFjLWRlYWN0aXZhdGUt Y29tcGxldGluZy1tYXApKQogIChhYy1pbmxpbmUtdXBkYXRlKQogIChwb3B1cC1zZXQtbGlzdCBh Yy1tZW51IGFjLWNhbmRpZGF0ZXMpCiAgKGlmIChhbmQgKG5vdCBhYy1mdXp6eS1lbmFibGUpCiAg ICAgICAgICAgKDw9IChsZW5ndGggYWMtY2FuZGlkYXRlcykgMSkpCiAgICAgIChwb3B1cC1oaWRl IGFjLW1lbnUpCiAgICAoaWYgYWMtc2hvdy1tZW51CiAgICAgICAgKHBvcHVwLWRyYXcgYWMtbWVu dSkpKSkKCihkZWZ1biBhYy1yZXBvc2l0aW9uICgpCiAgIkZvcmNlIHRvIHJlZHJhdyBjYW5kaWRh dGUgbWVudSB3aXRoIGN1cnJlbnQgYGFjLWNhbmRpZGF0ZXMnLiIKICAobGV0ICgoY3Vyc29yIChw b3B1cC1jdXJzb3IgYWMtbWVudSkpCiAgICAgICAgKHNjcm9sbC10b3AgKHBvcHVwLXNjcm9sbC10 b3AgYWMtbWVudSkpCiAgICAgICAgKGhlaWdodCAocG9wdXAtaGVpZ2h0IGFjLW1lbnUpKSkKICAg IChhYy1tZW51LWRlbGV0ZSkKICAgIChhYy1tZW51LWNyZWF0ZSBhYy1wb2ludCAocG9wdXAtcHJl ZmVycmVkLXdpZHRoIGFjLWNhbmRpZGF0ZXMpIGhlaWdodCkKICAgIChhYy11cGRhdGUtY2FuZGlk YXRlcyBjdXJzb3Igc2Nyb2xsLXRvcCkpKQoKKGRlZnVuIGFjLWNsZWFudXAgKCkKICAiQ2xlYW51 cCBhdXRvIGNvbXBsZXRpb24uIgogIChpZiBhYy1jdXJzb3ItY29sb3IKICAgICAgKHNldC1jdXJz b3ItY29sb3IgYWMtY3Vyc29yLWNvbG9yKSkKICAod2hlbiAoYW5kIGFjLXVzZS1jb21waGlzdCBh Yy1jb21waGlzdCkKICAgICh3aGVuIChhbmQgKG51bGwgYWMtc2VsZWN0ZWQtY2FuZGlkYXRlKQog ICAgICAgICAgICAgICAobWVtYmVyIGFjLXByZWZpeCBhYy1jYW5kaWRhdGVzKSkKICAgICAgOzsg QXNzdW1lIGNhbmRpZGF0ZSBpcyBzZWxlY3RlZCBieSBqdXN0IHR5cGluZwogICAgICAoc2V0cSBh Yy1zZWxlY3RlZC1jYW5kaWRhdGUgYWMtcHJlZml4KQogICAgICAoc2V0cSBhYy1sYXN0LXBvaW50 IGFjLXBvaW50KSkKICAgICh3aGVuIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZQogICAgICAoYWMtY29t cGhpc3QtYWRkIGFjLWNvbXBoaXN0CiAgICAgICAgICAgICAgICAgICAgICAgYWMtc2VsZWN0ZWQt Y2FuZGlkYXRlCiAgICAgICAgICAgICAgICAgICAgICAgKGlmIGFjLWxhc3QtcG9pbnQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgKC0gYWMtbGFzdC1wb2ludCBhYy1wb2ludCkKICAgICAgICAg ICAgICAgICAgICAgICAgIChsZW5ndGggYWMtcHJlZml4KSkpKSkKICAoYWMtZGVhY3RpdmF0ZS1j b21wbGV0aW5nLW1hcCkKICAoYWMtcmVtb3ZlLXByZWZpeC1vdmVybGF5KQogIChhYy1yZW1vdmUt cXVpY2staGVscCkKICAoYWMtaW5saW5lLWRlbGV0ZSkKICAoYWMtbWVudS1kZWxldGUpCiAgKGFj LWNhbmNlbC10aW1lcikKICAoYWMtY2FuY2VsLXNob3ctbWVudS10aW1lcikKICAoYWMtY2FuY2Vs LXF1aWNrLWhlbHAtdGltZXIpCiAgKHNldHEgYWMtY3Vyc29yLWNvbG9yIG5pbAogICAgICAgIGFj LWlubGluZSBuaWwKICAgICAgICBhYy1zaG93LW1lbnUgbmlsCiAgICAgICAgYWMtbWVudSBuaWwK ICAgICAgICBhYy1jb21wbGV0aW5nIG5pbAogICAgICAgIGFjLXBvaW50IG5pbAogICAgICAgIGFj LWxhc3QtcG9pbnQgbmlsCiAgICAgICAgYWMtcHJlZml4IG5pbAogICAgICAgIGFjLXByZWZpeC1v dmVybGF5IG5pbAogICAgICAgIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwKICAgICAgICBhYy1j b21tb24tcGFydCBuaWwKICAgICAgICBhYy13aG9sZS1jb21tb24tcGFydCBuaWwKICAgICAgICBh Yy10cmlnZ2VyZWQgbmlsCiAgICAgICAgYWMtbGltaXQgbmlsCiAgICAgICAgYWMtY2FuZGlkYXRl cyBuaWwKICAgICAgICBhYy1jYW5kaWRhdGVzLWNhY2hlIG5pbAogICAgICAgIGFjLWZ1enp5LWVu YWJsZSBuaWwKICAgICAgICBhYy1kd2ltLWVuYWJsZSBuaWwKICAgICAgICBhYy1jb21waWxlZC1z b3VyY2VzIG5pbAogICAgICAgIGFjLWN1cnJlbnQtc291cmNlcyBuaWwKICAgICAgICBhYy1jdXJy ZW50LXByZWZpeC1kZWYgbmlsCiAgICAgICAgYWMtaWdub3JpbmctcHJlZml4LWRlZiBuaWwpKQoK KGRlZnN1YnN0IGFjLWFib3J0ICgpCiAgIkFib3J0IGNvbXBsZXRpb24uIgogIChhYy1jbGVhbnVw KSkKCihkZWZ1biBhYy1leHBhbmQtc3RyaW5nIChzdHJpbmcgJm9wdGlvbmFsIHJlbW92ZS11bmRv LWJvdW5kYXJ5KQogICJFeHBhbmQgYFNUUklORycgaW50byB0aGUgYnVmZmVyIGFuZCB1cGRhdGUg YGFjLXByZWZpeCcgdG8gYFNUUklORycuClRoaXMgZnVuY3Rpb24gcmVjb3JkcyBkZWxldGlvbiBh bmQgaW5zZXJ0aW9uIHNlcXVlbmNlcyBieSBgdW5kby1ib3VuZGFyeScuCklmIGByZW1vdmUtdW5k by1ib3VuZGFyeScgaXMgbm9uLW5pbCwgdGhpcyBmdW5jdGlvbiBhbHNvIHJlbW92ZXMgYHVuZG8t Ym91bmRhcnknCnRoYXQgaGF2ZSBiZWVuIG1hZGUgYmVmb3JlIGluIHRoaXMgZnVuY3Rpb24uIgog ICh3aGVuIChub3QgKGVxdWFsIHN0cmluZyAoYnVmZmVyLXN1YnN0cmluZyBhYy1wb2ludCAocG9p bnQpKSkpCiAgICAodW5kby1ib3VuZGFyeSkKICAgIDs7IFdlIGNhbid0IHVzZSBwcmltaXRpdmUt dW5kbyBzaW5jZSBpdCB1bmRvZXMgYnkKICAgIDs7IGdyb3VwcywgZGl2aWRlZCBieSBib3VuZGFy aWVzLgogICAgOzsgV2UgZG9uJ3Qgd2FudCBib3VuZGFyeSBiZXR3ZWVuIGRlbGV0aW9uIGFuZCBp bnNlcnRpb24uCiAgICA7OyBTbyBkbyBpdCBtYW51YWxseS4KICAgIDs7IERlbGV0ZSByZWdpb24g c2lsZW50bHkgZm9yIHVuZG86CiAgICAoaWYgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAgICAo cHJvZ24KICAgICAgICAgIChsZXQgKGJ1ZmZlci11bmRvLWxpc3QpCiAgICAgICAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChwb2ludCkp KSkKICAgICAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxpc3QKICAgICAgICAgICAgICAgIChudGhj ZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAgIChkZWxldGUtcmVnaW9uIGFjLXBvaW50IChw b2ludCkpKQogICAgKGluc2VydCBzdHJpbmcpCiAgICA7OyBTb21ldGltZXMsIHBvc3NpYmxlIHdo ZW4gb21uaS1jb21wbGV0aW9uIHVzZWQsIChpbnNlcnQpIGFkZGVkCiAgICA7OyB0byBidWZmZXIt dW5kby1saXN0IHN0cmFuZ2UgcmVjb3JkIGFib3V0IHBvc2l0aW9uIGNoYW5nZXMuCiAgICA7OyBE ZWxldGUgaXQgaGVyZToKICAgICh3aGVuIChhbmQgcmVtb3ZlLXVuZG8tYm91bmRhcnkKICAgICAg ICAgICAgICAgKGludGVnZXJwIChjYWRyIGJ1ZmZlci11bmRvLWxpc3QpKSkKICAgICAgKHNldGNk ciBidWZmZXItdW5kby1saXN0IChudGhjZHIgMiBidWZmZXItdW5kby1saXN0KSkpCiAgICAodW5k by1ib3VuZGFyeSkKICAgIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBzdHJpbmcpCiAgICAo c2V0cSBhYy1wcmVmaXggc3RyaW5nKSkpCgooZGVmdW4gYWMtc2V0LXRyaWdnZXIta2V5IChrZXkp CiAgIlNldCBgYWMtdHJpZ2dlci1rZXknIHRvIGBLRVknLiBJdCBpcyByZWNvbW1lbWRlZCB0byB1 c2UgdGhpcyBmdW5jdGlvbiBpbnN0ZWFkIG9mIGNhbGxpbmcgYHNldHEnLiIKICA7OyBSZW1vdmUg b2xkIG1hcHBpbmcKICAod2hlbiBhYy10cmlnZ2VyLWtleQogICAgKGRlZmluZS1rZXkgYWMtbW9k ZS1tYXAgKHJlYWQta2JkLW1hY3JvIGFjLXRyaWdnZXIta2V5KSBuaWwpKQoKICA7OyBNYWtlIG5l dyBtYXBwaW5nCiAgKHNldHEgYWMtdHJpZ2dlci1rZXkga2V5KQogICh3aGVuIGtleQogICAgKGRl ZmluZS1rZXkgYWMtbW9kZS1tYXAgKHJlYWQta2JkLW1hY3JvIGtleSkgJ2FjLXRyaWdnZXIta2V5 LWNvbW1hbmQpKSkKCihkZWZ1biBhYy1zZXQtdGltZXIgKCkKICAodW5sZXNzIGFjLXRpbWVyCiAg ICAoc2V0cSBhYy10aW1lciAocnVuLXdpdGgtaWRsZS10aW1lciBhYy1kZWxheSBhYy1kZWxheSAn YWMtdXBkYXRlLWdyZWVkeSkpKSkKCihkZWZ1biBhYy1jYW5jZWwtdGltZXIgKCkKICAod2hlbiAo dGltZXJwIGFjLXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy10aW1lcikKICAgIChzZXRxIGFj LXRpbWVyIG5pbCkpKQoKKGRlZnVuIGFjLXVwZGF0ZSAoJm9wdGlvbmFsIGZvcmNlKQogICh3aGVu IChhbmQgYXV0by1jb21wbGV0ZS1tb2RlCiAgICAgICAgICAgICBhYy1wcmVmaXgKICAgICAgICAg ICAgIChvciBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICBmb3JjZSkKICAgICAgICAgICAg IChub3QgaXNlYXJjaC1tb2RlKSkKICAgIChhYy1wdXQtcHJlZml4LW92ZXJsYXkpCiAgICAoc2V0 cSBhYy1jYW5kaWRhdGVzIChhYy1jYW5kaWRhdGVzKSkKICAgIChsZXQgKChwcmVmZXJyZWQtd2lk dGggKHBvcHVwLXByZWZlcnJlZC13aWR0aCBhYy1jYW5kaWRhdGVzKSkpCiAgICAgIDs7IFJlcG9z aXRpb24gaWYgbmVlZGVkCiAgICAgICh3aGVuIChvciAobnVsbCBhYy1tZW51KQogICAgICAgICAg ICAgICAgKD49IChwb3B1cC13aWR0aCBhYy1tZW51KSBwcmVmZXJyZWQtd2lkdGgpCiAgICAgICAg ICAgICAgICAoPD0gKHBvcHVwLXdpZHRoIGFjLW1lbnUpICgtIHByZWZlcnJlZC13aWR0aCAxMCkp CiAgICAgICAgICAgICAgICAoYW5kICg+IChwb3B1cC1kaXJlY3Rpb24gYWMtbWVudSkgMCkKICAg ICAgICAgICAgICAgICAgICAgKGFjLW1lbnUtYXQtd3JhcHBlci1saW5lLXApKSkKICAgICAgICAo YWMtaW5saW5lLWhpZGUpIDsgSGlkZSBvdmVybGF5IHRvIGNhbGN1bGF0ZSBjb3JyZWN0IGNvbHVt bgogICAgICAgIChhYy1tZW51LWRlbGV0ZSkKICAgICAgICAoYWMtbWVudS1jcmVhdGUgYWMtcG9p bnQgcHJlZmVycmVkLXdpZHRoIGFjLW1lbnUtaGVpZ2h0KSkpCiAgICAoYWMtdXBkYXRlLWNhbmRp ZGF0ZXMgMCAwKQogICAgdCkpCgooZGVmdW4gYWMtdXBkYXRlLWdyZWVkeSAoJm9wdGlvbmFsIGZv cmNlKQogIChsZXQgKHJlc3VsdCkKICAgICh3aGlsZSAod2hlbiAoYW5kIChzZXRxIHJlc3VsdCAo YWMtdXBkYXRlIGZvcmNlKSkKICAgICAgICAgICAgICAgICAgICAgIChudWxsIGFjLWNhbmRpZGF0 ZXMpKQogICAgICAgICAgICAgKGFkZC10by1saXN0ICdhYy1pZ25vcmluZy1wcmVmaXgtZGVmIGFj LWN1cnJlbnQtcHJlZml4LWRlZikKICAgICAgICAgICAgIChhYy1zdGFydCA6Zm9yY2UtaW5pdCB0 KQogICAgICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmKSkKICAgIHJlc3VsdCkpCgooZGVm dW4gYWMtc2V0LXNob3ctbWVudS10aW1lciAoKQogICh3aGVuIChhbmQgKG9yIChpbnRlZ2VycCBh Yy1hdXRvLXNob3ctbWVudSkgKGZsb2F0cCBhYy1hdXRvLXNob3ctbWVudSkpCiAgICAgICAgICAg ICAobnVsbCBhYy1zaG93LW1lbnUtdGltZXIpKQogICAgKHNldHEgYWMtc2hvdy1tZW51LXRpbWVy IChydW4td2l0aC1pZGxlLXRpbWVyIGFjLWF1dG8tc2hvdy1tZW51IGFjLWF1dG8tc2hvdy1tZW51 ICdhYy1zaG93LW1lbnUpKSkpCgooZGVmdW4gYWMtY2FuY2VsLXNob3ctbWVudS10aW1lciAoKQog ICh3aGVuICh0aW1lcnAgYWMtc2hvdy1tZW51LXRpbWVyKQogICAgKGNhbmNlbC10aW1lciBhYy1z aG93LW1lbnUtdGltZXIpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUtdGltZXIgbmlsKSkpCgooZGVm dW4gYWMtc2hvdy1tZW51ICgpCiAgKHdoZW4gKG5vdCAoZXEgYWMtc2hvdy1tZW51IHQpKQogICAg KHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAoYWMtaW5saW5lLWhpZGUpCiAgICAoYWMtcmVtb3Zl LXF1aWNrLWhlbHApCiAgICAoYWMtdXBkYXRlIHQpKSkKCihkZWZ1biBhYy1oZWxwICgmb3B0aW9u YWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLW1lbnUKICAgIChwb3B1 cC1tZW51LXNob3ctaGVscCBhYy1tZW51IHBlcnNpc3QpKSkKCihkZWZ1biBhYy1wZXJzaXN0LWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGFjLWhlbHAgdCkpCgooZGVmdW4gYWMtbGFzdC1oZWxw ICgmb3B0aW9uYWwgcGVyc2lzdCkKICAoaW50ZXJhY3RpdmUgIlAiKQogICh3aGVuIGFjLWxhc3Qt Y29tcGxldGlvbgogICAgKHBvcHVwLWl0ZW0tc2hvdy1oZWxwIChjZHIgYWMtbGFzdC1jb21wbGV0 aW9uKSBwZXJzaXN0KSkpCgooZGVmdW4gYWMtbGFzdC1wZXJzaXN0LWhlbHAgKCkKICAoaW50ZXJh Y3RpdmUpCiAgKGFjLWxhc3QtaGVscCB0KSkKCihkZWZ1biBhYy1zZXQtcXVpY2staGVscC10aW1l ciAoKQogICh3aGVuIChhbmQgYWMtdXNlLXF1aWNrLWhlbHAKICAgICAgICAgICAgIChudWxsIGFj LXF1aWNrLWhlbHAtdGltZXIpKQogICAgKHNldHEgYWMtcXVpY2staGVscC10aW1lciAocnVuLXdp dGgtaWRsZS10aW1lciBhYy1xdWljay1oZWxwLWRlbGF5IGFjLXF1aWNrLWhlbHAtZGVsYXkgJ2Fj LXF1aWNrLWhlbHApKSkpCgooZGVmdW4gYWMtY2FuY2VsLXF1aWNrLWhlbHAtdGltZXIgKCkKICAo d2hlbiAodGltZXJwIGFjLXF1aWNrLWhlbHAtdGltZXIpCiAgICAoY2FuY2VsLXRpbWVyIGFjLXF1 aWNrLWhlbHAtdGltZXIpCiAgICAoc2V0cSBhYy1xdWljay1oZWxwLXRpbWVyIG5pbCkpKQoKKGRl ZnVuIGFjLXBvcy10aXAtc2hvdy1xdWljay1oZWxwIChtZW51ICZvcHRpb25hbCBpdGVtICZyZXN0 IGFyZ3MpCiAgKGxldCogKChwb2ludCAocGxpc3QtZ2V0IGFyZ3MgOnBvaW50KSkKICAgICAgICAg KGFyb3VuZCBuaWwpCiAgICAgICAgIChwYXJlbnQtb2Zmc2V0IChwb3B1cC1vZmZzZXQgbWVudSkp CiAgICAgICAgIChkb2MgKHBvcHVwLW1lbnUtZG9jdW1lbnRhdGlvbiBtZW51IGl0ZW0pKSkKICAg ICh3aGVuIChzdHJpbmdwIGRvYykKICAgICAgKGlmIChwb3B1cC1oaWRkZW4tcCBtZW51KQogICAg ICAgICAgKHNldHEgYXJvdW5kIHQpCiAgICAgICAgKHNldHEgcG9pbnQgbmlsKSkKICAgICAgKHdp dGgtbm8td2FybmluZ3MKICAgICAgICAocG9zLXRpcC1zaG93IGRvYwogICAgICAgICAgICAgICAg ICAgICAgJ3BvcHVwLXRpcC1mYWNlCiAgICAgICAgICAgICAgICAgICAgICAob3IgcG9pbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYW5kIG1lbnUKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb3B1cC1jaGlsZC1wb2ludCBtZW51IHBhcmVudC1vZmZzZXQpKQogICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludCkpCiAgICAgICAgICAgICAgICAgICAgICBuaWwgMAogICAg ICAgICAgICAgICAgICAgICAgcG9wdXAtdGlwLW1heC13aWR0aAogICAgICAgICAgICAgICAgICAg ICAgbmlsIG5pbAogICAgICAgICAgICAgICAgICAgICAgKGFuZCAobm90IGFyb3VuZCkgMCkpCiAg ICAgICAgKHVubGVzcyAocGxpc3QtZ2V0IGFyZ3MgOm5vd2FpdCkKICAgICAgICAgIChjbGVhci10 aGlzLWNvbW1hbmQta2V5cykKICAgICAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgICAg IChwdXNoIChyZWFkLWV2ZW50IChwbGlzdC1nZXQgYXJncyA6cHJvbXB0KSkgdW5yZWFkLWNvbW1h bmQtZXZlbnRzKQogICAgICAgICAgICAocG9zLXRpcC1oaWRlKSkKICAgICAgICAgIHQpKSkpKQoK KGRlZnVuIGFjLXF1aWNrLWhlbHAtdXNlLXBvcy10aXAtcCAoKQogIChhbmQgYWMtcXVpY2staGVs cC1wcmVmZXItcG9zLXRpcAogICAgICAgd2luZG93LXN5c3RlbQogICAgICAgKGZlYXR1cmVwICdw b3MtdGlwKSkpCgooZGVmdW4gYWMtcXVpY2staGVscCAoJm9wdGlvbmFsIGZvcmNlKQogIChpbnRl cmFjdGl2ZSkKICAod2hlbiAoYW5kIChvciBmb3JjZSAobnVsbCB0aGlzLWNvbW1hbmQpKQogICAg ICAgICAgICAgKGFjLW1lbnUtbGl2ZS1wKQogICAgICAgICAgICAgKG51bGwgYWMtcXVpY2staGVs cCkpCiAgICAgIChzZXRxIGFjLXF1aWNrLWhlbHAKICAgICAgICAgICAgKGZ1bmNhbGwgKGlmIChh Yy1xdWljay1oZWxwLXVzZS1wb3MtdGlwLXApCiAgICAgICAgICAgICAgICAgICAgICAgICAnYWMt cG9zLXRpcC1zaG93LXF1aWNrLWhlbHAKICAgICAgICAgICAgICAgICAgICAgICAncG9wdXAtbWVu dS1zaG93LXF1aWNrLWhlbHApCiAgICAgICAgICAgICAgICAgICAgIGFjLW1lbnUgbmlsCiAgICAg ICAgICAgICAgICAgICAgIDpwb2ludCBhYy1wb2ludAogICAgICAgICAgICAgICAgICAgICA6aGVp Z2h0IGFjLXF1aWNrLWhlbHAtaGVpZ2h0CiAgICAgICAgICAgICAgICAgICAgIDpub3dhaXQgdCkp KSkKCihkZWZ1biBhYy1yZW1vdmUtcXVpY2staGVscCAoKQogICh3aGVuIChhYy1xdWljay1oZWxw LXVzZS1wb3MtdGlwLXApCiAgICAod2l0aC1uby13YXJuaW5ncwogICAgICAocG9zLXRpcC1oaWRl KSkpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAgKHBvcHVwLWRlbGV0ZSBhYy1xdWljay1oZWxw KQogICAgKHNldHEgYWMtcXVpY2staGVscCBuaWwpKSkKCihkZWZ1biBhYy1sYXN0LXF1aWNrLWhl bHAgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFuZCBhYy1sYXN0LWNvbXBsZXRpb24KICAg ICAgICAgICAgIChlcSAobWFya2VyLWJ1ZmZlciAoY2FyIGFjLWxhc3QtY29tcGxldGlvbikpCiAg ICAgICAgICAgICAgICAgKGN1cnJlbnQtYnVmZmVyKSkpCiAgICAobGV0ICgoZG9jIChwb3B1cC1p dGVtLWRvY3VtZW50YXRpb24gKGNkciBhYy1sYXN0LWNvbXBsZXRpb24pKSkKICAgICAgICAgIChw b2ludCAobWFya2VyLXBvc2l0aW9uIChjYXIgYWMtbGFzdC1jb21wbGV0aW9uKSkpKQogICAgICAo d2hlbiAoc3RyaW5ncCBkb2MpCiAgICAgICAgKGlmIChhYy1xdWljay1oZWxwLXVzZS1wb3MtdGlw LXApCiAgICAgICAgICAgICh3aXRoLW5vLXdhcm5pbmdzIChwb3MtdGlwLXNob3cgZG9jIG5pbCBw b2ludCBuaWwgMCkpCiAgICAgICAgICAocG9wdXAtdGlwIGRvYwogICAgICAgICAgICAgICAgICAg ICA6cG9pbnQgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgOmFyb3VuZCB0CiAgICAgICAgICAg ICAgICAgICAgIDpzY3JvbGwtYmFyIHQKICAgICAgICAgICAgICAgICAgICAgOm1hcmdpbiB0KSkp KSkpCgooZGVmbWFjcm8gYWMtZGVmaW5lLXF1aWNrLWhlbHAtY29tbWFuZCAobmFtZSBhcmdsaXN0 ICZyZXN0IGJvZHkpCiAgKGRlY2xhcmUgKGluZGVudCAyKSkKICBgKHByb2duCiAgICAgKGRlZnVu ICxuYW1lICxhcmdsaXN0ICxAYm9keSkKICAgICAocHV0ICcsbmFtZSAnYWMtcXVpY2staGVscC1j b21tYW5kIHQpKSkKCihhYy1kZWZpbmUtcXVpY2staGVscC1jb21tYW5kIGFjLXF1aWNrLWhlbHAt c2Nyb2xsLWRvd24gKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gYWMtcXVpY2staGVscAogICAg KHBvcHVwLXNjcm9sbC1kb3duIGFjLXF1aWNrLWhlbHApKSkKCihhYy1kZWZpbmUtcXVpY2staGVs cC1jb21tYW5kIGFjLXF1aWNrLWhlbHAtc2Nyb2xsLXVwICgpCiAgKGludGVyYWN0aXZlKQogICh3 aGVuIGFjLXF1aWNrLWhlbHAKICAgIChwb3B1cC1zY3JvbGwtdXAgYWMtcXVpY2staGVscCkpKQoK DAoKOzs7OyBBdXRvIGNvbXBsZXRpb24gaXNlYXJjaAoKKGRlZnVuIGFjLWlzZWFyY2gtY2FsbGJh Y2sgKGxpc3QpCiAgKHNldHEgYWMtZHdpbS1lbmFibGUgKGVxIChsZW5ndGggbGlzdCkgMSkpKQoK KGRlZnVuIGFjLWlzZWFyY2ggKCkKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2 ZS1wKQogICAgKGFjLWNhbmNlbC1zaG93LW1lbnUtdGltZXIpCiAgICAoYWMtY2FuY2VsLXF1aWNr LWhlbHAtdGltZXIpCiAgICAoYWMtc2hvdy1tZW51KQogICAgKHBvcHVwLWlzZWFyY2ggYWMtbWVu dSA6Y2FsbGJhY2sgJ2FjLWlzZWFyY2gtY2FsbGJhY2spKSkKCgwKCjs7OzsgQXV0byBjb21wbGV0 aW9uIGNvbW1hbmRzCgooZGVmdW4gYXV0by1jb21wbGV0ZSAoJm9wdGlvbmFsIHNvdXJjZXMpCiAg IlN0YXJ0IGF1dG8tY29tcGxldGlvbiBhdCBjdXJyZW50IHBvaW50LiIKICAoaW50ZXJhY3RpdmUp CiAgKGxldCAoKG1lbnUtbGl2ZSAoYWMtbWVudS1saXZlLXApKQogICAgICAgIChpbmxpbmUtbGl2 ZSAoYWMtaW5saW5lLWxpdmUtcCkpKQogICAgKGFjLWFib3J0KQogICAgKGxldCAoKGFjLXNvdXJj ZXMgKG9yIHNvdXJjZXMgYWMtc291cmNlcykpKQogICAgICAoaWYgKG9yIGFjLXNob3ctbWVudS1p bW1lZGlhdGVseS1vbi1hdXRvLWNvbXBsZXRlCiAgICAgICAgICAgICAgaW5saW5lLWxpdmUpCiAg ICAgICAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkpCiAgICAgIChhYy1zdGFydCkpCiAgICAod2hl biAoYWMtdXBkYXRlLWdyZWVkeSB0KQogICAgICA7OyBUT0RPIE5vdCB0byBjYXVzZSBpbmxpbmUg Y29tcGxldGlvbiB0byBiZSBkaXNydXB0ZWQuCiAgICAgIChpZiAoYWMtaW5saW5lLWxpdmUtcCkK ICAgICAgICAgIChhYy1pbmxpbmUtaGlkZSkpCiAgICAgIDs7IE5vdCB0byBleHBhbmQgd2hlbiBp dCBpcyBmaXJzdCB0aW1lIHRvIGNvbXBsZXRlCiAgICAgICh3aGVuIChhbmQgKG9yIChhbmQgKG5v dCBhYy1leHBhbmQtb24tYXV0by1jb21wbGV0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAo PiAobGVuZ3RoIGFjLWNhbmRpZGF0ZXMpIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5v dCBtZW51LWxpdmUpKQogICAgICAgICAgICAgICAgICAgICAobm90IChsZXQgKChhYy1jb21tb24t cGFydCBhYy13aG9sZS1jb21tb24tcGFydCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YWMtZXhwYW5kLWNvbW1vbikpKSkKICAgICAgICAgICAgICAgICBhYy11c2UtZnV6enkKICAgICAg ICAgICAgICAgICAobnVsbCBhYy1jYW5kaWRhdGVzKSkKICAgICAgICAoYWMtZnV6enktY29tcGxl dGUpKSkpKQoKKGRlZnVuIGFjLWZ1enp5LWNvbXBsZXRlICgpCiAgIlN0YXJ0IGZ1enp5IGNvbXBs ZXRpb24gYXQgY3VycmVudCBwb2ludC4iCiAgKGludGVyYWN0aXZlKQogICh3aGVuIChyZXF1aXJl ICdmdXp6eSBuaWwpCiAgICAodW5sZXNzIChhYy1tZW51LWxpdmUtcCkKICAgICAgKGFjLXN0YXJ0 KSkKICAgIChsZXQgKChhYy1tYXRjaC1mdW5jdGlvbiAnZnV6enktYWxsLWNvbXBsZXRpb25zKSkK ICAgICAgKHVubGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAoc2V0cSBhYy1jdXJzb3ItY29s b3IgKGZyYW1lLXBhcmFtZXRlciAoc2VsZWN0ZWQtZnJhbWUpICdjdXJzb3ItY29sb3IpKSkKICAg ICAgKGlmIGFjLWZ1enp5LWN1cnNvci1jb2xvcgogICAgICAgICAgKHNldC1jdXJzb3ItY29sb3Ig YWMtZnV6enktY3Vyc29yLWNvbG9yKSkKICAgICAgKHNldHEgYWMtc2hvdy1tZW51IHQpCiAgICAg IChzZXRxIGFjLWZ1enp5LWVuYWJsZSB0KQogICAgICAoc2V0cSBhYy10cmlnZ2VyZWQgbmlsKQog ICAgICAoYWMtdXBkYXRlIHQpKSkKICB0KQoKKGRlZnVuIGFjLW5leHQgKCkKICAiU2VsZWN0IG5l eHQgY2FuZGlkYXRlLiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQog ICAgKHBvcHVwLW5leHQgYWMtbWVudSkKICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAgKGlm IChlcSB0aGlzLWNvbW1hbmQgJ2FjLW5leHQpCiAgICAgICAgKHNldHEgYWMtZHdpbS1lbmFibGUg dCkpKSkKCihkZWZ1biBhYy1wcmV2aW91cyAoKQogICJTZWxlY3QgcHJldmlvdXMgY2FuZGlkYXRl LiIKICAoaW50ZXJhY3RpdmUpCiAgKHdoZW4gKGFjLW1lbnUtbGl2ZS1wKQogICAgKHBvcHVwLXBy ZXZpb3VzIGFjLW1lbnUpCiAgICAoc2V0cSBhYy1zaG93LW1lbnUgdCkKICAgIChpZiAoZXEgdGhp cy1jb21tYW5kICdhYy1wcmV2aW91cykKICAgICAgICAoc2V0cSBhYy1kd2ltLWVuYWJsZSB0KSkp KQoKKGRlZnVuIGFjLWV4cGFuZCAoKQogICJUcnkgZXhwYW5kLCBhbmQgaWYgZXhwYW5kZWQgdHdp Y2UsIHNlbGVjdCBuZXh0IGNhbmRpZGF0ZS4iCiAgKGludGVyYWN0aXZlKQogICh1bmxlc3MgKGFj LWV4cGFuZC1jb21tb24pCiAgICAobGV0ICgoc3RyaW5nIChhYy1zZWxlY3RlZC1jYW5kaWRhdGUp KSkKICAgICAgKHdoZW4gc3RyaW5nCiAgICAgICAgKHdoZW4gKGVxdWFsIGFjLXByZWZpeCBzdHJp bmcpCiAgICAgICAgICAoYWMtbmV4dCkKICAgICAgICAgIChzZXRxIHN0cmluZyAoYWMtc2VsZWN0 ZWQtY2FuZGlkYXRlKSkpCiAgICAgICAgKGFjLWV4cGFuZC1zdHJpbmcgc3RyaW5nIChlcSBsYXN0 LWNvbW1hbmQgdGhpcy1jb21tYW5kKSkKICAgICAgICA7OyBEbyByZXBvc2l0aW9uIGlmIG1lbnUg YXQgbG9uZyBsaW5lCiAgICAgICAgKGlmIChhbmQgKD4gKHBvcHVwLWRpcmVjdGlvbiBhYy1tZW51 KSAwKQogICAgICAgICAgICAgICAgIChhYy1tZW51LWF0LXdyYXBwZXItbGluZS1wKSkKICAgICAg ICAgICAgKGFjLXJlcG9zaXRpb24pKQogICAgICAgIChzZXRxIGFjLXNob3ctbWVudSB0KQogICAg ICAgIHN0cmluZykpKSkKCihkZWZ1biBhYy1leHBhbmQtY29tbW9uICgpCiAgIlRyeSB0byBleHBh bmQgbWVhbmluZ2Z1bCBjb21tb24gcGFydC4iCiAgKGludGVyYWN0aXZlKQogIChpZiAoYW5kIGFj LWR3aW0gYWMtZHdpbS1lbmFibGUpCiAgICAgIChhYy1jb21wbGV0ZSkKICAgICh3aGVuIChhbmQg KGFjLWlubGluZS1saXZlLXApCiAgICAgICAgICAgICAgIGFjLWNvbW1vbi1wYXJ0KQogICAgICAo YWMtaW5saW5lLWhpZGUpIAogICAgICAoYWMtZXhwYW5kLXN0cmluZyBhYy1jb21tb24tcGFydCAo ZXEgbGFzdC1jb21tYW5kIHRoaXMtY29tbWFuZCkpCiAgICAgIChzZXRxIGFjLWNvbW1vbi1wYXJ0 IG5pbCkKICAgICAgdCkpKQoKKGRlZnVuIGFjLWNvbXBsZXRlICgpCiAgIlRyeSBjb21wbGV0ZS4i CiAgKGludGVyYWN0aXZlKQogIChsZXQqICgoY2FuZGlkYXRlIChhYy1zZWxlY3RlZC1jYW5kaWRh dGUpKQogICAgICAgICAoYWN0aW9uIChwb3B1cC1pdGVtLXByb3BlcnR5IGNhbmRpZGF0ZSAnYWN0 aW9uKSkKICAgICAgICAgKGZhbGxiYWNrIG5pbCkpCiAgICAod2hlbiBjYW5kaWRhdGUKICAgICAg KHVubGVzcyAoYWMtZXhwYW5kLXN0cmluZyBjYW5kaWRhdGUpCiAgICAgICAgKHNldHEgZmFsbGJh Y2sgdCkpCiAgICAgIDs7IFJlbWVtYmVyIHRvIHNob3cgaGVscCBsYXRlcgogICAgICAod2hlbiAo YW5kIGFjLXBvaW50IGNhbmRpZGF0ZSkKICAgICAgICAodW5sZXNzIGFjLWxhc3QtY29tcGxldGlv bgogICAgICAgICAgKHNldHEgYWMtbGFzdC1jb21wbGV0aW9uIChjb25zIChtYWtlLW1hcmtlcikg bmlsKSkpCiAgICAgICAgKHNldC1tYXJrZXIgKGNhciBhYy1sYXN0LWNvbXBsZXRpb24pIGFjLXBv aW50IGFjLWJ1ZmZlcikKICAgICAgICAoc2V0Y2RyIGFjLWxhc3QtY29tcGxldGlvbiBjYW5kaWRh dGUpKSkKICAgIChhYy1hYm9ydCkKICAgIChjb25kCiAgICAgKGFjdGlvbgogICAgICAoZnVuY2Fs bCBhY3Rpb24pKQogICAgIChmYWxsYmFjawogICAgICAoYWMtZmFsbGJhY2stY29tbWFuZCkpKQog ICAgY2FuZGlkYXRlKSkKCihkZWZ1biogYWMtc3RhcnQgKCZrZXkKICAgICAgICAgICAgICAgICAg cmVxdWlyZXMKICAgICAgICAgICAgICAgICAgZm9yY2UtaW5pdCkKICAiU3RhcnQgY29tcGxldGlv bi4iCiAgKGludGVyYWN0aXZlKQogIChpZiAobm90IGF1dG8tY29tcGxldGUtbW9kZSkKICAgICAg KG1lc3NhZ2UgImF1dG8tY29tcGxldGUtbW9kZSBpcyBub3QgZW5hYmxlZCIpCiAgICAobGV0KiAo KGluZm8gKGFjLXByZWZpeCByZXF1aXJlcyBhYy1pZ25vcmluZy1wcmVmaXgtZGVmKSkKICAgICAg ICAgICAocHJlZml4LWRlZiAobnRoIDAgaW5mbykpCiAgICAgICAgICAgKHBvaW50IChudGggMSBp bmZvKSkKICAgICAgICAgICAoc291cmNlcyAobnRoIDIgaW5mbykpCiAgICAgICAgICAgcHJlZml4 CiAgICAgICAgICAgKGluaXQgKG9yIGZvcmNlLWluaXQgKG5vdCAoZXEgYWMtcG9pbnQgcG9pbnQp KSkpKQogICAgICAoaWYgKG9yIChudWxsIHBvaW50KQogICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgKHNldHEgcHJlZml4IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMg cG9pbnQgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAoYWMtc3RvcC13b3JkLXAgcHJlZml4KSkp CiAgICAgICAgICAocHJvZzEgbmlsCiAgICAgICAgICAgIChhYy1hYm9ydCkpCiAgICAgICAgKHVu bGVzcyBhYy1jdXJzb3ItY29sb3IKICAgICAgICAgIChzZXRxIGFjLWN1cnNvci1jb2xvciAoZnJh bWUtcGFyYW1ldGVyIChzZWxlY3RlZC1mcmFtZSkgJ2N1cnNvci1jb2xvcikpKQogICAgICAgIChz ZXRxIGFjLXNob3ctbWVudSAob3IgYWMtc2hvdy1tZW51IChpZiAoZXEgYWMtYXV0by1zaG93LW1l bnUgdCkgdCkpCiAgICAgICAgICAgICAgYWMtY3VycmVudC1zb3VyY2VzIHNvdXJjZXMKICAgICAg ICAgICAgICBhYy1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKQogICAgICAgICAgICAgIGFjLXBvaW50 IHBvaW50CiAgICAgICAgICAgICAgYWMtcHJlZml4IHByZWZpeAogICAgICAgICAgICAgIGFjLWxp bWl0IGFjLWNhbmRpZGF0ZS1saW1pdAogICAgICAgICAgICAgIGFjLXRyaWdnZXJlZCB0CiAgICAg ICAgICAgICAgYWMtY3VycmVudC1wcmVmaXgtZGVmIHByZWZpeC1kZWYpCiAgICAgICAgKHdoZW4g KG9yIGluaXQgKG51bGwgYWMtcHJlZml4LW92ZXJsYXkpKQogICAgICAgICAgKGFjLWluaXQpKQog ICAgICAgIChhYy1zZXQtdGltZXIpCiAgICAgICAgKGFjLXNldC1zaG93LW1lbnUtdGltZXIpCiAg ICAgICAgKGFjLXNldC1xdWljay1oZWxwLXRpbWVyKQogICAgICAgIChhYy1wdXQtcHJlZml4LW92 ZXJsYXkpKSkpKQoKKGRlZnVuIGFjLXN0b3AgKCkKICAiU3RvcCBjb21wbGV0aW9uZy4iCiAgKGlu dGVyYWN0aXZlKQogIChzZXRxIGFjLXNlbGVjdGVkLWNhbmRpZGF0ZSBuaWwpCiAgKGFjLWFib3J0 KSkKCihkZWZ1biBhYy10cmlnZ2VyLWtleS1jb21tYW5kICgmb3B0aW9uYWwgZm9yY2UpCiAgKGlu dGVyYWN0aXZlICJQIikKICAoaWYgKG9yIGZvcmNlIChhYy10cmlnZ2VyLWNvbW1hbmQtcCBsYXN0 LWNvbW1hbmQpKQogICAgICAoYXV0by1jb21wbGV0ZSkKICAgIChhYy1mYWxsYmFjay1jb21tYW5k ICdhYy10cmlnZ2VyLWtleS1jb21tYW5kKSkpCgoMCgo7Ozs7IEJhc2ljIGNhY2hlIGZhY2lsaXR5 CgooZGVmdmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1taW51dGUtdGltZXIgbmlsKQooZGVm dmFyIGFjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIG5pbCkKKGRlZnZhciBhYy1jbGVhci12 YXJpYWJsZXMtZXZlcnktbWludXRlIG5pbCkKKGRlZnZhciBhYy1taW51dGVzLWNvdW50ZXIgMCkK CihkZWZ1biBhYy1jbGVhci12YXJpYWJsZS1hZnRlci1zYXZlICh2YXJpYWJsZSAmb3B0aW9uYWwg cHJlZCkKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFyLXZhcmlhYmxlcy1hZnRlci1zYXZlIChjb25z IHZhcmlhYmxlIHByZWQpKSkKCihkZWZ1biBhYy1jbGVhci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSAo KQogIChkb2xpc3QgKHBhaXIgYWMtY2xlYXItdmFyaWFibGVzLWFmdGVyLXNhdmUpCiAgICAoaWYg KG9yIChudWxsIChjZHIgcGFpcikpCiAgICAgICAgICAgIChmdW5jYWxsIChjZHIgcGFpcikpKQog ICAgICAgIChzZXQgKGNhciBwYWlyKSBuaWwpKSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFibGUt ZXZlcnktbWludXRlcyAodmFyaWFibGUgbWludXRlcykKICAoYWRkLXRvLWxpc3QgJ2FjLWNsZWFy LXZhcmlhYmxlcy1ldmVyeS1taW51dGUgKGNvbnMgdmFyaWFibGUgbWludXRlcykpKQoKKGRlZnVu IGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5LW1pbnV0ZSAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZh cmlhYmxlLWV2ZXJ5LW1pbnV0ZXMgdmFyaWFibGUgMSkpCgooZGVmdW4gYWMtY2xlYXItdmFyaWFi bGUtZXZlcnktMTAtbWludXRlcyAodmFyaWFibGUpCiAgKGFjLWNsZWFyLXZhcmlhYmxlLWV2ZXJ5 LW1pbnV0ZXMgdmFyaWFibGUgMTApKQoKKGRlZnVuIGFjLWNsZWFyLXZhcmlhYmxlcy1ldmVyeS1t aW51dGUgKCkKICAoaW5jZiBhYy1taW51dGVzLWNvdW50ZXIpCiAgKGRvbGlzdCAocGFpciBhYy1j bGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlKQogICAgKGlmIChlcSAoJSBhYy1taW51dGVzLWNv dW50ZXIgKGNkciBwYWlyKSkgMCkKICAgICAgICAoc2V0IChjYXIgcGFpcikgbmlsKSkpKQoKDAoK Ozs7OyBBdXRvIGNvbXBsZXRlIG1vZGUKCihkZWZ1biBhYy1jdXJzb3Itb24tZGlhYmxlLWZhY2Ut cCAoJm9wdGlvbmFsIHBvaW50KQogIChtZW1xIChnZXQtdGV4dC1wcm9wZXJ0eSAob3IgcG9pbnQg KHBvaW50KSkgJ2ZhY2UpIGFjLWRpc2FibGUtZmFjZXMpKQoKKGRlZnVuIGFjLXRyaWdnZXItY29t bWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFORCcgaXMgYSB0cmln Z2VyIGNvbW1hbmQuIgogIChhbmQgKHN5bWJvbHAgY29tbWFuZCkKICAgICAgIChub3QgKG1lbXEg Y29tbWFuZCBhYy1ub24tdHJpZ2dlci1jb21tYW5kcykpCiAgICAgICAob3IgKG1lbXEgY29tbWFu ZCBhYy10cmlnZ2VyLWNvbW1hbmRzKQogICAgICAgICAgIChzdHJpbmctbWF0Y2ggInNlbGYtaW5z ZXJ0LWNvbW1hbmQiIChzeW1ib2wtbmFtZSBjb21tYW5kKSkKICAgICAgICAgICAoc3RyaW5nLW1h dGNoICJlbGVjdHJpYyIgKHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpKQoKKGRlZnVuIGFjLWZhbGxi YWNrLWNvbW1hbmQgKCZvcHRpb25hbCBleGNlcHQtY29tbWFuZCkKICAobGV0KiAoKGF1dG8tY29t cGxldGUtbW9kZSBuaWwpCiAgICAgICAgIChrZXlzICh0aGlzLWNvbW1hbmQta2V5cy12ZWN0b3Ip KQogICAgICAgICAoY29tbWFuZCAoaWYga2V5cyAoa2V5LWJpbmRpbmcga2V5cykpKSkKICAgICh3 aGVuIChhbmQgKGNvbW1hbmRwIGNvbW1hbmQpCiAgICAgICAgICAgICAgIChub3QgKGVxIGNvbW1h bmQgZXhjZXB0LWNvbW1hbmQpKSkKICAgICAgKHNldHEgdGhpcy1jb21tYW5kIGNvbW1hbmQpCiAg ICAgIChjYWxsLWludGVyYWN0aXZlbHkgY29tbWFuZCkpKSkKCihkZWZ1biBhYy1jb21wYXRpYmxl LXBhY2thZ2UtY29tbWFuZC1wIChjb21tYW5kKQogICJSZXR1cm4gbm9uLW5pbCBpZiBgQ09NTUFO RCcgaXMgY29tcGF0aWJsZSB3aXRoIGF1dG8tY29tcGxldGUuIgogIChhbmQgKHN5bWJvbHAgY29t bWFuZCkKICAgICAgIChzdHJpbmctbWF0Y2ggYWMtY29tcGF0aWJsZS1wYWNrYWdlcy1yZWdleHAg KHN5bWJvbC1uYW1lIGNvbW1hbmQpKSkpCgooZGVmdW4gYWMtaGFuZGxlLXByZS1jb21tYW5kICgp CiAgKGNvbmRpdGlvbi1jYXNlIHZhcgogICAgICAoaWYgKG9yIChzZXRxIGFjLXRyaWdnZXJlZCAo YW5kIChub3QgYWMtZnV6enktZW5hYmxlKSA7IGlnbm9yZSBrZXkgc3RvcmtlcyBpbiBmdXp6eSBt b2RlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yIChlcSB0aGlzLWNv bW1hbmQgJ2F1dG8tY29tcGxldGUpIDsgc3BlY2lhbCBjYXNlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChhYy10cmlnZ2VyLWNvbW1hbmQtcCB0aGlzLWNvbW1hbmQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgYWMtY29tcGxl dGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtZW1x IHRoaXMtY29tbWFuZCBhYy10cmlnZ2VyLWNvbW1hbmRzLW9uLWNvbXBsZXRpbmcpKSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm90IChhYy1jdXJzb3Itb24tZGlhYmxl LWZhY2UtcCkpKSkKICAgICAgICAgICAgICAoYWMtY29tcGF0aWJsZS1wYWNrYWdlLWNvbW1hbmQt cCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChpZiAob3IgKG5v dCAoc3ltYm9scCB0aGlzLWNvbW1hbmQpKQogICAgICAgICAgICAgICAgICAgIChub3QgKGdldCB0 aGlzLWNvbW1hbmQgJ2FjLXF1aWNrLWhlbHAtY29tbWFuZCkpKQogICAgICAgICAgICAgICAgKGFj LXJlbW92ZS1xdWljay1oZWxwKSkKICAgICAgICAgICAgOzsgTm90IHRvIGNhdXNlIGlubGluZSBj b21wbGV0aW9uIHRvIGJlIGRpc3J1cHRlZC4KICAgICAgICAgICAgKGFjLWlubGluZS1oaWRlKSkK ICAgICAgICAoYWMtYWJvcnQpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIpKSkpCgooZGVmdW4g YWMtaGFuZGxlLXBvc3QtY29tbWFuZCAoKQogIChjb25kaXRpb24tY2FzZSB2YXIKICAgICAgKHdo ZW4gKGFuZCBhYy10cmlnZ2VyZWQKICAgICAgICAgICAgICAgICAob3IgYWMtYXV0by1zdGFydAog ICAgICAgICAgICAgICAgICAgICBhYy1jb21wbGV0aW5nKQogICAgICAgICAgICAgICAgIChub3Qg aXNlYXJjaC1tb2RlKSkKICAgICAgICAoc2V0cSBhYy1sYXN0LXBvaW50IChwb2ludCkpCiAgICAg ICAgKGFjLXN0YXJ0IDpyZXF1aXJlcyAodW5sZXNzIGFjLWNvbXBsZXRpbmcgYWMtYXV0by1zdGFy dCkpCiAgICAgICAgKGFjLWlubGluZS11cGRhdGUpKQogICAgKGVycm9yIChhYy1lcnJvciB2YXIp KSkpCgooZGVmdW4gYWMtc2V0dXAgKCkKICAoaWYgYWMtdHJpZ2dlci1rZXkKICAgICAgKGFjLXNl dC10cmlnZ2VyLWtleSBhYy10cmlnZ2VyLWtleSkpCiAgKGlmIGFjLXVzZS1jb21waGlzdAogICAg ICAoYWMtY29tcGhpc3QtaW5pdCkpCiAgKHVubGVzcyBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnkt bWludXRlLXRpbWVyCiAgICAoc2V0cSBhYy1jbGVhci12YXJpYWJsZXMtZXZlcnktbWludXRlLXRp bWVyIChydW4td2l0aC10aW1lciA2MCA2MCAnYWMtY2xlYXItdmFyaWFibGVzLWV2ZXJ5LW1pbnV0 ZSkpKQogIChpZiBhYy1zdG9wLWZseW1ha2Utb24tY29tcGxldGluZwogICAgICAoZGVmYWR2aWNl IGZseW1ha2Utb24tdGltZXItZXZlbnQgKGFyb3VuZCBhYy1mbHltYWtlLXN0b3AtYWR2aWNlIGFj dGl2YXRlKQogICAgICAgICh1bmxlc3MgYWMtY29tcGxldGluZwogICAgICAgICAgYWQtZG8taXQp KQogICAgKGFkLWRpc2FibGUtYWR2aWNlICdmbHltYWtlLW9uLXRpbWVyLWV2ZW50ICdhcm91bmQg J2FjLWZseW1ha2Utc3RvcC1hZHZpY2UpKSkKCihkZWZpbmUtbWlub3ItbW9kZSBhdXRvLWNvbXBs ZXRlLW1vZGUKICAiQXV0b0NvbXBsZXRlIG1vZGUiCiAgOmxpZ2h0ZXIgIiBBQyIKICA6a2V5bWFw IGFjLW1vZGUtbWFwCiAgOmdyb3VwICdhdXRvLWNvbXBsZXRlCiAgKGlmIGF1dG8tY29tcGxldGUt bW9kZQogICAgICAocHJvZ24KICAgICAgICAoYWMtc2V0dXApCiAgICAgICAgKGFkZC1ob29rICdw cmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNvbW1hbmQgbmlsIHQpCiAgICAgICAgKGFk ZC1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAnYWMtaGFuZGxlLXBvc3QtY29tbWFuZCBuaWwgdCkK ICAgICAgICAoYWRkLWhvb2sgJ2FmdGVyLXNhdmUtaG9vayAnYWMtY2xlYXItdmFyaWFibGVzLWFm dGVyLXNhdmUgbmlsIHQpCiAgICAgICAgKHJ1bi1ob29rcyAnYXV0by1jb21wbGV0ZS1tb2RlLWhv b2spKQogICAgKHJlbW92ZS1ob29rICdwcmUtY29tbWFuZC1ob29rICdhYy1oYW5kbGUtcHJlLWNv bW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2FjLWhhbmRsZS1w b3N0LWNvbW1hbmQgdCkKICAgIChyZW1vdmUtaG9vayAnYWZ0ZXItc2F2ZS1ob29rICdhYy1jbGVh ci12YXJpYWJsZXMtYWZ0ZXItc2F2ZSB0KQogICAgKGFjLWFib3J0KSkpCgooZGVmdW4gYXV0by1j b21wbGV0ZS1tb2RlLW1heWJlICgpCiAgIldoYXQgYnVmZmVyIGBhdXRvLWNvbXBsZXRlLW1vZGUn IHByZWZlcnMuIgogIChpZiAoYW5kIChub3QgKG1pbmlidWZmZXJwIChjdXJyZW50LWJ1ZmZlcikp KQogICAgICAgICAgIChtZW1xIG1ham9yLW1vZGUgYWMtbW9kZXMpKQogICAgICAoYXV0by1jb21w bGV0ZS1tb2RlIDEpKSkKCihkZWZpbmUtZ2xvYmFsLW1pbm9yLW1vZGUgZ2xvYmFsLWF1dG8tY29t cGxldGUtbW9kZQogIGF1dG8tY29tcGxldGUtbW9kZSBhdXRvLWNvbXBsZXRlLW1vZGUtbWF5YmUK ICA6Z3JvdXAgJ2F1dG8tY29tcGxldGUpCgoMCgo7Ozs7IENvbXBhdGliaWxpdGllcyB3aXRoIG90 aGVyIGV4dGVuc2lvbnMKCihkZWZ1biBhYy1mbHlzcGVsbC13b3JrYXJvdW5kICgpCiAgIkZseXNw ZWxsIHVzZXMgYHNpdC1mb3InIGZvciBkZWxheWluZyBpdHMgcHJvY2Vzcy4gVW5mb3J0dW5hdGVs bHksCml0IHN0b3BzIGF1dG8gY29tcGxldGlvbiB3aGljaCBpcyB0cmlnZ2VyIHdpdGggYHJ1bi13 aXRoLWlkbGUtdGltZXInLgpUaGlzIHdvcmthcm91bmQgYXZvaWQgZmx5c3BlbGwgcHJvY2Vzc2Vz IHdoZW4gYXV0byBjb21wbGV0aW9uIGlzIGJlaW5nIHN0YXJ0ZWQuIgogIChpbnRlcmFjdGl2ZSkK ICAoZGVmYWR2aWNlIGZseXNwZWxsLXBvc3QtY29tbWFuZC1ob29rIChhcm91bmQgYWMtZmx5c3Bl bGwtd29ya2Fyb3VuZCBhY3RpdmF0ZSkKICAgICh1bmxlc3MgYWMtdHJpZ2dlcmVkCiAgICAgIGFk LWRvLWl0KSkpCgooZGVmdW4gYWMtbGludW0td29ya2Fyb3VuZCAoKQogICJsaW51bS1tb2RlIHRy aWVzIHRvIGRpc3BsYXkgdGhlIGxpbmUgbnVtYmVycyBldmVuIGZvciB0aGUKY29tcGxldGlvbiBt ZW51LiBUaGlzIHdvcmthcm91bmQgc3RvcHMgdGhhdCBhbm5veWluZyBiZWhhdmlvci4iCiAgKGlu dGVyYWN0aXZlKQogIChkZWZhZHZpY2UgbGludW0tdXBkYXRlIChhcm91bmQgYWMtbGludW0tdXBk YXRlLXdvcmthcm91bmQgYWN0aXZhdGUpCiAgICAodW5sZXNzIGFjLWNvbXBsZXRpbmcKICAgICAg YWQtZG8taXQpKSkKCgwKCjs7OzsgU3RhbmRhcmQgc291cmNlcwoKKGRlZm1hY3JvIGFjLWRlZmlu ZS1zb3VyY2UgKG5hbWUgc291cmNlKQogICJTb3VyY2UgZGVmaW5pdGlvbiBtYWNyby4gSXQgZGVm aW5lcyBhIGNvbXBsZXRlIGNvbW1hbmQgYWxzby4iCiAgKGRlY2xhcmUgKGluZGVudCAxKSkKICBg KHByb2duCiAgICAgKGRlZnZhciAsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUp KQogICAgICAgLHNvdXJjZSkKICAgICAoZGVmdW4gLChpbnRlcm4gKGZvcm1hdCAiYWMtY29tcGxl dGUtJXMiIG5hbWUpKSAoKQogICAgICAgKGludGVyYWN0aXZlKQogICAgICAgKGF1dG8tY29tcGxl dGUgJygsKGludGVybiAoZm9ybWF0ICJhYy1zb3VyY2UtJXMiIG5hbWUpKSkpKSkpCgo7OyBXb3Jk cyBpbiBidWZmZXIgc291cmNlCihkZWZ2YXIgYWMtd29yZC1pbmRleCBuaWwpCgooZGVmdW4gYWMt Y2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciAocG9pbnQgcHJlZml4IGxpbWl0KQogIChsZXQgKChp IDApCiAgICAgICAgY2FuZGlkYXRlCiAgICAgICAgY2FuZGlkYXRlcwogICAgICAgIChyZWdleHAg KGNvbmNhdCAiXFxfPCIgKHJlZ2V4cC1xdW90ZSBwcmVmaXgpICJcXChcXHN3XFx8XFxzX1xcKStc XF8+IikpKQogICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAg ICAoZ290by1jaGFyIHBvaW50KQogICAgICAod2hpbGUgKGFuZCAob3IgKG5vdCAoaW50ZWdlcnAg bGltaXQpKSAoPCBpIGxpbWl0KSkKICAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2Fy ZCByZWdleHAgbmlsIHQpKQogICAgICAgIChzZXRxIGNhbmRpZGF0ZSAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgMCkpCiAgICAgICAgKHVubGVzcyAobWVtYmVyIGNhbmRpZGF0ZSBjYW5kaWRh dGVzKQogICAgICAgICAgKHB1c2ggY2FuZGlkYXRlIGNhbmRpZGF0ZXMpCiAgICAgICAgICAoaW5j ZiBpKSkpCiAgICAgIDs7IFNlYXJjaCBiYWNrd2FyZAogICAgICAoZ290by1jaGFyICgrIHBvaW50 IChsZW5ndGggcHJlZml4KSkpCiAgICAgICh3aGlsZSAoYW5kIChvciAobm90IChpbnRlZ2VycCBs aW1pdCkpICg8IGkgbGltaXQpKQogICAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQg cmVnZXhwIG5pbCB0KSkKICAgICAgICAoc2V0cSBjYW5kaWRhdGUgKG1hdGNoLXN0cmluZy1uby1w cm9wZXJ0aWVzIDApKQogICAgICAgICh1bmxlc3MgKG1lbWJlciBjYW5kaWRhdGUgY2FuZGlkYXRl cykKICAgICAgICAgIChwdXNoIGNhbmRpZGF0ZSBjYW5kaWRhdGVzKQogICAgICAgICAgKGluY2Yg aSkpKQogICAgICAobnJldmVyc2UgY2FuZGlkYXRlcykpKSkKCihkZWZ1biBhYy1pbmNyZW1lbnRh bC11cGRhdGUtd29yZC1pbmRleCAoKQogICh1bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdv cmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKGlm IChudWxsIGFjLXdvcmQtaW5kZXgpCiAgICAgIChzZXRxIGFjLXdvcmQtaW5kZXggKGNvbnMgbmls IG5pbCkpKQogIDs7IE1hcmsgaW5jb21wbGV0ZQogIChpZiAoY2FyIGFjLXdvcmQtaW5kZXgpCiAg ICAgIChzZXRjYXIgYWMtd29yZC1pbmRleCBuaWwpKQogIChsZXQgKChpbmRleCAoY2RyIGFjLXdv cmQtaW5kZXgpKQogICAgICAgICh3b3JkcyAoYWMtY2FuZGlkYXRlLXdvcmRzLWluLWJ1ZmZlciBh Yy1wb2ludCBhYy1wcmVmaXggKG9yIChhbmQgKGludGVnZXJwIGFjLWxpbWl0KSBhYy1saW1pdCkg MTApKSkpCiAgICAoZG9saXN0ICh3b3JkIHdvcmRzKQogICAgICAodW5sZXNzIChtZW1iZXIgd29y ZCBpbmRleCkKICAgICAgICAocHVzaCB3b3JkIGluZGV4KQogICAgICAgIChzZXRjZHIgYWMtd29y ZC1pbmRleCBpbmRleCkpKSkpCgooZGVmdW4gYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSAoKQogICh1 bmxlc3MgKGxvY2FsLXZhcmlhYmxlLXAgJ2FjLXdvcmQtaW5kZXgpCiAgICAobWFrZS1sb2NhbC12 YXJpYWJsZSAnYWMtd29yZC1pbmRleCkpCiAgKHdoZW4gKGFuZCAobm90IChjYXIgYWMtd29yZC1p bmRleCkpCiAgICAgICAgICAgICAoPCAoYnVmZmVyLXNpemUpIDEwNDg1NzYpKQogICAgOzsgQ29t cGxldGUgaW5kZXgKICAgIChzZXRxIGFjLXdvcmQtaW5kZXgKICAgICAgICAgIChjb25zIHQKICAg ICAgICAgICAgICAgIChzcGxpdC1zdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGll cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IlxcKD86XlxcfFxcXz5cXCkuKj9cXCg/OlxcXzxcXHwkXFwpIikpKSkpCgooZGVmdW4gYWMtdXBk YXRlLXdvcmQtaW5kZXggKCkKICAoZG9saXN0IChidWZmZXIgKGJ1ZmZlci1saXN0KSkKICAgICh3 aGVuIChvciBhYy1mdXp6eS1lbmFibGUKICAgICAgICAgICAgICAobm90IChlcSBidWZmZXIgKGN1 cnJlbnQtYnVmZmVyKSkpKQogICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAg ICAoYWMtdXBkYXRlLXdvcmQtaW5kZXgtMSkpKSkpCgooZGVmdW4gYWMtd29yZC1jYW5kaWRhdGVz ICgmb3B0aW9uYWwgYnVmZmVyLXByZWQpCiAgKGxvb3AgaW5pdGlhbGx5ICh1bmxlc3MgYWMtZnV6 enktZW5hYmxlIChhYy1pbmNyZW1lbnRhbC11cGRhdGUtd29yZC1pbmRleCkpCiAgICAgICAgZm9y IGJ1ZmZlciBpbiAoYnVmZmVyLWxpc3QpCiAgICAgICAgaWYgKGFuZCAob3IgKG5vdCAoaW50ZWdl cnAgYWMtbGltaXQpKSAoPCAobGVuZ3RoIGNhbmRpZGF0ZXMpIGFjLWxpbWl0KSkKICAgICAgICAg ICAgICAgIChpZiBidWZmZXItcHJlZCAoZnVuY2FsbCBidWZmZXItcHJlZCBidWZmZXIpIHQpKQog ICAgICAgIGFwcGVuZCAoZnVuY2FsbCBhYy1tYXRjaC1mdW5jdGlvbgogICAgICAgICAgICAgICAg ICAgICAgICBhYy1wcmVmaXgKICAgICAgICAgICAgICAgICAgICAgICAgKGFuZCAobG9jYWwtdmFy aWFibGUtcCAnYWMtd29yZC1pbmRleCBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNkciAoYnVmZmVyLWxvY2FsLXZhbHVlICdhYy13b3JkLWluZGV4IGJ1ZmZlcikpKSkKICAg ICAgICBpbnRvIGNhbmRpZGF0ZXMKICAgICAgICBmaW5hbGx5IHJldHVybiBjYW5kaWRhdGVzKSkK CihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWJ1ZmZlcgogICcoKGNhbmRpZGF0ZXMgLiBhYy13 b3JkLWNhbmRpZGF0ZXMpKSkKCihhYy1kZWZpbmUtc291cmNlIHdvcmRzLWluLWFsbC1idWZmZXIK ICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAuIGFjLXdv cmQtY2FuZGlkYXRlcykpKQoKKGFjLWRlZmluZS1zb3VyY2Ugd29yZHMtaW4tc2FtZS1tb2RlLWJ1 ZmZlcnMKICAnKChpbml0IC4gYWMtdXBkYXRlLXdvcmQtaW5kZXgpCiAgICAoY2FuZGlkYXRlcyAu IChhYy13b3JkLWNhbmRpZGF0ZXMKICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKGJ1ZmZlcikK ICAgICAgICAgICAgICAgICAgICAgKGRlcml2ZWQtbW9kZS1wIChidWZmZXItbG9jYWwtdmFsdWUg J21ham9yLW1vZGUgYnVmZmVyKSkpKSkpKQoKOzsgTGlzcCBzeW1ib2xzIHNvdXJjZQooZGVmdmFy IGFjLXN5bWJvbHMtY2FjaGUgbmlsKQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRl cyAnYWMtc3ltYm9scy1jYWNoZSkKCihkZWZ1biBhYy1zeW1ib2wtZmlsZSAoc3ltYm9sIHR5cGUp CiAgKGlmIChmYm91bmRwICdmaW5kLWxpc3Atb2JqZWN0LWZpbGUtbmFtZSkKICAgICAgKGZpbmQt bGlzcC1vYmplY3QtZmlsZS1uYW1lIHN5bWJvbCB0eXBlKQogICAgKGxldCAoKGZpbGUtbmFtZSAo d2l0aC1uby13YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgIChkZXNjcmliZS1zaW1wbGlm eS1saWItZmlsZS1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2wtZmlsZSBzeW1i b2wgdHlwZSkpKSkpCiAgICAgICh3aGVuIChlcXVhbCBmaWxlLW5hbWUgImxvYWRkZWZzLmVsIikK ICAgICAgICA7OyBGaW5kIHRoZSByZWFsIGRlZiBzaXRlIG9mIHRoZSBwcmVsb2FkZWQgb2JqZWN0 LgogICAgICAgIChsZXQgKChsb2NhdGlvbiAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChmaW5kLWZ1bmN0aW9uLXNlYXJjaC1mb3Itc3ltYm9sIHN5bWJvbCBuaWwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAibG9hZGRlZnMuZWwiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlu ZC12YXJpYWJsZS1ub3NlbGVjdCBzeW1ib2wgZmlsZS1uYW1lKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAoZXJyb3IgbmlsKSkpKQogICAgICAgICAgKHdoZW4gbG9jYXRpb24KICAgICAgICAg ICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGNhciBsb2NhdGlvbikKICAgICAgICAgICAgICAod2hl biAoY2RyIGxvY2F0aW9uKQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciAoY2RyIGxvY2F0aW9u KSkpCiAgICAgICAgICAgICAgKHdoZW4gKHJlLXNlYXJjaC1iYWNrd2FyZAogICAgICAgICAgICAg ICAgICAgICAiXjs7OyBHZW5lcmF0ZWQgYXV0b2xvYWRzIGZyb20gXFwoLipcXCkiIG5pbCB0KQog ICAgICAgICAgICAgICAgKHNldHEgZmlsZS1uYW1lIChtYXRjaC1zdHJpbmcgMSkpKSkpKSkKICAg ICAgKGlmIChhbmQgKG51bGwgZmlsZS1uYW1lKQogICAgICAgICAgICAgICAob3IgKGVxIHR5cGUg J2RlZnVuKQogICAgICAgICAgICAgICAgICAgKGludGVnZXJwIChnZXQgc3ltYm9sICd2YXJpYWJs ZS1kb2N1bWVudGF0aW9uKSkpKQogICAgICAgICAgOzsgSXQncyBhIG9iamVjdCBub3QgZGVmaW5l ZCBpbiBFbGlzcCBidXQgaW4gQy4KICAgICAgICAgIChpZiAoZ2V0LWJ1ZmZlciAiICpET0MqIikK ICAgICAgICAgICAgICAoaWYgKGVxIHR5cGUgJ2RlZnVuKQogICAgICAgICAgICAgICAgICAoaGVs cC1DLWZpbGUtbmFtZSAoc3ltYm9sLWZ1bmN0aW9uIHN5bWJvbCkgJ3N1YnIpCiAgICAgICAgICAg ICAgICAoaGVscC1DLWZpbGUtbmFtZSBzeW1ib2wgJ3ZhcikpCiAgICAgICAgICAgICdDLXNvdXJj ZSkKICAgICAgICBmaWxlLW5hbWUpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24g KHN5bWJvbCkKICAoaWYgKHN0cmluZ3Agc3ltYm9sKQogICAgICAoc2V0cSBzeW1ib2wgKGludGVy bi1zb2Z0IHN5bWJvbCkpKQogIChpZ25vcmUtZXJyb3JzCiAgICAod2l0aC10ZW1wLWJ1ZmZlcgog ICAgICAobGV0ICgoc3RhbmRhcmQtb3V0cHV0IChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgIChw cmluMSBzeW1ib2wpCiAgICAgICAgKHByaW5jICIgaXMgIikKICAgICAgICAoY29uZAogICAgICAg ICAoKGZib3VuZHAgc3ltYm9sKQogICAgICAgICAgOzsgaW1wb3J0IGhlbHAteHJlZi1mb2xsb3dp bmcKICAgICAgICAgIChyZXF1aXJlICdoZWxwLW1vZGUpCiAgICAgICAgICAobGV0ICgoaGVscC14 cmVmLWZvbGxvd2luZyB0KSkKICAgICAgICAgICAgKGRlc2NyaWJlLWZ1bmN0aW9uLTEgc3ltYm9s KSkKICAgICAgICAgIChidWZmZXItc3RyaW5nKSkKICAgICAgICAgKChib3VuZHAgc3ltYm9sKQog ICAgICAgICAgKGxldCAoKGZpbGUtbmFtZSAgKGFjLXN5bWJvbC1maWxlIHN5bWJvbCAnZGVmdmFy KSkpCiAgICAgICAgICAgIChwcmluYyAiYSB2YXJpYWJsZSIpCiAgICAgICAgICAgICh3aGVuIGZp bGUtbmFtZQogICAgICAgICAgICAgIChwcmluYyAiIGRlZmluZWQgaW4gYCIpCiAgICAgICAgICAg ICAgKHByaW5jIChpZiAoZXEgZmlsZS1uYW1lICdDLXNvdXJjZSkKICAgICAgICAgICAgICAgICAg ICAgICAgICJDIHNvdXJjZSBjb2RlIgogICAgICAgICAgICAgICAgICAgICAgIChmaWxlLW5hbWUt bm9uZGlyZWN0b3J5IGZpbGUtbmFtZSkpKSkKICAgICAgICAgICAgKHByaW5jICInLlxuXG4iKQog ICAgICAgICAgICAocHJpbmMgKG9yIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAndmFy aWFibGUtZG9jdW1lbnRhdGlvbiB0KQogICAgICAgICAgICAgICAgICAgICAgICJOb3QgZG9jdW1l bnRlZC4iKSkKICAgICAgICAgICAgKGJ1ZmZlci1zdHJpbmcpKSkKICAgICAgICAgKChmYWNlcCBz eW1ib2wpCiAgICAgICAgICAobGV0ICgoZmlsZS1uYW1lICAoYWMtc3ltYm9sLWZpbGUgc3ltYm9s ICdkZWZmYWNlKSkpCiAgICAgICAgICAgIChwcmluYyAiYSBmYWNlIikKICAgICAgICAgICAgKHdo ZW4gZmlsZS1uYW1lCiAgICAgICAgICAgICAgKHByaW5jICIgZGVmaW5lZCBpbiBgIikKICAgICAg ICAgICAgICAocHJpbmMgKGlmIChlcSBmaWxlLW5hbWUgJ0Mtc291cmNlKQogICAgICAgICAgICAg ICAgICAgICAgICAgIkMgc291cmNlIGNvZGUiCiAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUt bmFtZS1ub25kaXJlY3RvcnkgZmlsZS1uYW1lKSkpKQogICAgICAgICAgICAocHJpbmMgIicuXG5c biIpCiAgICAgICAgICAgIChwcmluYyAob3IgKGRvY3VtZW50YXRpb24tcHJvcGVydHkgc3ltYm9s ICdmYWNlLWRvY3VtZW50YXRpb24gdCkKICAgICAgICAgICAgICAgICAgICAgICAiTm90IGRvY3Vt ZW50ZWQuIikpCiAgICAgICAgICAgIChidWZmZXItc3RyaW5nKSkpCiAgICAgICAgICh0CiAgICAg ICAgICAobGV0ICgoZG9jIChkb2N1bWVudGF0aW9uLXByb3BlcnR5IHN5bWJvbCAnZ3JvdXAtZG9j dW1lbnRhdGlvbiB0KSkpCiAgICAgICAgICAgICh3aGVuIGRvYwogICAgICAgICAgICAgIChwcmlu YyAiYSBncm91cC5cblxuIikKICAgICAgICAgICAgICAocHJpbmMgZG9jKQogICAgICAgICAgICAg IChidWZmZXItc3RyaW5nKSkpKSkpKSkpCgooZGVmdW4gYWMtc3ltYm9sLWNhbmRpZGF0ZXMgKCkK ICAob3IgYWMtc3ltYm9scy1jYWNoZQogICAgICAoc2V0cSBhYy1zeW1ib2xzLWNhY2hlCiAgICAg ICAgICAgIChsb29wIGZvciB4IGJlaW5nIHRoZSBzeW1ib2xzCiAgICAgICAgICAgICAgICAgIGlm IChvciAoZmJvdW5kcCB4KQogICAgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcCB4KQogICAg ICAgICAgICAgICAgICAgICAgICAgKHN5bWJvbC1wbGlzdCB4KSkKICAgICAgICAgICAgICAgICAg Y29sbGVjdCAoc3ltYm9sLW5hbWUgeCkpKSkpCgooYWMtZGVmaW5lLXNvdXJjZSBzeW1ib2xzCiAg JygoY2FuZGlkYXRlcyAuIGFjLXN5bWJvbC1jYW5kaWRhdGVzKQogICAgKGRvY3VtZW50IC4gYWMt c3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gInMiKQogICAgKGNhY2hlKSkpCgo7 OyBMaXNwIGZ1bmN0aW9ucyBzb3VyY2UKKGRlZnZhciBhYy1mdW5jdGlvbnMtY2FjaGUgbmlsKQoo YWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtZnVuY3Rpb25zLWNhY2hlKQoK KGRlZnVuIGFjLWZ1bmN0aW9uLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtZnVuY3Rpb25zLWNhY2hl CiAgICAgIChzZXRxIGFjLWZ1bmN0aW9ucy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3IgeCBi ZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoZmJvdW5kcCB4KQogICAgICAg ICAgICAgICAgICBjb2xsZWN0IChzeW1ib2wtbmFtZSB4KSkpKSkKCihhYy1kZWZpbmUtc291cmNl IGZ1bmN0aW9ucwogICcoKGNhbmRpZGF0ZXMgLiBhYy1mdW5jdGlvbi1jYW5kaWRhdGVzKQogICAg KGRvY3VtZW50IC4gYWMtc3ltYm9sLWRvY3VtZW50YXRpb24pCiAgICAoc3ltYm9sIC4gImYiKQog ICAgKHByZWZpeCAuICIoXFwoXFwoPzpcXHN3XFx8XFxzX1xcKStcXCkiKQogICAgKGNhY2hlKSkp Cgo7OyBMaXNwIHZhcmlhYmxlcyBzb3VyY2UKKGRlZnZhciBhYy12YXJpYWJsZXMtY2FjaGUgbmls KQooYWMtY2xlYXItdmFyaWFibGUtZXZlcnktMTAtbWludXRlcyAnYWMtdmFyaWFibGVzLWNhY2hl KQoKKGRlZnVuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMgKCkKICAob3IgYWMtdmFyaWFibGVzLWNh Y2hlCiAgICAgIChzZXRxIGFjLXZhcmlhYmxlcy1jYWNoZQogICAgICAgICAgICAobG9vcCBmb3Ig eCBiZWluZyB0aGUgc3ltYm9scwogICAgICAgICAgICAgICAgICBpZiAoYm91bmRwIHgpCiAgICAg ICAgICAgICAgICAgIGNvbGxlY3QgKHN5bWJvbC1uYW1lIHgpKSkpKQoKKGFjLWRlZmluZS1zb3Vy Y2UgdmFyaWFibGVzCiAgJygoY2FuZGlkYXRlcyAuIGFjLXZhcmlhYmxlLWNhbmRpZGF0ZXMpCiAg ICAoZG9jdW1lbnQgLiBhYy1zeW1ib2wtZG9jdW1lbnRhdGlvbikKICAgIChzeW1ib2wgLiAidiIp CiAgICAoY2FjaGUpKSkKCjs7IExpc3AgZmVhdHVyZXMgc291cmNlCihkZWZ2YXIgYWMtZW1hY3Mt bGlzcC1mZWF0dXJlcyBuaWwpCihhYy1jbGVhci12YXJpYWJsZS1ldmVyeS0xMC1taW51dGVzICdh Yy1lbWFjcy1saXNwLWZlYXR1cmVzKQoKKGRlZnVuIGFjLWVtYWNzLWxpc3AtZmVhdHVyZS1jYW5k aWRhdGVzICgpCiAgKG9yIGFjLWVtYWNzLWxpc3AtZmVhdHVyZXMKICAgICAgKGlmIChmYm91bmRw ICdmaW5kLWxpYnJhcnktc3VmZml4ZXMpCiAgICAgICAgICAobGV0ICgoc3VmZml4IChjb25jYXQg KHJlZ2V4cC1vcHQgKGZpbmQtbGlicmFyeS1zdWZmaXhlcykgdCkgIlxcJyIpKSkKICAgICAgICAg ICAgKHNldHEgYWMtZW1hY3MtbGlzcC1mZWF0dXJlcwogICAgICAgICAgICAgICAgICAoYXBwZW5k IChtYXBjYXIgJ3ByaW4xLXRvLXN0cmluZyBmZWF0dXJlcykKICAgICAgICAgICAgICAgICAgICAg ICAgICAobG9vcCBmb3IgZGlyIGluIGxvYWQtcGF0aAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlmIChmaWxlLWRpcmVjdG9yeS1wIGRpcikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhcHBlbmQgKGxvb3AgZm9yIGZpbGUgaW4gKGRpcmVjdG9yeS1maWxlcyBkaXIpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJpbmctbWF0 Y2ggc3VmZml4IGZpbGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbGxlY3QgKHN1YnN0cmluZyBmaWxlIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKSkpKSkp KQoKKGFjLWRlZmluZS1zb3VyY2UgZmVhdHVyZXMKICAnKChkZXBlbmRzIGZpbmQtZnVuYykKICAg IChjYW5kaWRhdGVzIC4gYWMtZW1hY3MtbGlzcC1mZWF0dXJlLWNhbmRpZGF0ZXMpCiAgICAocHJl Zml4IC4gInJlcXVpcmUgKydcXChcXCg/Olxcc3dcXHxcXHNfXFwpKlxcKSIpCiAgICAocmVxdWly ZXMgLiAwKSkpCgooZGVmdmFyYWxpYXMgJ2FjLXNvdXJjZS1lbWFjcy1saXNwLWZlYXR1cmVzICdh Yy1zb3VyY2UtZmVhdHVyZXMpCgo7OyBBYmJyZXYgc291cmNlCihhYy1kZWZpbmUtc291cmNlIGFi YnJldgogICcoKGNhbmRpZGF0ZXMgLiAobWFwY2FyICdwb3B1cC14LXRvLXN0cmluZyAoYXBwZW5k ICh2Y29uY2F0IGxvY2FsLWFiYnJldi10YWJsZSBnbG9iYWwtYWJicmV2LXRhYmxlKSBuaWwpKSkK ICAgIChhY3Rpb24gLiBleHBhbmQtYWJicmV2KQogICAgKHN5bWJvbCAuICJhIikKICAgIChjYWNo ZSkpKQoKOzsgRmlsZXMgaW4gY3VycmVudCBkaXJlY3Rvcnkgc291cmNlCihhYy1kZWZpbmUtc291 cmNlIGZpbGVzLWluLWN1cnJlbnQtZGlyCiAgJygoY2FuZGlkYXRlcyAuIChkaXJlY3RvcnktZmls ZXMgZGVmYXVsdC1kaXJlY3RvcnkpKQogICAgKGNhY2hlKSkpCgo7OyBGaWxlbmFtZSBzb3VyY2UK KGRlZnZhciBhYy1maWxlbmFtZS1jYWNoZSBuaWwpCgooZGVmdW4gYWMtZmlsZW5hbWUtY2FuZGlk YXRlICgpCiAgKHVubGVzcyAoZmlsZS1yZWd1bGFyLXAgYWMtcHJlZml4KQogICAgKGlnbm9yZS1l cnJvcnMKICAgICAgKGxvb3Agd2l0aCBkaXIgPSAoZmlsZS1uYW1lLWRpcmVjdG9yeSBhYy1wcmVm aXgpCiAgICAgICAgICAgIHdpdGggZmlsZXMgPSAob3IgKGFzc29jLWRlZmF1bHQgZGlyIGFjLWZp bGVuYW1lLWNhY2hlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChmaWxlcyAo ZGlyZWN0b3J5LWZpbGVzIGRpciBuaWwgIl5bXi5dIikpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgZGlyIGZpbGVzKSBhYy1maWxlbmFtZS1jYWNoZSkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKSkKICAgICAgICAgICAgZm9yIGZpbGUgaW4g ZmlsZXMKICAgICAgICAgICAgZm9yIHBhdGggPSAoY29uY2F0IGRpciBmaWxlKQogICAgICAgICAg ICBjb2xsZWN0IChpZiAoZmlsZS1kaXJlY3RvcnktcCBwYXRoKQogICAgICAgICAgICAgICAgICAg ICAgICAoY29uY2F0IHBhdGggIi8iKQogICAgICAgICAgICAgICAgICAgICAgcGF0aCkpKSkpCgoo YWMtZGVmaW5lLXNvdXJjZSBmaWxlbmFtZQogICcoKGluaXQgLiAoc2V0cSBhYy1maWxlbmFtZS1j YWNoZSBuaWwpKQogICAgKGNhbmRpZGF0ZXMgLiBhYy1maWxlbmFtZS1jYW5kaWRhdGUpCiAgICAo cHJlZml4IC4gdmFsaWQtZmlsZSkKICAgIChyZXF1aXJlcyAuIDApCiAgICAoYWN0aW9uIC4gYWMt c3RhcnQpCiAgICAobGltaXQgLiBuaWwpKSkKCjs7IERpY3Rpb25hcnkgc291cmNlCihhYy1kZWZp bmUtc291cmNlIGRpY3Rpb25hcnkKICAnKChjYW5kaWRhdGVzIC4gYWMtYnVmZmVyLWRpY3Rpb25h cnkpCiAgICAoc3ltYm9sIC4gImQiKSkpCgoocHJvdmlkZSAnYXV0by1jb21wbGV0ZSkKOzs7IGF1 dG8tY29tcGxldGUuZWwgZW5kcyBoZXJlCg== --_8a75cc7a-25b8-4ff8-b8e5-4a88e96d6162_-- ------------=_1323547142-21510-1-- From unknown Sat Aug 16 12:46:04 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Alex Murray Subject: bug#10159: closed (Re: bug#10263: 24.0.92; emacs crash with auto-complete plugin) Message-ID: References: <831uscmc8b.fsf@gnu.org> <4ED43D44.1000409@dsto.defence.gov.au> X-Gnu-PR-Message: they-closed 10159 X-Gnu-PR-Package: emacs Reply-To: 10159@debbugs.gnu.org Date: Sat, 10 Dec 2011 19:59:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1323547142-21510-3" This is a multi-part message in MIME format... ------------=_1323547142-21510-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #10263: 24.0.91; Segfault with auto-complete package [SEC=3DUNCLASSIFIED] which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 10159@debbugs.gnu.org. --=20 10263: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D10263 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1323547142-21510-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 10263-done) by debbugs.gnu.org; 10 Dec 2011 19:58:15 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZT3n-0005Zv-Eo for submit@debbugs.gnu.org; Sat, 10 Dec 2011 14:58:15 -0500 Received: from mtaout20.012.net.il ([80.179.55.166]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZT3j-0005Zm-Jf for 10263-done@debbugs.gnu.org; Sat, 10 Dec 2011 14:58:13 -0500 Received: from conversion-daemon.a-mtaout20.012.net.il by a-mtaout20.012.net.il (HyperSendmail v2007.08) id <0LW000H007BEL200@a-mtaout20.012.net.il> for 10263-done@debbugs.gnu.org; Sat, 10 Dec 2011 21:57:07 +0200 (IST) Received: from HOME-C4E4A596F7 ([77.124.199.182]) by a-mtaout20.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0LW000GYM7F647V0@a-mtaout20.012.net.il>; Sat, 10 Dec 2011 21:57:07 +0200 (IST) Date: Sat, 10 Dec 2011 21:57:08 +0200 From: Eli Zaretskii Subject: Re: bug#10263: 24.0.92; emacs crash with auto-complete plugin In-reply-to: X-012-Sender: halo1@inter.net.il To: yagnesh raghava Message-id: <831uscmc8b.fsf@gnu.org> References: X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 10263-done Cc: 10263-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Reply-To: Eli Zaretskii List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > From: yagnesh raghava > Date: Sat, 10 Dec 2011 10:40:23 +0000 > > emacs crashing on when writing text in telugu-itrans (infact with any > Indian script input method) while auto-complete-mode[1] enabled. Fixed in revision 106658 on the trunk. ------------=_1323547142-21510-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Nov 2011 02:04:59 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RVD45-0005uw-TI for submit@debbugs.gnu.org; Mon, 28 Nov 2011 21:04:59 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RVD3J-0005tp-MT for submit@debbugs.gnu.org; Mon, 28 Nov 2011 21:04:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RVD1M-0008GY-Il for submit@debbugs.gnu.org; Mon, 28 Nov 2011 21:02:12 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,FILL_THIS_FORM, FILL_THIS_FORM_LOAN, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:45336) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVD1M-0008GU-Gf for submit@debbugs.gnu.org; Mon, 28 Nov 2011 21:02:08 -0500 Received: from eggs.gnu.org ([140.186.70.92]:40130) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVD1I-0003mL-ND for bug-gnu-emacs@gnu.org; Mon, 28 Nov 2011 21:02:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RVD1E-0008CT-Lo for bug-gnu-emacs@gnu.org; Mon, 28 Nov 2011 21:02:04 -0500 Received: from digger1.defence.gov.au ([203.5.217.4]:44666) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RVD1D-00088p-19 for bug-gnu-emacs@gnu.org; Mon, 28 Nov 2011 21:02:00 -0500 Received: from ednmsw520.dsto.defence.gov.au (ednmsw520.dsto.defence.gov.au [131.185.68.60]) by digger1.defence.gov.au (DSTO/DSTO) with ESMTP id pAT1uOvW014010 for ; Tue, 29 Nov 2011 12:26:25 +1030 (CST) Received: from ednex510.dsto.defence.gov.au (ednex510.dsto.defence.gov.au) by ednmsw520.dsto.defence.gov.au (Clearswift SMTPRS 5.4.0) with ESMTP id for ; Tue, 29 Nov 2011 12:31:51 +1030 Received: from [131.185.59.31] ([131.185.59.31]) by ednex510.dsto.defence.gov.au with Microsoft SMTPSVC(6.0.3790.4675); Tue, 29 Nov 2011 12:31:50 +1030 Message-ID: <4ED43D44.1000409@dsto.defence.gov.au> Date: Tue, 29 Nov 2011 12:32:44 +1030 From: Alex Murray User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20111031 Thunderbird/7.0.1 MIME-Version: 1.0 To: bug-gnu-emacs@gnu.org Subject: 24.0.91; Segfault with auto-complete package [SEC=UNCLASSIFIED] Content-Type: multipart/mixed; boundary="------------010102020400070509060607" X-OriginalArrivalTime: 29 Nov 2011 02:01:50.0949 (UTC) FILETIME=[DC040950:01CCAE3A] X-TM-AS-Product-Ver: SMEX-10.0.0.1412-6.800.1017-18548.003 X-TM-AS-Result: No--9.056400-0.000000-31 X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-detected-operating-system: by eggs.gnu.org: Solaris 10 (beta) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 28 Nov 2011 21:04:54 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) This is a multi-part message in MIME format. --------------010102020400070509060607 Content-Type: text/plain; charset="ISO-8859-1"; format="flowed" Content-Transfer-Encoding: 7bit Emacs 24 (from https://launchpad.net/~cassou/+archive/emacs) on Ubuntu 11.10 with auto-complete package http://cx4a.org/software/auto-complete/ installed from git https://github.com/m2ym/auto-complete Crashes seemingly randomly when displaying the auto-complete pop-up window but always at the same location - see attached gdb bt full backtrace. I am not able to reliably reproduce this (as I said above it seems random), but it seems to happen a few times every day and always when showing the pop-up window. The following is my auto-complete config ;; auto-complete mode (add-to-list 'load-path (expand-file-name "~/.emacs.d/vendor/auto-complete")) (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "~/.emacs.d/vendor/auto-complete/dict") (ac-config-default) (setq ac-auto-start 1) ; make autostart after entering a single character (setq ac-auto-show-menu (+ ac-delay 0.1)) ; show menu after 100ms ;; quick help has to be after menu so again set to 100ms more (setq ac-quick-help-delay (+ ac-auto-show-menu 0.1)) In GNU Emacs 24.0.91.1 (x86_64-pc-linux-gnu, GTK+ Version 3.2.0) of 2011-11-29 on osmium, modified by Debian (emacs-snapshot package, version 1:20111128-1~ppa1~oneiric1) Windowing system distributor `The X.Org Foundation', version 11.0.11004000 configured using `configure '--build' 'x86_64-linux-gnu' '--host' 'x86_64-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.0.91/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.0.91/site-lisp:/usr/share/emacs/site-lisp' '--without-compress-info' '--with-crt-dir=/usr/lib/x86_64-linux-gnu/' '--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS='' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_AU.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Lisp Interaction Minor modes in effect: paredit-mode: t eldoc-mode: t diff-auto-refine-mode: t nxhtml-menu-mode: t nxhtml-tag-do-also: t popcmp-group-alternatives: t popcmp-short-help-beside-alts: t mlinks-active-links: t rngalt-minimal-validation-header: t rngalt-display-validation-header: t flyspell-mode: t yas/global-mode: t yas/minor-mode: t global-auto-complete-mode: t auto-complete-mode: t ido-ubiquitous-mode: t autopair-global-mode: t global-undo-tree-mode: t undo-tree-mode: t which-function-mode: t global-semanticdb-minor-mode: t global-semantic-idle-scheduler-mode: t semantic-mode: t electric-layout-mode: t electric-indent-mode: t delete-selection-mode: t cua-mode: t global-auto-revert-mode: t display-time-mode: t show-paren-mode: t mouse-wheel-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Recent input: M-x r e p o r t Recent messages: xhtml-loader.rnc was ok (No changes need to be saved) Loading /home/apm/.emacs.d/vendor/nxhtml/nxhtml/nxhtml-autoload.el (source)... majmodpri-apply-priorities running ... (done) Loading /home/apm/.emacs.d/vendor/nxhtml/nxhtml/nxhtml-autoload.el (source)...done Nxml/Nxhtml Autostart.el loaded in 0.9 seconds Loading /home/apm/.emacs.d/vendor/nxhtml/autostart.el (source)...done Pymacs loading ropemacs...done Starting new Ispell process [british] ... For information about GNU Emacs and the GNU system, type C-c C-h C-a. Load-path shadows: IMPORTANT: This email remains the property of the Department of Defence and is subject to the jurisdiction of section 70 of the Crimes Act 1914. If you have received this email in error, you are requested to contact the sender and delete the email. --------------010102020400070509060607 Content-Type: text/plain; name="gdb.txt" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="gdb.txt" #0 0x00000000005d3479 in composition_compute_stop_pos (cmp_it=0x7fffffff6b08, charpos=60, bytepos=70, endpos=, string=45088720) at composite.c:1073 elt = ridx = start = 0 end = 6100578 c = prop = 12024322 val = #1 0x000000000042e638 in compute_stop_pos (it=0x7fffffff62a0) at xdisp.c:3273 stoppos = iv = next_iv = object = limit = position = 0 charpos = 0 bytepos = 0 #2 0x000000000043a26f in next_element_from_string (it=0x7fffffff62a0) at xdisp.c:7304 position = {charpos = 0, bytepos = 0} #3 0x000000000043d4ba in get_next_display_element (it=0x7fffffff62a0) at xdisp.c:6375 success_p = #4 0x000000000044278a in display_line (it=0x7fffffff62a0) at xdisp.c:18908 x_before = nglyphs = ascent = 0 phys_ascent = 0 n_glyphs_before = hpos_before = x = descent = 0 phys_descent = 0 row = 0x1c3a010 overlay_arrow_string = 133 wrap_it = {window = 10403, w = 0x0, f = 0x0, method = GET_FROM_BUFFER, stop_charpos = -1, prev_stop = 0, base_level_stop = 0, end_charpos = 10428, s = 0x28bc
, string_nchars = 81604378625, region_beg_charpos = 19, region_end_charpos = 10365, redisplay_end_trigger_charpos = 10365, multibyte_p = 0, header_line_p = 0, string_from_display_prop_p = 0, from_disp_prop_p = 0, ellipsis_p = 0, avoid_cursor_p = 0, dp = 0x0, dpvec = 0x0, dpend = 0x0, dpvec_char_len = -1, dpvec_face_id = -1, saved_face_id = 1, ctl_chars = {10429, 0, 0, 4294967295, 0, 1, 73014444033, 2, 12024322, 12024322, 0, 0, 0, 0, 0, 0}, start = { pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, current = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, n_overlay_strings = 0, overlay_strings_charpos = 0, overlay_strings = { 0 }, string_overlays = {0 , 4862814, 0}, string = 0, from_overlay = 10429, stack = {{ string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = { stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = -40784, charpos = 140737488314544, nchars = -38312, nbytes = 32767, from = 1, to = 0, width = 0}, face_id = 1, u = {image = {object = 4435744, slice = { x = 140737488314544, y = 140737488310048, width = 140737488310908, height = 4460308}, image_id = 0}, comp = {object = 4435744}, stretch = {object = 4435744}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 8589934595}, comp = {object = 0}, stretch = { object = 0}}, position = {charpos = 42949672960, bytepos = 1}, current = {pos = {charpos = 10428, bytepos = -1}, overlay_string_index = -2, string_pos = { charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 10, voffset = 0, space_width = 12214082, font_height = 47739542}, { string = 6064292, string_nchars = 41716, end_charpos = 12214082, stop_charpos = 12112261, prev_stop = 5389959, base_level_stop = 140737488310104, cmp_it = { stop_pos = 46164427, id = 40, ch = 10427, rule_idx = 0, lookback = 12112261, nglyphs = 0, reversed_p = 6061765, charpos = 12161746, nchars = 10428, nbytes = 0, from = 41712, to = 0, width = 12161746}, face_id = 47739542, u = {image = { object = 6064292, slice = {x = 12112261, y = 140737488310448, width = 41712, height = 0}, image_id = 12161746}, comp = {object = 6064292}, stretch = { object = 6064292}}, position = {charpos = 6083379, bytepos = 0}, current = {pos = {charpos = 10428, bytepos = 10428}, overlay_string_index = 6107707, string_pos = {charpos = 10429, bytepos = 0}, dpvec_index = 62}, from_overlay = 140737488326584, area = 12024320, method = GET_FROM_BUFFER, paragraph_embedding = 5389959, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 10, voffset = 0, space_width = 46164427, font_height = 40}, {string = 10427, string_nchars = 10428, end_charpos = 6061765, stop_charpos = 12024322, prev_stop = 4294977724, base_level_stop = 41712, cmp_it = { stop_pos = 140737488326584, id = 10428, ch = 10428, rule_idx = 0, lookback = 10429, nglyphs = 0, reversed_p = 12024322, charpos = 4611686018428436480, nchars = 6113304, nbytes = 0, from = 12255522, to = 0, width = 6083379}, face_id = 0, u = {image = {object = 10428, slice = {x = 10428, y = 46794256, width = 21154736, height = 10429}, image_id = 10365}, comp = { object = 10428}, stretch = {object = 10428}}, position = { charpos = 0, bytepos = 0}, current = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = -1, string_pos = { charpos = 12112261, bytepos = 6083651}, dpvec_index = 10428}, from_overlay = 0, area = 10429, method = GET_FROM_BUFFER, paragraph_embedding = 417, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 12112256, voffset = 0, space_width = 10428, font_height = 12024322}}, sp = -45328, selective = 40, what = 805347072, face_id = -1657034995, selective_display_ellipsis_p = 0, ctl_arrow_p = 0, face_box_p = 0, start_of_box_run_p = 0, end_of_box_run_p = 0, overlay_strings_at_end_processed_p = 0, ignore_overlay_strings_at_pos_p = 0, glyph_not_available_p = 0, starts_in_middle_of_char_p = 0, face_before_selective_p = 0, constrain_row_ascent_descent_p = 0, line_wrap = TRUNCATE, base_face_id = -30896, c = 32767, len = 18934016, cmp_it = { stop_pos = 21154736, id = 12024322, ch = -30896, rule_idx = 32767, lookback = 0, nglyphs = 0, reversed_p = 4532768, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, char_to_display = 0, glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, image_id = 0, slice = {x = 0, y = 0, width = 12112261, height = 140737488324432}, space_width = 0, voffset = 0, tab_width = 0, font_height = 0, object = 140737488324432, position = {charpos = 1, bytepos = 4445645}, truncation_pixel_width = 0, continuation_pixel_width = 0, first_visible_x = 0, last_visible_x = -45104, last_visible_y = 32767, extra_line_spacing = -30744, max_extra_line_spacing = 32767, override_ascent = 805347072, override_descent = -1657034995, override_boff = 0, glyph_row = 0x7fffffff8750, area = LEFT_MARGIN_AREA, nglyphs = 0, pixel_width = 0, ascent = 0, descent = -34336, max_ascent = 32767, max_descent = 805347072, phys_ascent = -1657034995, phys_descent = 0, max_phys_ascent = 0, max_phys_descent = -30896, current_x = 32767, continuation_lines_width = 0, eol_pos = {charpos = 0, bytepos = 0}, current_y = 417, first_vpos = 0, vpos = 131072, hpos = 1073741824, left_user_fringe_bitmap = 45637, right_user_fringe_bitmap = 67, left_user_fringe_face_id = 0, right_user_fringe_face_id = 0, bidi_p = 0, bidi_it = {bytepos = 0, charpos = 0, ch = 0, nchars = 0, ch_len = 0, type = 4294929616, type_after_w1 = 32767, orig_type = 4294932960, resolved_level = 32767, invalid_levels = -44368, invalid_rl_levels = 32767, prev_was_pdf = -41024, prev = {bytepos = -4294967296, charpos = 17179869198, type = 10429, type_after_w1 = UNKNOWN_BT, orig_type = 10428}, last_strong = {bytepos = 1, charpos = 0, type = 4294967295, type_after_w1 = STRONG_L, orig_type = 5394970}, next_for_neutral = {bytepos = 0, charpos = 0, type = NEUTRAL_B, type_after_w1 = UNKNOWN_BT, orig_type = 10429}, prev_for_neutral = {bytepos = 4294967295, charpos = 0, type = 10429, type_after_w1 = UNKNOWN_BT, orig_type = 29586192}, next_for_ws = {bytepos = 62, charpos = 4461300, type = RLE, type_after_w1 = UNKNOWN_BT, orig_type = 4294922976}, next_en_pos = -1, next_en_type = LRE, ignore_bn_limit = -4294967296, sor = 4294967295, scan_dir = 1, disp_pos = 16681472, disp_prop = -44272, stack_idx = 32767, level_stack = {{level = 10428, override = NEUTRAL_DIR}, { level = -27288, override = NEUTRAL_DIR}, {level = 2, override = 4294967295}, {level = 1527, override = 9}, { level = 46794261, override = NEUTRAL_DIR}, {level = 46794256, override = NEUTRAL_DIR}, {level = 17016128, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 10429, override = NEUTRAL_DIR}, {level = 10427, override = NEUTRAL_DIR}, {level = 10427, override = NEUTRAL_DIR}, {level = 10429, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, {level = -1, override = 4294967295}, { level = 0, override = NEUTRAL_DIR}, {level = 1, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR} , {level = 8346, override = NEUTRAL_DIR}, {level = 8346, override = NEUTRAL_DIR}, {level = -1, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, {level = -1, override = 4294967295}, {level = -1, override = NEUTRAL_DIR}, { level = 10427, override = NEUTRAL_DIR}, {level = 10427, override = NEUTRAL_DIR}, {level = -1, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, {level = -1, override = 4294967295}, {level = -1, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = 10427, override = NEUTRAL_DIR}, {level = 47333969, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}}, string = {lstring = 0, s = 0x0, schars = 0, bufpos = 0, from_disp_str = 0, unibyte = 0}, paragraph_dir = 20962307, separator_limit = 0, first_elt = 0, new_paragraph = 0, frame_window_p = 0}, paragraph_embedding = NEUTRAL_DIR} wrap_data = 0x0 may_wrap = 0 wrap_x = 0 wrap_row_used = -1 wrap_row_ascent = -1 wrap_row_height = 0 wrap_row_phys_ascent = 0 wrap_row_phys_height = 10427 wrap_row_extra_line_spacing = 0 wrap_row_min_pos = 10427 wrap_row_min_bpos = 25769803776 wrap_row_max_pos = 6 wrap_row_max_bpos = 10403 cvpos = min_pos = 10412 max_pos = 10412 min_bpos = 10412 max_bpos = 10412 #5 0x000000000044898a in try_window (window=, pos=..., flags=1) at xdisp.c:15942 w = 0x2ca0610 it = {window = 46794261, w = 0x2ca0610, f = 0x103a540, method = GET_FROM_STRING, stop_charpos = 133, prev_stop = 0, base_level_stop = 0, end_charpos = 133, s = 0x0, string_nchars = 0, region_beg_charpos = -1, region_end_charpos = -1, redisplay_end_trigger_charpos = 0, multibyte_p = 1, header_line_p = 0, string_from_display_prop_p = 0, from_disp_prop_p = 0, ellipsis_p = 0, avoid_cursor_p = 0, dp = 0x0, dpvec = 0x0, dpend = 0x0, dpvec_char_len = 0, dpvec_face_id = 0, saved_face_id = 33, ctl_chars = {0 }, start = { pos = {charpos = 10412, bytepos = 10412}, overlay_string_index = -1, string_pos = {charpos = -1, bytepos = -1}, dpvec_index = -1}, current = {pos = { charpos = 10412, bytepos = 10412}, overlay_string_index = 1, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = -1}, n_overlay_strings = 2, overlay_strings_charpos = 10412, overlay_strings = {45406561, 45088721, 0 }, string_overlays = {20330555, 47878035, 0 }, string = 45088721, from_overlay = 12024322, stack = {{ string = 12024322, string_nchars = 0, end_charpos = 10429, stop_charpos = 10413, prev_stop = 10412, base_level_stop = 10412, cmp_it = {stop_pos = 10413, id = -1, ch = -2, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 10411, bytepos = 10411}, current = {pos = { charpos = 10412, bytepos = 10412}, overlay_string_index = 0, string_pos = {charpos = -1, bytepos = -1}, dpvec_index = -1}, from_overlay = 0, area = TEXT_AREA, method = GET_FROM_BUFFER, paragraph_embedding = L2R, multibyte_p = 1, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 1, from_disp_prop_p = 0, line_wrap = WINDOW_WRAP, voffset = 0, space_width = 12024322, font_height = 12024322}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = { x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = { charpos = 0, bytepos = 0}, current = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = { charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}}, sp = 1, selective = 0, what = IT_CHARACTER, face_id = 36, selective_display_ellipsis_p = 1, ctl_arrow_p = 1, face_box_p = 0, start_of_box_run_p = 0, end_of_box_run_p = 0, overlay_strings_at_end_processed_p = 0, ignore_overlay_strings_at_pos_p = 0, glyph_not_available_p = 0, starts_in_middle_of_char_p = 0, face_before_selective_p = 0, constrain_row_ascent_descent_p = 0, line_wrap = WINDOW_WRAP, base_face_id = 0, c = 83, len = 1, cmp_it = {stop_pos = 133, id = -1, ch = -2, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, char_to_display = 32, glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, image_id = 0, slice = {x = 12024322, y = 12024322, width = 12024322, height = 12024322}, space_width = 12024322, voffset = 0, tab_width = 8, font_height = 12024322, object = 45406561, position = {charpos = 132, bytepos = 132}, truncation_pixel_width = 0, continuation_pixel_width = 0, first_visible_x = 0, last_visible_x = 1264, last_visible_y = 1528, extra_line_spacing = 0, max_extra_line_spacing = 0, override_ascent = -1, override_descent = 0, override_boff = 0, glyph_row = 0x1c3a010, area = TEXT_AREA, nglyphs = 1, pixel_width = 8, ascent = 14, descent = 4, max_ascent = 14, max_descent = 4, phys_ascent = 0, phys_descent = 0, max_phys_ascent = 11, max_phys_descent = 2, current_x = 1064, continuation_lines_width = 0, eol_pos = {charpos = 0, bytepos = 0}, current_y = 810, first_vpos = 0, vpos = 45, hpos = 133, left_user_fringe_bitmap = 0, right_user_fringe_bitmap = 0, left_user_fringe_face_id = 0, right_user_fringe_face_id = 0, bidi_p = 1, bidi_it = {bytepos = 0, charpos = 0, ch = 83, nchars = 1, ch_len = 1, type = STRONG_L, type_after_w1 = STRONG_L, orig_type = STRONG_L, resolved_level = 0, invalid_levels = 0, invalid_rl_levels = -1, prev_was_pdf = 0, prev = {bytepos = 0, charpos = 0, type = NEUTRAL_B, type_after_w1 = NEUTRAL_B, orig_type = NEUTRAL_B}, last_strong = {bytepos = 131, charpos = 131, type = UNKNOWN_BT, type_after_w1 = UNKNOWN_BT, orig_type = UNKNOWN_BT}, next_for_neutral = {bytepos = 0, charpos = -1, type = UNKNOWN_BT, type_after_w1 = UNKNOWN_BT, orig_type = UNKNOWN_BT}, prev_for_neutral = {bytepos = 0, charpos = 0, type = STRONG_L, type_after_w1 = UNKNOWN_BT, orig_type = UNKNOWN_BT}, next_for_ws = {bytepos = 133, charpos = 133, type = UNKNOWN_BT, type_after_w1 = UNKNOWN_BT, orig_type = UNKNOWN_BT}, next_en_pos = 0, next_en_type = UNKNOWN_BT, ignore_bn_limit = -1, sor = L2R, scan_dir = 1, disp_pos = 24, disp_prop = 0, stack_idx = 0, level_stack = {{level = 0, override = NEUTRAL_DIR} }, string = { lstring = 45088721, s = 0x0, schars = 24, bufpos = 10412, from_disp_str = 0, unibyte = 0}, paragraph_dir = L2R, separator_limit = -1, first_elt = 0, new_paragraph = 0, frame_window_p = 1}, paragraph_embedding = L2R} last_text_row = 0x1c39f10 f = 0x103a540 #6 0x000000000045bedb in redisplay_window (window=46794261, just_this_one_p=0) at xdisp.c:15467 d2 = 0 d4 = 0 d6 = 32767 d1 = 10376 d3 = 10376 d5 = -19392 w = 0x2ca0610 f = 0x103a540 buffer = old = 0xb8d180 lpoint = {charpos = 10377, bytepos = 10377} opoint = {charpos = 10377, bytepos = 10377} startp = {charpos = 8346, bytepos = 8346} update_mode_line = 1 tem = it = {window = 0, w = 0x0, f = 0x0, method = GET_FROM_BUFFER, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, end_charpos = 0, s = 0x0, string_nchars = 0, region_beg_charpos = 0, region_end_charpos = 0, redisplay_end_trigger_charpos = 0, multibyte_p = 0, header_line_p = 0, string_from_display_prop_p = 0, from_disp_prop_p = 0, ellipsis_p = 0, avoid_cursor_p = 0, dp = 0x0, dpvec = 0x0, dpend = 0x0, dpvec_char_len = 0, dpvec_face_id = 0, saved_face_id = 0, ctl_chars = {0 }, start = { pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, current = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, n_overlay_strings = 0, overlay_strings_charpos = 0, overlay_strings = { 0 }, string_overlays = {0 }, string = 0, from_overlay = 0, stack = {{string = 0, string_nchars = 0, end_charpos = 0, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 0, nchars = 0, nbytes = 0, from = 0, to = 0, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 0, y = 0, width = 0, height = 0}, image_id = 0}, comp = {object = 0}, stretch = {object = 0}}, position = {charpos = 0, bytepos = 0}, current = {pos = { charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}, from_overlay = 0, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 3, voffset = 2, space_width = 0, font_height = 1}, {string = 10428, string_nchars = -1, end_charpos = 4294967294, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 0, id = 0, ch = 0, rule_idx = 0, lookback = 10, nglyphs = 0, reversed_p = 0, charpos = 12024322, nchars = 12024322, nbytes = 0, from = 12024322, to = 0, width = 12024322}, face_id = 12024322, u = {image = {object = 524288, slice = { x = 12024322, y = 12112261, width = 10427, height = 10427}, image_id = 0}, comp = {object = 524288}, stretch = {object = 524288}}, position = { charpos = 6562710029552, bytepos = 0}, current = {pos = { charpos = 4294967295, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 1, bytepos = 60129542144}, dpvec_index = 4}, from_overlay = 60129542144, area = 4, method = 14, paragraph_embedding = 4, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = 0}, {string = 1098, string_nchars = 61, end_charpos = 0, stop_charpos = 1048576, prev_stop = 10428, base_level_stop = 10428, cmp_it = {stop_pos = 10, id = 1, ch = 1, rule_idx = 0, lookback = 6, nglyphs = 6, reversed_p = 6, charpos = -4294967296, nchars = 0, nbytes = 0, from = 10427, to = 0, width = 10427}, face_id = 0, u = { image = {object = 6, slice = {x = 10403, y = 10403, width = 0, height = 0}, image_id = 0}, comp = {object = 6}, stretch = {object = 6}}, position = {charpos = -1, bytepos = 0}, current = {pos = {charpos = 0, bytepos = 10428}, overlay_string_index = 10428, string_pos = { charpos = 81604378625, bytepos = 19}, dpvec_index = 10365}, from_overlay = 10365, area = LEFT_MARGIN_AREA, method = GET_FROM_BUFFER, paragraph_embedding = NEUTRAL_DIR, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = TRUNCATE, voffset = 0, space_width = 0, font_height = -1}, {string = 12214082, string_nchars = 2, end_charpos = 6070914, stop_charpos = 0, prev_stop = 0, base_level_stop = 0, cmp_it = {stop_pos = 2, id = 1, ch = -1, rule_idx = -1, lookback = 8666561, nglyphs = 0, reversed_p = -34800, charpos = 140737488320520, nchars = 6100578, nbytes = 0, from = 0, to = 0, width = -34816}, face_id = 0, u = {image = {object = 2, slice = {x = 2, y = 2, width = -1, height = 0}, image_id = 105}, comp = {object = 2}, stretch = { object = 2}}, position = {charpos = 4821855, bytepos = 0}, current = {pos = {charpos = 0, bytepos = 3}, overlay_string_index = 45084816, string_pos = {charpos = 16, bytepos = 16}, dpvec_index = 16}, from_overlay = 0, area = 24381654, method = GET_FROM_BUFFER, paragraph_embedding = 5627205, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 4294932960, voffset = 32767, space_width = 140737488326416, font_height = 16}, { string = 5627695, string_nchars = -34336, end_charpos = 140737488326416, stop_charpos = 24381655, prev_stop = 16, base_level_stop = 24381655, cmp_it = { stop_pos = 5697260, id = -1, ch = 0, rule_idx = 0, lookback = 0, nglyphs = 0, reversed_p = 11, charpos = 14, nchars = 0, nbytes = 0, from = -1, to = -1, width = 0}, face_id = 0, u = {image = {object = 0, slice = {x = 4311744512, y = 0, width = 0, height = 0}, image_id = 1}, comp = { object = 0}, stretch = {object = 0}}, position = { charpos = 140737488326624, bytepos = 0}, current = {pos = { charpos = 3, bytepos = 1}, overlay_string_index = 25333728, string_pos = {charpos = 25336576, bytepos = 0}, dpvec_index = -28991}, from_overlay = 140737488320608, area = 24381653, method = GET_FROM_BUFFER, paragraph_embedding = L2R, multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0, avoid_cursor_p = 0, bidi_p = 0, from_disp_prop_p = 0, line_wrap = 4294938584, voffset = 32767, space_width = 2, font_height = 0}}, sp = 65537, selective = 0, what = IT_TRUNCATION, face_id = 0, selective_display_ellipsis_p = 0, ctl_arrow_p = 0, face_box_p = 0, start_of_box_run_p = 0, end_of_box_run_p = 0, overlay_strings_at_end_processed_p = 0, ignore_overlay_strings_at_pos_p = 0, glyph_not_available_p = 0, starts_in_middle_of_char_p = 0, face_before_selective_p = 0, constrain_row_ascent_descent_p = 0, line_wrap = TRUNCATE, base_face_id = 10428, c = 0, len = -34648, cmp_it = {stop_pos = 16, id = 24381640, ch = -1, rule_idx = -1, lookback = 0, nglyphs = 0, reversed_p = 0, charpos = 24381655, nchars = 0, nbytes = 0, from = 4000, to = 0, width = -34336}, char_to_display = -1, glyphless_method = 4294967295, image_id = 24381652, slice = {x = 2, y = 4294968394, width = 8028900182926241069, height = 3255377305734572899}, space_width = 17016128, voffset = 0, tab_width = 0, font_height = 10429, object = 10427, position = {charpos = 10427, bytepos = 10429}, truncation_pixel_width = 0, continuation_pixel_width = 0, first_visible_x = 0, last_visible_x = 0, last_visible_y = 0, extra_line_spacing = -1, max_extra_line_spacing = -1, override_ascent = -1, override_descent = -1, override_boff = 0, glyph_row = 0x1, area = LEFT_MARGIN_AREA, nglyphs = 0, pixel_width = 0, ascent = 0, descent = 0, max_ascent = 0, max_descent = 0, phys_ascent = 0, phys_descent = 0, max_phys_ascent = 0, max_phys_descent = 0, current_x = 0, continuation_lines_width = 0, eol_pos = {charpos = 0, bytepos = 0}, current_y = 0, first_vpos = 0, vpos = 0, hpos = 0, left_user_fringe_bitmap = 0, right_user_fringe_bitmap = 0, left_user_fringe_face_id = 0, right_user_fringe_face_id = 0, bidi_p = 0, bidi_it = {bytepos = 0, charpos = 0, ch = 0, nchars = 0, ch_len = 0, type = UNKNOWN_BT, type_after_w1 = UNKNOWN_BT, orig_type = UNKNOWN_BT, resolved_level = 0, invalid_levels = 0, invalid_rl_levels = 0, prev_was_pdf = 12214082, prev = { bytepos = 4, charpos = 6070914, type = 4294967295, type_after_w1 = 4294967295, orig_type = 4294967295}, last_strong = {bytepos = 4294967295, charpos = 4, type = STRONG_L, type_after_w1 = UNKNOWN_BT, orig_type = 4294967295}, next_for_neutral = {bytepos = 22509377, charpos = 140737488321536, type = 4294933496, type_after_w1 = 32767, orig_type = 6100578}, prev_for_neutral = {bytepos = 10427, charpos = 140737488321520, type = UNKNOWN_BT, type_after_w1 = UNKNOWN_BT, orig_type = WEAK_AN}, next_for_ws = {bytepos = 4, charpos = 4, type = 4294967295, type_after_w1 = 4294967295, orig_type = UNKNOWN_BT}, next_en_pos = 117, next_en_type = 4821855, ignore_bn_limit = 0, sor = NEUTRAL_DIR, scan_dir = 0, disp_pos = 5, disp_prop = 45087200, stack_idx = 0, level_stack = {{level = 40, override = NEUTRAL_DIR}, {level = 40, override = NEUTRAL_DIR}, {level = 40, override = NEUTRAL_DIR}, {level = 1, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 5627205, override = NEUTRAL_DIR}, {level = -33296, override = 32767}, { level = -27872, override = 32767}, {level = 40, override = NEUTRAL_DIR}, {level = 5627695, override = NEUTRAL_DIR}, {level = -33296, override = 32767}, { level = -27872, override = 32767}, {level = 26381555, override = NEUTRAL_DIR}, {level = 40, override = NEUTRAL_DIR}, {level = -33664, override = 32767}, {level = 5697260, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, { level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 20, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 35, override = NEUTRAL_DIR}, {level = 40, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, { level = 10418, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 257, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 65792, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 0, override = NEUTRAL_DIR}, {level = 2, override = NEUTRAL_DIR}, {level = -27624, override = 32767}, { level = 1, override = NEUTRAL_DIR}, {level = 5, override = NEUTRAL_DIR}, {level = 1, override = NEUTRAL_DIR}, { level = 25333728, override = NEUTRAL_DIR}, {level = 25336384, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = -27951, override = 32767}, {level = -33712, override = 32767}, {level = 26381555, override = NEUTRAL_DIR}, {level = 2, override = NEUTRAL_DIR}, {level = -27640, override = 32767}, {level = 3, override = NEUTRAL_DIR}, { level = 0, override = L2R}, {level = 131071, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 12214082, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 6070914, override = NEUTRAL_DIR}, {level = -33616, override = 32767}, { level = 40, override = NEUTRAL_DIR}, {level = 26381536, override = NEUTRAL_DIR}, {level = -1, override = 4294967295}, { level = 0, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, {level = 26381555, override = NEUTRAL_DIR}, {level = 0, override = NEUTRAL_DIR}, { level = 4000, override = NEUTRAL_DIR}, {level = -33296, override = 32767}}, string = {lstring = 0, s = 0x1928cf2 "s", schars = 0, bufpos = 2, from_disp_str = 0, unibyte = 0}, paragraph_dir = 1852142194, separator_limit = 8031170618737583977, first_elt = 0, new_paragraph = 1, frame_window_p = 0}, paragraph_embedding = 1882025583} used_current_matrix_p = 0 buffer_unchanged_p = 0 temp_scroll_step = 0 rc = 133 centering_position = -1 last_line_misfit = 0 beg_unchanged = 10408 end_unchanged = 0 #7 0x000000000045e1b4 in redisplay_window_0 (window=) at xdisp.c:13591 No locals. #8 0x000000000057696e in internal_condition_case_1 ( bfun=0x45e190 , arg=46794261, handlers=11994726, hfun=0x42ab20 ) at eval.c:1537 val = c = {tag = 12024322, val = 12024322, next = 0x7fffffffdb70, gcpro = 0x0, jmp = {{__jmpbuf = {46794256, 4139248197455864409, 46794256, 17016133, 17016128, 12783664, -4139250378484456871, 4139251055881249369}, __mask_was_saved = 0, __saved_mask = { __val = {0, 0, 12024322, 10377, 12024322, 12024322, 12024322, 12024322, 5536098, 0, 2305843009213693951, 17016128, 0, 12112256, 12024322, 160}}}}, backlist = 0x0, handlerlist = 0x7fffffffdc80, lisp_eval_depth = 0, pdlcount = 5, poll_suppress_count = 1, interrupt_input_blocked = 0, byte_stack = 0x0} h = {handler = 11994726, var = 12024322, chosen_clause = 59, tag = 0x7fffffffb320, next = 0x7fffffffdc80} #9 0x000000000042ee6e in redisplay_windows (window=) at xdisp.c:13571 w = 0x2ca0610 #10 0x000000000042ee93 in redisplay_windows (window=) at xdisp.c:13565 w = 0x1615c00 #11 0x0000000000449869 in redisplay_internal () at xdisp.c:13148 f = 0x103a540 tail = frame = w = 0x2ca0610 sw = 0x2ca0610 fr = pending = must_finish = 0 tlbufpos = {charpos = , bytepos = 10318} tlendpos = number_of_visible_frames = count = 3 count1 = sf = 0x103a540 polling_stopped_here = 0 old_frame = 17016133 consider_all_windows_p = #12 0x000000000044a425 in redisplay_preserve_echo_area ( from_where=) at xdisp.c:13403 No locals. #13 0x000000000050b570 in detect_input_pending_run_timers (do_display=1) at keyboard.c:10474 old_timers_run = 932 #14 0x00000000005b7810 in wait_reading_process_output (time_limit=30, microsecs=0, read_kbd=, do_display=1, wait_for_cell=12024322, wait_proc=, just_wait_proc=0) at process.c:4732 old_timers_run = 932 old_buffer = 0xb8d180 old_window = 46794261 leave = 0 timeout_reduced_for_timers = channel = nfds = Available = {fds_bits = {2066560, 0 }} Writeok = {fds_bits = {0 }} check_write = check_delay = no_avail = xerrno = 11 proc = timeout = {tv_sec = 0, tv_usec = 0} end_time = {tv_sec = 1322531085, tv_usec = 878966} wait_channel = -1 got_some_input = 1 #15 0x0000000000421194 in sit_for (timeout=120, reading=1, do_display=1) at dispnew.c:6063 sec = usec = #16 0x000000000050d825 in read_char (commandflag=1, nmaps=15, maps=0x7fffffffd7b0, prev_event=12024322, used_mouse_menu=0x7fffffffd9a0, end_time=0x0) at keyboard.c:2687 tem0 = delay_level = 4 buffer_size = c = 12024322 local_getcjmp = {{__jmpbuf = {12024322, 4139251331196805721, 0, 1, 0, 0, -4139250375235968423, 4139251060892787289}, __mask_was_saved = 0, __saved_mask = {__val = {12024322, 140737488345120, 0, 140737488344624, 14307493698574246489, 18950576, 3, 4611686018428436480, 140737488344608, 14307493698637161049, 4139251049583108697, 0, 6064154, 140737488344608, 140737488344576, 0}}}} save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, __saved_mask = {__val = { 0 }}}} key_already_recorded = 0 tem = save = previous_echo_area_message = 12024322 also_record = 12024322 reread = 0 polling_stopped_here = 0 orig_kboard = 0xfb92a0 #17 0x000000000050e5a7 in read_key_sequence (keybuf=0x7fffffffda00, prompt=12024322, dont_downcase_last=0, can_return_switch_frame=1, fix_current_buffer=1, bufsize=30) at keyboard.c:9290 interrupted_kboard = 0xfb92a0 interrupted_frame = 0x103a540 key = used_mouse_menu = 0 echo_local_start = 0 last_real_key_start = 0 keys_local_start = 0 local_first_binding = 0 from_string = 12024322 count = 2 t = 0 echo_start = 0 keys_start = 0 nmaps = nmaps_allocated = 15 defs = 0x7fffffffd720 submaps = 0x7fffffffd7b0 orig_local_map = 47311638 orig_keymap = 49558246 localized_local_map = 0 first_binding = 0 first_unbound = 31 mock_input = 0 fkey = {parent = 15309174, map = 15309174, start = 0, end = 0} keytran = {parent = 12003750, map = 12003750, start = 0, end = 0} indec = {parent = 15309190, map = 15309190, start = 0, end = 0} shift_translated = 0 delayed_switch_frame = 12024322 original_uppercase = 12024322 original_uppercase_position = -1 dummyflag = 0 starting_buffer = 0xb8d180 fake_prefixed_keys = 12024322 #18 0x0000000000510285 in command_loop_1 () at keyboard.c:1447 cmd = keybuf = {320, 392, 49586320, 12024322, 12198642, 6, 140737488345776, 5861526, 4285818220, 140737488347728, 140737488345776, 5861326, 0, 8723185, 140737353973760, -7116911111047176448, 140737254389760, 49586294, 12024322, 12024322, 4294967295, 140737488347728, 140737488345824, 5262817, 13339872, 49586294, 12024322, 5263174, 12024320, 5662114} i = prev_modiff = 3602 prev_buffer = 0xb8d180 #19 0x0000000000576806 in internal_condition_case ( bfun=0x5100b0 , handlers=12076514, hfun=0x504e30 ) at eval.c:1499 val = c = {tag = 12024322, val = 12024322, next = 0x7fffffffdce0, gcpro = 0x0, jmp = {{__jmpbuf = {13339872, 4139252115799827033, 12024322, 140737488347448, 4294967295, 140737488347728, -4139250374984310183, 4139251055701418585}, __mask_was_saved = 0, __saved_mask = {__val = {0, 4294967295, 0, 0, 13339872, 8627720, 0, 4294967295, 140737488347728, 0, 140737351950260, 1, 0, 0, 140737254360720, 0}}}}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0, pdlcount = 2, poll_suppress_count = 1, interrupt_input_blocked = 0, byte_stack = 0x0} h = {handler = 12076514, var = 12024322, chosen_clause = 12024370, tag = 0x7fffffffdb70, next = 0x0} #20 0x000000000050327e in command_loop_2 (ignore=) at keyboard.c:1158 val = 6 #21 0x00000000005766e8 in internal_catch (tag= Cannot access memory at address 0xffffffffffffffe0 ) at eval.c:1256 c = {tag = 12072306, val = 12024322, next = 0x0, gcpro = 0x0, jmp = {{ __jmpbuf = {13339872, 4139252115799827033, 12024322, 140737488347448, 4294967295, 140737488347728, -4139250374799760807, 4139251055671534169}, __mask_was_saved = 0, __saved_mask = {__val = {0, 0, 0, 0, 0, 0, 6026425, 15286872, 140737488346648, 0, 140737488346640, 6313955, 12024322, 12250274, 5742566, 14}}}}, backlist = 0x0, handlerlist = 0x0, lisp_eval_depth = 0, pdlcount = 2, poll_suppress_count = 1, interrupt_input_blocked = 0, byte_stack = 0x0} #22 0x0000000000504907 in command_loop () at keyboard.c:1137 No locals. #23 recursive_edit_1 () at keyboard.c:757 val = 12024322 #24 0x0000000000504c3c in Frecursive_edit () at keyboard.c:821 buffer = 12024322 #25 0x000000000041601d in main (argc=1, argv=) at emacs.c:1707 dummy = 140737267532707 stack_bottom_variable = 0 '\000' do_initial_setlocale = skip_args = 0 rlim = {rlim_cur = 8720000, rlim_max = 18446744073709551615} no_loadup = 0 junk = 0x0 dname_arg = 0x0 ch_to_dir = 0x7ffff20dec48 "2'" --------------010102020400070509060607-- ------------=_1323547142-21510-3-- From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin Resent-From: Glenn Morris Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Dec 2011 20:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 10263@debbugs.gnu.org Cc: eliz@gnu.org Received: via spool by 10263-submit@debbugs.gnu.org id=B10263.132355047126386 (code B ref 10263); Sat, 10 Dec 2011 20:55:01 +0000 Received: (at 10263) by debbugs.gnu.org; 10 Dec 2011 20:54:31 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZTwE-0006rV-Hn for submit@debbugs.gnu.org; Sat, 10 Dec 2011 15:54:31 -0500 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZTwC-0006rN-2m for 10263@debbugs.gnu.org; Sat, 10 Dec 2011 15:54:29 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1RZTvA-0003wE-KW; Sat, 10 Dec 2011 15:53:24 -0500 From: Glenn Morris References: <831uscmc8b.fsf@gnu.org> X-Spook: doctrine Syria PGP spies credit card bank SWAT AVN X-Ran: r*qb,8)\gvoAbng4 (Eli Zaretskii's message of "Sat, 10 Dec 2011 21:57:08 +0200") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -6.4 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.4 (------) Eli Zaretskii wrote: > Fixed in revision 106658 on the trunk. Sorry; I saw auto-complete mentioned and assumed this was a dupe of http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10159 But it probably was not? If so, I will unmerge and reopen 10159. From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 10 Dec 2011 21:09:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Glenn Morris Cc: 10263@debbugs.gnu.org Reply-To: Eli Zaretskii Received: via spool by 10263-submit@debbugs.gnu.org id=B10263.132355132027613 (code B ref 10263); Sat, 10 Dec 2011 21:09:02 +0000 Received: (at 10263) by debbugs.gnu.org; 10 Dec 2011 21:08:40 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZU9v-0007BJ-DP for submit@debbugs.gnu.org; Sat, 10 Dec 2011 16:08:39 -0500 Received: from mtaout22.012.net.il ([80.179.55.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZU9s-0007BA-8t for 10263@debbugs.gnu.org; Sat, 10 Dec 2011 16:08:37 -0500 Received: from conversion-daemon.a-mtaout22.012.net.il by a-mtaout22.012.net.il (HyperSendmail v2007.08) id <0LW000M00AM8Q800@a-mtaout22.012.net.il> for 10263@debbugs.gnu.org; Sat, 10 Dec 2011 23:07:31 +0200 (IST) Received: from HOME-C4E4A596F7 ([77.124.199.182]) by a-mtaout22.012.net.il (HyperSendmail v2007.08) with ESMTPA id <0LW000FTAAOIJHI3@a-mtaout22.012.net.il>; Sat, 10 Dec 2011 23:07:31 +0200 (IST) Date: Sat, 10 Dec 2011 23:07:32 +0200 From: Eli Zaretskii In-reply-to: X-012-Sender: halo1@inter.net.il Message-id: <83zkf0kuej.fsf@gnu.org> References: <831uscmc8b.fsf@gnu.org> X-Spam-Score: -2.1 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > From: Glenn Morris > Cc: eliz@gnu.org > Date: Sat, 10 Dec 2011 15:53:24 -0500 > > Eli Zaretskii wrote: > > > Fixed in revision 106658 on the trunk. > > Sorry; I saw auto-complete mentioned and assumed this was a dupe of > http://debbugs.gnu.org/cgi/bugreport.cgi?bug=10159 It could be. But then it could be not: the crash in 10159 is in a different place and is not reproducible. We can only deduce it's a duplicate if the OP will report that it no longer crashes for them. > If so, I will unmerge and reopen 10159. Please do. From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 10 16:13:57 2011 Received: (at control) by debbugs.gnu.org; 10 Dec 2011 21:13:58 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZUF3-0007Ii-KG for submit@debbugs.gnu.org; Sat, 10 Dec 2011 16:13:57 -0500 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZUF2-0007Ib-26 for control@debbugs.gnu.org; Sat, 10 Dec 2011 16:13:56 -0500 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1RZUE1-00058M-92 for control@debbugs.gnu.org; Sat, 10 Dec 2011 16:12:53 -0500 Date: Sat, 10 Dec 2011 16:12:53 -0500 Message-Id: Subject: control message for bug 10159 To: X-Mailer: mail (GNU Mailutils 2.1) From: Glenn Morris X-Spam-Score: -6.4 (------) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.4 (------) unmerge 10159 reopen 10159 From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin In-Reply-To: Resent-From: Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 11 Dec 2011 09:07:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 10263@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.13235943833170 (code B ref -1); Sun, 11 Dec 2011 09:07:01 +0000 Received: (at submit) by debbugs.gnu.org; 11 Dec 2011 09:06:23 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZfMU-0000p5-R0 for submit@debbugs.gnu.org; Sun, 11 Dec 2011 04:06:23 -0500 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZfMS-0000ov-6S for submit@debbugs.gnu.org; Sun, 11 Dec 2011 04:06:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZfLN-0004D5-NG for submit@debbugs.gnu.org; Sun, 11 Dec 2011 04:05:14 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-5.7 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_MED,RP_MATCHES_RCVD autolearn=unavailable version=3.3.2 Received: from lists.gnu.org ([140.186.70.17]:40111) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZfLN-0004D0-Lt for submit@debbugs.gnu.org; Sun, 11 Dec 2011 04:05:13 -0500 Received: from eggs.gnu.org ([140.186.70.92]:35131) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZfLM-0007OY-0s for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2011 04:05:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RZfLK-0004Cd-OG for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2011 04:05:11 -0500 Received: from lo.gmane.org ([80.91.229.12]:59310) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RZfLK-0004CU-Hr for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2011 04:05:10 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1RZfLI-0000AH-K5 for bug-gnu-emacs@gnu.org; Sun, 11 Dec 2011 10:05:08 +0100 Received: from 221x115x36x228.ap221.ftth.ucom.ne.jp ([221.115.36.228]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 11 Dec 2011 10:05:08 +0100 Received: from yagnesh by 221x115x36x228.ap221.ftth.ucom.ne.jp with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 11 Dec 2011 10:05:08 +0100 X-Injected-Via-Gmane: http://gmane.org/ From: Date: Sun, 11 Dec 2011 18:01:38 +0900 Lines: 16 Message-ID: <87iplniirx.fsf@live.com> References: <831uscmc8b.fsf@gnu.org> <83zkf0kuej.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: 221x115x36x228.ap221.ftth.ucom.ne.jp User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (gnu/linux) Cancel-Lock: sha1:2EHGlieXjGjjfCOtqAaTdLJPKBc= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.1 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.3 (-----) Eli Zaretskii writes: > > It could be. But then it could be not: the crash in 10159 is in a > different place and is not reproducible. We can only deduce it's a > duplicate if the OP will report that it no longer crashes for them. > @Eli I am the reporter of this bug. if you are referring me as OP here, I already sent an email confirming that this bug is fixed. But some how that mail didn't show up in the list. Thanks -- YYR From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin Resent-From: Eli Zaretskii Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 11 Dec 2011 10:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Cc: 10263@debbugs.gnu.org, Alex Murray Reply-To: Eli Zaretskii Received: via spool by 10263-submit@debbugs.gnu.org id=B10263.132359955314665 (code B ref 10263); Sun, 11 Dec 2011 10:33:02 +0000 Received: (at 10263) by debbugs.gnu.org; 11 Dec 2011 10:32:33 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZghs-0003oU-T2 for submit@debbugs.gnu.org; Sun, 11 Dec 2011 05:32:33 -0500 Received: from fencepost.gnu.org ([140.186.70.10]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZghr-0003oL-2r for 10263@debbugs.gnu.org; Sun, 11 Dec 2011 05:32:31 -0500 Received: from eliz by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1RZggm-0000Uq-RQ; Sun, 11 Dec 2011 05:31:24 -0500 Date: Sun, 11 Dec 2011 05:31:24 -0500 Message-Id: From: Eli Zaretskii In-reply-to: <87iplniirx.fsf@live.com> (yagnesh@live.com) References: <831uscmc8b.fsf@gnu.org> <83zkf0kuej.fsf@gnu.org> <87iplniirx.fsf@live.com> X-Spam-Score: -6.6 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) > From: > Date: Sun, 11 Dec 2011 18:01:38 +0900 > > Eli Zaretskii writes: > > > > > It could be. But then it could be not: the crash in 10159 is in a > > different place and is not reproducible. We can only deduce it's a > > duplicate if the OP will report that it no longer crashes for them. > > > > @Eli > I am the reporter of this bug. if you are referring me as OP here, > I already sent an email confirming that this bug is fixed. But some how > that mail didn't show up in the list. Your mail did show up, but I was not talking about this bug (#10263), I was talking about bug #10159, which AFAIK was filed by someone else. Glenn was wondering whether 10159 was the same bug, and is therefore also fixed. We'd need confirmation from Alex Murray about that. From unknown Sat Aug 16 12:46:04 2025 X-Loop: help-debbugs@gnu.org Subject: bug#10263: 24.0.92; emacs crash with auto-complete plugin [SEC=UNCLASSIFIED] Resent-From: Alex Murray Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 11 Dec 2011 22:56:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 10263 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 10263@debbugs.gnu.org, yagnesh@live.com, 10159@debbugs.gnu.org Received: via spool by 10263-submit@debbugs.gnu.org id=B10263.132364411125329 (code B ref 10263); Sun, 11 Dec 2011 22:56:02 +0000 Received: (at 10263) by debbugs.gnu.org; 11 Dec 2011 22:55:11 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZsIX-0006aS-Pq for submit@debbugs.gnu.org; Sun, 11 Dec 2011 17:55:11 -0500 Received: from digger1.defence.gov.au ([203.5.217.4]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZsIT-0006aE-Ce; Sun, 11 Dec 2011 17:55:08 -0500 Received: from ednmsw520.dsto.defence.gov.au (ednmsw520.dsto.defence.gov.au [131.185.68.60]) by digger1.defence.gov.au (DSTO/DSTO) with ESMTP id pBBMmDb6014589; Mon, 12 Dec 2011 09:18:14 +1030 (CST) Received: from ednex510.dsto.defence.gov.au (ednex510.dsto.defence.gov.au) by ednmsw520.dsto.defence.gov.au (Clearswift SMTPRS 5.4.0) with ESMTP id ; Mon, 12 Dec 2011 09:23:53 +1030 Received: from [131.185.59.31] ([131.185.59.31]) by ednex510.dsto.defence.gov.au with Microsoft SMTPSVC(6.0.3790.4675); Mon, 12 Dec 2011 09:23:52 +1030 Message-ID: <4EE534CA.10907@dsto.defence.gov.au> Date: Mon, 12 Dec 2011 09:25:06 +1030 From: Alex Murray User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 References: <831uscmc8b.fsf@gnu.org> <83zkf0kuej.fsf@gnu.org> <87iplniirx.fsf@live.com> In-Reply-To: Content-Type: text/plain; charset="UTF-8"; format="flowed" Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 11 Dec 2011 22:53:52.0981 (UTC) FILETIME=[C1317050:01CCB857] X-TM-AS-Product-Ver: SMEX-10.0.0.1412-6.800.1017-18576.002 X-TM-AS-Result: No--9.399700-0.000000-31 X-TM-AS-User-Approved-Sender: Yes X-TM-AS-User-Blocked-Sender: No X-Spam-Score: -6.6 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) Sadly I have been unable to reproduce this bug [#10159] since recompiling Emacs with no optimisations - however, I will certainly try to keep reproducing it - I am not so sure the fix in revision 106658 will fix this bug [#10159] since the crash is not at the same location, but I will also try and see if I can reproduce the crash with the latest trunk too. On Sun 11 Dec 2011 21:01:24 CST, Eli Zaretskii wrote: > >> >> From: >> Date: Sun, 11 Dec 2011 18:01:38 +0900 >> >> Eli Zaretskii writes: >> >>> >>> >>> It could be. But then it could be not: the crash in 10159 is in a >>> different place and is not reproducible. We can only deduce it's a >>> duplicate if the OP will report that it no longer crashes for them. >>> >> >> >> @Eli >> I am the reporter of this bug. if you are referring me as OP here, >> I already sent an email confirming that this bug is fixed. But some how >> that mail didn't show up in the list. > > > Your mail did show up, but I was not talking about this bug (#10263), > I was talking about bug #10159, which AFAIK was filed by someone > else. Glenn was wondering whether 10159 was the same bug, and is > therefore also fixed. We'd need confirmation from Alex Murray about > that. IMPORTANT: This email remains the property of the Department of Defence and is subject to the jurisdiction of section 70 of the Crimes Act 1914. If you have received this email in error, you are requested to contact the sender and delete the email.