From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#4026: `characterp' undocumented optional arg 'ignore' Date: Wed, 05 Aug 2009 15:49:37 +0200 Message-ID: <4A798DF1.50402@gmx.at> References: <4A786578.7080503@gmx.at> <4A78706C.1060601@gmx.at> Reply-To: martin rudalics , 4026@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090705060708070109070606" X-Trace: ger.gmane.org 1249483703 18772 80.91.229.12 (5 Aug 2009 14:48:23 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 5 Aug 2009 14:48:23 +0000 (UTC) Cc: 4026@emacsbugs.donarmstrong.com To: MON KEY Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Aug 05 16:48:16 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MYhlu-00019O-8S for geb-bug-gnu-emacs@m.gmane.org; Wed, 05 Aug 2009 16:48:01 +0200 Original-Received: from localhost ([127.0.0.1]:49829 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MYhlt-00047g-H6 for geb-bug-gnu-emacs@m.gmane.org; Wed, 05 Aug 2009 10:47:17 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MYhlb-0003xw-RS for bug-gnu-emacs@gnu.org; Wed, 05 Aug 2009 10:46:59 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MYhlX-0003wq-CD for bug-gnu-emacs@gnu.org; Wed, 05 Aug 2009 10:46:59 -0400 Original-Received: from [199.232.76.173] (port=57561 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MYhlX-0003wn-7d for bug-gnu-emacs@gnu.org; Wed, 05 Aug 2009 10:46:55 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:39519) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MYhlU-0005lR-Va for bug-gnu-emacs@gnu.org; Wed, 05 Aug 2009 10:46:55 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with ESMTP id n75Ekl3i018346; Wed, 5 Aug 2009 07:46:48 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.14.3/8.14.3/Submit) id n75EZ5F9017357; Wed, 5 Aug 2009 07:35:05 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: martin rudalics Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Wed, 05 Aug 2009 14:35:05 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: followup 4026 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by 4026-submit@emacsbugs.donarmstrong.com id=B4026.124948264717269 (code B ref 4026); Wed, 05 Aug 2009 14:35:05 +0000 Original-Received: (at 4026) by emacsbugs.donarmstrong.com; 5 Aug 2009 14:30:47 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by rzlab.ucr.edu (8.14.3/8.14.3/Debian-5) with SMTP id n75EUdtF017254 for <4026@emacsbugs.donarmstrong.com>; Wed, 5 Aug 2009 07:30:41 -0700 Original-Received: (qmail invoked by alias); 05 Aug 2009 14:30:30 -0000 Original-Received: from 62-47-55-223.adsl.highway.telekom.at (EHLO [62.47.55.223]) [62.47.55.223] by mail.gmx.net (mp003) with SMTP; 05 Aug 2009 16:30:30 +0200 X-Authenticated: #14592706 X-Provags-ID: V01U2FsdGVkX1+wtk4ZnbGwlnBHWNXnouXrAIrsfJAz5U6GcD9tOU 2Sr2kkix66Pbs1 User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) In-Reply-To: X-Y-GMX-Trusted: 0 X-FuHaFi: 0.74 X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) Resent-Date: Wed, 05 Aug 2009 10:46:59 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:29902 Archived-At: This is a multi-part message in MIME format. --------------090705060708070109070606 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > Sorry in advance for being so dense, but what/where specifically is this code? It's code on my machine; see the attached copy. Your entry point is `elinfo-check-directory'. If you set `elinfo-log-warnings' to a non-nil value, you should be also able to see some 600 "bugs" where the argument names differ in code and manual. So I hope to convince you that fixing all these is hardly fesible ;-) martin --------------090705060708070109070606 Content-Type: application/emacs-lisp; name="elinfo.el" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="elinfo.el" Ozs7IGVsaW5mby5lbCAtLS0gRWxpc3AgSW5mbyBhbmQgVGV4aW5mbyBzdXBwb3J0IHJvdXRp bmVzCgo7OyBDb3B5cmlnaHQgKEMpIDIwMDkgTWFydGluIFJ1ZGFsaWNzCgo7OyBUaW1lLXN0 YW1wOiAiMjAwOS0wOC0wNSAxMToyNTozOSBtYXJ0aW4iCjs7IEF1dGhvcjogTWFydGluIFJ1 ZGFsaWNzIDxydWRhbGljc0BnbXguYXQ+Cgo7OyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgoKOzsgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Cjs7IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBUaGlzIGZpbGUgcHJv dmlkZXMgZnVuY3Rpb25zIGZvciBjaGVja2luZyB0aGUgdmFsaWRpdHkgb2YgRW1hY3MnIElu Zm8KOzsgZmlsZXMsIG5hdmlnYXRpbmcgYmV0d2VlbiBFbWFjcycgSW5mbyBmaWxlcyBhbmQg Y29ycmVzcG9uZGluZyBUZXhpbmZvCjs7IGJ1ZmZlcnMsIGFuZCBmb3IgY3JlYXRpbmcgVGV4 aW5mbyBlbnRyaWVzIGZyb20gZG9jdW1lbnRhdGlvbiBzdHJpbmdzLgoKKHJlcXVpcmUgJ2lu Zm8pCihyZXF1aXJlICd0ZXhpbmZvKQoKKGRlZmdyb3VwIGVsaW5mbyBuaWwKICAiRWxpbmZv LiIKICA6dmVyc2lvbiAiMjMuMiIKICA6Z3JvdXAgJ2xpc3ApCgo7OyBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo7OyAJCQkJCQkJCQkJCjs7OwkJCSAgVXRpbGl0eSBGdW5jdGlvbnMJCQkJ CQo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAJCQkJCQkJCQkJCgo7OyBNb3ZlIHRv IGFuZCByZXR1cm4gc3RhcnQgb2YgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgY2hhciBhZnRlciBg cG9pbnQnLgooZGVmdW4gZWxpbmZvLS1tb3ZlLXRvLW5leHQgKCkKICAoZm9yd2FyZC1jb21t ZW50IChidWZmZXItc2l6ZSkpCiAgKHBvaW50KSkKCjs7IE1vdmUgdG8gZW5kIG9mIGFuZCBy ZXR1cm4gbmV4dCBuYW1lLgooZGVmdW4gZWxpbmZvLS1nZXQtbmV4dCAoKQogIChsZXQgKChm cm9tIChlbGluZm8tLW1vdmUtdG8tbmV4dCkpKQogICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi XiBcdFxuIikKICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgZnJvbSAocG9p bnQpKSkpCgo7OyBMaWtlIGBlbGluZm8tLWdldC1uZXh0JyBidXQgZG9uJ3QgbGVhdmUgY3Vy cmVudCBsaW5lLgooZGVmdW4gZWxpbmZvLS1nZXQtbmV4dC1hcmcgKCkKICAoc2F2ZS1yZXN0 cmljdGlvbgogICAgKG5hcnJvdy10by1yZWdpb24gKHBvaW50KSAobGluZS1lbmQtcG9zaXRp b24pKQogICAgKGVsaW5mby0tZ2V0LW5leHQpKSkKCjs7IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCjs7IAkJCQkJCQkJCQkKOzs7CQkgIENoZWNraW5nIGFuZCBFbGluZm8gTG9nIFV0aWxp dGllcwkJCQkKOzsgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KOzsgCQkJCQkJCQkJCQoKKGRl ZmN1c3RvbSBlbGluZm8tbG9nLXdhcm5pbmdzIG5pbAogICJOb24tbmlsIG1lYW5zIGxvZyB3 YXJuaW5ncyBpbiBFbGluZm8gTG9nIGJ1ZmZlci4iCiAgOmdyb3VwICdlbGluZm8KICA6dHlw ZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyMy4yIikKCihkZWZjdXN0b20gZWxpbmZvLXNob3ct ZGVmaW5pdGlvbiB0CiAgIk5vbi1uaWwgbWVhbnMgc2hvdyBkZWZpbml0aW9ucyB3aGVuIGJy b3dzaW5nIEVsaW5mbyBMb2dzLiIKICA6Z3JvdXAgJ2VsaW5mbwogIDp0eXBlICdib29sZWFu CiAgOnZlcnNpb24gIjIzLjIiKQoKKGRlZmN1c3RvbSBlbGluZm8tYmFsYW5jZS13aW5kb3dz IHQKICAiTm9uLW5pbCBtZWFucyBiYWxhbmNlIHdpbmRvd3Mgd2hlbiBicm93c2luZyBFbGlu Zm8gTG9ncy4iCiAgOmdyb3VwICdlbGluZm8KICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9u ICIyMy4yIikKCihkZWZjdXN0b20gZWxpbmZvLXJldXNlLXdpbmRvd3MgdAogICJOb24tbmls IG1lYW5zIHJldXNlIHdpbmRvd3Mgd2hlbiBicm93c2luZyBFbGluZm8gTG9ncy4iCiAgOmdy b3VwICdlbGluZm8KICA6dHlwZSAnYm9vbGVhbgogIDp2ZXJzaW9uICIyMy4yIikKCihkZWZj dXN0b20gZWxpbmZvLWxvZy1sb2NhdGlvbi1mYWNlICd1bmRlcmxpbmUKICAiRmFjZSBuYW1l IGZvciBoaWdobGlnaHRpbmcgbG9jYXRpb25zIGluIEVsaW5mbyBMb2dzLiIKICA6Z3JvdXAg J2VsaW5mbwogIDp0eXBlICdmYWNlCiAgOnZlcnNpb24gIjIzLjIiKQoKKGRlZmN1c3RvbSBl bGluZm8tbG9nLWRlZi1mYWNlIGZvbnQtbG9jay1jb25zdGFudC1mYWNlCiAgIkZhY2UgbmFt ZSBmb3IgaGlnaGxpZ2h0aW5nIHRoaW5ncyBpbiBFbGluZm8gTG9ncy4iCiAgOmdyb3VwICdl bGluZm8KICA6dHlwZSAnZmFjZQogIDp2ZXJzaW9uICIyMy4yIikKCjs7IFdpbmRvdyBuYXZp Z2F0aW9uLgooZGVmdmFyIGVsaW5mby1zb3VyY2Utd2luZG93IG5pbAogICJUaGUgd2luZG93 IHdoZXJlIHRoZSBUZXhpbmZvIHNvdXJjZSBidWZmZXIgd2FzIGRpc3BsYXllZC4iKQooZGVm dmFyIGVsaW5mby1kZWYtd2luZG93IG5pbAogICJUaGUgd2luZG93IHdoZXJlIHRoZSBkZWZp bml0aW9uIG9mIHNvbWUgc3ltYm9sIHdhcyBkaXNwbGF5ZWQuIikKCihkZWZ1biBlbGluZm8t c2hvdy1kZWZpbml0aW9uIChzeW1ib2wgJm9wdGlvbmFsIHR5cGUpCiAgIlNob3cgZGVmaW5p dGlvbiBvZiBTWU1CT0wgaW4gYSBzdWl0YWJsZSB3aW5kb3cuCkZvciBjb21wYXRpYmlsaXR5 IHdpdGggYGZpbmQtZGVmaW5pdGlvbi1ub3NlbGVjdCcgVFlQRSBtdXN0IGJlCm9taXR0ZWQg b3IgbmlsIGZvciBmdW5jdGlvbnMgYW5kIGBkZWZ2YXInIGZvciB2YXJpYWJsZXMuIgogIDs7 IGBmaW5kLWRlZmluaXRpb24tbm9zZWxlY3QnIGlzIGF1dG9sb2FkZWQgaW4gZmluZC1mdW5j LmVsIGFuZCBzaG91bGQKICA7OyByZXR1cm4gYSBjb25zIHdob3NlIGNhciBpcyB0aGUgYnVm ZmVyIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24KICA7OyB3aGlsZSBpdHMgY2RyIGNvbnRh aW5zIHRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIGJ1ZmZlci4KICAobGV0ICgoYnVmZmVyLXBv c2l0aW9uLXBhaXIgKHNhdmUtZXhjdXJzaW9uCgkJCQkoZmluZC1kZWZpbml0aW9uLW5vc2Vs ZWN0IHN5bWJvbCB0eXBlKSkpKQogICAgKHdoZW4gYnVmZmVyLXBvc2l0aW9uLXBhaXIKICAg ICAgKGxldCAoKGJ1ZmZlciAoY2FyIGJ1ZmZlci1wb3NpdGlvbi1wYWlyKSkKCSAgICAocG9z aXRpb24gKGNkciBidWZmZXItcG9zaXRpb24tcGFpcikpKQoJKGlmIChhbmQgZWxpbmZvLXJl dXNlLXdpbmRvd3MgKHdpbmRvdy1saXZlLXAgZWxpbmZvLWRlZi13aW5kb3cpKQoJICAgIChz ZXQtd2luZG93LWJ1ZmZlciBlbGluZm8tZGVmLXdpbmRvdyBidWZmZXIpCgkgIChzZXRxIGVs aW5mby1kZWYtd2luZG93IChkaXNwbGF5LWJ1ZmZlciBidWZmZXIpKSkKCTs7IFJlY29yZCB3 aW5kb3cvYnVmZmVyIHJlbGF0aW9uc2hpcC4KCShzZXQtd2luZG93LXBvaW50IGVsaW5mby1k ZWYtd2luZG93IHBvc2l0aW9uKQoJKHdpdGgtc2VsZWN0ZWQtd2luZG93IGVsaW5mby1kZWYt d2luZG93CgkgIDs7IFB1dCB0aGUgZGVmaW5pdGlvbiBhdCB0aGUgdG9wIG9mIHRoZSB3aW5k b3cuCgkgIChyZWNlbnRlciAxKSkpKSkpCgooZGVmdW4gZWxpbmZvLXNob3ctc291cmNlICgm b3B0aW9uYWwgbG9nLXBvcykKICAiU2hvdyBUZXhpbmZvIHNvdXJjZSBjb3JyZXNwb25kaW5n IHRvIEVsaW5mbyBMb2cgZW50cnkgYXQgTE9HLVBPUy4KTE9HLVBPUyBuaWwgb3Igb21pdHRl ZCBtZWFucyBjb25zaWRlciB0aGUgZW50cnkgbG9jYXRlZCBhdApgcG9pbnQnLgoKVGhpcyBm dW5jdGlvbiBtYXkgYWxzbyBkaXNwbGF5IGEgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIGlu IGNhc2UKYGVsaW5mby1zaG93LWRlZmluaXRpb24nIGlzIG5vbi1uaWwgYW5kIGJhbGFuY2Ug dGhlIHJlc3BlY3RpdmUKd2luZG93cyBwcm92aWRlZCBgZWxpbmZvLWJhbGFuY2Utd2luZG93 cycgaXMgbm9uLW5pbC4iCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobGV0KiAoKGxvZy1wb3Mg KG9yIGxvZy1wb3MgKHBvaW50KSkpCgkgICAoZmlsZS1uYW1lIChnZXQtdGV4dC1wcm9wZXJ0 eSBsb2ctcG9zICdlbGluZm8tZmlsZS1uYW1lKSkKCSAgIChwb3NpdGlvbiAoZ2V0LXRleHQt cHJvcGVydHkgbG9nLXBvcyAnZWxpbmZvLXBvc2l0aW9uKSkKCSAgIChidWZmZXIgKGZpbmQt ZmlsZS1ub3NlbGVjdCBmaWxlLW5hbWUpKQoJICAgYmFsYW5jZSkKICAgICAgOzsgRGlzcGxh eSBUZXhpbmZvIHNvdXJjZS4KICAgICAgKGlmIChhbmQgZWxpbmZvLXJldXNlLXdpbmRvd3Mg KHdpbmRvdy1saXZlLXAgZWxpbmZvLXNvdXJjZS13aW5kb3cpKQoJICAoc2V0LXdpbmRvdy1i dWZmZXIgZWxpbmZvLXNvdXJjZS13aW5kb3cgYnVmZmVyKQoJKHNldHEgZWxpbmZvLXNvdXJj ZS13aW5kb3cgKGRpc3BsYXktYnVmZmVyIGJ1ZmZlcikpKQogICAgICA7OyBTZXQgd2luZG93 L2J1ZmZlciByZWxhdGlvbnNoaXAuCiAgICAgIChzZXQtd2luZG93LXBvaW50IGVsaW5mby1z b3VyY2Utd2luZG93IHBvc2l0aW9uKQogICAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgZWxp bmZvLXNvdXJjZS13aW5kb3cKCTs7IFdlIGNvdWxkIG1ha2UgdGhlICIxIiBjdXN0b21pemFi bGUuCgkocmVjZW50ZXIgMSkpCiAgICAgIDs7IERpc3BsYXkgZGVmaW5pdGlvbiBpZiBwb3Nz aWJsZS4KICAgICAgKGNvbmQKICAgICAgICgobm90IGVsaW5mby1zaG93LWRlZmluaXRpb24p KQogICAgICAgKChtZW1xIChnZXQtdGV4dC1wcm9wZXJ0eSBsb2ctcG9zICdlbGluZm8tdHlw ZSkKCSAgICAgICcoY29tbWFuZCBuby1jb21tYW5kIGFyZy1taXNtYXRjaCkpCgkoZWxpbmZv LXNob3ctZGVmaW5pdGlvbgoJIChpbnRlcm4gKGdldC10ZXh0LXByb3BlcnR5IGxvZy1wb3Mg J2VsaW5mby1uYW1lKSkpCgkoc2V0cSBiYWxhbmNlIHQpKQogICAgICAgKChtZW1xIChnZXQt dGV4dC1wcm9wZXJ0eSBsb2ctcG9zICdlbGluZm8tdHlwZSkKCSAgICAgICcob3B0aW9uIG5v LW9wdGlvbikpCgkoZWxpbmZvLXNob3ctZGVmaW5pdGlvbgoJIChpbnRlcm4gKGdldC10ZXh0 LXByb3BlcnR5IGxvZy1wb3MgJ2VsaW5mby1uYW1lKSkgJ2RlZnZhcikKCShzZXRxIGJhbGFu Y2UgdCkpKQogICAgICA7OyBCYWxhbmNlIHdpbmRvd3MgaWYgcG9zc2libGUuCiAgICAgICh3 aGVuIChhbmQgZWxpbmZvLWJhbGFuY2Utd2luZG93cyBiYWxhbmNlCgkJIChlcSAod2luZG93 LWZyYW1lIGVsaW5mby1zb3VyY2Utd2luZG93KQoJCSAgICAgKHdpbmRvdy1mcmFtZSBlbGlu Zm8tZGVmLXdpbmRvdykpKQoJOzsgYGJhbGFuY2Utd2luZG93cycgc2hvdWxkIGJhbGFuY2Ug c2libGluZ3Mgb2YgdGhlCgk7OyBzb3VyY2Utd2luZG93IG9ubHkuCgkoYmFsYW5jZS13aW5k b3dzIGVsaW5mby1zb3VyY2Utd2luZG93KSkpKSkKCjs7IFRoZSBuZXh0LS9wcmV2aW91cy1l cnJvciBmdW5jdGlvbnMgaGF2ZSBiZWVuIGNvcGllZCBmcm9tIGNvbXBpbGUuZWwKOzsgYW5k IHNsaWdodGx5IGFkYXB0ZWQgZm9yIG91ciBuZWVkcy4gIEZvciBVSSBhbmQga2V5YmluZGlu Z3Mgc3RpY2sgdG8KOzsgdGhvc2UgdXNlZCBieSBjb21waWxlIGFuZCByZWxhdGVkIG1vZGVz LiAgQWxzbyByZXRhaW4gdGhlIC1lcnJvcgo7OyBwb3N0Zml4IGZvciBhbGwgZW50cmllcyBh bmQgZG9uJ3QgbW9kaWZ5IHRoZSBkb2Mgc3RyaW5ncyB0byBtYWtlIHRoaXMKOzsgbG9vayBm YW1pbGlhci4KKGRlZnVuIGVsaW5mby1uZXh0LWVycm9yIChuICZvcHRpb25hbCBvdGhlci1m aWxlKQogICJTaG93IFRleGluZm8gc291cmNlIGZvciBuZXh0IGVudHJ5IGluIEVsaW5mbyBM b2cuClByZWZpeCBhcmcgTiBzYXlzIGhvdyBtYW55IGVudHJpZXMgdG8gbW92ZSBmb3J3YXJk cyBcKGJhY2t3YXJkcywKaWYgbmVnYXRpdmUpLgoKT3B0aW9uYWwgYXJnIE9USEVSLUZJTEUs IGlmIG5vbi1uaWwsIG1lYW5zIGZpbmQgZW50cnkgZm9yIGEgZmlsZQp0aGF0IGlzIGRpZmZl cmVudCBmcm9tIHRoZSBjdXJyZW50IG9uZS4gIEluIHRoYXQgY2FzZSwgTgpzcGVjaWZpZXMg dGhlIG51bWJlciBvZiBmaWxlcyB3aG9zZSBlbnRyaWVzIHNoYWxsIGJlIHNraXBwZWQuCgpU aGlzIGZ1bmN0aW9uIG1heSBhbHNvIGRpc3BsYXkgYSBjb3JyZXNwb25kaW5nIGRlZmluaXRp b24gaW4gY2FzZQpgZWxpbmZvLXNob3ctZGVmaW5pdGlvbicgaXMgbm9uLW5pbCBhbmQgYmFs YW5jZSB0aGUgcmVzcGVjdGl2ZQp3aW5kb3dzIHByb3ZpZGVkIGBlbGluZm8tYmFsYW5jZS13 aW5kb3dzJyBpcyBub24tbmlsLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChpZiBvdGhlci1m aWxlCiAgICAgIChsZXQgKChsYXN0LWZpbGUgKGdldC10ZXh0LXByb3BlcnR5IChwb2ludCkg J2VsaW5mby1maWxlLW5hbWUpKQoJICAgIChjdXJyZW50LWZpbGUgIiIpKQoJKGlmICg+IG4g MCkKCSAgICAod2hpbGUgKGFuZCAobm90IChlb2JwKSkKCQkJKHNldHEgY3VycmVudC1maWxl CgkJCSAgICAgIChnZXQtdGV4dC1wcm9wZXJ0eSAocG9pbnQpICdlbGluZm8tZmlsZS1uYW1l KSkKCQkJKG9yIChzdHJpbmctZXF1YWwgY3VycmVudC1maWxlIGxhc3QtZmlsZSkKCQkJICAg IChhbmQgKHNldHEgbGFzdC1maWxlIGN1cnJlbnQtZmlsZSkKCQkJCSAoPiAoc2V0cSBuICgx LSBuKSkgMCkpKSkKCSAgICAgIChmb3J3YXJkLWxpbmUpKQoJICAod2hpbGUgKGFuZCAobm90 IChib2JwKSkKCQkgICAgICAoc2V0cSBjdXJyZW50LWZpbGUKCQkJICAgIChnZXQtdGV4dC1w cm9wZXJ0eSAocG9pbnQpICdlbGluZm8tZmlsZS1uYW1lKSkKCQkgICAgICAob3IgKHN0cmlu Zy1lcXVhbCBjdXJyZW50LWZpbGUgbGFzdC1maWxlKQoJCQkgIChhbmQgKHNldHEgbGFzdC1m aWxlIGN1cnJlbnQtZmlsZSkKCQkJICAgICAgICg8IChzZXRxIG4gKDErIG4pKSAwKSkpKQoJ ICAgICAgKGZvcndhcmQtbGluZSAtMSkpKSkKICAgIChmb3J3YXJkLWxpbmUgbikpCgogIChl bGluZm8tc2hvdy1zb3VyY2UpKQoKKGRlZnVuIGVsaW5mby1uZXh0LWVycm9yLWZ1bmN0aW9u IChuICZvcHRpb25hbCByZXNldCkKICAiTW92ZSB0byBuZXh0IGVudHJ5IGluIEVsaW5mbyBM b2cgYW5kIHNob3cgY29ycmVzcG9uZGluZyBUZXhpbmZvIHNvdXJjZS4KT3B0aW9uYWwgYXJn dW1lbnQgUkVTRVQgbm9uLW5pbCBtZWFucyBnbyB0byBmaXJzdCBFbGluZm8gTG9nCmVudHJ5 LiAgU2VlIGFsc28gYGVsaW5mby1uZXh0LWVycm9yJy4KClRoaXMgZnVuY3Rpb24gcHJvdmlk ZXMgdGhlIHZhbHVlIG9mIGBuZXh0LWVycm9yLWZ1bmN0aW9uJyBpbgpFbGluZm8gTG9nIGJ1 ZmZlcnMuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKHdoZW4gcmVzZXQgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkpCiAgKGVsaW5mby1uZXh0LWVycm9yIG4pKQoKKGRlZnVuIGVsaW5mby1w cmV2aW91cy1lcnJvciAobikKICAiU2hvdyBUZXhpbmZvIHNvdXJjZSBjb3JyZXNwb25kaW5n IHRvIHByZXZpb3VzIGVudHJ5IGluIEVsaW5mbyBMb2cuClByZWZpeCBhcmcgTiBzYXlzIGhv dyBtYW55IGVudHJpZXMgdG8gbW92ZSBiYWNrd2FyZHMgXChmb3J3YXJkcywKaWYgbmVnYXRp dmUpLiAgU2VlIGFsc28gYGVsaW5mby1uZXh0LWVycm9yJy4iCiAgKGludGVyYWN0aXZlICJw IikKICAoZWxpbmZvLW5leHQtZXJyb3IgKC0gbikpKQoKKGRlZnVuIGVsaW5mby1uZXh0LWZp bGUgKG4pCiAgIlNob3cgVGV4aW5mbyBzb3VyY2Ugb2YgbmV4dCBFbGluZm8gTG9nIGVudHJ5 IG5hbWluZyBhbm90aGVyIGZpbGUuClByZWZpeCBhcmcgTiBzYXlzIGhvdyBtYW55IGZpbGVz IHRvIG1vdmUgZm9yd2FyZHMgXChvciBiYWNrd2FyZHMsCmlmIG5lZ2F0aXZlKS4gIFNlZSBh bHNvIGBlbGluZm8tbmV4dC1lcnJvcicuIgogIChpbnRlcmFjdGl2ZSAicCIpCiAgKGVsaW5m by1uZXh0LWVycm9yIG4gdCkpCgooZGVmdW4gZWxpbmZvLXByZXZpb3VzLWZpbGUgKG4pCiAg IlNob3cgVGV4aW5mbyBzb3VyY2Ugb2YgcHJldmlvdXMgRWxpbmZvIExvZyBlbnRyeSBuYW1p bmcgYW5vdGhlciBmaWxlLgpQcmVmaXggYXJnIE4gc2F5cyBob3cgbWFueSBmaWxlcyB0byBt b3ZlIGJhY2t3YXJkcyBcKG9yIGZvcndhcmRzLAppZiBuZWdhdGl2ZSkuICBTZWUgYWxzbyBg ZWxpbmZvLW5leHQtZXJyb3InLiIKICAoaW50ZXJhY3RpdmUgInAiKQogIChlbGluZm8tbmV4 dC1maWxlICgtIG4pKSkKCihkZWZ1biBlbGluZm8tZ290by1lcnJvciAoJm9wdGlvbmFsIGV2 ZW50KQogICJTaG93IFRleGluZm8gc291cmNlIGZvciBFbGluZm8gTG9nIGVudHJ5IGF0IGBw b2ludCcuClNlZSBhbHNvIGBlbGluZm8tbmV4dC1lcnJvcicuIgogIChpbnRlcmFjdGl2ZSAo bGlzdCBsYXN0LWlucHV0LWV2ZW50KSkKICAod2hlbiBldmVudCAocG9zbi1zZXQtcG9pbnQg KGV2ZW50LWVuZCBldmVudCkpKQogIChuZXh0LWVycm9yLWludGVybmFsKSkKCihkZWZ2YXIg ZWxpbmZvLWxvZy1tb2RlLW1hcAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtleW1hcCkp KQogICAgKGRlZmluZS1rZXkgbWFwIFttb3VzZS0yXSAnZWxpbmZvLWdvdG8tZXJyb3IpCiAg ICAoZGVmaW5lLWtleSBtYXAgW2ZvbGxvdy1saW5rXSAnbW91c2UtZmFjZSkKICAgIChkZWZp bmUta2V5IG1hcCAiXEMtY1xDLWMiICdlbGluZm8tZ290by1lcnJvcikKICAgIDs7IEVsaW5m byBnb3RvIGNvbXBhdGliaWxpdHkuCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1nIiAn ZWxpbmZvLWdvdG8tZXJyb3IpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLW0iICdlbGluZm8t Z290by1lcnJvcikKICAgIChkZWZpbmUta2V5IG1hcCAiXE0tbiIgJ2VsaW5mby1uZXh0LWVy cm9yKQogICAgKGRlZmluZS1rZXkgbWFwICJcTS1wIiAnZWxpbmZvLXByZXZpb3VzLWVycm9y KQogICAgKGRlZmluZS1rZXkgbWFwICJcTS17IiAnZWxpbmZvLXByZXZpb3VzLWZpbGUpCiAg ICAoZGVmaW5lLWtleSBtYXAgIlxNLX0iICdlbGluZm8tbmV4dC1maWxlKQogICAgKGRlZmlu ZS1rZXkgbWFwICJcdCIgJ2VsaW5mby1uZXh0LWVycm9yKQogICAgKGRlZmluZS1rZXkgbWFw IFtiYWNrdGFiXSAnZWxpbmZvLXByZXZpb3VzLWVycm9yKQogICAgKGRlZmluZS1rZXkgbWFw ICJxIiAncXVpdC13aW5kb3cpCiAgICAoZGVmaW5lLWtleSBtYXAgIiAiICdzY3JvbGwtdXAp CiAgICAoZGVmaW5lLWtleSBtYXAgIlxePyIgJ3Njcm9sbC1kb3duKQogICAgKGRlZmluZS1r ZXkgbWFwICJcQy1jXEMtZiIgJ25leHQtZXJyb3ItZm9sbG93LW1pbm9yLW1vZGUpCiAgICBt YXApCiAgIktleW1hcCBmb3IgRWxpbmZvIExvZ3MuIikKCihkZWZ1biBlbGluZm8tbG9nLW1v ZGUgKCkKICAiTWFqb3IgbW9kZSBmb3IgYnJvd3NpbmcgRWxpbmZvIExvZ3MuClxce2VsaW5m by1sb2ctbW9kZS1tYXB9IgogIChpbnRlcmFjdGl2ZSkKICAoa2lsbC1hbGwtbG9jYWwtdmFy aWFibGVzKQogICh1c2UtbG9jYWwtbWFwIGVsaW5mby1sb2ctbW9kZS1tYXApCiAgKHNldHEg bWFqb3ItbW9kZSAnZWxpbmZvLWxvZy1tb2RlKQogIChzZXRxIG1vZGUtbmFtZSAiRWxpbmZv IikKICAoc2V0cSBuZXh0LWVycm9yLWZ1bmN0aW9uICdlbGluZm8tbmV4dC1lcnJvci1mdW5j dGlvbikKICAoc2V0cSBidWZmZXItcmVhZC1vbmx5IHQpKQoKKGRlZnZhciBlbGluZm8tbG9n LWJ1dHRvbi1tYXAKICAobGV0ICgobWFwIChtYWtlLXNwYXJzZS1rZXltYXApKSkKICAgIChk ZWZpbmUta2V5IG1hcCBbbW91c2UtMl0gJ2VsaW5mby1nb3RvLWVycm9yKQogICAgKGRlZmlu ZS1rZXkgbWFwIFtmb2xsb3ctbGlua10gJ21vdXNlLWZhY2UpCiAgICAoZGVmaW5lLWtleSBt YXAgIlxDLW0iICdlbGluZm8tZ290by1lcnJvcikKICAgIG1hcCkKICAiS2V5bWFwIGZvciBF bGluZm8gTG9nIGJ1dHRvbnMuIikKKGZzZXQgJ2VsaW5mby1sb2ctYnV0dG9uLW1hcCBlbGlu Zm8tbG9nLWJ1dHRvbi1tYXApCgo7OyBUd28gdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGdldHRp bmcgcHJvcGVydGllcyBvZiBmdW5jdGlvbnMgYW5kCjs7IHZhcmlhYmxlcy4gIFRoZXNlIGFy ZSB1c2VkIGZvciBjaGVja2luZyBwcm9wZXJ0aWVzIGRlc2NyaWJlZCBieQo7OyBUZXhpbmZv IHRleHQuCihkZWZ1biBlbGluZm8tLWZ1bi1wcm9wZXJ0aWVzIChmdW5jdGlvbikKICAiUmV0 dXJuIHByb3BlcnRpZXMgb2YgRlVOQ1RJT04uClJldHVybiB2YWx1ZSBpcyBhIGxpc3Qgb2Yg dGhyZWUgZWxlbWVudHM6IFRoZSBmaXJzdCBlbGVtZW50LCB3aGVuCm5vbi1uaWwsIHRlbGxz IHRoYXQgRlVOQ1RJT04gaXMgYSBjb21tYW5kLiAgVGhlIHNlY29uZCBlbGVtZW50LAp3aGVu IG5vbi1uaWwsIHNwZWNpZmllcyB0aGUgZnVuY3Rpb24gRlVOQ1RJT04gaXMgYWxpYXNlZCB0 by4gIFRoZQp0aGlyZCBlbGVtZW50IHNwZWNpZmllcyB0aGUgYXJndW1lbnQgbGlzdCBvZiBG VU5DVElPTiAoYW5kIGlzIHQKd2hlbiB0aGF0IGFyZ3VtZW50IGxpc3QgaXMgbm90IGF2YWls YWJsZSkuIgogIChsZXQgKGRlZiBjb21tYW5kIGFsaWFzIGFyZ2xpc3QgZG9jKQogICAgKHNl dHEgZGVmIChpZiAoc3ltYm9scCBmdW5jdGlvbikKCQkgIChzeW1ib2wtZnVuY3Rpb24gZnVu Y3Rpb24pCgkJZnVuY3Rpb24pKQogICAgKHNldHEgY29tbWFuZCAoY29tbWFuZHAgZGVmKSkK ICAgICh3aGVuIChzeW1ib2xwIGRlZikKICAgICAgKHdoaWxlIChhbmQgKGZib3VuZHAgZGVm KSAoc3ltYm9scCAoc3ltYm9sLWZ1bmN0aW9uIGRlZikpKQoJKHNldHEgZGVmIChpbmRpcmVj dC1mdW5jdGlvbiBkZWYpKSkKICAgICAgKHNldHEgYWxpYXMgZGVmKSkKICAgIChzZXRxIGFy Z2xpc3QKCSAgKGlmIChhbmQgKHNldHEgZG9jIChkb2N1bWVudGF0aW9uIGZ1bmN0aW9uKSkK CQkgICAoc3RyaW5nLW1hdGNoICJcblxuKGZuWyBcXSpcXCguKlxcKSlbIFx0XG5dKlxcJyIg ZG9jKSkKCSAgICAgIChtYXBjYXIgJ2Rvd25jYXNlIChzcGxpdC1zdHJpbmcgKG1hdGNoLXN0 cmluZyAxIGRvYykpKQoJICAgIDs7IEhhbmRsZSBzeW1ib2xzIGFsaWFzZWQgdG8gb3RoZXIg c3ltYm9scy4KCSAgICAod2hlbiAoYW5kIChzeW1ib2xwIGRlZikgKGZib3VuZHAgZGVmKSkK CSAgICAgIChzZXRxIGRlZiAoaW5kaXJlY3QtZnVuY3Rpb24gZGVmKSkpCgkgICAgOzsgSWYg ZGVmaW5pdGlvbiBpcyBhIG1hY3JvLCBmaW5kIHRoZSBmdW5jdGlvbiBpbnNpZGUgaXQuCgkg ICAgKHdoZW4gKGVxIChjYXItc2FmZSBkZWYpICdtYWNybykKCSAgICAgIChzZXRxIGRlZiAo Y2RyIGRlZikpKQoJICAgIChjb25kCgkgICAgICgoYnl0ZS1jb2RlLWZ1bmN0aW9uLXAgZGVm KSAoYXJlZiBkZWYgMCkpCgkgICAgICgoZXEgKGNhci1zYWZlIGRlZikgJ2xhbWJkYSkgKG50 aCAxIGRlZikpCgkgICAgICh0IHQpKSkpCiAgICAobGlzdCBjb21tYW5kIGFsaWFzIChpZiAo bGlzdHAgYXJnbGlzdCkgYXJnbGlzdCB0KSkpKQoKKGRlZnVuIGVsaW5mby0taXMtb3B0aW9u ICh2YXJpYWJsZSkKICAiUmV0dXJuIHQgaWYgVkFSSUFCTEUgaXMgYW4gb3B0aW9uLiIKICAo bGV0KiAoKGZpbGUtbmFtZSAoZmluZC1saXNwLW9iamVjdC1maWxlLW5hbWUgdmFyaWFibGUg J2RlZnZhcikpCgkgKGFsaWFzIChjb25kaXRpb24tY2FzZSBuaWwKCQkgICAgKGluZGlyZWN0 LXZhcmlhYmxlIHZhcmlhYmxlKQoJCSAgKGVycm9yIHZhcmlhYmxlKSkpCgkgKGRvYwoJICAo Y29uZGl0aW9uLWNhc2UgbmlsCgkgICAgICAob3IgKGRvY3VtZW50YXRpb24tcHJvcGVydHkg dmFyaWFibGUgJ3ZhcmlhYmxlLWRvY3VtZW50YXRpb24pCgkJICAoZG9jdW1lbnRhdGlvbi1w cm9wZXJ0eSBhbGlhcyAndmFyaWFibGUtZG9jdW1lbnRhdGlvbikpCgkgICAgKGVycm9yIG5p bCkpKQoJIChvcHRpb24gKG9yIChjdXN0b20tdmFyaWFibGUtcCB2YXJpYWJsZSkKCQkgICAg IChhbmQgKHN0cmluZ3AgZG9jKQoJCQkgIChzdHJpbmctZXF1YWwKCQkJICAgIioiIChzdWJz dHJpbmctbm8tcHJvcGVydGllcyBkb2MgMCAxKSkpKSkpCiAgICBvcHRpb24pKQoKOzsgU29t ZSBjb3VudGVycy4KKGRlZnZhciBlbGluZm8tZmlsZXMtY291bnQgbmlsKQooZGVmdmFyIGVs aW5mby1lcnJvcnMtY291bnQgMCkKKGRlZnZhciBlbGluZm8td2FybmluZ3MtY291bnQgMCkK CihkZWZ1biBlbGluZm8tY2xlYXItbG9nICgpCiAgIkNsZWFyIEVsaW5mbyBMb2cgYnVmZmVy IGFuZCByZXNldCBlcnJvciBjb3VudHMuIgogIDs7IE1heWJlIHdlIHNob3VsZCBtYWtlIGNs ZWFyaW5nIGN1c3RvbWl6YWJsZS4KICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZl ci1jcmVhdGUgIipFbGluZm8tTG9nKiIpCiAgICAobGV0ICgoaW5oaWJpdC1yZWFkLW9ubHkg dCkpCiAgICAgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpCiAg OzsgV2UgY291bGQgaW5zZXJ0IHNvbWUgaGVhZGVyLCBidXQgd2hvJ2QgY2FyZSBhbnl3YXk/ CiAgKHNldHEgZWxpbmZvLWVycm9ycy1jb3VudCAwKQogIChzZXRxIGVsaW5mby13YXJuaW5n cy1jb3VudCAwKSkKCihkZWZ1biBlbGluZm8tZGlzcGxheS1sb2cgKCZvcHRpb25hbCBmaWxl LW5hbWUpCiAgIkRpc3BsYXkgRWxpbmZvIExvZy4KSWYgdGhlcmUgd2VyZSBubyBlcnJvcnMg anVzdCB3cml0ZSBhIG1lc3NhZ2UuICBPcHRpb25hbCBhcmd1bWVudApGSUxFLU5BTUUgbXVz dCBuYW1lIHRoZSBmaWxlIHdob3NlIGNvbnRlbnRzIHdlcmUgY2hlY2tlZC4iCiAgKGlmIChh bmQgKHplcm9wIGVsaW5mby1lcnJvcnMtY291bnQpICh6ZXJvcCBlbGluZm8td2FybmluZ3Mt Y291bnQpKQogICAgICAobGV0ICgodGV4dAoJICAgICAoY29uY2F0CgkgICAgICAiTm8gZXJy b3JzIGZvdW5kIgoJICAgICAgKGNvbmQKCSAgICAgICAoZmlsZS1uYW1lCgkJKGZvcm1hdCAi IGluIGZpbGUgJXMiIGZpbGUtbmFtZSkpCgkgICAgICAgKGVsaW5mby1maWxlcy1jb3VudAoJ CShmb3JtYXQgIiBpbiAlcyBjaGVja2VkIGZpbGUocykiIGVsaW5mby1maWxlcy1jb3VudCkp KSkpKQoJKG1lc3NhZ2UgdGV4dCkpCiAgICAobGV0KiAoKGJ1ZmZlciAoZ2V0LWJ1ZmZlciAi KkVsaW5mby1Mb2cqIikpCgkgICAod2luZG93ICh3aGVuIGJ1ZmZlcgoJCSAgICAgKGRpc3Bs YXktYnVmZmVyIGJ1ZmZlcikpKQoJICAgKHRleHQgKGNvbmNhdAoJCSAgKGZvcm1hdCAiJXMg ZXJyb3IocykiIGVsaW5mby1lcnJvcnMtY291bnQpCgkJICAod2hlbiBlbGluZm8tbG9nLXdh cm5pbmdzCgkJICAgIChmb3JtYXQgIiBhbmQgJXMgd2FybmluZyhzKSIgZWxpbmZvLXdhcm5p bmdzLWNvdW50KSkKCQkgIChjb25kCgkJICAgKGZpbGUtbmFtZQoJCSAgICAoZm9ybWF0ICIg aW4gZmlsZSAlcyIgZmlsZS1uYW1lKSkKCQkgICAoZWxpbmZvLWZpbGVzLWNvdW50CgkJICAg IChmb3JtYXQgIiBpbiAlcyBjaGVja2VkIGZpbGUocykiIGVsaW5mby1maWxlcy1jb3VudCkp KSkpKQogICAgICA7OyBXZSByZWFsbHkgc2hvdWxkIGhhdmUgYW4gb3B0aW9uIHdoaWNoIGxl dHMgdXNlcnMgc2VsZWN0CiAgICAgIDs7IExvZy9IZWxwIHdpbmRvd3MuCiAgICAgICh3aGVu IHdpbmRvdwoJKHNldC13aW5kb3ctcG9pbnQgd2luZG93IChwb2ludC1taW4pKSkKICAgICAg KG1lc3NhZ2UgdGV4dCkpKSkKCihkZWZ1biBlbGluZm8tbG9nLXN0cmluZyAodHlwZSBuYW1l IGZpbGUtbmFtZSBwb3NpdGlvbiBzdHJpbmcgJm9wdGlvbmFsIHdhcm5pbmcpCiAgIkxvZyBT VFJJTkcgaW4gRWxpbmZvIExvZyBidWZmZXIuClNUUklORyBpcyBwcm9wZXJ0aXplZCB3aXRo IFRZUEUgXCh0aGUgdHlwZSBvZiB0aGUgZXJyb3IpLCBOQU1FClwodXN1YWxseSB0aGUgbmFt ZSBvZiBzb21lIGZ1bmN0aW9uIG9yIHZhcmlhYmxlKSwgRklMRS1OQU1FIFwodGhlCm5hbWUg b2YgYSBmaWxlKSwgUE9TSVRJT04gXChhIHBvc2l0aW9uIHZhbGlkIGluIGEgYnVmZmVyIHZp c2l0aW5nCkZJTEUtTkFNRSkuICBPcHRpb25hbCBhcmd1bWVudCBXQVJOSU5HIG5vbi1uaWwg bWVhbnMgbm8gbG9nZ2luZwpvY2N1cnMgdW5sZXNzIGBlbGluZm8tbG9nLXdhcm5pbmdzJyBp cyBub24tbmlsLiIKICAod2hlbiAob3IgKG5vdCB3YXJuaW5nKSBlbGluZm8tbG9nLXdhcm5p bmdzKQogICAgKGlmIHdhcm5pbmcKCShzZXRxIGVsaW5mby13YXJuaW5ncy1jb3VudCAoMSsg ZWxpbmZvLXdhcm5pbmdzLWNvdW50KSkKICAgICAgKHNldHEgZWxpbmZvLWVycm9ycy1jb3Vu dCAoMSsgZWxpbmZvLWVycm9ycy1jb3VudCkpKQogICAgKGxldCAoKGxpbmUgKGNvdW50LWxp bmVzIChwb2ludC1taW4pIHBvc2l0aW9uKSkKCSAgKGNvbHVtbiAoc2F2ZS1leGN1cnNpb24K CQkgICAgKGdvdG8tY2hhciBwb3NpdGlvbikKCQkgICAgKGN1cnJlbnQtY29sdW1uKSkpKQog ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipFbGluZm8t TG9nKiIpCgkodW5sZXNzIChlcSBtYWpvci1tb2RlICdlbGluZm8tbG9nLW1vZGUpCgkgIChl bGluZm8tbG9nLW1vZGUpKQoJKGxldCAoKGluaGliaXQtcmVhZC1vbmx5IHQpCgkgICAgICBm cm9tIHRvKQoJICAoZ290by1jaGFyIChzZXRxIGZyb20gKHBvaW50LW1heCkpKQoJICAoaW5z ZXJ0CgkgICA7OyBQcm9wZXJ0aXplZCBpbmZvcm1hdGlvbi4KCSAgIChwcm9wZXJ0aXplCgkg ICAgKGNvbmNhdAoJICAgICAocHJvcGVydGl6ZQoJICAgICAgKGNvbmNhdAoJICAgICAgICh3 aGVuIGZpbGUtbmFtZQoJCSAoY29uY2F0IChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IGZpbGUt bmFtZSkgIjoiKSkKCSAgICAgICAoZm9ybWF0ICIlczolcyIgbGluZSBjb2x1bW4pKQoJICAg ICAgJ2ZhY2UgZWxpbmZvLWxvZy1sb2NhdGlvbi1mYWNlKQoJICAgICAiICIgc3RyaW5nKQoJ ICAgICdlbGluZm8tdHlwZSB0eXBlICdlbGluZm8tbmFtZSBuYW1lCgkgICAgJ2VsaW5mby1m aWxlLW5hbWUgZmlsZS1uYW1lICdlbGluZm8tcG9zaXRpb24gcG9zaXRpb24KCSAgICAnbW91 c2UtZmFjZSAnaGlnaGxpZ2h0ICdmb2xsb3ctbGluayAnZWxpbmZvLWZvbGxvdy1saW5rKQoJ ICAgOzsgU1RSSU5HIGl0c2VsZiBmb2xsb3dlZCBieSBhIG5ld2xpbmUuCgkgICAiXG4iKSkp KSkpCgooZGVmc3Vic3QgZWxpbmZvLS1zeW1ib2wtbmFtZSAoYXJnKQogICJJZiBBUkcgaXMg YSBzeW1ib2wgcmV0dXJuIGl0cyBuYW1lLCBlbHNlIHJldHVybiBBUkcuIgogIChpZiAoc3lt Ym9scCBhcmcpIChzeW1ib2wtbmFtZSBhcmcpIGFyZykpCgooZGVmdW4gZWxpbmZvLWNoZWNr IChmaWxlLW5hbWUpCiAgIkNoZWNrIGN1cnJlbnQgYnVmZmVyLgpGSUxFLU5BTUUgbXVzdCBz cGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBmaWxlIHdob3NlIGNvbnRlbnRzIGFyZSBpbgp0aGUg Y3VycmVudCBidWZmZXIuIgogIChpbnRlcmFjdGl2ZSkKICAoc2F2ZS1leGN1cnNpb24KICAg IChzYXZlLXJlc3RyaWN0aW9uCiAgICAgICh3aWRlbikKICAgICAgOzsgTWFrZSBzdXJlIGBj YXNlLWZvbGQtc2VhcmNoJyBpcyBuaWwgdG8gY2F0Y2ggdGhlICJDLSIgYW5kICJNLSIKICAg ICAgOzsgZW50cmllcyBvbmx5IGFuZCBub3QgdGhlIEMtbW9kZSAiYy0uLi4iIHN0dWZmLgog ICAgICAobGV0IChjYXNlLWZvbGQtc2VhcmNoCgkgICAgdGV4aS1uYW1lIHRleGktcGQtbmFt ZSB0ZXhpLWFyZy1uYW1lIHRleGktY29tbWFuZCB0ZXhpLW9wdGlvbgoJICAgIHBvc2l0aW9u IHByb3BlcnRpZXMgYXJnLWxpc3QgYXJnLW5hbWUgaXMtb3B0aW9uKQoJKGdvdG8tY2hhciAo cG9pbnQtbWluKSkKCTs7IFdlIHByb2JhYmx5IHdvbid0IGV2ZXIgYm90aGVyIHRvIG9wdGlt aXplIHRoZSByZWdleHAgYmVsb3cuCgkod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkCgkJOzsg UkVHRVhQIE1ORU1OT05JQ1M6IDEuLmRlZnVuL2RlZmZuLCA0Li5kZWZ2YXIvZGVmb3B0LAoJ CTs7IDguLnRleHQgd2UgaWdub3JlLCA5Li5DLS9NLSBwcmVmaXhlZCBzdHJpbmcgaW4gQGNv ZGUsCgkJOzsgMTAuLlNQQy9SRVQvZXRjLiBpbiBAY29kZSwgMTEuLlNQQy9SRVQvZXRjLiBp biBAa2JkLAoJCTs7IDEzLi5ub24tbmlsLgoJCSJeQFxcKD86XFwoXFwoZGVmdW54P1xcfGRl Zm1hY1xcfGRlZnNwZWNcXClcXHxcXChkZWZmbiBDb21tYW5kXFwpXFwpXApcXHxcXChcXChk ZWZ2YXJ4P1xcKVxcfFxcKGRlZm9wdHg/XFwpXFwpXApcXHxcXChzbWFsbFxcKT9cXChleGFt cGxlXFx8bGlzcFxcfHZlcmJhdGltXFx8aWdub3JlXFwpXFwpXApcXHxAY29kZXtcXChbQ01d LVtefV0rXFwpXFx8QFxcKD86XFwoY29kZVxcKVwKXFx8XFwoa2JkXFwpXFwpe1xcKFNQQ1xc fFJFVFxcfExGRFxcfFRBQlxcfEJTXFx8RVNDXFx8REVMXFx8U0hJRlRcXHxDVFJMXFx8TUVU QVxcfEZbMC05XStcXCl9XApcXHxcXChub24tbmlsXFwpIiBuaWwgdCkKCSAgKGNvbmQKCSAg ICgobWF0Y2gtYmVnaW5uaW5nIDEpCgkgICAgKHNldHEgdGV4aS1jb21tYW5kIChtYXRjaC1i ZWdpbm5pbmcgMykpCgkgICAgKHNldHEgcG9zaXRpb24gKGVsaW5mby0tbW92ZS10by1uZXh0 KSkKCSAgICAoc2V0cSB0ZXhpLW5hbWUgKGVsaW5mby0tZ2V0LW5leHQpKQoJICAgIChzZXRx IHRleGktcGQtbmFtZSAocHJvcGVydGl6ZSB0ZXhpLW5hbWUgJ2ZhY2UgZWxpbmZvLWxvZy1k ZWYtZmFjZSkpCgkgICAgKGlmIChub3QgKGZib3VuZHAgKGludGVybiB0ZXhpLW5hbWUpKSkK CQkocHJvZ24KCQkgIChlbGluZm8tbG9nLXN0cmluZwoJCSAgICdmdW4tdW5ib3VuZCB0ZXhp LW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJICAgKGNvbmNhdCAiVW5ib3VuZCBmdW5jdGlv biBgIiB0ZXhpLXBkLW5hbWUgIiciKSB0KQoJCSAgKGZvcndhcmQtbGluZSkpCgkgICAgICAo c2V0cSBwcm9wZXJ0aWVzIChlbGluZm8tLWZ1bi1wcm9wZXJ0aWVzIChpbnRlcm4gdGV4aS1u YW1lKSkpCgkgICAgICAoaWYgKGFuZCAoZXEgKG50aCAxIHByb3BlcnRpZXMpICdpZ25vcmUp CgkJICAgICAgIChub3QgKHN0cmluZy1lcXVhbCB0ZXhpLW5hbWUgImlnbm9yZSIpKSkKCQkg IDs7IFdoZW4gdGhlIGZ1bmN0aW9uIGlzIHJlbWFwcGVkIHRvIGBpZ25vcmUnIHdlIGNhbid0 CgkJICA7OyBkbyBhbnl0aGluZyByZWFzb25hYmxlIG9uIHRoZSBjdXJyZW50IHBsYXRmb3Jt LgoJCSAgKHByb2duCgkJICAgIChlbGluZm8tbG9nLXN0cmluZwoJCSAgICAgJ3JlbWFwcGVk LXRvLWlnbm9yZSB0ZXhpLW5hbWUgZmlsZS1uYW1lIHBvc2l0aW9uCgkJICAgICAoY29uY2F0 ICJgIiB0ZXhpLXBkLW5hbWUgIicgcmVtYXBwZWQgdG8gYGlnbm9yZScgb24gdGhpcyBwbGF0 Zm9ybSIpIHQpCgkJICAgIChmb3J3YXJkLWxpbmUpKQoJCTs7IENoZWNrIGNvbW1hbmQgcHJv cGVydHkuCgkJKGNvbmQKCQkgKChhbmQgdGV4aS1jb21tYW5kIChub3QgKG50aCAwIHByb3Bl cnRpZXMpKSkKCQkgIChlbGluZm8tbG9nLXN0cmluZwoJCSAgICdjb21tYW5kIHRleGktbmFt ZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkgICAoY29uY2F0ICJgIiB0ZXhpLXBkLW5hbWUgIicg aXMgbm90IGEgY29tbWFuZCIpKSkKCQkgKChhbmQgKG5vdCB0ZXhpLWNvbW1hbmQpIChudGgg MCBwcm9wZXJ0aWVzKSkKCQkgIChlbGluZm8tbG9nLXN0cmluZwoJCSAgICduby1jb21tYW5k IHRleGktbmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkgICAoY29uY2F0ICJgIiB0ZXhpLXBk LW5hbWUgIicgaXMgYSBjb21tYW5kIikpKSkKCQk7OyBDaGVjayBhcmd1bWVudHMuCgkJKHNl dHEgYXJnLWxpc3QgKG50aCAyIHByb3BlcnRpZXMpKQoJCShjb25kCgkJICgobm90IGFyZy1s aXN0KQoJCSAgKHVubGVzcyAoc3RyaW5nLWVxdWFsIChlbGluZm8tLWdldC1uZXh0LWFyZykg IiIpCgkJICAgIDs7IFRoZSBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgYXJndW1lbnRzLgoJCSAg ICAoZWxpbmZvLWxvZy1zdHJpbmcKCQkgICAgICdhcmctbWlzbWF0Y2ggdGV4aS1uYW1lIGZp bGUtbmFtZSBwb3NpdGlvbgoJCSAgICAgKGNvbmNhdCAiYCIgdGV4aS1wZC1uYW1lICInIGhh cyBubyBhcmd1bWVudHMiKSkpKQoJCSAoKG5vdCAobGlzdHAgYXJnLWxpc3QpKQoJCSAgOzsg VXN1YWxseSB0aGlzIGlzIGFuICJBcmdsaXN0IG5vdCBhdmFpbGFibGUgLi4uIiBwcm9ibGVt LgoJCSAgKGVsaW5mby1sb2ctc3RyaW5nCgkJICAgJ2FyZy1ub3QtYXZhaWxhYmxlIHRleGkt bmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkgICAoY29uY2F0ICJBcmd1bWVudHMgb2YgYCIg dGV4aS1wZC1uYW1lICInIG5vdCBhdmFpbGFibGUiKSB0KSkKCQkgKHQKCQkgIChjYXRjaCAn YnVnCgkJICAgIChkb2xpc3QgKGFyZyBhcmctbGlzdCkKCQkgICAgICAoc2V0cSBhcmctbmFt ZSAoZWxpbmZvLS1zeW1ib2wtbmFtZSBhcmcpKQoJCSAgICAgIChzZXRxIHRleGktYXJnLW5h bWUgKGVsaW5mby0tZ2V0LW5leHQtYXJnKSkKCQkgICAgICAoY29uZAoJCSAgICAgICAoKHN0 cmluZy1lcXVhbCBhcmctbmFtZSB0ZXhpLWFyZy1uYW1lKSkgOyA6LSkKCQkgICAgICAgKChz dHJpbmctZXF1YWwgdGV4aS1hcmctbmFtZSAiIikKCQkJOzsgVGhlIGZ1bmN0aW9uIGhhcyBt b3JlIGFyZ3VtZW50cyB0aGFuIGRlc2NyaWJlZC4KCQkJKG9yIChhbmQgKHN0cmluZy1tYXRj aCAiJm9wdGlvbmFsXFx8JnJlc3QiIGFyZy1uYW1lKQoJCQkJIDs7IE1heWJlIHRoZSBtYW51 YWwganVzdCB3YW50cyB1cyB0bwoJCQkJIDs7IGlnbm9yZSB0aGUgYXJndW1lbnRzLgoJCQkJ IChsZXQgKChsYXN0LW5hbWUgKGNhciAobGFzdCBhcmctbGlzdCkpKSkKCQkJCSAgIChzdHJp bmctbWF0Y2gKCQkJCSAgICAiaWdub3JlZD8iIChlbGluZm8tLXN5bWJvbC1uYW1lIGxhc3Qt bmFtZSkpKSkKCQkJICAgIChlbGluZm8tbG9nLXN0cmluZwoJCQkgICAgICdhcmctbWlzbWF0 Y2ggdGV4aS1uYW1lIGZpbGUtbmFtZSBwb3NpdGlvbgoJCQkgICAgIChjb25jYXQKCQkJICAg ICAgImAiIHRleGktcGQtbmFtZSAiJyBsYWNrcyBkZXNjcmlwdGlvbiBvZiAiCgkJCSAgICAg IChjb25kCgkJCSAgICAgICAoKHN0cmluZy1lcXVhbCBhcmctbmFtZSAiJm9wdGlvbmFsIikK CQkJCSJvcHRpb25hbCBhcmd1bWVudChzKS4iKQoJCQkgICAgICAgKChzdHJpbmctZXF1YWwg YXJnLW5hbWUgIiVyZXN0IikKCQkJCSJyZXN0IG9mIGFyZ3VtZW50cy4iKQoJCQkgICAgICAg KHQgKGNvbmNhdCAiYXJndW1lbnQgYCIgYXJnLW5hbWUgIiciKSkpKSkpCgkJCSh0aHJvdyAn YnVnIHQpKQoJCSAgICAgICAoKG9yIChzdHJpbmctbWF0Y2ggIiZvcHRpb25hbFxcfCZyZXN0 IiBhcmctbmFtZSkKCQkJICAgIChzdHJpbmctbWF0Y2ggIiZvcHRpb25hbFxcfCZyZXN0IiB0 ZXhpLWFyZy1uYW1lKSkKCQkJKG9yIChhbmQgKHN0cmluZy1tYXRjaCAiJm9wdGlvbmFsXFx8 JnJlc3QiIHRleGktYXJnLW5hbWUpCgkJCQkgOzsgTWF5YmUgd2UgZG9uJ3Qgd2FudCB0byBr bm93IGFsbAoJCQkJIDs7IGFyZ3VtZW50cz8gIExldCdzIGdldCBoZXVyaXN0aWNhbAoJCQkJ IDs7IG9uY2UgbW9yZS4KCQkJCSAobGV0ICgobmV4dC1uYW1lIChlbGluZm8tLWdldC1uZXh0 LWFyZykpKQoJCQkJICAgKHN0cmluZy1tYXRjaAoJCQkJICAgICJlbGVtZW50c1xcfGFyZ3Vt ZW50c1xcfGFyZ3MiIG5leHQtbmFtZSAwKSkpCgkJCSAgICA7OyBUaGUgZm9sbG93aW5nIGlk aW9tIGlzIHBvcHVsYXIgd2l0aGluCgkJCSAgICA7OyBtYWNyb3MgYW5kIHNwZWNpYWwgZm9y bXMuCgkJCSAgICAoYW5kIChzdHJpbmctbWF0Y2ggIiZyZXN0IiBhcmctbmFtZSkKCQkJCSAo b3IgKHN0cmluZy1tYXRjaCAiQGRvdHN7fSQiIHRleGktYXJnLW5hbWUpCgkJCQkgICAgIChy ZS1zZWFyY2gtZm9yd2FyZAoJCQkJICAgICAgIkBkb3Rze30kIiAobGluZS1lbmQtcG9zaXRp b24pIHQpKSkKCQkJICAgIChlbGluZm8tbG9nLXN0cmluZwoJCQkgICAgICdhcmctbWlzbWF0 Y2ggdGV4aS1uYW1lIGZpbGUtbmFtZSBwb3NpdGlvbgoJCQkgICAgIChjb25jYXQKCQkJICAg ICAgImAiIHRleGktcGQtbmFtZQoJCQkgICAgICAiJyBoYXMgbWlzbWF0Y2hpbmcgb3B0aW9u YWwgb3IgcmVzdCBvZiBhcmd1bWVudHMiKSkpCgkJCSh0aHJvdyAnYnVnIHQpKQoJCSAgICAg ICAodAoJCQkoZWxpbmZvLWxvZy1zdHJpbmcKCQkJICdhcmctbWlzbWF0Y2ggdGV4aS1uYW1l IGZpbGUtbmFtZSBwb3NpdGlvbgoJCQkgKGNvbmNhdCAiJyIgdGV4aS1wZC1uYW1lICInIHVz ZXMgYCIgdGV4aS1hcmctbmFtZQoJCQkJICInIGZvciBhcmd1bWVudCBgIiBhcmctbmFtZSAi JyIpIHQpKQoJCSAgICAgICAodGhyb3cgJ2J1ZyB0KSkpKSkpKSkpCgkgICAoKG1hdGNoLWJl Z2lubmluZyA0KQoJICAgIChzZXRxIHRleGktb3B0aW9uIChtYXRjaC1iZWdpbm5pbmcgNikp CgkgICAgKHNldHEgcG9zaXRpb24gKGVsaW5mby0tbW92ZS10by1uZXh0KSkKCSAgICAoc2V0 cSB0ZXhpLW5hbWUgKGVsaW5mby0tZ2V0LW5leHQpKQoJICAgIChzZXRxIHRleGktcGQtbmFt ZSAocHJvcGVydGl6ZSB0ZXhpLW5hbWUgJ2ZhY2UgZWxpbmZvLWxvZy1kZWYtZmFjZSkpCgkg ICAgKGlmIChub3QgKGJvdW5kcCAoaW50ZXJuIHRleGktbmFtZSkpKQoJCShwcm9nbgoJCSAg KGVsaW5mby1sb2ctc3RyaW5nCgkJICAgJ3Zhci11bmJvdW5kIHRleGktbmFtZSBmaWxlLW5h bWUgcG9zaXRpb24KCQkgICAoY29uY2F0ICJVbmJvdW5kIHZhcmlhYmxlIGAiIHRleGktcGQt bmFtZSAiJyIpIHQpCgkJICAoZm9yd2FyZC1saW5lKSkKCSAgICAgIDs7IENoZWNrIG9wdGlv biBwcm9wZXJ0eS4KCSAgICAgIChzZXRxIGlzLW9wdGlvbiAoZWxpbmZvLS1pcy1vcHRpb24g KGludGVybiB0ZXhpLW5hbWUpKSkKCSAgICAgIChjb25kCgkgICAgICAgKChhbmQgdGV4aS1v cHRpb24gKG5vdCBpcy1vcHRpb24pKQoJCShlbGluZm8tbG9nLXN0cmluZwoJCSAnbm8tb3B0 aW9uIHRleGktbmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkgKGNvbmNhdCAiYCIgdGV4aS1w ZC1uYW1lICInIGlzIG5vdCBhbiBvcHRpb24iKSkpCgkgICAgICAgKChhbmQgKG5vdCB0ZXhp LW9wdGlvbikgaXMtb3B0aW9uKQoJCShlbGluZm8tbG9nLXN0cmluZwoJCSAnb3B0aW9uIHRl eGktbmFtZSBmaWxlLW5hbWUgcG9zaXRpb24KCQkgKGNvbmNhdCAiYCIgdGV4aS1wZC1uYW1l ICInIGlzIGFuIG9wdGlvbiIpKSkpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDgpCgkgICAg KHNldHEgcG9zaXRpb24gKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSkKCSAgICA7OyBBbiBl eGFtcGxlLXZlcmJhdGltLWxpc3AgZ3JvdXAsIHNraXAgaXQuCgkgICAgKHVubGVzcyAocmUt c2VhcmNoLWZvcndhcmQKCQkgICAgIChjb25jYXQgIl5AZW5kICIgKG1hdGNoLXN0cmluZy1u by1wcm9wZXJ0aWVzIDcpCgkJCSAgICAgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDgp KSBuaWwgdCkKCSAgICAgIChlbGluZm8tbG9nLXN0cmluZwoJICAgICAgICduby1lbmQgbmls IGZpbGUtbmFtZSBwb3NpdGlvbgoJICAgICAgIChjb25jYXQgIlVudGVybWluYXRlZCAiICht YXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyA3KQoJCSAgICAgICAobWF0Y2gtc3RyaW5nLW5v LXByb3BlcnRpZXMgOCkpKSkpCgkgICAoKG1hdGNoLWJlZ2lubmluZyA5KQoJICAgIChlbGlu Zm8tbG9nLXN0cmluZwoJICAgICAnY29kZS1rYmQgbmlsIGZpbGUtbmFtZSAobWF0Y2gtYmVn aW5uaW5nIDkpCgkgICAgIChjb25jYXQgIlVzZSBAa2JkIGZvciBAY29kZXsiCgkJICAgICAo cmVwbGFjZS1yZWdleHAtaW4tc3RyaW5nCgkJICAgICAgIlxuIiAiICIgKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDkpKSAifSIpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDEwKQoJ ICAgIChlbGluZm8tbG9nLXN0cmluZwoJICAgICAnY29kZS1rZXkgbmlsIGZpbGUtbmFtZSAo bWF0Y2gtYmVnaW5uaW5nIDEwKQoJICAgICAoY29uY2F0ICJVc2UgQGtleSBmb3IgQGNvZGV7 IgoJCSAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwoJCSAgICAgICJcbiIgIiAiICht YXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxMikpICJ9IikpKQoJICAgKChtYXRjaC1iZWdp bm5pbmcgMTEpCgkgICAgKGVsaW5mby1sb2ctc3RyaW5nCgkgICAgICdrYmQta2V5IG5pbCBm aWxlLW5hbWUgKG1hdGNoLWJlZ2lubmluZyAxMSkKCSAgICAgKGNvbmNhdCAiVXNlIEBrZXkg Zm9yIEBrYmR7IgoJCSAgICAgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZwoJCSAgICAgICJc biIgIiAiIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxMikpICJ9IikpKQoJICAgKCht YXRjaC1iZWdpbm5pbmcgMTMpCgkgICAgOzsgQ3VycmVudGx5IHdlIGRvbid0IGNhdGVyIGZv ciBAY29kZXtuaWx9IG1pc3dyaXR0ZW4gYXMgbmlsCgkgICAgOzsgYW5kIHByb2JhYmx5IG5l dmVyIHdpbGwuCgkgICAgKGVsaW5mby1sb2ctc3RyaW5nCgkgICAgICdrYmQta2V5IG5pbCBm aWxlLW5hbWUgKG1hdGNoLWJlZ2lubmluZyAxMykKCSAgICAgKGNvbmNhdCAiVXNlIG5vbi1A Y29kZXtuaWx9IGluc3RlYWQgb2Ygbm9uLW5pbCIpKSkKCSAgIDs7IEFkZGl0aW9uYWwgY2Fz ZXMgYWRkZWQgaGVyZS4KCSAgICkpKSkpKQoKKGRlZnVuIGVsaW5mby1jaGVjay1idWZmZXIg KCkKICAiQ2hlY2sgdmFsaWRpdHkgb2YgY3VycmVudCBUZXhpbmZvIGJ1ZmZlci4KVGhlIGJ1 ZmZlciBtdXN0IGJlIHZpc2l0aW5nIGEgZmlsZS4iCiAgKGludGVyYWN0aXZlKQogIChlbGlu Zm8tY2xlYXItbG9nKQogIChjb25kCiAgICgobm90IGJ1ZmZlci1maWxlLW5hbWUpCiAgICAo ZXJyb3IgIlRoZSBjdXJyZW50IGJ1ZmZlciBkb2VzIG5vdCB2aXNpdCBhIGZpbGUiKSkKICAg KChhbmQgKGJ1ZmZlci1tb2RpZmllZC1wKQoJICh5LW9yLW4tcCAoZm9ybWF0ICJTYXZlIGJ1 ZmZlciAlcyBmaXJzdD8gIiAoYnVmZmVyLW5hbWUpKSkpCiAgICAoc2F2ZS1idWZmZXIpKSkK ICAoc2V0cSBlbGluZm8tZmlsZXMtY291bnQgbmlsKQogIChnb3RvLWNoYXIgKHBvaW50LW1p bikpCiAgKGVsaW5mby1jaGVjayBidWZmZXItZmlsZS1uYW1lKQogIChlbGluZm8tZGlzcGxh eS1sb2cgYnVmZmVyLWZpbGUtbmFtZSkpCgooZGVmdW4gZWxpbmZvLWNoZWNrLWZpbGUgKGZp bGUtbmFtZSkKICAiQ2hlY2sgdmFsaWRpdHkgb2YgVGV4aW5mbyBmaWxlIEZJTEUtTkFNRS4i CiAgKGludGVyYWN0aXZlICJmQ2hlY2sgVGV4aW5mbyBmaWxlICIpCiAgKGVsaW5mby1jbGVh ci1sb2cpCiAgKHNldHEgZWxpbmZvLWZpbGVzLWNvdW50IG5pbCkKICAod2l0aC10ZW1wLWJ1 ZmZlcgogICAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUtbmFtZSkKICAgIChlbGluZm8t Y2hlY2sgZmlsZS1uYW1lKSkKICAoZWxpbmZvLWRpc3BsYXktbG9nIGZpbGUtbmFtZSkpCgoo ZGVmdW4gZWxpbmZvLWNoZWNrLWRpcmVjdG9yeSAoZGlyZWN0b3J5KQogICJDaGVjayB2YWxp ZGl0eSBvZiBUZXhpbmZvIGZpbGVzIGluIERJUkVDVE9SWS4iCiAgKGludGVyYWN0aXZlICJE Q2hlY2sgYWxsIHRleGluZm8gZmlsZXMgaW4gIikKICAobGV0ICgoZmlsZXMgKGRpcmVjdG9y eS1maWxlcyBkaXJlY3RvcnkgJ2Z1bGwpKSkKICAgIChlbGluZm8tY2xlYXItbG9nKQogICAg KHNldHEgZWxpbmZvLWZpbGVzLWNvdW50IDApCiAgICAoZG9saXN0IChmaWxlIGZpbGVzKQog ICAgICAod2hlbiAoYW5kIChzdHJpbmctZXF1YWwgKGZpbGUtbmFtZS1leHRlbnNpb24gZmls ZSkgInRleGkiKQoJCSAobm90IChiYWNrdXAtZmlsZS1uYW1lLXAgZmlsZSkpKQoJKHdpdGgt dGVtcC1idWZmZXIKCSAgKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCgkgIChlbGluZm8t Y2hlY2sgZmlsZSkKCSAgKHNldHEgZWxpbmZvLWZpbGVzLWNvdW50ICgxKyBlbGluZm8tZmls ZXMtY291bnQpKQoJICAobGV0IChtZXNzYWdlLWxvZy1tYXgpCgkgICAgKG1lc3NhZ2UgIiVz IGZpbGVzIGNoZWNrZWQiIGVsaW5mby1maWxlcy1jb3VudCkpKSkpCiAgICAoZWxpbmZvLWRp c3BsYXktbG9nKSkpCgo7OyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo7OyAJCQkJCQkJCQkJ Cjs7OwkJCU5hdmlnYXRpb24gVXRpbGl0aWVzCQkJCQkKOzsgX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KOzsgCQkJCQkJCQkJCQoKKGRlZmN1c3RvbSBlbGluZm8tbmFtZXMtYWxpc3QKICAn KCgiZWxpc3AiIC4gImxpc3ByZWYiKSAoImVtYWNzIiAuICJlbWFjcyIpKQogICJBbGlzdCBv ZiAoaW5mby1maWxlLW5hbWUgdGV4aS1zdWJkaXJlY3RvcnkpIGFzc29jaWF0aW9ucy4KSWYg ZWxpbmZvIGNhbid0IGZpbmQgYW4gYXNzb2NpYXRpb24gaXQgd2lsbCBsb29rIGluIHRoZSBc Im1pc2NcIgpzdWJkaXJlY3RvcnkuIgogIDp0eXBlICcocmVwZWF0IChncm91cCAoc3RyaW5n IDp0YWcgImluZm8tZmlsZSIgOmZvcm1hdCAiICAldDogJXYiIDpzaXplIDE1KQoJCQkoc3Ry aW5nIDp0YWcgInRleGktc3ViZGlyIiA6Zm9ybWF0ICIgICV0OiAldlxuIiA6c2l6ZSAxNSkp KQogIDpncm91cCAnZWxpbmZvKQoKKGRlZmN1c3RvbSBlbGluZm8tdGV4aS1kaXJlY3Rvcnkg KGNvbmNhdCBpbnN0YWxsYXRpb24tZGlyZWN0b3J5ICJkb2MvIikKICAiRGlyZWN0b3J5IHdo ZXJlIGRvYyBmaWxlcyByZXNpZGUuIgogIDp0eXBlICdmaWxlCiAgOmdyb3VwICdlbGluZm8p CgooZGVmdW4gZWxpbmZvLS1kZWZhdWx0LXRhZyAoKQogICJSZXR1cm4gY29ucyBob2xkaW5n IHN0YXJ0IGFuZCBuYW1lIG9mIHRhZyBuZWFyIGBwb2ludCcuIgogIChsZXQgKGZyb20gdG8g Ym91bmQpCiAgICAod2hlbiAob3IgKHByb2duCgkJOzsgTG9vayBhdCB0ZXh0IGFyb3VuZCBg cG9pbnQnLgoJCShzYXZlLWV4Y3Vyc2lvbgoJCSAgKHNraXAtY2hhcnMtYmFja3dhcmQgImEt ejAtOSIpIChzZXRxIGZyb20gKHBvaW50KSkpCgkJKHNhdmUtZXhjdXJzaW9uCgkJICAoc2tp cC1jaGFycy1mb3J3YXJkICJhLXowLTkiKSAoc2V0cSB0byAocG9pbnQpKSkKCQkoPiB0byBm cm9tKSkKCSAgICAgIDs7IExvb2sgYmV0d2VlbiBgbGluZS1iZWdpbm5pbmctcG9zaXRpb24n IGFuZCBgcG9pbnQnLgoJICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJKGFuZCAoc2V0cSBib3Vu ZCAobGluZS1iZWdpbm5pbmctcG9zaXRpb24pKQoJCSAgICAgKHNraXAtY2hhcnMtYmFja3dh cmQgIl5hLXowLTkiIGJvdW5kKQoJCSAgICAgKD4gKHNldHEgdG8gKHBvaW50KSkgYm91bmQp CgkJICAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiYS16MC05IikKCQkgICAgIChzZXRxIGZy b20gKHBvaW50KSkpKQoJICAgICAgOzsgTG9vayBiZXR3ZWVuIGBwb2ludCcgYW5kIGBsaW5l LWVuZC1wb3NpdGlvbicuCgkgICAgICAoc2F2ZS1leGN1cnNpb24KCQkoYW5kIChzZXRxIGJv dW5kIChsaW5lLWVuZC1wb3NpdGlvbikpCgkJICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJe YS16MC05IiBib3VuZCkKCQkgICAgICg8IChzZXRxIGZyb20gKHBvaW50KSkgYm91bmQpCgkJ ICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJhLXowLTkiKQoJCSAgICAgKHNldHEgdG8gKHBv aW50KSkpKSkKICAgICAgKGNvbnMgZnJvbSAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0 aWVzIGZyb20gdG8pKSkpKQoKKGRlZmNvbnN0IGVsaW5mby1hdC1yZWdleHAgIlxcKD86XFwo PzpAW2Etel0re1xcfFt9YCdcIl86XSpcXCkqWyBcdFxuXSpcXCkiCiAgIlJlZ2V4cCBzdXBw b3NlZCB0byBtYXRjaCBUZXhpbmZvIGNvbnN0cnVjdHMgdGhhdCBzZXBhcmF0ZSBpdGVtcy4i KQoKOzsgVHdvIGdsb2JhbHMsIGluaXRpYWxpemVkIGluIGBlbGluZm8tZ290by10ZXhpJyBh bmQgdXBkYXRlZCBieQo7OyBgZWxpbmZvLS11cGRhdGUtcmVnZXhwJy4KKGRlZnZhciBlbGlu Zm8tZnJvbSBuaWwpCihkZWZ2YXIgZWxpbmZvLXJlZ2V4cCBuaWwpCgooZGVmdW4gZWxpbmZv LS1tYWtlLXJlZ2V4cCAoZnJvbSB0bykKICAiUmV0dXJuIGJ1ZmZlciB0ZXh0IGZyb20gRlJP TSB0byBUTyBhcyByZWdleHAuIgogIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcKICAgIlsg XHRdKyIgIlsgXHRcbl0rIgogICAgKHJlZ2V4cC1xdW90ZQogICAgIChkb3duY2FzZQogICAg ICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGZyb20gdG8pKSkgbmlsIHQpKQoK KGRlZnVuIGVsaW5mby0tbWFrZS1yZWdleHAtMiAoZnJvbSB0bykKICAiUmV0dXJuIGJ1ZmZl ciB0ZXh0IGZyb20gRlJPTSB0byBUTyBhcyBUZXhpbmZvaXNoIHJlZ2V4cC4iCiAgKHJlcGxh Y2UtcmVnZXhwLWluLXN0cmluZwogICAiQFxcKFtAe31dXFwpIiAobGFtYmRhIChzdHJpbmcp IChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAxIHN0cmluZykpCiAgIChlbGluZm8tLW1h a2UtcmVnZXhwIGZyb20gdG8pKSkKCihkZWZ1biBlbGluZm8tLXVwZGF0ZS1yZWdleHAgKCZv cHRpb25hbCByZXN0KQogIChzZXRxIGVsaW5mby1yZWdleHAKCShjb25jYXQKCSBlbGluZm8t cmVnZXhwCgkgKGVsaW5mby0tbWFrZS1yZWdleHAgZWxpbmZvLWZyb20gKG1hdGNoLWJlZ2lu bmluZyAwKSkKCSAodW5sZXNzICg9IGVsaW5mby1mcm9tIChtYXRjaC1iZWdpbm5pbmcgMCkp CgkgICBlbGluZm8tYXQtcmVnZXhwKQoJICh3aGVuIHJlc3QKCSAgIChjb25jYXQgcmVzdCBl bGluZm8tYXQtcmVnZXhwKSkpKSkKCihkZWZjb25zdCBlbGluZm8taW5mby1yZWdleHAKICAi XFwoLS0gXFwoPzpGdW5jdGlvblxcfENvbW1hbmRcXHxWYXJpYWJsZVxcfE1hY3JvXFx8U3Bl Y2lhbCBGb3JtXFx8VXNlciBPcHRpb25cXHxTeW50YXggY2xhc3NcXCk6IFxcKVwKXFx8XFwo PzpcXChcXCpOb3RlXFwpXFx8XFwoOjpcXClcXHxcXCpcXChXYXJuaW5nOlxcKVxcKlxcKVsg XSpcXHxbYF0qPFxcKFtBLVowLTldK1xcKT5bJ10qXApcXHxcXChcXCg/OkxhXFwpP1RlWFxc fChbQ1JdKVxcfEV1cm9cXClcXHxcXChbYF0qXFwoW0EtWjAtOV0rXFwpWyddKlxcKVxcfFxc KFtgXSpcXChbYS16MC05XStcXClbJ10qXFwpXApcXHxcXChbIFx0XG5dK1xcKVxcfFxcKFtg J1wiX10rXFwpXFx8XFwoLStcXClcXHxcXChcXC5bLl0rXFwpXApcXHxcXChcXCg/OmVycm9y XFwpP1stLiE9PnwqI11bLS4hPT58KiNdK1xcKVxcfFxcKFt7fV1cXCkiCiAgIlRoZSBiYXNp YyByZWdleHAgdXNlZCBieSBgZWxpbmZvLWdvdG8tdGV4aScuIikKCjs7IFVzZWQgZm9yIHRl c3Rpbmcgb25seSBzbyBSRU1PVkUgaXQuCihkZWZ2YXIgZWxpbmZvLXRlc3QtdGV4aS13aW5k b3cgbmlsKQoKKGRlZnVuIGVsaW5mby1nb3RvLXRleGkgKCkKICAiSW4gYEluZm8tbW9kZScg ZGlzcGxheSBjb3JyZXNwb25kaW5nIFRleGluZm8gdGV4dCBpbiBvdGhlciB3aW5kb3cuCklm IGludm9raW5nIHRoaXMgY29tbWFuZCBkb2Vzbid0IGdldCB5b3UgdG8gdGhlIGRlc2lyZWQg cG9zaXRpb24KaW4gdGhlIFRleGluZm8gYnVmZmVyLCB5b3UgbWlnaHQgdHJ5IHRvIGludm9r ZSBpdCBmcm9tIGEgcG9zaXRpb24Kb25lIGxpbmUgYWJvdmUgb3IgYmVsb3cgdGhlIGN1cnJl bnQgb25lIGluIHRoZSBJbmZvIGJ1ZmZlci4iCiAgKGludGVyYWN0aXZlKQogICh1bmxlc3Mg KGVxIG1ham9yLW1vZGUgJ0luZm8tbW9kZSkKICAgIChlcnJvciAiVGhpcyBmdW5jdGlvbiBj YW4gYmUgaW52b2tlZCBpbiBJbmZvLW1vZGUgb25seSIpKQogIChsZXQqICgoaW5mby13aW5k b3cgKHNlbGVjdGVkLXdpbmRvdykpCgkgKHdpbmRvdy1wb2ludCAod2luZG93LXBvaW50KSkK CSAoaW5mby1maWxlLW5hbWUKCSAgKHdoZW4gKGJvdW5kcCAnSW5mby1jdXJyZW50LWZpbGUp CgkgICAgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgSW5mby1jdXJyZW50LWZpbGUpKSkKCSAo dGFnCgkgICh3aGVuIChib3VuZHAgJ0luZm8tY3VycmVudC1ub2RlKQoJICAgIEluZm8tY3Vy cmVudC1ub2RlKSkKCSAodGV4aS1zdWJkaXIKCSAgKHdoZW4gaW5mby1maWxlLW5hbWUKCSAg ICAobGV0ICgoY2VsbCAoYXNzb2MgaW5mby1maWxlLW5hbWUgZWxpbmZvLW5hbWVzLWFsaXN0 KSkpCgkgICAgICAoaWYgY2VsbCAoY2RyIGNlbGwpICJtaXNjIikpKSkKCSAoYXQgKHBvaW50 KSkKCSAob2Zmc2V0IDApCgkgdGV4aS1kaXIgdGV4aS1maWxlIHRhZ3MtZmlsZS1uYW1lCgkg ZGVmYXVsdC10YWcgYW5jaG9yIHJlcGVhdCBmcm9tIHRvCgkgY2FzZS1mb2xkLXNlYXJjaCkK ICAgIChjb25kCiAgICAgKChub3QgdGV4aS1zdWJkaXIpCiAgICAgIChlcnJvciAiQ2FuJ3Qg aWRlbnRpZnkgdGV4aW5mbyBzdWJkaXJlY3RvcnkiKSkKICAgICAoKGZpbGUtZXhpc3RzLXAK ICAgICAgIChzZXRxIHRleGktZGlyIChjb25jYXQgZWxpbmZvLXRleGktZGlyZWN0b3J5IHRl eGktc3ViZGlyICIvIikpKSkKICAgICAodAogICAgICAoZXJyb3IgIkNhbid0IGZpbmQgdGV4 aW5mbyBzdWJkaXJlY3RvcnkiKSkpCgogICAgOzsgU2lnaCAuLi4KICAgIChzYXZlLWV4Y3Vy c2lvbgogICAgICA7OyBNb3ZlIGF3YXkgZnJvbSBlbXB0eSBsaW5lcy4KICAgICAgKHNhdmUt ZXhjdXJzaW9uCgkoYmVnaW5uaW5nLW9mLWxpbmUpCgkod2hlbiAobG9va2luZy1hdCAiWyBc dF0qJCIpCgkgIChsZXQgKChwcmV2LWF0CgkJIChwcm9nbgoJCSAgIChza2lwLWNoYXJzLWJh Y2t3YXJkICIgXHRcbiIpCgkJICAgKHVubGVzcyAoYm9icCkKCQkgICAgIChwb2ludCkpKSkK CQkobmV4dC1hdAoJCSAocHJvZ24KCQkgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbiIp CgkJICAgKHVubGVzcyAoZW9icCkKCQkgICAgIChwb2ludCkpKSkpCgkgICAgKHNldHEgYXQK CQkgIChjb25kCgkJICAgKChhbmQgcHJldi1hdCBuZXh0LWF0KQoJCSAgICAoaWYgKD4gKC0g YXQgcHJldi1hdCkgKC0gbmV4dC1hdCBhdCkpIG5leHQtYXQgcHJldi1hdCkpCgkJICAgKHBy ZXYtYXQgcHJldi1hdCkKCQkgICAobmV4dC1hdCBuZXh0LWF0KSkpKSkpCiAgICAgIChnb3Rv LWNoYXIgYXQpCiAgICAgIChzZXRxIGZyb20gKHByb2duCgkJICAgKGJlZ2lubmluZy1vZi1s aW5lKQoJCSAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCgkJICAgKHBvaW50KSkpCiAg ICAgIChzZXRxIHRvIChwcm9nbgoJCSAoZW5kLW9mLWxpbmUpCgkJIChza2lwLWNoYXJzLWJh Y2t3YXJkICIgXHQiKQoJCSAocG9pbnQpKSkKICAgICAgOzsgVHJ5IHRvIGhhbmRsZSBhbiB4 cmVmIHRoYXQgc3BhbnMgdGhlIGJlZ2lubmluZyBvZiB0aGlzIGxpbmUuCiAgICAgIDs7IFRo aXMgd2lsbCBwdXQgdXMgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBpbiB0aGUgdGV4aSBidWZmZXIs IGJ1dAogICAgICA7OyB0aGF0J3Mgc3RpbGwgYmV0dGVyIHRoYW4gZ2V0dGluZyB0byB0aGUg aGVhZCBvZiB0aGUgc2VjdGlvbi4KICAgICAgKHdoZW4gKHNhdmUtZXhjdXJzaW9uCgkgICAg ICAoZ290by1jaGFyIGZyb20pCgkgICAgICAoYW5kIChyZS1zZWFyY2gtYmFja3dhcmQKCQkg ICAgIlxcKltObl1vdGUiIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbiAwKSB0KQoJCSAgIChu b3QgKHJlLXNlYXJjaC1mb3J3YXJkICJbLixdXFx8OjoiIGZyb20gdCkpKSkKCShnb3RvLWNo YXIgZnJvbSkKCShyZS1zZWFyY2gtZm9yd2FyZCAiOjpcXHxcXChbLixdKT9cXCkiIHRvIHQp Cgkod2hlbiAobWF0Y2gtYmVnaW5uaW5nIDEpCgkgIDs7IEZvdW5kIGEgY2xvc2luZyBgLicg b3IgYCwnIHNvIHJlbG9jYXRlIGBmcm9tJy4KCSAgKHNldHEgZnJvbSAocG9pbnQpKQoJICAo c2V0cSBhdCAobWF4IGZyb20gYXQpKSkpCgogICAgICAoZ290by1jaGFyIGF0KQogICAgICAo d2hlbiAoc2V0cSBkZWZhdWx0LXRhZyAoZWxpbmZvLS1kZWZhdWx0LXRhZykpCgkoc2V0cSBv ZmZzZXQgKC0gYXQgKGNhciBkZWZhdWx0LXRhZykpKQoJKHNldHEgYW5jaG9yIChjZHIgZGVm YXVsdC10YWcpKQoJKHNhdmUtZXhjdXJzaW9uCgkgIChnb3RvLWNoYXIgZnJvbSkKCSAgKGNh dGNoICdkb25lCgkgICAgKGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggdCkpCgkgICAgICAod2hp bGUgKHJlLXNlYXJjaC1mb3J3YXJkIGFuY2hvciBuaWwgdCkKCQkoaWYgKD0gKG1hdGNoLWJl Z2lubmluZyAwKSAoY2FyIGRlZmF1bHQtdGFnKSkKCQkgICAgKHRocm93ICdkb25lIHQpCgkJ ICAoc2V0cSByZXBlYXQKCQkJKGlmIHJlcGVhdCAoMSsgcmVwZWF0KSAyKSkpKSkpKSkKCiAg ICAgIChnb3RvLWNoYXIgKHNldHEgZWxpbmZvLWZyb20gZnJvbSkpCiAgICAgIChzZXRxIGVs aW5mby1yZWdleHAgbmlsKQogICAgICA7OyBTY2FuIGxpbmUuCiAgICAgICh3aGlsZSAocmUt c2VhcmNoLWZvcndhcmQgZWxpbmZvLWluZm8tcmVnZXhwIHRvIHQpCgkoY29uZAoJICgobWF0 Y2gtYmVnaW5uaW5nIDEpKQkJCTsgLS0gRnVuY3Rpb246IC4uLgoJICgobWF0Y2gtYmVnaW5u aW5nIDIpCQkJOyAqTm90ZQoJICAoZWxpbmZvLS11cGRhdGUtcmVnZXhwKQoJICAobGV0ICgo ZnJvbS0xIChwb2ludCkpCgkJdG8tMSkKCSAgICAoaWYgKHJlLXNlYXJjaC1mb3J3YXJkICI6 IiB0byB0KQoJCShwcm9nbgoJCSAgKHNldHEgdG8tMSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJ CSAgKGlmIChsb29raW5nLWF0LXAgIjoiKQoJCSAgICAgIDs7IDo6IGlzIGhhbmRsZWQgYnkg bWFpbiBsb29wLCByZXNjYW4uCgkJICAgICAgKGdvdG8tY2hhciBmcm9tLTEpCgkJICAgIDs7 IEEgY29tcGxleCB4cmVmLCBoYW5kbGUgaXQgaGVyZS4KCQkgICAgKHNldHEgZWxpbmZvLXJl Z2V4cAoJCQkgIChjb25jYXQgZWxpbmZvLXJlZ2V4cCA7IEZvcmNlIGEgYHsnIGhlcmU/CgkJ CQkgICJbYS16QS1aLCBcdFxuXSoiCgkJCQkgIChlbGluZm8tLW1ha2UtcmVnZXhwIGZyb20t MSB0by0xKQoJCQkJICAiW2EtekEtWiwgXHRcbl0qfSIpKQoJCSAgICA7OyBRdWl0IGxvb3Au CgkJICAgIChzZXRxIGZyb20gdG8pCgkJICAgIChnb3RvLWNoYXIgdG8pKSkKCSAgICAgIChz ZXRxIGVsaW5mby1yZWdleHAKCQkgICAgKGNvbmNhdCBlbGluZm8tcmVnZXhwCTsgRm9yY2Ug YSBgeycgaGVyZT8KCQkJICAgICJbYS16QS1aLCBcdFxuXSoiCgkJCSAgICAoZWxpbmZvLS1t YWtlLXJlZ2V4cCBmcm9tLTEgdG8pCgkJCSAgICAiW2EtekEtWiwgXHRcbl0qfSIpKQoJICAg ICAgOzsgUXVpdCBsb29wLgoJICAgICAgKHNldHEgZnJvbSB0bykKCSAgICAgIChnb3RvLWNo YXIgdG8pKSkpCgkgKChtYXRjaC1iZWdpbm5pbmcgMykJCQk7IDo6CgkgIChlbGluZm8tLXVw ZGF0ZS1yZWdleHApKQoJICgobWF0Y2gtYmVnaW5uaW5nIDQpCQkJOyAqV2FybmluZzoqCgkg IChlbGluZm8tLXVwZGF0ZS1yZWdleHApKQoJICgobWF0Y2gtYmVnaW5uaW5nIDUpCQkJOyBg PEtFWT4nCgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHAKCSAgIChlbGluZm8tLW1ha2UtcmVn ZXhwIChtYXRjaC1iZWdpbm5pbmcgNSkgKG1hdGNoLWVuZCA1KSkpKQoJICgobWF0Y2gtYmVn aW5uaW5nIDYpCgkgIChlbGluZm8tLXVwZGF0ZS1yZWdleHAKCSAgIChjb25jYXQgIkA/IiAo bWF0Y2gtc3RyaW5nLW5vLXByb3BlcnRpZXMgNikgIlxcKD86W3t9XStcXCk/IikpKQoJICgo bWF0Y2gtYmVnaW5uaW5nIDcpCQkJOyBVcHBlci1jYXNlIHN0cmluZy4KCSAgKGVsaW5mby0t dXBkYXRlLXJlZ2V4cAoJICAgKGVsaW5mby0tbWFrZS1yZWdleHAgKG1hdGNoLWJlZ2lubmlu ZyA4KSAobWF0Y2gtZW5kIDgpKSkpCgkgKChtYXRjaC1iZWdpbm5pbmcgOSkJCQk7IExvd2Vy LWNhc2Ugc3RyaW5nLgoJICAoZWxpbmZvLS11cGRhdGUtcmVnZXhwCgkgICAoZWxpbmZvLS1t YWtlLXJlZ2V4cCAobWF0Y2gtYmVnaW5uaW5nIDEwKSAobWF0Y2gtZW5kIDEwKSkpKQoJICgo bWF0Y2gtYmVnaW5uaW5nIDExKQkJCTsgV2hpdGVzcGFjZQoJICAoZWxpbmZvLS11cGRhdGUt cmVnZXhwICJbIFx0XG5dKyIpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDEyKQkJCTsgYCciCgkg IChlbGluZm8tLXVwZGF0ZS1yZWdleHApKQoJICgobWF0Y2gtYmVnaW5uaW5nIDEzKQkJCTsg LS0KCSAgKGVsaW5mby0tdXBkYXRlLXJlZ2V4cCAiWy1dKyIpKQoJICgobWF0Y2gtYmVnaW5u aW5nIDE0KQkJCTsgLi4KCSAgKGVsaW5mby0tdXBkYXRlLXJlZ2V4cCAiXFwoPzpcXC5bLl0r XFx8QGRvdHN7fVxcKSIpKQoJICgobWF0Y2gtYmVnaW5uaW5nIDE1KQkJCTsgPT4KCSAgKGVs aW5mby0tdXBkYXRlLXJlZ2V4cAoJICAgKGNvbmNhdAoJICAgICJcXCg/OkBbYS16XSt7fVxc KVxcfCIKCSAgICAoZWxpbmZvLS1tYWtlLXJlZ2V4cCAobWF0Y2gtYmVnaW5uaW5nIDE1KSAo bWF0Y2gtZW5kIDE1KSkpKSkKCSAoKG1hdGNoLWJlZ2lubmluZyAxNikJCQk7IHsgb3IgfQoJ ICAoZWxpbmZvLS11cGRhdGUtcmVnZXhwCgkgICAoY29uY2F0ICJAPyIgKG1hdGNoLXN0cmlu Zy1uby1wcm9wZXJ0aWVzIDE2KSBlbGluZm8tYXQtcmVnZXhwKSkpCgkgOzsgRnV0dXJlIGFk ZGl0aW9ucyBnbyBoZXJlLgoJICkKCShzZXRxIGVsaW5mby1mcm9tIChwb2ludCkpKQogICAg ICAoc2V0cSBlbGluZm8tcmVnZXhwCgkgICAgKGNvbmNhdCBlbGluZm8tcmVnZXhwIChlbGlu Zm8tLW1ha2UtcmVnZXhwIGVsaW5mby1mcm9tIHRvKSkpKQoKICAgIChpZiAobm90IChmaWxl LWV4aXN0cy1wCgkgICAgICAoc2V0cSB0YWdzLWZpbGUtbmFtZSAoY29uY2F0IHRleGktZGly ICJUQUdTIikpKSkKCShlcnJvciAiTm8gdGFncyBmaWxlIGZvdW5kIikKICAgICAgKGZpbmQt dGFnLW90aGVyLXdpbmRvdyAoY29uY2F0ICJeQG5vZGUgIiB0YWcgIlt/LF0iKSBuaWwgdCkK CiAgICAgIDs7IFVzZWQgZm9yIHRlc3Rpbmcgb25seSBzbyBSRU1PVkUgaXQuCiAgICAgIChz ZXRxIGVsaW5mby10ZXN0LXRleGktd2luZG93IChzZWxlY3RlZC13aW5kb3cpKQoKICAgICAg KGxldCAoKGNhc2UtZm9sZC1zZWFyY2ggdCkpCgkod2hlbiBlbGluZm8tcmVnZXhwCgkgICh3 aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKnRlc3QqIikKCSAgICAo ZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKCSAgICAoaW5zZXJ0IGVs aW5mby1yZWdleHApKQoJICAobGV0ICgoYXQgKHBvaW50KSkpCgkgICAgKGNvbmQKCSAgICAg KChhbmQgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQgIlxcKCIgZWxpbmZvLXJlZ2V4cCAi XFwpXFx8Xm5vZGUiKSBuaWwgdCkKCQkgICAobWF0Y2gtYmVnaW5uaW5nIDEpKQoJICAgICAg KGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDEpKQoJICAgICAgKHNhdmUtcmVzdHJpY3Rp b24KCQkod2lkZW4pCgkJKG5hcnJvdy10by1yZWdpb24gKG1hdGNoLWJlZ2lubmluZyAxKSAo bWF0Y2gtZW5kIDEpKQoJCSh3aGVuIChhbmQgYW5jaG9yIChyZS1zZWFyY2gtZm9yd2FyZCBh bmNob3IgbmlsIHQgcmVwZWF0KSkKCQkgIChnb3RvLWNoYXIgKCsgKG1hdGNoLWJlZ2lubmlu ZyAwKSBvZmZzZXQpKSkpKQoJICAgICAodAoJICAgICAgKGdvdG8tY2hhciBhdCkpKSkpKSkK CiAgICAoc2V0LXdpbmRvdy1wb2ludCBpbmZvLXdpbmRvdyB3aW5kb3ctcG9pbnQpCiAgICA7 OyBUaGUgZm9sbG93aW5nIG1pZ2h0IGdldCByZW1vdmVkLgogICAgKHNlbGVjdC13aW5kb3cg aW5mby13aW5kb3cpCiAgICApKQoKKGRlZmNvbnN0IGVsaW5mby10ZXhpLWdseXBoLXJlZ2V4 cAogIChyZWdleHAtb3B0CiAgICcoImRvdHMiICJlbmRkb3RzIiAiYnVsbGV0IiAibWludXMi ICJyZXN1bHQiICJleHBhbnNpb24iCiAgICAgInByaW50IiAiZXJyb3IiICJlcXVpdiIgInBv aW50IiAiY29weXJpZ2h0IgogICAgICJyZWdpc3RlcmVkc3ltYm9sIiAiZXVybyIgInBvdW5k cyIgIkxhVGVYIiAiVGVYIikpCiAgIlJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgZ2x5cGhzIGlu IHRleGkgYnVmZmVycy4iKQoKKGRlZmNvbnN0IGVsaW5mby10ZXhpLXJlZ2V4cAogIChjb25j YXQKICAgIkBkZWZcXCh1blxcfGZuIENvbW1hbmRcXHx2YXJcXHxtYWNyb1xcfHNwZWNcXHxv cHRcXClbIFx0XStcClxcfFxcKD86QHA/eHJlZntcXChbXn1dK1xcKVxcKD86fVxcfCRcXClc XClcXHxAXFwoPzpzdHJvbmdcXHxlbXBoXFwpe1xcKFtefV0rXFwpfVwKXFx8XFwoQCIgZWxp bmZvLXRleGktZ2x5cGgtcmVnZXhwICJ7fVxcKVxcfFxcKD86QGRmbntcXChbXn1dK1xcKX1c XClcClxcfFxcKEBbYS16XSt7XFwpXFx8XFwofVxcKVxcfFxcKFsgXHRdK1xcKVxcfFxcKFtg J1wiXVtgJ1wiXStcXCkiKQogICJUaGUgYmFzaWMgcmVnZXhwIHVzZWQgYnkgYGVsaW5mby1n b3RvLWluZm8nLiIpCgooZGVmdW4gZWxpbmZvLWdvdG8taW5mbyAoKQogICJJbiBgdGV4aW5m by1tb2RlJyBkaXNwbGF5IGNvcnJlc3BvbmRpbmcgSW5mbyBub2RlIGluIG90aGVyIHdpbmRv dy4KSWYgaW52b2tpbmcgdGhpcyBjb21tYW5kIGRvZXNuJ3QgZ2V0IHlvdSB0byB0aGUgZGVz aXJlZCBwb3NpdGlvbgppbiB0aGUgSW5mbyBidWZmZXIsIHlvdSBtaWdodCB0cnkgdG8gaW52 b2tlIGl0IGZyb20gYSBwb3NpdGlvbgpvbmUgbGluZSBhYm92ZSBvciBiZWxvdyB0aGUgY3Vy cmVudCBvbmUgaW4gdGhlIFRleGluZm8gYnVmZmVyLiIKICAoaW50ZXJhY3RpdmUpCiAgKHVu bGVzcyAoZXEgbWFqb3ItbW9kZSAndGV4aW5mby1tb2RlKQogICAgKGVycm9yICJUaGlzIGZ1 bmN0aW9uIGNhbiBiZSBpbnZva2VkIGluIHRleGluZm8tbW9kZSBvbmx5IikpCiAgKGxldCog KCh0ZXhpLXdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSkKCSAod2luZG93LXBvaW50ICh3aW5k b3ctcG9pbnQpKQoJIChpbmZvLW5vZGUtMwoJICAoc2F2ZS1leGN1cnNpb24KCSAgICAod2hl biAocmUtc2VhcmNoLWJhY2t3YXJkICJeQG5vZGUgXFwoWy1hLXpBLVogXStcXCkiIG5pbCB0 KQoJICAgICAgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpKSkpCgkgKGluZm8tbm9k ZS0yCgkgIChzYXZlLWV4Y3Vyc2lvbgoJICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkg ICAgKHdoZW4gKHJlLXNlYXJjaC1mb3J3YXJkICJeQG5vZGUgXFwoWy1hLXpBLVogXStcXCki IG5pbCB0KQoJICAgICAgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDEpKSkpCgkgKGlu Zm8tbm9kZS0xCgkgIDs7IElmIHdlIGNhbid0IGZpbmQgYW4gYXNzb2NpYXRpb24sIGBpbmZv LW90aGVyLXdpbmRvdycgd2lsbAoJICA7OyBzdGFydCBhdCB0aGUgdG9wIG5vZGUuCgkgIChj YXIgKHJhc3NvYwoJCShmaWxlLW5hbWUtbm9uZGlyZWN0b3J5CgkJIChkaXJlY3RvcnktZmls ZS1uYW1lCgkJICAoZmlsZS1uYW1lLWRpcmVjdG9yeSBidWZmZXItZmlsZS1uYW1lKSkpCgkJ ZWxpbmZvLW5hbWVzLWFsaXN0KSkpCgkgKG9mZnNldCAwKQoJIHJlZ2V4cCBkZWZhdWx0LXRh ZyBhbmNob3IgcmVwZWF0CgkgY2FzZS1mb2xkLXNlYXJjaCkKCiAgICAoc2F2ZS1leGN1cnNp b24KICAgICAgOzsgVXNlIGJydXRlIGZvcmNlLgogICAgICAod2hpbGUgKHNhdmUtZXhjdXJz aW9uCgkgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQoJICAgICAgIChvciAobG9va2luZy1h dCAiWyBcdF0qXG5cXHxAYW5jaG9yeyIpCgkJICAgKGFuZCAobG9va2luZy1hdCAiQFthLXpd K1xcKD86IFxcfCRcXCkiKQoJCQkobm90IChsb29raW5nLWF0ICJAZGVmXFwodW5cXHxmbiBD b21tYW5kXFx8dmFyXFx8bWFjcm9cXHxzcGVjXFx8b3B0XFwpIikpKSkpCgkoZm9yd2FyZC1s aW5lKSkKICAgICAgKGxldCAoKGF0IChwb2ludCkpCgkgICAgIChmcm9tIChwcm9nbgoJCSAg ICAgKGJlZ2lubmluZy1vZi1saW5lKQoJCSAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0 IikKCQkgICAgIChwb2ludCkpKQoJICAgICAodG8gKHByb2duCgkJICAgKGVuZC1vZi1saW5l KQoJCSAgIChza2lwLWNoYXJzLWJhY2t3YXJkICIgXHQiKQoJCSAgIChwb2ludCkpKSkKCgk7 OyBHZXQgb3V0IG9mIGFueSByZWZlcmVuY2UgYXQgQk9MLCB3ZSBjYW4ndCB0cmFjZSBpdCBh bnl3YXkuCgkoY29uZGl0aW9uLWNhc2UgbmlsCgkgICAgKGFuZCAocHJvZ24KCQkgICAoZ290 by1jaGFyIGZyb20pCgkJICAgKHVwLWxpc3QgLTEpCgkJICAgKGxvb2tpbmctYXQgInsiKSkK CQkgKGxvb2tpbmctYmFjayAieHJlZiIpCgkJIChwcm9nbgoJCSAgIChmb3J3YXJkLXNleHAp CgkJICAgKHNldHEgZnJvbSAocG9pbnQpKQoJCSAgIChzZXRxIGF0IChtYXggYXQgZnJvbSkp KSkKCSAgKGVycm9yIG5pbCkpCgoJKGdvdG8tY2hhciAobWF4IGF0IGZyb20pKQoJKHdoZW4g KHNldHEgZGVmYXVsdC10YWcgKGVsaW5mby0tZGVmYXVsdC10YWcpKQoJICAoc2V0cSBvZmZz ZXQgKC0gYXQgKGNhciBkZWZhdWx0LXRhZykpKQoJICAoc2V0cSBhbmNob3IgKGNkciBkZWZh dWx0LXRhZykpCgkgIChzYXZlLWV4Y3Vyc2lvbgoJICAgIChnb3RvLWNoYXIgZnJvbSkKCSAg ICAoY2F0Y2ggJ2RvbmUKCSAgICAgIChsZXQgKChjYXNlLWZvbGQtc2VhcmNoIHQpKQoJCSh3 aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgYW5jaG9yIG5pbCB0KQoJCSAgKGlmICg9IChtYXRj aC1iZWdpbm5pbmcgMCkgKGNhciBkZWZhdWx0LXRhZykpCgkJICAgICAgKHRocm93ICdkb25l IHQpCgkJICAgIChzZXRxIHJlcGVhdAoJCQkgIChpZiByZXBlYXQgKDErIHJlcGVhdCkgMikp KSkpKSkpCgoJKGdvdG8tY2hhciBmcm9tKQoJOzsgU2NhbiBsaW5lLgoJKHdoaWxlIChyZS1z ZWFyY2gtZm9yd2FyZCBlbGluZm8tdGV4aS1yZWdleHAgdG8gdCkKCSAgKGNvbmQKCSAgICgo bWF0Y2gtYmVnaW5uaW5nIDEpKQoJICAgKChtYXRjaC1iZWdpbm5pbmcgMikJCQk7IEBwP3hy ZWYKCSAgICAob3IgKGFuZCAoc2F2ZS1leGN1cnNpb24KCQkgICAgICAgKGdvdG8tY2hhciAo bWF0Y2gtZW5kIDIpKQoJCSAgICAgICAoYW5kIChzYXZlLW1hdGNoLWRhdGEKCQkJICAgICAg OzsgQSBjb21tYSB3aXRoaW4gdGhlIGJyYWNlcyBzdGFuZHMgZm9yIGEKCQkJICAgICAgOzsg Y29tcGxleCByZWZlcmVuY2UuCgkJCSAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIiwiICht YXRjaC1iZWdpbm5pbmcgMikgdCkpCgkJCSAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRc biwiKQoJCQkgICAgKHNldHEgcmVnZXhwCgkJCQkgIChjb25jYXQKCQkJCSAgIHJlZ2V4cAoJ CQkJICAgKGVsaW5mby0tbWFrZS1yZWdleHAtMiBmcm9tIChtYXRjaC1iZWdpbm5pbmcgMCkp CgkJCQkgICAiXFwqbm90ZVsgXHRcbl0qIgoJCQkJICAgKGVsaW5mby0tbWFrZS1yZWdleHAt MiAocG9pbnQpIChtYXRjaC1lbmQgMikpKSkpKQoJCSAgICAgOzsgTGVhdmUgbWFpbiBsb29w LgoJCSAgICAgKHNldHEgZnJvbSB0bykKCQkgICAgIChnb3RvLWNoYXIgdG8pKQoJCShzZXRx IHJlZ2V4cAoJCSAgICAgIChjb25jYXQKCQkgICAgICAgcmVnZXhwIChlbGluZm8tLW1ha2Ut cmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgICAgICAiXFwqbm90ZVsg XHRcbl0qIgoJCSAgICAgICAoZWxpbmZvLS1tYWtlLXJlZ2V4cC0yIChtYXRjaC1iZWdpbm5p bmcgMikgKG1hdGNoLWVuZCAyKSkKCQkgICAgICAgIjo6WyBcdFxuXSoiKSkpKQoJICAgKCht YXRjaC1iZWdpbm5pbmcgMykJCQk7IEBzdHJvbmcgb3IgQGVtcGgKCSAgICAoc2V0cSByZWdl eHAKCQkgIChjb25jYXQKCQkgICByZWdleHAgKGVsaW5mby0tbWFrZS1yZWdleHAtMiBmcm9t IChtYXRjaC1iZWdpbm5pbmcgMCkpCgkJICAgIlsqX10iIChlbGluZm8tLW1ha2UtcmVnZXhw LTIgKG1hdGNoLWJlZ2lubmluZyAzKSAobWF0Y2gtZW5kIDMpKQoJCSAgICJbKl9dWyBcdFxu XSoiKSkpCgkgICAoKG1hdGNoLWJlZ2lubmluZyA0KQkJCTsgU29tZSBzb3J0IG9mIGdseXBo CgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0CgkJICAgcmVnZXhwIChlbGluZm8tLW1h a2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgICJcXCg/OlxcKD86 ZXJyb3JcXCk/Wy0uIT0+fCpdWy0uIT0+fCpdK1xcfFxcKD86TGFcXCk/VGVYXFx8KFtDUl0p XFx8RXVyb1xcfCNcXClbIFx0XG5dKiIpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDUpCQkJ OyBAZGZuCgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0CgkJICAgcmVnZXhwIChlbGlu Zm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgICJcIiIg KGVsaW5mby0tbWFrZS1yZWdleHAtMiAobWF0Y2gtYmVnaW5uaW5nIDUpIChtYXRjaC1lbmQg NSkpCgkJICAgIlwiIikpKQoJICAgKChtYXRjaC1iZWdpbm5pbmcgNikJCQk7IEAuLi57Cgkg ICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0CgkJICAgcmVnZXhwIChlbGluZm8tLW1ha2Ut cmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgICJgPyIpKSkKCSAgICgo bWF0Y2gtYmVnaW5uaW5nIDcpCQkJOyB9CgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0 CgkJICAgcmVnZXhwIChlbGluZm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5u aW5nIDApKQoJCSAgICInPyIpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDgpCQkJOyB3aGl0 ZXNwYWNlCgkgICAgKHNldHEgcmVnZXhwCgkJICAoY29uY2F0CgkJICAgcmVnZXhwIChlbGlu Zm8tLW1ha2UtcmVnZXhwLTIgZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKQoJCSAgICJbIFx0 XG5dKiIpKSkKCSAgICgobWF0Y2gtYmVnaW5uaW5nIDkpCQk7IHF1b3RlcyBsaWtlIGBgLi4u JycKCSAgICAoc2V0cSByZWdleHAKCQkgIChjb25jYXQKCQkgICByZWdleHAgKGVsaW5mby0t bWFrZS1yZWdleHAtMiBmcm9tIChtYXRjaC1iZWdpbm5pbmcgMCkpCgkJICAgIltgJ1wiXSsi KSkpCgkgICApCQkJCSAgICAgOyBGdXR1cmUgYWRkaXRpb25zIGdvIGhlcmUuCgkgIChzZXRx IGZyb20gKHBvaW50KSkpCgkoc2V0cSByZWdleHAKCSAgICAgIChjb25jYXQgcmVnZXhwIChl bGluZm8tLW1ha2UtcmVnZXhwLTIgZnJvbSB0bykpKSkpCgogICAgKGluZm8tb3RoZXItd2lu ZG93IGluZm8tbm9kZS0xKQogICAgKEluZm8tZ290by1ub2RlIGluZm8tbm9kZS0yKQogICAg KHdoZW4gaW5mby1ub2RlLTMKICAgICAgKEluZm8tZ290by1ub2RlIGluZm8tbm9kZS0zKSkK CiAgICAobGV0ICgoY2FzZS1mb2xkLXNlYXJjaCB0KSkKICAgICAgKHdoZW4gcmVnZXhwCgko d2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIip0ZXN0KiIpCgkgIChk ZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpKQoJICAoaW5zZXJ0IHJlZ2V4 cCkpCgkobGV0ICgoYXQgKHBvaW50KSkpCgkgIChjb25kCgkgICA7OyBXZSBjb3VsZCBhZGQg bmFtZSBhZnRlciBGaWxlOiBiZWxvdy4KCSAgICgoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCAo Y29uY2F0ICJcXCgiIHJlZ2V4cCAiXFwpXFx8XkZpbGU6ICIpIG5pbCB0KQoJCSAobWF0Y2gt YmVnaW5uaW5nIDEpKQoJICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkKCSAg ICAoc2F2ZS1yZXN0cmljdGlvbgoJICAgICAgKHdpZGVuKQoJICAgICAgKG5hcnJvdy10by1y ZWdpb24gKG1hdGNoLWJlZ2lubmluZyAxKSAobWF0Y2gtZW5kIDEpKQoJICAgICAgKHdoZW4g KGFuZCBhbmNob3IgKHJlLXNlYXJjaC1mb3J3YXJkIGFuY2hvciBuaWwgdCByZXBlYXQpKQoJ CShnb3RvLWNoYXIgKCsgKG1hdGNoLWJlZ2lubmluZyAwKSBvZmZzZXQpKSkpKQoJICAgKHQK CSAgICAoZ290by1jaGFyIGF0KSkpKSkpCgogICAgKHNldC13aW5kb3ctcG9pbnQgdGV4aS13 aW5kb3cgd2luZG93LXBvaW50KQogICAgKHNlbGVjdC13aW5kb3cgdGV4aS13aW5kb3cpCQkJ OyByZW1vdmUgdGhpcyBldnRseQogICAgKSkKCjs7IFVubGVzcyBwZW9wbGUgb2JqZWN0IC4u LgooZGVmaW5lLWtleSBJbmZvLW1vZGUtbWFwICJcQy1jXEMtZyIgJ2VsaW5mby1nb3RvLXRl eGkpCihkZWZpbmUta2V5IHRleGluZm8tbW9kZS1tYXAgIlxDLWNcQy1nIiAnZWxpbmZvLWdv dG8taW5mbykKCjs7IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCjs7IAkJCQkJCQkJCQkKOzs7 CQkgICBHcmFiYmluZyBEb2N1bWVudGF0aW9uIER0cmluZ3MJCQkJCjs7IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCjs7IAkJCQkJCQkJCQkKCihkZWZ1biBlbGluZm8tZ2V0LWRlZmluaXRp b24gKCkKICAiQWRkIGRvYyBzdHJpbmcgb2Ygb2JqZWN0IGF0IGBwb2ludCcgdG8ga2lsbCBy aW5nLgpUaGUgZG9jIHN0cmluZyBpcyBzdWl0YWJsZSBmb3IgaW5zZXJ0aW9uIGludG8gRWxp c3AgVGV4aW5mbwpidWZmZXJzLiIKICAoaW50ZXJhY3RpdmUpCiAgKHNhdmUtZXhjdXJzaW9u CiAgICAobGV0ICgoYXQgKHBvaW50KSkKCSAgbGltaXQgZnJvbSB0bwoJICB0eXBlIG5hbWUg YXJnLWxpc3QgaW5pdC12YWx1ZSBkb2Mgb3Blbi1wYXJlbi1hdCkKICAgICAgKGNvbmQKICAg ICAgICgoZXEgbWFqb3ItbW9kZSAnZW1hY3MtbGlzcC1tb2RlKQoJKGJlZ2lubmluZy1vZi1k ZWZ1bikKCSh3aGVuIChsb29raW5nLWF0ICIoXFwoPzpcXChkZWZ1blxcKVxcfFxcKGRlZnZh clxcKVxcfFxcKGRlZmN1c3RvbVxcKVxcfFxcKGRlZm1hY3JvXFwpXFwpWyBcdF0rIikKCSAg KHNldHEgdHlwZQoJCShjb25kCgkJICgobWF0Y2gtYmVnaW5uaW5nIDEpICdmdW5jdGlvbikK CQkgKChtYXRjaC1iZWdpbm5pbmcgMikgJ3ZhcmlhYmxlKQoJCSAoKG1hdGNoLWJlZ2lubmlu ZyAzKSAnb3B0aW9uKQoJCSAoKG1hdGNoLWJlZ2lubmluZyA0KSAnbWFjcm8pKSkKCSAgKGdv dG8tY2hhciAobWF0Y2gtZW5kIDApKQoJICAoc2V0cSBuYW1lIChlbGluZm8tLWdldC1uZXh0 KSkKCSAgKGNvbmQKCSAgICgobWVtcSB0eXBlICcoZnVuY3Rpb24gY29tbWFuZCBtYWNybykp CgkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG4oIikKCSAgICAod2hpbGUgKG5vdCAo bG9va2luZy1hdCAiKSIpKQoJICAgICAgKHNldHEgYXJnLWxpc3QKCQkgICAgKGNvbnMgKGJ1 ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcwoJCQkgICAocG9pbnQpCgkJCSAgIChwcm9n bgoJCQkgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl4gXHRcbikiKQoJCQkgICAgIChwb2lu dCkpKQoJCQkgIGFyZy1saXN0KSkKCSAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxu IikpCgkgICAgKHNldHEgYXJnLWxpc3QgKG5yZXZlcnNlIGFyZy1saXN0KSkpCgkgICAoKG1l bXEgdHlwZSAnKHZhcmlhYmxlIG9wdGlvbikpCgkgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAi IFx0XG4iKQoJICAgIChzZXRxIGluaXQtdmFsdWUKCQkgIChidWZmZXItc3Vic3RyaW5nLW5v LXByb3BlcnRpZXMKCQkgICAocG9pbnQpCgkJICAgKHByb2duCgkJICAgICAoZm9yd2FyZC1z ZXhwKQoJCSAgICAgKHBvaW50KSkpKSkpCgkgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxu KSIpCgkgIDs7IFdlIG11c3QgYmUgYmVmb3JlIHRoZSBkb2Mtc3RyaW5nIG5vdy4KCSAgKHNl dHEgZG9jIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkgICAgIChwcm9nbgoJ CSAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHRcbiIpCgkJICAgICAgICgxKyAocG9p bnQpKSkKCQkgICAgIChwcm9nbgoJCSAgICAgICAoZm9yd2FyZC1zZXhwKQoJCSAgICAgICAo MS0gKHBvaW50KSkpKSkKCSAgKHdoZW4gKGVxIHR5cGUgJ2Z1bmN0aW9uKQoJICAgIDs7IENo ZWNrIGZvciBpbnRlcmFjdGl2ZSBwcm9wZXJ0eS4KCSAgICAoZm9yd2FyZC1jb21tZW50IChi dWZmZXItc2l6ZSkpCgkgICAgKHdoZW4gKGxvb2tpbmctYXQgIihpbnRlcmFjdGl2ZSIpCgkg ICAgICAoc2V0cSB0eXBlICdjb21tYW5kKSkpKSkKICAgICAgICgoZXEgbWFqb3ItbW9kZSAn Yy1tb2RlKQoJKGJlZ2lubmluZy1vZi1kZWZ1bikKCShjb25kCgkgKChsb29raW5nLWF0ICJ2 b2lkWyBcdFxuXSpzeW1zX29mIikKCSAgKHNldHEgbGltaXQgKHBvaW50KSkKCSAgKGdvdG8t Y2hhciBhdCkKCSAgKHdoZW4gKG9yIChzYXZlLWV4Y3Vyc2lvbgoJCSAgICAgIChiZWdpbm5p bmctb2YtbGluZSkKCQkgICAgICAobG9va2luZy1hdAoJCSAgICAgICAiWyBcdF0qREVGVkFS X1xcKD86TElTUFxcfEJPT0xcXHxJTlRcXClbIFx0XSsoXCJcXChbXlwiIFx0XG5dK1xcKSIp KQoJCSAgICAocmUtc2VhcmNoLWJhY2t3YXJkCgkJICAgICAiREVGVkFSX1xcKD86TElTUFxc fEJPT0xcXHxJTlRcXClbIFx0XSsoXCJcXChbXlwiIFx0XG5dK1xcKSIgbGltaXQgdCkpCgkg ICAgKHNldHEgdHlwZSAndmFyaWFibGUpCgkgICAgKHNldHEgbmFtZSAobWF0Y2gtc3RyaW5n LW5vLXByb3BlcnRpZXMgMSkpKSkKCSA7OyBUaGUgZm9sbG93aW5nIG11c3QgYmUgZGVjaWRl ZC4KCSA7OyAod2hlbiAoZXEgdHlwZSAndmFyaWFibGUpIChjdXN0b20tdmFyaWFibGUtcCAo aW50ZXJuIG5hbWUpKSkKCSA7OyAoc2V0cSB0eXBlICdvcHRpb24pKQoJICgobG9va2luZy1h dCAiXFwoPzpERUZVTlxcKVsgXHRdKyhcIlxcKFteXCIgXHRcbl0rXFwpIikKCSAgKHNldHEg dHlwZSAnZnVuY3Rpb24pCgkgIChzZXRxIG5hbWUgKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0 aWVzIDMpKSkpCgkoY29uZAoJICgoZXEgdHlwZSAnZnVuY3Rpb24pCgkgIChsZXQgKChpbmRl eCAwKQoJCWZyb20gdG8gbWluLWFyZ3MpCgkgICAgKHJlLXNlYXJjaC1mb3J3YXJkICIsWyBc dF0qIiBuaWwgbmlsIDMpCgkgICAgOzsgTXVzdCBiZSBiZWZvcmUgTUlOIG5vdy4KCSAgICAo c2V0cSBtaW4tYXJncwoJCSAgKHN0cmluZy10by1udW1iZXIKCQkgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzCgkJICAgIChwb2ludCkKCQkgICAgKHByb2duIChza2lwLWNo YXJzLWZvcndhcmQgIjAtOSIpIChwb2ludCkpKSkpCgkgICAgKHJlLXNlYXJjaC1mb3J3YXJk ICIsWyBcdFxuXSoiIG5pbCB0IDIpCgkgICAgKHVubGVzcyAobG9va2luZy1hdCAiMCIpCgkg ICAgICA7OyBDb21tYW5kLgoJICAgICAgKHNldHEgdHlwZSAnY29tbWFuZCkpCgkgICAgKHJl LXNlYXJjaC1mb3J3YXJkICJeWyBcdF0qZG9jOlsgXF0qXFwoL1xcKlsgXHRdKlxcKSIgbmls IHQpCgkgICAgKHNldHEgZnJvbSAobWF0Y2gtZW5kIDApKQoJICAgIChnb3RvLWNoYXIgKG1h dGNoLWJlZ2lubmluZyAxKSkKCSAgICAoZm9yd2FyZC1jb21tZW50IDEpCgkgICAgKHNraXAt Y2hhcnMtYmFja3dhcmQgIiovIFx0IikKCSAgICAoc2V0cSB0byAocG9pbnQpKQoJICAgIChz ZXRxIGRvYyAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGZyb20gdG8pKQoJICAg ICh1bmxlc3MgYXJnLWxpc3QKCSAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIikgXHRcbigi KQoJICAgICAgKHdoaWxlIChub3QgKGxvb2tpbmctYXQgIlsgXHRcbl0qKSIpKQoJCShza2lw LWNoYXJzLWZvcndhcmQgIiBcdFxuLCIpCgkJKGlmICg8IGluZGV4IG1pbi1hcmdzKQoJCSAg ICAoc2V0cSBpbmRleCAoMSsgaW5kZXgpKQoJCSAgKHNldHEgYXJnLWxpc3QgKGNvbnMgIiZv cHRpb25hbCIgYXJnLWxpc3QpKSkKCQkoc2V0cSBhcmctbGlzdAoJCSAgICAgIChjb25zIChi dWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkJICAgICAocG9pbnQpCgkJCSAgICAg KHByb2duCgkJCSAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJeLCBcdFxuKSIpCgkJCSAg ICAgICAocG9pbnQpKSkKCQkJICAgIGFyZy1saXN0KSkpCgkgICAgICAoc2V0cSBhcmctbGlz dCAobnJldmVyc2UgYXJnLWxpc3QpKSkpKQoJICgoZXEgdHlwZSAndmFyaWFibGUpCgkgIChy ZS1zZWFyY2gtZm9yd2FyZCAiXlsgXHRdKmRvYzpbIFxdKlxcKC9cXCpbIFx0XSpcXCkiIG5p bCB0KQoJICAoc2V0cSBmcm9tIChtYXRjaC1lbmQgMCkpCgkgIChnb3RvLWNoYXIgKG1hdGNo LWJlZ2lubmluZyAxKSkKCSAgKGZvcndhcmQtY29tbWVudCAxKQoJICAoc2F2ZS1leGN1cnNp b24KCSAgICAoc2tpcC1jaGFycy1iYWNrd2FyZCAiKi8gXHQiKQoJICAgIChzZXRxIHRvIChw b2ludCkpKQoJICA7OyBSZW1vdmUgbGVhZGluZyBhc3Rlcmlzay4KCSAgKGdvdG8tY2hhciBm cm9tKQoJICAod2hlbiAobG9va2luZy1hdCAiXFwqIikKCSAgICAoc2V0cSBmcm9tICgxKyBm cm9tKSkpCgkgIChzZXRxIGRvYyAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIGZy b20gdG8pKSkpKSkKCiAgICAgICh3aGVuIGRvYwoJKHdpdGgtY3VycmVudC1idWZmZXIgKGdl dC1idWZmZXItY3JlYXRlICIqRWxpbmZvLVRlbXAqIikKCSAgKGRlbGV0ZS1yZWdpb24gKHBv aW50LW1pbikgKHBvaW50LW1heCkpCgkgIChpbnNlcnQgZG9jKQoJICA7OyBIYW5kbGUgdXNh Z2UgaW5mb3JtYXRpb24uCgkgICh3aGVuIChtZW1xIHR5cGUgJyhmdW5jdGlvbiBjb21tYW5k KSkKCSAgICAod2hlbiAocmUtc2VhcmNoLWJhY2t3YXJkICJedXNhZ2U6WyBcdF0qKCIgZnJv bSB0KQoJICAgICAgKHNldHEgZnJvbSAocG9pbnQpKQoJICAgICAgKGdvdG8tY2hhciAobWF0 Y2gtZW5kIDApKQoJICAgICAgKHNhdmUtZXhjdXJzaW9uCgkJKGdvdG8tY2hhciAobWF0Y2gt YmVnaW5uaW5nIDApKQoJCShza2lwLWNoYXJzLWJhY2t3YXJkICIgXHRcbiIpCgkJKHNldHEg dG8gKHBvaW50KSkpCgkgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICJeIFx0XG4iKQoJICAg ICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0XG4iKQoJICAgICAgKHNldHEgYXJnLWxpc3Qg bmlsKQoJICAgICAgKHdoaWxlIChub3QgKG9yIChsb29raW5nLWF0ICIpIikgKGVvYnApKSkK CQkoc2V0cSBhcmctbGlzdAoJCSAgICAgIChjb25zCgkJICAgICAgIChkb3duY2FzZQoJCQko YnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzCgkJCSAocG9pbnQpCgkJCSAocHJvZ24K CQkJICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdFxuKSIpCgkJCSAgIChwb2ludCkpKSkK CQkgICAgICAgYXJnLWxpc3QpKQoJCShza2lwLWNoYXJzLWZvcndhcmQgIiBcdFxuIikpCgkg ICAgICAoc2V0cSBhcmctbGlzdCAobnJldmVyc2UgYXJnLWxpc3QpKQoJICAgICAgKGRlbGV0 ZS1yZWdpb24gKHBvaW50KSAocG9pbnQtbWF4KSkpKQoKCSAgKHdoZW4gYXJnLWxpc3QKCSAg ICA7OyBIYW5kbGUgYXJncyB3aXRoaW4gZG9jLiAgVGhpcyBjYXNlIGNvdWxkIGJlIG1lcmdl ZCB3aXRoCgkgICAgOzsgdGhlIHJlbWFpbmluZyBvbmVzIGJ1dCBoYXJkbHkgc2VlbXMgd29y dGggdGhlIGVmZm9ydC4KCSAgICAoZ290by1jaGFyIChwb2ludC1taW4pKQoJICAgIChsZXQg KChyZWdleHAgKG1hcGNvbmNhdAoJCQkgICAncmVnZXhwLXF1b3RlCgkJCSAgIChtYXBjYXIg J3VwY2FzZSBhcmctbGlzdCkgIlxcfCIpKQoJCSAgKHRvIChtYWtlLW1hcmtlcikpCgkJICBj YXNlLWZvbGQtc2VhcmNoKQoJICAgICAgKHdoaWxlIChyZS1zZWFyY2gtZm9yd2FyZCByZWdl eHAgbmlsIHQpCgkJKGxldCAoKHN0cmluZyAoZG93bmNhc2UgKG1hdGNoLXN0cmluZy1uby1w cm9wZXJ0aWVzIDApKSkKCQkgICAgICAoZnJvbSAobWF0Y2gtYmVnaW5uaW5nIDApKSkKCQkg IChzZXQtbWFya2VyIHRvIChtYXRjaC1lbmQgMCkpCgkJICAoY2F0Y2ggJ2ZvdW5kCgkJICAg IChkb2xpc3QgKGFyZyBhcmctbGlzdCkKCQkgICAgICA7OyBXZSBhc3N1bWUgdGhhdCBhbGwg YXJncyBhcmUgZG93bmNhc2UuCgkJICAgICAgKHdoZW4gKHN0cmluZy1lcXVhbCBzdHJpbmcg YXJnKQoJCQkocmVwbGFjZS1tYXRjaCAoY29uY2F0ICJAdmFyeyIgc3RyaW5nICJ9IikgdCkK CQkJKHRocm93ICdmb3VuZCB0KSkpKSkpCgkgICAgICAoc2V0LW1hcmtlciB0byBuaWwpKSkK CgkgIDs7IExvb2sgZm9yIHF1b3RlcywgZG91YmxlLXF1b3RlcywgbmlsIGFuZCBvdGhlciBm dW5ueSB0aGluZ3MuCgkgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpCgkgIChsZXQgKHF1b3Rl ZCkKCSAgICAod2hpbGUgKHJlLXNlYXJjaC1mb3J3YXJkICJcXChgXFwpXFwoPzpbXiBcdFxu J10rXFwpXFwoJ1xcKVwKXFx8XFwoPzpeXFx8WyBcdFxuKCpgXVxcKVxcKFxcKD86W05uXW9u LVxcKT9cXChuaWxcXClcXHx0XFx8XFwoXFwoPzpbQ01dLVxcKStcXCg/OlthLXpBLVpdK1xc fFteIGEtekEtWlx0XG5dK1xcKVxcKVwKXFx8XFwoU1BDXFx8UkVUXFx8TEZEXFx8VEFCXFx8 QlNcXHxFU0NcXHxERUxcXHxTSElGVFxcfENUUkxcXHxNRVRBXFx8RlswLTldK1xcKVxcKVxc KD86JFxcfFsgXHRcbiwuOzo/IScpXVxcKVwKXFx8XFwoXFxcXD9cIlxcKVxcfFxcKD86XFwo XFxcXFxcXFxbW3tdXFwpW15dfV0rXFwoW119XVxcKVxcfFxcKDxbXj5dKz5cXClcXClcClxc fFxcXFxcXChbKFt7XVxcKVxcfFxcKFxcXFwkXFwpIiBuaWwgdCkKCSAgICAgIChjb25kCgkg ICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMSkKCQk7OyBgLi4uJwoJCShyZXBsYWNlLW1hdGNo ICJAY29kZXsiIG5pbCBuaWwgbmlsIDEpCgkJKHJlcGxhY2UtbWF0Y2ggIn0iIG5pbCBuaWwg bmlsIDIpKQoJICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDMpCgkJOzsgYG5pbCcsIGBub24t bmlsJyBhbmQgYHQnLgoJCShjb25kCgkJICgobWF0Y2gtYmVnaW5uaW5nIDQpCgkJICAocmVw bGFjZS1tYXRjaCAoY29uY2F0ICJAY29kZXtuaWx9IikgdCBuaWwgbmlsIDQpKQoJCSAoKG1h dGNoLWJlZ2lubmluZyA1KQoJCSAgKHJlcGxhY2UtbWF0Y2ggKGNvbmNhdCAiQGtiZHsiICht YXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyA1KSAifSIpCgkJCQkgdCBuaWwgbmlsIDUpKQoJ CSAoKG1hdGNoLWJlZ2lubmluZyA2KQoJCSAgKHJlcGxhY2UtbWF0Y2ggKGNvbmNhdCAiQGtl eXsiIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyA2KSAifSIpCgkJCQkgdCBuaWwgbmls IDYpKQoJCSAodAoJCSAgKHJlcGxhY2UtbWF0Y2ggKGNvbmNhdCAiQGNvZGV7IiAobWF0Y2gt c3RyaW5nLW5vLXByb3BlcnRpZXMgMykgIn0iKQoJCQkJIHQgbmlsIG5pbCAzKSkpKQoJICAg ICAgICgobWF0Y2gtYmVnaW5uaW5nIDcpCgkJOzsgXCIKCQkocmVwbGFjZS1tYXRjaCAoaWYg cXVvdGVkICInJyIgImBgIikpCgkJKHNldHEgcXVvdGVkIChub3QgcXVvdGVkICkpKQoJICAg ICAgICgobWF0Y2gtYmVnaW5uaW5nIDgpCgkJOzsgXFxbLi4uXSwgXFx7Li4ufQoJCShyZXBs YWNlLW1hdGNoICJAY29kZXsiIG5pbCB0IG5pbCA4KQoJCShyZXBsYWNlLW1hdGNoICJ9IiBu aWwgdCBuaWwgOSkpCgkgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMTApCgkJOzsgXFw8Li4u PgoJCShyZXBsYWNlLW1hdGNoICIiKSkKCSAgICAgICAoKG1hdGNoLWJlZ2lubmluZyAxMSkK CQk7OyBBbiBlc2NhcGVkIHBhcmVuICh0aGlzIG11c3QgZm9sbG93IGNhc2UgMikuCgkJKHJl cGxhY2UtbWF0Y2ggKG1hdGNoLXN0cmluZy1uby1wcm9wZXJ0aWVzIDExKSkpCgkgICAgICAg KChtYXRjaC1iZWdpbm5pbmcgMTIpCgkJOzsgQSBiYWNrc2xhc2ggYXQgRU9MLgoJCShyZXBs YWNlLW1hdGNoICIiKSkKCSAgICAgICApKSkKCSAgOzsgRmlsbC4KCSAgKGxldCAoKGZpbGwt Y29sdW1uIDcwKSkKCSAgICAoZmlsbC1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50LW1heCkp KQoJICA7OyBIYW5kbGUga2V5LWJpbmRpbmdzLCBtYW51YWwgcmVmZXJlbmNlcyBhbmQgVVJM cywgbWF5YmUuCgkgIChzZXRxIGRvYyAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVz IChwb2ludC1taW4pIChwb2ludC1tYXgpKSkpKQoKICAgICAgKGxldCAoYXQtc3RyaW5nIGFy Zy1saXN0LXN0cmluZykKCShjb25kCgkgKChlcSB0eXBlICdjb21tYW5kKQoJICAoc2V0cSBh dC1zdHJpbmcgKGNvbnMgIkBkZWZmbiBDb21tYW5kIiAiQGVuZCBkZWZmbiIpKSkKCSAoKGVx IHR5cGUgJ2Z1bmN0aW9uKQoJICAoc2V0cSBhdC1zdHJpbmcgKGNvbnMgIkBkZWZ1biIgIkBl bmQgZGVmdW4iKSkpCgkgKChlcSB0eXBlICd2YXJpYWJsZSkKCSAgKHNldHEgYXQtc3RyaW5n IChjb25zICJAZGVmdmFyIiAiQGVuZCBkZWZ2YXIiKSkpCgkgKChlcSB0eXBlICdvcHRpb24p CgkgIChzZXRxIGF0LXN0cmluZyAoY29ucyAiQGRlZm9wdCIgIkBlbmQgZGVmb3B0IikpKQoJ ICgoZXEgdHlwZSAnbWFjcm8pCgkgIChzZXRxIGF0LXN0cmluZyAoY29ucyAiQGRlZm1hYyIg IkBlbmQgZGVmbWFjIikpKSkKCgkoZG9saXN0IChhcmcgYXJnLWxpc3QpCgkgIChzZXRxIGFy Zy1saXN0LXN0cmluZyAoY29uY2F0IGFyZy1saXN0LXN0cmluZyAiICIgYXJnKSkpCgoJOzsg SGFyZGx5IGFueW9uZSB3YW50cyB0byBzZWUgdGhpcyBzbyBSRU1PVkUgaXQuCgkod2l0aC1z ZWxlY3RlZC13aW5kb3cgKGRpc3BsYXktYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKkVs aW5mby1zaG93IikpCgkgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgp KQoJICAoaW5zZXJ0IChjb25jYXQgKGNhciBhdC1zdHJpbmcpICIgIiBuYW1lIGFyZy1saXN0 LXN0cmluZyAiXG4iCgkJCSAgZG9jICJcbiIgKGNkciBhdC1zdHJpbmcpICJcblxuIikpKQoK CShraWxsLW5ldyAoY29uY2F0IChjYXIgYXQtc3RyaW5nKSAiICIgbmFtZSBhcmctbGlzdC1z dHJpbmcgIlxuIgoJCQkgIGRvYyAiXG4iIChjZHIgYXQtc3RyaW5nKSAiXG5cbiIpKSkpKSkK Cjs7IFRPRE86IGRlZmluZS1tb2RlIGFuZCBkZWZpbmUtZGVyaXZlZC1tb2RlIGFyZSBub3Qg aGFuZGxlZC4KCjs7IFRPRE86IFNwZWNpYWwgZm9ybXMgYXJlIHdyaXR0ZW4gaW4gQyBhbmQg aGF2ZSBVTkVWQUxMRUQgc2V0LgoKKHByb3ZpZGUgJ2VsaW5mbykKCjs7IEJlbG93IHRoaXMg bGluZSBhcmUgbW9uc3RlcnMuCgo7OyBVc2VkIGZvciB0ZXN0aW5nIG9ubHksIHNvIFJFTU9W RSBpdC4KKGRlZnVuIGVsaW5mby10ZXN0ICgpCiAgKGludGVyYWN0aXZlKQogICh3aXRoLWN1 cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSAiKmVsaW5mby10ZXN0KiIpCiAgICAo ZGVsZXRlLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpCiAgKGxldCAoKG9sZC1w b2ludCAocG9pbnQpKQoJbmV3LXBvaW50IG5vZGUgc3BsaXQtaGVpZ2h0LXRocmVzaG9sZCBz cGxpdC13aWR0aC10aHJlc2hvbGQpCiAgICAod2hpbGUgdAogICAgICAoSW5mby1mb3J3YXJk LW5vZGUgbmlsIG5pbCB0KQogICAgICAoZm9yd2FyZC1saW5lIChyYW5kb20gNDMpKQogICAg ICAoc2V0cSBvbGQtcG9pbnQgKHBvaW50KSkKICAgICAgKHNldHEgbm9kZSBJbmZvLWN1cnJl bnQtbm9kZSkKICAgICAgKGVsaW5mby1nb3RvLXRleGkpCiAgICAgICh3aXRoLXNlbGVjdGVk LXdpbmRvdyBlbGluZm8tdGVzdC10ZXhpLXdpbmRvdwoJKGVsaW5mby1nb3RvLWluZm8pCgko c2l0LWZvciAwLjEpKQogICAgICAoc2V0cSBuZXctcG9pbnQgKHBvaW50KSkKICAgICAgKHdp dGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqZWxpbmZvLXRlc3QqIikK CShnb3RvLWNoYXIgKHBvaW50LW1heCkpCgkoaW5zZXJ0CgkgKGZvcm1hdCAibm9kZTogJXMg ICBvbGQ6ICVzICAgbmV3OiAlcyAgIGRpZmY6ICVzIFxuIgoJCSBub2RlIG9sZC1wb2ludCBu ZXctcG9pbnQgKC0gb2xkLXBvaW50IG5ldy1wb2ludCkpKSkKICAgICAgKGdvdG8tY2hhciBv bGQtcG9pbnQpKSkpCg== --------------090705060708070109070606--