From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rainer M Krug Subject: Re: BUG: Newest org-mode interferes with desktop save Date: Wed, 15 Jun 2011 20:21:30 +0200 Message-ID: References: <87y613uj2x.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=000e0cd60836bee91c04a5c4387e Return-path: Received: from eggs.gnu.org ([140.186.70.92]:36972) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWuid-0007sT-K2 for emacs-orgmode@gnu.org; Wed, 15 Jun 2011 14:21:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QWuib-00050Z-51 for emacs-orgmode@gnu.org; Wed, 15 Jun 2011 14:21:35 -0400 Received: from mail-qy0-f176.google.com ([209.85.216.176]:58080) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QWuia-00050V-NO for emacs-orgmode@gnu.org; Wed, 15 Jun 2011 14:21:32 -0400 Received: by qyk30 with SMTP id 30so486142qyk.0 for ; Wed, 15 Jun 2011 11:21:32 -0700 (PDT) In-Reply-To: <87y613uj2x.fsf@gmail.com> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: emacs-orgmode --000e0cd60836bee91c04a5c4387e Content-Type: multipart/alternative; boundary=000e0cd60836bee91504a5c4387c --000e0cd60836bee91504a5c4387c Content-Type: text/plain; charset=ISO-8859-1 On Wed, Jun 15, 2011 at 6:49 PM, Eric Schulte wrote: > Hi Rainer, > > I was able to reproduce this query-on-close behavior with the following > minimal config. > > #+begin_src sh > emacs -Q -l ~/.emacs.d/src/org/lisp/org.el --eval "(desktop-save-mode 1)" > #+end_src > > however, I think this prompting behavior is expected, and when I > switched to the following alternative > > #+begin_src sh > emacs -Q -l ~/.emacs.d/src/org/lisp/org.el --eval '(desktop-read > "~/Desktop/")' > #+end_src > > I received no prompt on exit. As far as I can tell there is not an > Org-mode bug here, however I could very well have missed something. > I can not reproduce your example, as I am getting an "can not open org-entities", but have you tried it with org-mode 7.5 as well as the newest git? My point is, that up to a recent git version (probably yesterday), this question was *not* there, but it is there at with the newest git version. I agree, that emacs should ask where to save if there is no .emacs.desktop if where to save the desktop file, but the final question "Current desktop was not loaded from a file. Overwrite this desktop file?" (which I did not see in your example) should not be there as the desktop file was definitely loaded. I attache my emacs.org file for reference. Hope this clarifies the issue, Rainer > Cheers -- Eric > > Rainer M Krug writes: > > > Hi > > > > when using the newest version of org-mode (Org-mode version 7.5 > > (release_7.5.391.gfacc)), I get the following warning when closing emacs, > > > > "Current desktop was not loaded from a file. Overwrite this desktop > file?" > > > > although it has loaded the desktop file. When I use 7.5 (and te one from > I > > guess yesterday), the message did not occur. > > > > I have (desktop-save-mode 1) on my emacs.org. > > > > > > Cheers, > > > > Rainer > > -- > Eric Schulte > http://cs.unm.edu/~eschulte/ > -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax (F): +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug --000e0cd60836bee91504a5c4387c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

On Wed, Jun 15, 2011 at 6:49 PM, Eric Sc= hulte <schul= te.eric@gmail.com> wrote:
Hi Rainer,

I was able to reproduce this query-on-close behavior with the following
minimal config.

#+begin_src sh
=A0emacs -Q -l ~/.emacs.d/src/org/lisp/org.el --eval "(desktop-save-m= ode 1)"
#+end_src

however, I think this prompting behavior is expected, and when I
switched to the following alternative

#+begin_src sh
=A0emacs -Q -l ~/.emacs.d/src/org/lisp/org.el --eval '(desktop-read &q= uot;~/Desktop/")'
#+end_src

I received no prompt on exit. =A0As far as I can tell there is not an
Org-mode bug here, however I could very well have missed something.

I can not reproduce your example, as I am gett= ing an "can not open org-entities", but have you tried it with or= g-mode 7.5 as well as the newest git? My point is, that up to a recent git = version (probably yesterday), this question was *not* there, but it is ther= e at with the newest git version.

I agree, that emacs should ask where to save if there i= s no .emacs.desktop =A0if where to save the desktop file, but the final que= stion=A0
=A0
"Current desktop was not loaded from = a file. Overwrite this desktop file?"

(which I did not see in your example) should not be the= re as the desktop file was definitely loaded. I attache my emacs.org file for reference.

Hop= e this clarifies the issue,
Rainer


Cheers -- Eric
Eric Schulte
http://cs.unm.ed= u/~eschulte/



--
Rainer M. Krug, = PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phy= s. (Germany)

Centre of Excellence for Invasion Biology
Stellenbos= ch University
South Africa

Tel : =A0 =A0 =A0 +33 - (0)9 53 10 27 44
Cell: =A0 = =A0 =A0 +33 - (0)6 85 62 59 98
Fax (F): =A0 =A0 =A0 +33 - (0)9 58 10 27 = 44

Fax (D): =A0 =A0+49 - (0)3 21 21 25 22 44

email: =A0 =A0 = =A0Rainer@krugs.de=

Skype: =A0 =A0 =A0RMkrug

--000e0cd60836bee91504a5c4387c-- --000e0cd60836bee91c04a5c4387e Content-Type: application/octet-stream; name="emacs.org" Content-Disposition: attachment; filename="emacs.org" Content-Transfer-Encoding: base64 X-Attachment-Id: f_goylwvyk0 IytUSVRMRTogLmVtYWNzIGZpbGUgCiMrQVVUSE9SOiAgICBSYWluZXIgTSBLcnVnCiMrRU1BSUw6 ICAgICBya3J1Z0BlY29sbW9kCiMrREFURTogICAgICAyMDEwLTA5LTE3IEZyaQojK0RFU0NSSVBU SU9OOiAKIytLRVlXT1JEUzogCiMrTEFOR1VBR0U6ICBlbgojK09QVElPTlM6ICAgSDozIG51bTp0 IHRvYzp0IFxuOm5pbCBAOnQgOjp0IHw6dCBeOm5pbCAtOnQgZjp0ICo6dCA8OnQKIytPUFRJT05T OiAgIFRlWDp0IExhVGVYOnQgc2tpcDpuaWwgZDpuaWwgdG9kbzp0IHByaTpuaWwgdGFnczpub3Qt aW4tdG9jCiMrSU5GT0pTX09QVDogdmlldzpuaWwgdG9jOm5pbCBsdG9jOnQgbW91c2U6dW5kZXJs aW5lIGJ1dHRvbnM6MCBwYXRoOmh0dHA6Ly9vcmdtb2RlLm9yZy9vcmctaW5mby5qcwojK0VYUE9S VF9TRUxFQ1RfVEFHUzogZXhwb3J0CiMrRVhQT1JUX0VYQ0xVREVfVEFHUzogbm9leHBvcnQKIytM SU5LX1VQOiAgIAojK0xJTktfSE9NRTogCiMrWFNMVDogCiMjK09QVElPTlM6IHRvYzpuaWwgbnVt Om5pbCBeOm5pbCAKCiMrTEFURVhfSEVBREVSOiBcdXNlcGFja2FnZVtsYW5kc2NhcGUsIHRvcD0w LjVpbixib3R0b209MC41aW4sbGVmdD0wLjc1aW4scmlnaHQ9MC43NWluXXtnZW9tZXRyeX0KCiog R2VuZXJhbCBzZXR0aW5ncwoqKiBTYXZlIGRlc2t0b3AKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAog IChkZXNrdG9wLXNhdmUtbW9kZSAxKQojK2VuZF9zcmMKKiogRG8gbm90IHNob3cgZm9udCBsb2Nr aW5nIG1lc3NhZ2VzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAnKGZvbnQtbG9jay12ZXJib3Nl IG5pbCkKIytlbmRfc3JjCioqIENPTU1FTlQgQXV0b3NhdmUgZGVza3RvcCBldmVyeSBob3VyCiMr YmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRhbmdsZSBubwogIChydW4tYXQtdGltZSAiMDA6NTkiIDM2 MDAgJ29yZy1zYXZlLWFsbC1vcmctYnVmZmVycykKIytlbmRfc3JjCioqIFNlYXJjaCBwYXRoIGRl ZmluaXRpb25zCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoYWRkLXRvLWxpc3QgJ2xvYWQtcGF0 aCAifi8uZW1hY3MuZC9zaXRlLWxpc3AiKQojK2VuZF9zcmMKKiBDT01NRU5UIExvYWQgbWFya2No YXJzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRhbmdsZSBubwogIChsb2FkICJ+Ly5lbWFjcy5k L254aHRtbC9hdXRvc3RhcnQuZWwiKQogIAojK2VuZF9zcmMKKiBDT01NRU5UIENFREVUCiAgU2Vl IGNlZGV0L2NvbW1vbi9jZWRldC5pbmZvIGZvciBjb25maWd1cmF0aW9uIGRldGFpbHMuCiMrYmVn aW5fc3JjIGVtYWNzLWxpc3AgOnRhbmdsZSBubwogICAoYWRkLXRvLWxpc3QgJ2xvYWQtcGF0aCAi fi8uZW1hY3MuZC9jZWRldCIpCiAgIChsb2FkLWZpbGUgIn4vLmVtYWNzLmQvY2VkZXQvY29tbW9u L2NlZGV0LmVsIikKIytlbmRfc3JjCiAgT3B0aW9uYWwgb3RoZXIgb3B0aW9ucwojK2JlZ2luX3Ny YyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICA7OyBFbmFibGUgRURFIChQcm9qZWN0IE1hbmFnZW1l bnQpIGZlYXR1cmVzCiAgKGdsb2JhbC1lZGUtbW9kZSAxKQoKICA7OyBFbmFibGUgRURFIGZvciBh IHByZS1leGlzdGluZyBDKysgcHJvamVjdAogIDs7IChlZGUtY3BwLXJvb3QtcHJvamVjdCAiTkFN RSIgOmZpbGUgIn4vbXlwcm9qZWN0L01ha2VmaWxlIikKCgogIDs7IEVuYWJsaW5nIFNlbWFudGlj IChjb2RlLXBhcnNpbmcsIHNtYXJ0IGNvbXBsZXRpb24pIGZlYXR1cmVzCiAgOzsgU2VsZWN0IG9u ZSBvZiB0aGUgZm9sbG93aW5nOgoKICA7OyAqIFRoaXMgZW5hYmxlcyB0aGUgZGF0YWJhc2UgYW5k IGlkbGUgcmVwYXJzZSBlbmdpbmVzCiAgOyAoc2VtYW50aWMtbG9hZC1lbmFibGUtbWluaW11bS1m ZWF0dXJlcykKCiAgOzsgKiBUaGlzIGVuYWJsZXMgc29tZSB0b29scyB1c2VmdWwgZm9yIGNvZGlu Zywgc3VjaCBhcyBzdW1tYXJ5IG1vZGUKICA7OyAgIGltZW51IHN1cHBvcnQsIGFuZCB0aGUgc2Vt YW50aWMgbmF2aWdhdG9yCiAgOyAoc2VtYW50aWMtbG9hZC1lbmFibGUtY29kZS1oZWxwZXJzKQoK ICA7OyAqIFRoaXMgZW5hYmxlcyBldmVuIG1vcmUgY29kaW5nIHRvb2xzIHN1Y2ggYXMgaW50ZWxs aXNlbnNlIG1vZGUKICA7OyAgIGRlY29yYXRpb24gbW9kZSwgYW5kIHN0aWNreWZ1bmMgbW9kZSAo cGx1cyByZWd1bGFyIGNvZGUgaGVscGVycykKICA7OyAoc2VtYW50aWMtbG9hZC1lbmFibGUtZ2F1 ZHktY29kZS1oZWxwZXJzKQoKICA7OyAqIFRoaXMgZW5hYmxlcyB0aGUgdXNlIG9mIEV4dWJlcmVu dCBjdGFncyBpZiB5b3UgaGF2ZSBpdCBpbnN0YWxsZWQuCiAgOzsgICBJZiB5b3UgdXNlIEMrKyB0 ZW1wbGF0ZXMgb3IgYm9vc3QsIHlvdSBzaG91bGQgTk9UIGVuYWJsZSBpdC4KICA7OyAoc2VtYW50 aWMtbG9hZC1lbmFibGUtYWxsLWV4dWJlcmVudC1jdGFncy1zdXBwb3J0KQoKICA7OyBFbmFibGUg U1JlY29kZSAoVGVtcGxhdGUgbWFuYWdlbWVudCkgbWlub3ItbW9kZS4KICAoZ2xvYmFsLXNyZWNv ZGUtbWlub3ItbW9kZSAxKQojK2VuZF9zcmMKKiBDT01NRU5UIEVjYiAKIytiZWdpbl9zcmMgZW1h Y3MtbGlzcCA6dGFuZ2xlIG5vCiAgKGFkZC10by1saXN0ICdsb2FkLXBhdGggIn4vLmVtYWNzLmQv ZWNiIikKICAocmVxdWlyZSAnZWNiLWF1dG9sb2FkcykKICAoc2V0cSBlY2ItbGF5b3V0LW5hbWUg ImxlZnQzIikKICAoc2V0cSBlY2ItbGF5b3V0LXdpbmRvdy1zaXplcyAocXVvdGUgKCgibGVmdDgi ICgwLjIzMDc2OTIzMDc2OTIzMDc4IC4gMC4yMzMzMzMzMzMzMzMzMzMzNCkgKDAuMjMwNzY5MjMw NzY5MjMwNzggLiAwLjI1KSAoMC4yMzA3NjkyMzA3NjkyMzA3OCAuIDAuMjgzMzMzMzMzMzMzMzMz MykgKDAuMjMwNzY5MjMwNzY5MjMwNzggLiAwLjIxNjY2NjY2NjY2NjY2NjY3KSkgKCJsZWZ0MyIg KDAuMjIxNjIxNjIxNjIxNjIxNjMgLiAwLjEwMzQ0ODI3NTg2MjA2ODk2KSAoMC4yMjE2MjE2MjE2 MjE2MjE2MyAuIDAuNDY1NTE3MjQxMzc5MzEwMzMpICgwLjIyMTYyMTYyMTYyMTYyMTYzIC4gMC40 MTM3OTMxMDM0NDgyNzU4NikpKSkpCiAgKHNldHEgZWNiLW9wdGlvbnMtdmVyc2lvbiAiMi4zMiIp CiAgKHNldHEgZWNiLXRvZ2dsZS1sYXlvdXQtc2VxdWVuY2UgKHF1b3RlICgibGVmdDkiICJsZWZ0 MTQiICJsZWZ0MyIpKSkKIytlbmRfc3JjCiogRVNTCioqIExvYWQgZXNzCiMrYmVnaW5fc3JjIGVt YWNzLWxpc3AKICAoYWRkLXRvLWxpc3QgJ2xvYWQtcGF0aCAifi8uZW1hY3MuZC9lc3MiKQogIChs b2FkICJ+Ly5lbWFjcy5kL2Vzcy9saXNwL2Vzcy1zaXRlIikKICAocmVxdWlyZSAnZXNzLXNpdGUp CiMrZW5kX3NyYwoqKiBFU1MgaGVscAoqKioga2lsbCAiYm9ndXMiIGhlbHAgYnVmZmVycwojK2Jl Z2luX3NyYyBlbWFjcy1saXNwCiAgKHNldHEgZXNzLWhlbHAta2lsbC1ib2d1cy1idWZmZXJzIHQp CiMrZW5kX3NyYyAKKioqIGFsbCBoZWxwIGluIG9uZSB3aW5kb3cgYW5kIGluIG93biBmcmFtZQoj K2JlZ2luX3NyYyBlbWFjcy1saXNwCihzZXRxIGVzcy1oZWxwLW93bi1mcmFtZSAnb25lKQojK2Vu ZF9zcmMgCgoqKiBBZGQgaGlnaGxpZ2h0aW5nIGZvciBjZXJ0YWluIGtleXdvcmRzCiMrYmVnaW5f c3JjIGVtYWNzLWxpc3AKICAoZm9udC1sb2NrLWFkZC1rZXl3b3JkcyAnZXNzLW1vZGUKICAgJygo IlxcPFxcKEZJWE1FXFx8VE9ET1xcfENPTU1FTlRcXHxET05FXFx8Q0hBTkdFU1xcfEZJWEVEXFwp XFw+IiAxIGZvbnQtbG9jay13YXJuaW5nLWZhY2UgcHJlcGVuZCkpKQojK2VuZF9zcmMKKiogRnVy dGhlciBjdXN0b21pc2F0aW9ucwojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHNldHEgaW5mZXJp b3ItUi1hcmdzICItLXZhbmlsbGEiKQogIChzZXRxIGVzcy1ldmFsLXZpc2libHktcCBuaWwpCiAg KHNldHEgaW5mZXJpb3ItZXNzLXNhbWUtd2luZG93IHQpCiAgKHNldHEgaW5mZXJpb3ItZXNzLWNs aWVudC1jb21tYW5kICJJbml0aWFsIikKICAoc2V0cSBpbmZlcmlvci1lc3Mtb3duLWZyYW1lIG5p bCkKICAoc2V0cSBlc3MtYXNrLWZvci1lc3MtZGlyZWN0b3J5IG5pbCkKIytlbmRfc3JjCioqIHIt dXRpbHMKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogICAocmVxdWlyZSAnci11dGlscykKIytlbmRf c3JjCioqIFItb2JqZWN0IHRvb2x0aXBzCmJhc2VkIG9uIFtbaHR0cDovL2Jsb2dpc3RpY3JlZmxl Y3Rpb25zLndvcmRwcmVzcy5jb20vMjAwOS8xMC8wMS9yLW9iamVjdC10b29sdGlwcy1pbi1lc3Mv XV0KSGVyZSBhcmUgdGhlIGNvbW1lbnRzIGFzIG9uIHRoZSB3ZWJzaXRlOgo7OyBlc3MtUi1vYmpl Y3QtdG9vbHRpcC5lbAo7OyAKOzsgSSBoYXZlIGRlZmluZWQgYSBmdW5jdGlvbiwgZXNzLVItb2Jq ZWN0LXRvb2x0aXAsIHRoYXQgd2hlbgo7OyBpbnZva2VkLCB3aWxsIHJldHVybiBhIHRvb2x0aXAg d2l0aCBzb21lIGluZm9ybWF0aW9uIGFib3V0Cjs7IHRoZSBvYmplY3QgYXQgcG9pbnQuICBUaGUg aW5mb3JtYXRpb24gcmV0dXJuZWQgaXMKOzsgZGV0ZXJtaW5lZCBieSB3aGljaCBSIGZ1bmN0aW9u IGlzIGNhbGxlZC4gIFRoaXMgaXMgY29udHJvbGxlZAo7OyBieSBhbiBhbGlzdCwgY2FsbGVkIGVz cy1SLW9iamVjdC10b29sdGlwLWFsaXN0LiAgVGhlIGRlZmF1bHQgaXMKOzsgZ2l2ZW4gYmVsb3cu ICBUaGUga2V5cyBhcmUgdGhlIGNsYXNzZXMgb2YgUiBvYmplY3QgdGhhdCB3aWxsCjs7IHVzZSB0 aGUgYXNzb2NpYXRlZCBmdW5jdGlvbi4gIEZvciBleGFtcGxlLCB3aGVuIHRoZSBmdW5jdGlvbgo7 OyBpcyBjYWxsZWQgd2hpbGUgcG9pbnQgaXMgb24gYSBmYWN0b3Igb2JqZWN0LCBhIHRhYmxlIG9m IHRoYXQKOzsgZmFjdG9yIHdpbGwgYmUgc2hvd24gaW4gdGhlIHRvb2x0aXAuICBUaGUgb2JqZWN0 cyBtdXN0IG9mIGNvdXJzZQo7OyBleGlzdCBpbiB0aGUgYXNzb2NpYXRlZCBpbmZlcmlvciBSIHBy b2Nlc3MgZm9yIHRoaXMgdG8gd29yay4KOzsgVGhlIHNwZWNpYWwga2V5ICJvdGhlciIgaW4gdGhl IGFsaXN0IGRlZmluZXMgd2hpY2ggZnVuY3Rpb24KOzsgdG8gY2FsbCB3aGVuIHRoZSBjbGFzcyBp cyBub3QgbWFjaGVkIGluIHRoZSBhbGlzdC4gIEJ5IGRlZmF1bHQsCjs7IHRoZSBzdHIgZnVuY3Rp b24gaXMgY2FsbGVkLCB3aGljaCBpcyBhY3R1YWxseSBhIGZhaXJseSB1c2VmdWwKOzsgZGVmYXVs dCBmb3IgZGF0YS5mcmFtZSBhbmQgZnVuY3Rpb24gb2JqZWN0cy4KOzsgCjs7IFRoZSBsYXN0IGxp bmUgb2YgdGhpcyBmaWxlIHNob3dzIG15IGRlZmF1bHQga2V5YmluZGluZy4KOzsgSSBzaW1wbHkg c2F2ZSB0aGlzIGZpbGUgaW4gYSBkaXJlY3RvcnkgaW4gbXkgbG9hZC1wYXRoCjs7IGFuZCB0aGVu IHBsYWNlIChyZXF1aXJlICdlc3MtUi1vYmplY3QtdG9vbHRpcCkgaW4gbXkgLmVtYWNzCiMrYmVn aW5fc3JjIGVtYWNzLWxpc3AKICA7OyB0aGUgYWxpc3QKICAoc2V0cSBlc3MtUi1vYmplY3QtdG9v bHRpcC1hbGlzdAogICAgICAgICcoKG51bWVyaWMgICAgLiAic3VtbWFyeSIpCiAgICAgICAgICAo ZmFjdG9yICAgICAuICJ0YWJsZSIpCiAgICAgICAgICAoaW50ZWdlciAgICAuICJzdW1tYXJ5IikK ICAgICAgICAgIChsbSAgICAgICAgIC4gInN1bW1hcnkiKQogICAgICAgICAgKG90aGVyICAgICAg LiAic3RyIikpKQogIAogIChkZWZ1biBlc3MtUi1vYmplY3QtdG9vbHRpcCAoKQogICAgIkdldCBp bmZvIGZvciBvYmplY3QgYXQgcG9pbnQsIGFuZCBkaXNwbGF5IGl0IGluIGEgdG9vbHRpcC4iCiAg ICAoaW50ZXJhY3RpdmUpCiAgICAobGV0ICgob2JqbmFtZSAoY3VycmVudC13b3JkKSkKICAgICAg ICAgIChjdXJidWYgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICh0bXBidWYgKGdldC1idWZm ZXItY3JlYXRlICIqKmVzcy1SLW9iamVjdC10b29sdGlwKioiKSkpCiAgICAgIChpZiBvYmpuYW1l CiAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgKGVzcy1jb21tYW5kIChjb25jYXQgImNsYXNz KCIgb2JqbmFtZSAiKVxuIikgIHRtcGJ1ZiApCiAgICAgICAgICAgIChzZXQtYnVmZmVyIHRtcGJ1 ZikKICAgICAgICAgICAgKGxldCAoKGJzIChidWZmZXItc3RyaW5nKSkpCiAgICAgICAgICAgICAg KGlmIChub3Qoc3RyaW5nLW1hdGNoICJcKG9iamVjdCAuKiBub3QgZm91bmRcKVx8dW5leHBlY3Rl ZCIgYnMpKQogICAgICAgICAgICAgICAgICAobGV0KiAoKG9iamNscyAoYnVmZmVyLXN1YnN0cmlu ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgMiAoc3RyaW5nLW1hdGNoICJc Ii4qXCIiIGJzKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChwb2ludC1t YXgpIDIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChteWZ1biAoY2RyKGFzc29jLXN0cmlu ZyBvYmpjbHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlc3MtUi1vYmplY3QtdG9vbHRpcC1hbGlzdCkpKSkKICAgICAgICAgICAgICAgICAgICAocHJv Z24KICAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgbXlmdW4gbmlsKQogICAgICAgICAgICAg ICAgICAgICAgICAgIChzZXRxIG15ZnVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGNkcihhc3NvYy1zdHJpbmcgIm90aGVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVzcy1SLW9iamVjdC10b29sdGlwLWFsaXN0KSkpKQogICAgICAg ICAgICAgICAgICAgICAgKGVzcy1jb21tYW5kIChjb25jYXQgbXlmdW4gIigiIG9iam5hbWUgIilc biIpIHRtcGJ1ZikKICAgICAgICAgICAgICAgICAgICAgIChsZXQgKChicyAoYnVmZmVyLXN0cmlu ZykpKQogICAgICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0LWJ1ZmZlciBjdXJidWYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvb2x0 aXAtc2hvdy1hdC1wb2ludCBicyAwIDMwKSkpKSkpKSkpCiAgICAgIChraWxsLWJ1ZmZlciB0bXBi dWYpKSkKICAKICA7OyBrZXkgbWFwIGZvciBSIGZpbGVzIGFuZCBpbmZlcmlvciBtb2RlCiAgKGRl ZmluZS1rZXkgZXNzLW1vZGUtbWFwICJcQy1jXEMtZyIgJ2Vzcy1SLW9iamVjdC10b29sdGlwKQog IChkZWZpbmUta2V5IGluZmVyaW9yLWVzcy1tb2RlLW1hcCAiXEMtY1xDLWciICdlc3MtUi1vYmpl Y3QtdG9vbHRpcCkKICAKICAocHJvdmlkZSAnZXNzLVItb2JqZWN0LXRvb2x0aXApCiMrZW5kX3Ny YwoqKiBTaGlmdCBFbnRlcgpGcm9tIFtbaHR0cDovL3d3dy5lbWFjc3dpa2kub3JnL2VtYWNzL0VT U1NoaWZ0RW50ZXJdXQotIGlmIFIgaWYgbm90IHJ1bm5pbmcsIGl0IHN0YXJ0cyBhdXRvbWF0aWNh bGx5IGFuZCBvcGVucyBhbiBpbmZlcmlvciBmcmFtZQotIGlmIHRoZSByZWdpb24gaXMgYWN0aXZl LCBldmFsdWF0ZXMgdGhlIHJlZ2lvbgotIG90aGVyd2lzZSwgaXQgcnVucyB0aGUgY3VycmVudCBs aW5lCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3BzCiAgKHNldHEgZXNzLWFzay1mb3ItZXNzLWRpcmVj dG9yeSBuaWwpCiAgKHNldHEgZXNzLWxvY2FsLXByb2Nlc3MtbmFtZSAiUiIpCiAgKHNldHEgYW5z aS1jb2xvci1mb3ItY29taW50LW1vZGUgJ2ZpbHRlcikKICAoc2V0cSBjb21pbnQtcHJvbXB0LXJl YWQtb25seSB0KQogIChzZXRxIGNvbWludC1zY3JvbGwtdG8tYm90dG9tLW9uLWlucHV0IHQpCiAg KHNldHEgY29taW50LXNjcm9sbC10by1ib3R0b20tb24tb3V0cHV0IHQpCiAgKHNldHEgY29taW50 LW1vdmUtcG9pbnQtZm9yLW91dHB1dCB0KQogIChkZWZ1biBteS1lc3Mtc3RhcnQtUiAoKQogICAg KGludGVyYWN0aXZlKQogICAgKGlmIChub3QgKG1lbWJlciAiKlIqIiAobWFwY2FyIChmdW5jdGlv biBidWZmZXItbmFtZSkgKGJ1ZmZlci1saXN0KSkpKQogICAgICAocHJvZ24KCShkZWxldGUtb3Ro ZXItd2luZG93cykKCShzZXRxIHcxIChzZWxlY3RlZC13aW5kb3cpKQoJKHNldHEgdzFuYW1lIChi dWZmZXItbmFtZSkpCgkoc2V0cSB3MiAoc3BsaXQtd2luZG93IHcxKSkKCShSKQoJKHNldC13aW5k b3ctYnVmZmVyIHcyICIqUioiKQoJKHNldC13aW5kb3ctYnVmZmVyIHcxIHcxbmFtZSkpKSkKICAo ZGVmdW4gbXktZXNzLWV2YWwgKCkKICAgIChpbnRlcmFjdGl2ZSkKICAgIChteS1lc3Mtc3RhcnQt UikKICAgIChpZiAoYW5kIHRyYW5zaWVudC1tYXJrLW1vZGUgbWFyay1hY3RpdmUpCgkoY2FsbC1p bnRlcmFjdGl2ZWx5ICdlc3MtZXZhbC1yZWdpb24pCiAgICAgIChjYWxsLWludGVyYWN0aXZlbHkg J2Vzcy1ldmFsLWxpbmUtYW5kLXN0ZXApKSkKICAoYWRkLWhvb2sgJ2Vzcy1tb2RlLWhvb2sKCSAg ICAnKGxhbWJkYSgpCgkgICAgICAgKGxvY2FsLXNldC1rZXkgWyhzaGlmdCByZXR1cm4pXSAnbXkt ZXNzLWV2YWwpKSkKICAoYWRkLWhvb2sgJ2luZmVyaW9yLWVzcy1tb2RlLWhvb2sKCSAgICAnKGxh bWJkYSgpCgkgICAgICAgKGxvY2FsLXNldC1rZXkgW0MtdXBdICdjb21pbnQtcHJldmlvdXMtaW5w dXQpCgkgICAgICAgKGxvY2FsLXNldC1rZXkgW0MtZG93bl0gJ2NvbWludC1uZXh0LWlucHV0KSkp CiAgKHJlcXVpcmUgJ2Vzcy1zaXRlKQojK2VuZF9zcmMKKiogaGlkZXNob3cKICBoaWRlc2hvdy1v cmcgKGh0dHA6Ly9naXRodWIuY29tL3NlY2VsaXMvaGlkZXNob3ctb3JnL3RyZWUvbWFzdGVyKQoj K2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHJlcXVpcmUgJ2hpZGVzaG93KQogIChyZXF1aXJlICdo aWRlc2hvdy1vcmcpCiAgKGFkZC10by1saXN0ICdocy1zcGVjaWFsLW1vZGVzLWFsaXN0CiAgICAg ICAgICAgICAgICcoZXNzLW1vZGUgInsiICJ9IiAiL1sqL10iIG5pbAogICAgICAgICAgICAgICAg ICAgICAgICAgIGhzLWMtbGlrZS1hZGp1c3QtYmxvY2stYmVnaW5uaW5nKSkKICAoZ2xvYmFsLXNl dC1rZXkgIlxDLWNoIiAnaHMtb3JnL21pbm9yLW1vZGUpIDs7IHRvZ2dsZXMgaGlkZXNob3ctb3Jn CiAgOzsgKGFkZC1ob29rICdlc3MtbW9kZS1ob29rICdocy1vcmcvbWlub3ItbW9kZSkgOzsgc3Rh cnRzIGZvciBFU1MgZmlsZXMKICAoYWRkLWhvb2sgJ2Vzcy1tb2RlLWhvb2sgJyhsYW1iZGEgKCkg KGhzLW9yZy9taW5vci1tb2RlIDEpKSkKIytlbmRfc3JjCioqIEFkZGl0aW9uYWwgc3ludGF4IGhp Z2hsaWdodGluZwojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKGFkZC1ob29rICdlc3MtbW9kZS1o b29rCiAgICAgICAgICAgICcobGFtYmRhKCkKICAgICAgICAgICAgICAgKGZvbnQtbG9jay1hZGQt a2V5d29yZHMgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoKCJc XDxcXChpZlxcfGZvclxcfGZ1bmN0aW9uXFx8cmV0dXJuXFwpXFw+W1xuWzpibGFuazpdXSooIiAx CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtbG9jay1rZXl3 b3JkLWZhY2UpIDsgbXVzdCBnbyBmaXJzdCB0byBvdmVycmlkZSBoaWdobGlnaHRpbmcgYmVsb3cK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIlxcPFxcKFsuQS1aYS16 XVsuX0EtWmEtejAtOV0qXFwpW1xuWzpibGFuazpdXSooIiAxCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UpIDsgaGln aGxpZ2h0IGZ1bmN0aW9uIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCJcXChbKCxdXFx8W1xuWzpibGFuazpdXSpcXClcXChbLkEtWmEtel1bLl9BLVphLXow LTldKlxcKVtcbls6Ymxhbms6XV0qPVtePV0iIDIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9udC1sb2NrLXJlZmVyZW5jZS1mYWNlKSA7aGlnaGxpZ2h0IGFyZ3Vt ZW50IG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKICAg ICAgICAgICAgICAgKSkKIytlbmRfc3JjCioqIGhpZGVzaG93IGZvciBFU1MKIytiZWdpbl9zcmMg ZW1hY3MtbGlzcAogIChhdXRvbG9hZCAnaGlkZXNob3d2aXMtZW5hYmxlICJoaWRlc2hvd3ZpcyIg IkhpZ2hsaWdodCBmb2xkYWJsZSByZWdpb25zIikKICAoZG9saXN0IChob29rIChsaXN0ICdlbWFj cy1saXNwLW1vZGUtaG9vawogICdlc3MtbW9kZS1ob29rKSkKICAoYWRkLWhvb2sgaG9vayAnaGlk ZXNob3d2aXMtZW5hYmxlKSkKICAoc2V0cSBocy1zcGVjaWFsLW1vZGVzLWFsaXN0CiAgKGNvbnMg Jyhlc3MtbW9kZSAieyIgIn0iICIjIiBuaWwgbmlsKSBocy1zcGVjaWFsLW1vZGVzLWFsaXN0KSkK CiAgKGRlZmluZS1mcmluZ2UtYml0bWFwICdocy1tYXJrZXIgWzAgMjQgMjQgMTI2IDEyNiAyNCAy NCAwXSkKCiAgKGRlZmN1c3RvbSBocy1mcmluZ2UtZmFjZSAnaHMtZnJpbmdlLWZhY2UKICAiKlNw ZWNpZnkgZmFjZSB1c2VkIHRvIGhpZ2hsaWdodCB0aGUgZnJpbmdlIG9uIGhpZGRlbiByZWdpb25z LiIKICA6dHlwZSAnZmFjZQogIDpncm91cCAnaGlkZXNob3cpCgogIChkZWZmYWNlIGhzLWZyaW5n ZS1mYWNlCiAgJygodCAoOmZvcmVncm91bmQgIiM4ODgiIDpib3ggKDpsaW5lLXdpZHRoIDIgOmNv bG9yICJncmV5NzUiIDpzdHlsZSByZWxlYXNlZC1idXR0b24pKSkpCiAgIkZhY2UgdXNlZCB0byBo aWdobGlnaHQgdGhlIGZyaW5nZSBvbiBmb2xkZWQgcmVnaW9ucyIKICA6Z3JvdXAgJ2hpZGVzaG93 KQoKICAoZGVmY3VzdG9tIGhzLWZhY2UgJ2hzLWZhY2UKICAiKlNwZWNpZnkgdGhlIGZhY2UgdG8g dG8gdXNlIGZvciB0aGUgaGlkZGVuIHJlZ2lvbiBpbmRpY2F0b3IiCiAgOnR5cGUgJ2ZhY2UKICA6 Z3JvdXAgJ2hpZGVzaG93KQoKICAoZGVmZmFjZSBocy1mYWNlCiAgJygodCAoOmJhY2tncm91bmQg IiNmZjgiIDpib3ggdCkpKQogICJGYWNlIHRvIGhpZ2h0bGlnaHQgdGhlIC4uLiBhcmVhIG9mIGhp ZGRlbiByZWdpb25zIgogIDpncm91cCAnaGlkZXNob3cpCgogIChkZWZ1biBkaXNwbGF5LWNvZGUt bGluZS1jb3VudHMgKG92KQogICh3aGVuIChlcSAnY29kZSAob3ZlcmxheS1nZXQgb3YgJ2hzKSkK ICAobGV0KiAoKG1hcmtlci1zdHJpbmcgIipmcmluZ2UtZHVtbXkqIikKICAobWFya2VyLWxlbmd0 aCAobGVuZ3RoIG1hcmtlci1zdHJpbmcpKQogIChkaXNwbGF5LXN0cmluZyAoZm9ybWF0ICIoJWQp Li4uIiAoY291bnQtbGluZXMgKG92ZXJsYXktc3RhcnQgb3YpIChvdmVybGF5LWVuZCBvdikpKSkK ICApCiAgKG92ZXJsYXktcHV0IG92ICdoZWxwLWVjaG8gIkhpZGRlbnQgdGV4dC4gQy1jLD0gdG8g c2hvdyIpCiAgKHB1dC10ZXh0LXByb3BlcnR5IDAgbWFya2VyLWxlbmd0aCAnZGlzcGxheSAobGlz dCAnbGVmdC1mcmluZ2UgJ2hzLW1hcmtlciAnaHMtZnJpbmdlLWZhY2UpIG1hcmtlci1zdHJpbmcp CiAgKG92ZXJsYXktcHV0IG92ICdiZWZvcmUtc3RyaW5nIG1hcmtlci1zdHJpbmcpCiAgKHB1dC10 ZXh0LXByb3BlcnR5IDAgKGxlbmd0aCBkaXNwbGF5LXN0cmluZykgJ2ZhY2UgJ2hzLWZhY2UgZGlz cGxheS1zdHJpbmcpCiAgKG92ZXJsYXktcHV0IG92ICdkaXNwbGF5IGRpc3BsYXktc3RyaW5nKQog ICkpKQoKICAoc2V0cSBocy1zZXQtdXAtb3ZlcmxheSAnZGlzcGxheS1jb2RlLWxpbmUtY291bnRz KQojK2VuZF9zcmMKCioqIGVsZG9jCmh0dHBzOi8vc3RhdC5ldGh6LmNoL3BpcGVybWFpbC9lc3Mt aGVscC8yMDEwLUp1bmUvMDA2MTc2Lmh0bWwgZm9yIGRldGFpbHMKIytiZWdpbl9zcmMgZW1hY3Mt bGlzcAogIChyZXF1aXJlICdlc3MtZWxkb2MpCiMrZW5kX3NyYwoqKiBDT01NRU5UIFRPRE8gU3lu dGF4IGhpZ2hsaWdodGluZyBmb3IgZnVuY3Rpb25zIGluIFIgTk9UIFdPUktJTkcKICBiYXNlZCBv biBodHRwczovL21haWwuZ29vZ2xlLmNvbS9tYWlsLyNsYWJlbC9MaXN0cyUyRkVTUy8xMjUxMzFl ZDI0Njg4OTcwCiAgVGhlIGZvbGxvd2luZyBjb2RlIG5lZWRzIHRvIGJlIHJ1biBpbiBSOgogIAog IG9iaiA8LSBkby5jYWxsKCJjIiwgc2FwcGx5KGMoInBhY2thZ2U6YmFzZSIsICJwYWNrYWdlOnN0 YXRzIiwKICAicGFja2FnZTp1dGlscyIpLCBvYmplY3RzLCBhbGwubmFtZXM9VFJVRSkpCiAgcmUg PC0gIiheW14uWzphbHBoYTpdWzpkaWdpdDpdXXw8LXxfXykiICAjIHRvIHJlbW92ZSAid2VpcmQi IGZ1bmN0aW9ucwogIG9iaiA8LSBvYmpbLWdyZXAocmUsIG9iaildCiAgZnBhdGggPC0gZmlsZS5w YXRoKFN5cy5nZXRlbnYoIkhPTUUiKSwgIi5lbWFjcy5kIiwgIlItZnVuY3Rpb24tbmFtZXMudHh0 IikKICB3cml0ZS50YWJsZShvYmosIGZwYXRoLCBxdW90ZT1GQUxTRSwgcm93Lm5hbWVzPUZBTFNF LCBjb2wubmFtZXM9RkFMU0UpCiAgCiAgUmVhZCBhIHdob2xlIGZpbGUgaW50byBsaXN0IG9mIGxp bmVzCiAgQXV0aG9yOiBYYWggTGVlCiAgc2VlIGh0dHA6Ly94YWhsZWUub3JnL2VtYWNzL2VsaXNw X3Byb2Nlc3NfbGluZXMuaHRtbAojK2JlZ2luX3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAo ZGVmdW4gcmVhZC1saW5lcyAoZmlsZSkKICAiUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyBpbiBGSUxF LiIKICAod2l0aC10ZW1wLWJ1ZmZlcgogIChpbnNlcnQtZmlsZS1jb250ZW50cyBmaWxlKQogIChz cGxpdC1zdHJpbmcKICAoYnVmZmVyLXN0cmluZykgIlxuIiB0KQogICkKICApCgogIChhZGQtaG9v ayAnZXNzLW1vZGUtaG9vawogICcobGFtYmRhKCkKICAoc2V0cSBlc3MtbXktZXh0cmEtUi1mdW5j dGlvbi1rZXl3b3JkcwogIChyZWFkLWxpbmVzICJ+Ly5lbWFjcy5kL1ItZnVuY3Rpb24tbmFtZXMu dHh0IikpCiAgKHNldHEgZXNzLVItbW9kZS1mb250LWxvY2sta2V5d29yZHMKICAoYXBwZW5kIGVz cy1SLW1vZGUtZm9udC1sb2NrLWtleXdvcmRzCiAgKGxpc3QgKGNvbnMgKGNvbmNhdCAiXFw8IiAo cmVnZXhwLW9wdAogIGVzcy1teS1leHRyYS1SLWZ1bmN0aW9uLWtleXdvcmRzICdlbmMtcGFyZW4p ICJcXD4iKQogICdmb250LWxvY2stZnVuY3Rpb24tbmFtZS1mYWNlKSkpKSkpCiMrZW5kX3NyYwoq IGVzcy10cmFjZWJ1Z3MKKiogbG9hZCBlc3MtdHJhY2VidWcgYW5kIGFjdGl2YXRlCiMrYmVnaW5f c3JjIGVtYWNzLWxpc3AKICAocmVxdWlyZSAnZXNzLXRyYWNlYnVnKQogIChhZGQtaG9vayAnZXNz LXBvc3QtcnVuLWhvb2sgJ2Vzcy10cmFjZWJ1ZyB0KQojK2VuZF9zcmMKCioqIEVycm9yIFRyYWNp bmcKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChkZWZpbmUta2V5IGVzcy1tb2RlLW1hcCAiXE0t XSIgJ25leHQtZXJyb3IpCiAgKGRlZmluZS1rZXkgZXNzLW1vZGUtbWFwICJcTS1bIiAncHJldmlv dXMtZXJyb3IpCiAgKGRlZmluZS1rZXkgaW5mZXJpb3ItZXNzLW1vZGUtbWFwICJcTS1dIiAnbmV4 dC1lcnJvci1uby1zZWxlY3QpCiAgKGRlZmluZS1rZXkgaW5mZXJpb3ItZXNzLW1vZGUtbWFwICJc TS1bIiAncHJldmlvdXMtZXJyb3Itbm8tc2VsZWN0KQojK2VuZF9zcmMKCioqIFRyYWNlYnVnIEJ1 ZmZlciAgCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoZGVmaW5lLWtleSBjb21waWxhdGlvbi1t aW5vci1tb2RlLW1hcCBbKD9uKV0gJ25leHQtZXJyb3Itbm8tc2VsZWN0KQogIChkZWZpbmUta2V5 IGNvbXBpbGF0aW9uLW1pbm9yLW1vZGUtbWFwIFsoP3ApXSAncHJldmlvdXMtZXJyb3Itbm8tc2Vs ZWN0KQojK2VuZF9zcmMKCioqIFZpc3VhbCBEZWJ1Z2dlcgoqKiogQ09NTUVOVCBPd24gQnJlYWtw b2ludHMKIytiZWdpbl9zcmMgZW1hY3MtbGlzcCA6dGFuZ2xlIG5vCiAgKGNvbmMgZXNzLWJwLXR5 cGUtc3BlYy1hbGlzdAogICAgICAgICcoKG15LWJyb3dzZXIgImJyb3dzZXIoZXhwciA9IGV4aXN0 cyhcImFcIikgJiYgYT4uNSkiCiAgICAgICAgICAgICAgICAgICAgICAiTXktQnI+XG4iCiAgICAg ICAgICAgICAgICAgICAgICBxdWVzdGlvbi1tYXJrCiAgICAgICAgICAgICAgICAgICAgICBmb250 LWxvY2stZG9jLWZhY2UpKSkKIytlbmRfc3JjCiogUi1hdXRveWFzClItYXV0b3lhcyBpcyBhIHNt YWxsIEVTUyBjb21wbGVtZW50LiBJdCBwcm92aWRlcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgeWFz bmlwcGV0cyBmb3IgUiBmdW5jdGlvbiBhcmd1bWVudCBsaXN0cy4KV2F0Y2ggdGhlIGRlbW8gc2Ny ZWVuY2FzdDogaHR0cDovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWpMSlBvcmYyTEJFCkRldGFp bHMgY2FuIGJlIGZvdW5kIFtbaHR0cDovL3d3dy5zdmVuaGFydGVuc3RlaW4uZGUvU29mdHdhcmUv Ui1hdXRveWFzL11dLgoqKiBDT01NRU5UIExvYWRpbmcgYW5kIEtleSBiaW5kaW5ncwojK2JlZ2lu X3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAoYWRkLWhvb2sgJ2Vzcy1tb2RlLWhvb2sKICAg ICAgICAgICAgJyhsYW1iZGEgKCkKICAgICAgICAgICAgICAgKGxvYWQgIn4vLmVtYWNzLmQvcGx1 Z2lucy9yLWF1dG95YXMuZWwiKSkpCiAgKGRlZmluZS1rZXkgZXNzLW1vZGUtbWFwIChrYmQgIkMt TS08dGFiPiIpCiAgICAnKGxhbWJkYSAoKShpbnRlcmFjdGl2ZSkKICAgICAgIChyLWF1dG95YXMt ZXhwYW5kIG5pbCBuaWwpKSkKIytlbmRfc3JjCgoqIENPTU1FTlQgR3JhcGh2aXoKTG9hZCBncmFw aHZpei1kb3QtbW9kZQojK2JlZ2luX3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAobG9hZC1m aWxlICJ+L2VtYWNzL2dyYXBodml6LWRvdC1tb2RlLmVsIikgCiAgKHNldHEgZ3JhcGh2aXotZG90 LXZpZXctY29tbWFuZCAiZGlzcGxheSAlcyIpCiMrZW5kX3NyYwoqIFNTSCBNYWpvciBtb2RlCiMr YmVnaW5fc3JjIGVtYWNzLWxpc3AKICAobG9hZC1maWxlICIvaG9tZS9ya3J1Zy8uZW1hY3MuZC9z aXRlLWxpc3Avc3NoLmVsIikgCiMrZW5kX3NyYwoqIENPTU1FTlQgQm9va21hcmsgKGJtKQojK2Jl Z2luX3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAoc2V0cSBibS1yZXN0b3JlLXJlcG9zaXRv cnktb24tbG9hZCB0KQogIChyZXF1aXJlICdibSkKICAoZ2xvYmFsLXNldC1rZXkgKGtiZCAiPGYy PiIpICdibS10b2dnbGUpCiAgKGdsb2JhbC1zZXQta2V5IChrYmQgIjxDLWYyPiIpICAgJ2JtLW5l eHQpCiAgKGdsb2JhbC1zZXQta2V5IChrYmQgIjxzLWYyPiIpICdibS1wcmV2aW91cykKICAKICA7 OyBtYWtlIGJvb2ttYXJrcyBwZXJzaXN0ZW50IGFzIGRlZmF1bHQKICAoc2V0cS1kZWZhdWx0IGJt LWJ1ZmZlci1wZXJzaXN0ZW5jZSB0KQogIAogIDs7IExvYWRpbmcgdGhlIHJlcG9zaXRvcnkgZnJv bSBmaWxlIHdoZW4gb24gc3RhcnQgdXAuCiAgKGFkZC1ob29rJyBhZnRlci1pbml0LWhvb2sgJ2Jt LXJlcG9zaXRvcnktbG9hZCkKICAKICA7OyBSZXN0b3JpbmcgYm9va21hcmtzIHdoZW4gb24gZmls ZSBmaW5kLgogIChhZGQtaG9vayAnZmluZC1maWxlLWhvb2tzICdibS1idWZmZXItcmVzdG9yZSkK ICAKICA7OyBTYXZpbmcgYm9va21hcmsgZGF0YSBvbiBraWxsaW5nIGEgYnVmZmVyCiAgKGFkZC1o b29rICdraWxsLWJ1ZmZlci1ob29rICdibS1idWZmZXItc2F2ZSkKICAKICA7OyBTYXZpbmcgdGhl IHJlcG9zaXRvcnkgdG8gZmlsZSB3aGVuIG9uIGV4aXQuCiAgOzsga2lsbC1idWZmZXItaG9vayBp cyBub3QgY2FsbGVkIHdoZW4gZW1hY3MgaXMga2lsbGVkLCBzbyB3ZQogIDs7IG11c3Qgc2F2ZSBh bGwgYm9va21hcmtzIGZpcnN0LgogIChhZGQtaG9vayAna2lsbC1lbWFjcy1ob29rICcobGFtYmRh IG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChibS1idWZmZXItc2F2ZS1hbGwp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJtLXJlcG9zaXRvcnktc2F2ZSkpKQoj K2VuZF9zcmMKKiBDT01NRU5UIGFueXRoaW5nCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRhbmds ZSBubwogIChyZXF1aXJlICdhbnl0aGluZykKICAocmVxdWlyZSAnYW55dGhpbmctY29uZmlnKQog IChyZXF1aXJlICdyZWNlbnRmKQogIAogIChnbG9iYWwtc2V0LWtleSBbZjExXSAnYW55dGhpbmcp CiAgKHJlbW92ZS1ob29rICdraWxsLWVtYWNzLWhvb2sgJ2FueXRoaW5nLWMtYWRhcHRpdmUtc2F2 ZS1oaXN0b3J5KQojK2VuZF9zcmMKKiogUiBvYmplY3RzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3Bz CiAgKHNldHEgYW55dGhpbmctYy1zb3VyY2UtUi1oZWxwCiAgJygobmFtZSAuICJSIG9iamVjdHMg LyBoZWxwIikKICAoaW5pdCAuIChsYW1iZGEgKCkKICA7IHRoaXMgZ3JhYnMgdGhlIHByb2Nlc3Mg bmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIGJ1ZmZlcgogIChzZXRxIGFueXRoaW5nLWMtZXNzLWxv Y2FsLXByb2Nlc3MtbmFtZSBlc3MtbG9jYWwtcHJvY2Vzcy1uYW1lKSkpCiAgKGNhbmRpZGF0ZXMg LiAobGFtYmRhICgpCiAgKGNvbmRpdGlvbi1jYXNlIG5pbAogIChlc3MtZ2V0LW9iamVjdC1saXN0 IGFueXRoaW5nLWMtZXNzLWxvY2FsLXByb2Nlc3MtbmFtZSkKICAoZXJyb3IgbmlsKSkpKQogIChh Y3Rpb24KICAoImhlbHAiIC4gZXNzLWRpc3BsYXktaGVscC1vbi1vYmplY3QpCiAgKCJoZWFkICgx MCkiIC4gKGxhbWJkYShvYmotbmFtZSkKICAoZXNzLWV4ZWN1dGUgKGNvbmNhdCAiaGVhZCgiIG9i ai1uYW1lICIsIG4gPSAxMClcbiIpIG5pbCAoY29uY2F0ICJSIGhlYWQ6ICIgb2JqLW5hbWUpKSkp CiAgKCJoZWFkICgxMDApIiAuIChsYW1iZGEob2JqLW5hbWUpCiAgKGVzcy1leGVjdXRlIChjb25j YXQgImhlYWQoIiBvYmotbmFtZSAiLCBuID0gMTAwKVxuIikgbmlsIChjb25jYXQgIlIgaGVhZDog IiBvYmotbmFtZSkpKSkKICAoInRhaWwiIC4gKGxhbWJkYShvYmotbmFtZSkKICAoZXNzLWV4ZWN1 dGUgKGNvbmNhdCAidGFpbCgiIG9iai1uYW1lICIsIG4gPSAxMClcbiIpIG5pbCAoY29uY2F0ICJS IHRhaWw6ICIgb2JqLW5hbWUpKSkpCiAgKCJzdHIiIC4gKGxhbWJkYShvYmotbmFtZSkKICAoZXNz LWV4ZWN1dGUgKGNvbmNhdCAic3RyKCIgb2JqLW5hbWUgIilcbiIpIG5pbCAoY29uY2F0ICJSIHN0 cjogIiBvYmotbmFtZSkpKSkKICAoInN1bW1hcnkiIC4gKGxhbWJkYShvYmotbmFtZSkKICAoZXNz LWV4ZWN1dGUgKGNvbmNhdCAic3VtbWFyeSgiIG9iai1uYW1lICIpXG4iKSBuaWwgKGNvbmNhdCAi UiBzdW1tYXJ5OiAiIG9iai1uYW1lKSkpKQogICgidmlldyBzb3VyY2UiIC4gKGxhbWJkYShvYmot bmFtZSkKICAoZXNzLWV4ZWN1dGUgKGNvbmNhdCAicHJpbnQoIiBvYmotbmFtZSAiKVxuIikgbmls IChjb25jYXQgIlIgb2JqZWN0OiAiIG9iai1uYW1lKSkpKQogICgiZHB1dCIgLiAobGFtYmRhKG9i ai1uYW1lKQogIChlc3MtZXhlY3V0ZSAoY29uY2F0ICJkcHV0KCIgb2JqLW5hbWUgIilcbiIpIG5p bCAoY29uY2F0ICJSIGRwdXQ6ICIgb2JqLW5hbWUpKSkpKQogICh2b2xhdGlsZSkpKQojK2VuZF9z cmMKKiogUiBsb2NhbCBvYmplY3RzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3BzCiAgKHNldHEgYW55 dGhpbmctYy1zb3VyY2UtUi1sb2NhbAogICcoKG5hbWUgLiAiUiBsb2NhbCBvYmplY3RzIikKICAo aW5pdCAuIChsYW1iZGEgKCkKICA7IHRoaXMgZ3JhYnMgdGhlIHByb2Nlc3MgbmFtZSBhc3NvY2lh dGVkIHdpdGggdGhlIGJ1ZmZlcgogIChzZXRxIGFueXRoaW5nLWMtZXNzLWxvY2FsLXByb2Nlc3Mt bmFtZSBlc3MtbG9jYWwtcHJvY2Vzcy1uYW1lKQogIDsgdGhpcyBncmFicyB0aGUgYnVmZmVyIGZv ciBsYXRlciB1c2UKICAoc2V0cSBhbnl0aGluZy1jLWVzcy1idWZmZXIgKGN1cnJlbnQtYnVmZmVy KSkpKQogIChjYW5kaWRhdGVzIC4gKGxhbWJkYSAoKQogIChsZXQgKGJ1ZikKICAoY29uZGl0aW9u LWNhc2UgbmlsCiAgKHdpdGgtdGVtcC1idWZmZXIKICAocHJvZ24KICAoc2V0cSBidWYgKGN1cnJl bnQtYnVmZmVyKSkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciBhbnl0aGluZy1jLWVzcy1idWZmZXIK ICAoZXNzLWNvbW1hbmQgInByaW50KGxzLnN0cigpLCBtYXgubGV2ZWw9MClcbiIgYnVmKSkKICAo c3BsaXQtc3RyaW5nIChidWZmZXItc3RyaW5nKSAiXG4iIHQpKSkKICAoZXJyb3IgbmlsKSkpKSkK ICAoZGlzcGxheS10by1yZWFsIC4gKGxhbWJkYSAob2JqLW5hbWUpIChjYXIgKHNwbGl0LXN0cmlu ZyBvYmotbmFtZSAiIDogIiB0KSkpKQogIChhY3Rpb24KICAoInN0ciIgLiAobGFtYmRhKG9iai1u YW1lKQogIChlc3MtZXhlY3V0ZSAoY29uY2F0ICJzdHIoIiBvYmotbmFtZSAiKVxuIikgbmlsIChj b25jYXQgIlIgc3RyOiAiIG9iai1uYW1lKSkpKQogICgic3VtbWFyeSIgLiAobGFtYmRhKG9iai1u YW1lKQogIChlc3MtZXhlY3V0ZSAoY29uY2F0ICJzdW1tYXJ5KCIgb2JqLW5hbWUgIilcbiIpIG5p bCAoY29uY2F0ICJSIHN1bW1hcnk6ICIgb2JqLW5hbWUpKSkpCiAgKCJoZWFkICgxMCkiIC4gKGxh bWJkYShvYmotbmFtZSkKICAoZXNzLWV4ZWN1dGUgKGNvbmNhdCAiaGVhZCgiIG9iai1uYW1lICIs IG4gPSAxMClcbiIpIG5pbCAoY29uY2F0ICJSIGhlYWQ6ICIgb2JqLW5hbWUpKSkpCiAgKCJoZWFk ICgxMDApIiAuIChsYW1iZGEob2JqLW5hbWUpCiAgKGVzcy1leGVjdXRlIChjb25jYXQgImhlYWQo IiBvYmotbmFtZSAiLCBuID0gMTAwKVxuIikgbmlsIChjb25jYXQgIlIgaGVhZDogIiBvYmotbmFt ZSkpKSkKICAoInRhaWwiIC4gKGxhbWJkYShvYmotbmFtZSkKICAoZXNzLWV4ZWN1dGUgKGNvbmNh dCAidGFpbCgiIG9iai1uYW1lICIsIG4gPSAxMClcbiIpIG5pbCAoY29uY2F0ICJSIHRhaWw6ICIg b2JqLW5hbWUpKSkpCiAgKCJwcmludCIgLiAobGFtYmRhKG9iai1uYW1lKQogIChlc3MtZXhlY3V0 ZSAoY29uY2F0ICJwcmludCgiIG9iai1uYW1lICIpXG4iKSBuaWwgKGNvbmNhdCAiUiBvYmplY3Q6 ICIgb2JqLW5hbWUpKSkpCiAgKCJkcHV0IiAuIChsYW1iZGEob2JqLW5hbWUpCiAgKGVzcy1leGVj dXRlIChjb25jYXQgImRwdXQoIiBvYmotbmFtZSAiKVxuIikgbmlsIChjb25jYXQgIlIgZHB1dDog IiBvYmotbmFtZSkpKSkpCiAgKHZvbGF0aWxlKSkpCiMrZW5kX3NyYwoqKiBPY2N1cgojK2JlZ2lu X3NyYyBlbWFjcy1saXNwcwogIChzZXRxIGFueXRoaW5nLWMtc291cmNlLW9jY3VyCiAgJygobmFt ZSAuICJPY2N1ciIpCiAgKGluaXQgLiAobGFtYmRhICgpCiAgKHNldHEgYW55dGhpbmctb2NjdXIt Y3VycmVudC1idWZmZXIKICAoY3VycmVudC1idWZmZXIpKSkpCiAgKGNhbmRpZGF0ZXMgLiAobGFt YmRhICgpCiAgKGxldCAoKGFueXRoaW5nLW9jY3VyLWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUg IipBbnl0aGluZyBPY2N1cioiKSkpCiAgKHdpdGgtY3VycmVudC1idWZmZXIgYW55dGhpbmctb2Nj dXItYnVmZmVyCiAgKG9jY3VyLW1vZGUpCiAgKGVyYXNlLWJ1ZmZlcikKICAobGV0ICgoY291bnQg KG9jY3VyLWVuZ2luZSBhbnl0aGluZy1wYXR0ZXJuCiAgKGxpc3QgYW55dGhpbmctb2NjdXItY3Vy cmVudC1idWZmZXIpIGFueXRoaW5nLW9jY3VyLWJ1ZmZlcgogIGxpc3QtbWF0Y2hpbmctbGluZXMt ZGVmYXVsdC1jb250ZXh0LWxpbmVzIGNhc2UtZm9sZC1zZWFyY2gKICBsaXN0LW1hdGNoaW5nLWxp bmVzLWJ1ZmZlci1uYW1lLWZhY2UKICBuaWwgbGlzdC1tYXRjaGluZy1saW5lcy1mYWNlCiAgKG5v dCAoZXEgb2NjdXItZXhjbHVkZWQtcHJvcGVydGllcyB0KSkpKSkKICAod2hlbiAoPiBjb3VudCAw KQogIChzZXRxIG5leHQtZXJyb3ItbGFzdC1idWZmZXIgYW55dGhpbmctb2NjdXItYnVmZmVyKQog IChjZHIgKHNwbGl0LXN0cmluZyAoYnVmZmVyLXN0cmluZykgIlxuIiB0KSkpKSkpKSkKICAoYWN0 aW9uIC4gKCgiR290byBsaW5lIiAuIChsYW1iZGEgKGNhbmRpZGF0ZSkKICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAiKkFueXRoaW5nIE9jY3VyKiIKICAoc2VhcmNoLWZvcndhcmQgY2FuZGlkYXRlKSkK ICAoZ290by1saW5lIChzdHJpbmctdG8tbnVtYmVyIGNhbmRpZGF0ZSkgYW55dGhpbmctb2NjdXIt Y3VycmVudC1idWZmZXIpKSkpKQogIChyZXF1aXJlcy1wYXR0ZXJuIC4gMykKICAodm9sYXRpbGUp CiAgKGRlbGF5ZWQpKSkKIytlbmRfc3JjCioqIGltZW51IC0tLSBwcm9iYWJseSAtLS0KIytiZWdp bl9zcmMgZW1hY3MtbGlzcHMKICAoZGVmdmFyIGFueXRoaW5nLWMtaW1lbnUtZGVsaW1pdGVyICIv IikKICAoZGVmdmFyIGFueXRoaW5nLWMtY2FjaGVkLWltZW51LWFsaXN0IG5pbCkKICAoZGVmdmFy IGFueXRoaW5nLWMtY2FjaGVkLWltZW51LWNhbmRpZGF0ZXMgbmlsKQogIChkZWZ2YXIgYW55dGhp bmctYy1jYWNoZWQtaW1lbnUtdGljayBuaWwpCiAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2Fs ICdhbnl0aGluZy1jLWNhY2hlZC1pbWVudS1hbGlzdCkKICAobWFrZS12YXJpYWJsZS1idWZmZXIt bG9jYWwgJ2FueXRoaW5nLWMtY2FjaGVkLWltZW51LWNhbmRpZGF0ZXMpCiAgKG1ha2UtdmFyaWFi bGUtYnVmZmVyLWxvY2FsICdhbnl0aGluZy1jLWNhY2hlZC1pbWVudS10aWNrKQogIChzZXRxIGFu eXRoaW5nLWMtc291cmNlLWltZW51CiAgJygobmFtZSAuICJJbWVudSIpCiAgKGluaXQgLiAobGFt YmRhICgpCiAgKHNldHEgYW55dGhpbmctYy1pbWVudS1jdXJyZW50LWJ1ZmZlcgogIChjdXJyZW50 LWJ1ZmZlcikpKSkKICAoY2FuZGlkYXRlcwogIC4gKGxhbWJkYSAoKQogICh3aXRoLWN1cnJlbnQt YnVmZmVyIGFueXRoaW5nLWMtaW1lbnUtY3VycmVudC1idWZmZXIKICAobGV0ICgodGljayAoYnVm ZmVyLW1vZGlmaWVkLXRpY2spKSkKICAoaWYgKGVxIGFueXRoaW5nLWMtY2FjaGVkLWltZW51LXRp Y2sgdGljaykKICBhbnl0aGluZy1jLWNhY2hlZC1pbWVudS1jYW5kaWRhdGVzCiAgKHNldHEgYW55 dGhpbmctYy1jYWNoZWQtaW1lbnUtdGljayB0aWNrCiAgYW55dGhpbmctYy1jYWNoZWQtaW1lbnUt Y2FuZGlkYXRlcwogIChjb25kaXRpb24tY2FzZSBuaWwKICAobWFwY2FuCiAgKGxhbWJkYSAoZW50 cnkpCiAgKGlmIChsaXN0cCAoY2RyIGVudHJ5KSkKICAobWFwY2FyIChsYW1iZGEgKHN1YikKICAo Y29uY2F0IChjYXIgZW50cnkpIGFueXRoaW5nLWMtaW1lbnUtZGVsaW1pdGVyIChjYXIgc3ViKSkp CiAgKGNkciBlbnRyeSkpCiAgKGxpc3QgKGNhciBlbnRyeSkpKSkKICAoc2V0cSBhbnl0aGluZy1j LWNhY2hlZC1pbWVudS1hbGlzdCAoaW1lbnUtLW1ha2UtaW5kZXgtYWxpc3QpKSkKICAoZXJyb3Ig bmlsKSkpKSkpKSkKICAodm9sYXRpbGUpCiAgKGFjdGlvbgogIC4gKGxhbWJkYSAoZW50cnkpCiAg KGxldCogKChwYWlyIChzcGxpdC1zdHJpbmcgZW50cnkgYW55dGhpbmctYy1pbWVudS1kZWxpbWl0 ZXIpKQogIChmaXJzdCAoY2FyIHBhaXIpKQogIChzZWNvbmQgKGNhZHIgcGFpcikpKQogIChpbWVu dQogIChpZiBzZWNvbmQKICAoYXNzb2Mgc2Vjb25kIChjZHIgKGFzc29jIGZpcnN0IGFueXRoaW5n LWMtY2FjaGVkLWltZW51LWFsaXN0KSkpCiAgKGFzc29jIGVudHJ5IGFueXRoaW5nLWMtY2FjaGVk LWltZW51LWFsaXN0KSkpKSkpKSkKIytlbmRfc3JjCioqIFZpc2libGUgYm9va21hcmtzCiMrYmVn aW5fc3JjIGVtYWNzLWxpc3BzCiAgOzsgKGRlZnZhciBhbnl0aGluZy1jLXNvdXJjZS1ibQogIDs7 ICAgJygobmFtZSAuICJWaXNpYmxlIEJvb2ttYXJrcyIpCiAgOzsgICAgIChpbml0IC4gKGxhbWJk YSAoKQogIDs7ICAgICAgICAgICAgICAgKGxldCAoKGJvb2ttYXJrcyAoYm0tbGlzdHMpKSkKICA7 OyAgICAgICAgICAgICAgICAgKHNldHEgYW55dGhpbmctYm0tbWFya3MKICA7OyAgICAgICAgICAg ICAgICAgICAgICAgKGRlbHEgbmlsCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICht YXBjYXIgKGxhbWJkYSAoYm0pCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobGV0ICgoc3RhcnQgKG92ZXJsYXktc3RhcnQgYm0pKQogIDs7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZCAob3ZlcmxheS1lbmQgYm0pKSkKICA7 OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmICg8ICgtIGVuZCBz dGFydCkgMikKICA7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5pbAogIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3Jt YXQgIiU3ZDogJXMiCiAgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zIHN0YXJ0KQogIDs7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgc3Rh cnQgKDEtIGVuZCkpKSkpKQogIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChhcHBlbmQgKGNhciBib29rbWFya3MpIChjZHIgYm9va21hcmtzKSkpKSkpKSkKICA7OyAgICAg KGNhbmRpZGF0ZXMgLiAobGFtYmRhICgpCiAgOzsgICAgICAgICAgICAgICAgICAgICBhbnl0aGlu Zy1ibS1tYXJrcykpCiAgOzsgICAgIChhY3Rpb24gLiAoKCJHb3RvIGxpbmUiIC4gKGxhbWJkYSAo Y2FuZGlkYXRlKQogIDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tbGlu ZSAoc3RyaW5nLXRvLW51bWJlciBjYW5kaWRhdGUpKSkpKSkpKQojK2VuZF9zcmMKKiogSSBkb24n dCBrbm93CiMrYmVnaW5fc3JjIGVtYWNzLWxpc3BzCiAgOzsKICAoc2V0cSBhbnl0aGluZy1zb3Vy Y2VzCiAgKGxpc3QgCiAgYW55dGhpbmctYy1zb3VyY2UtYnVmZmVycyA7IGJ1ZmZlcnMKICA7OyAg ICAgICAgYW55dGhpbmctYy1zb3VyY2UtYm0KICBhbnl0aGluZy1jLXNvdXJjZS1pbWVudSAgIDsg ZS5nLiBJbWVudS1TIG1lbnUKICA7OyAgICAgICAgYW55dGhpbmctYy1zb3VyY2UtcmVjZW50ZiA7 IHJlY2VudCBmaWxlczogbmVlZHMgKHJlcXVpcmUgJ3JlY2VudGYpCiAgYW55dGhpbmctYy1zb3Vy Y2UtUi1sb2NhbAogIGFueXRoaW5nLWMtc291cmNlLVItaGVscAogIGFueXRoaW5nLWMtc291cmNl LWZpbGVzLWluLWN1cnJlbnQtZGlyCiAgYW55dGhpbmctYy1zb3VyY2Utb2NjdXIKICBhbnl0aGlu Zy1jLXNvdXJjZS1sb2NhdGUgIDsgbmVlZHMgdGhlIHV0aWxpdHkgbG9jYXRlCiAgKSkKIytlbmRf c3JjCiogQ09NTUVOVCBpY2ljbGVzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRhbmdsZSBubwog IChsb2FkICJ+Ly5lbWFjcy5kL3NpdGUtbGlzcC9pY2ljbGVzLWluc3RhbGwiKQogIChhZGQtdG8t bGlzdCAnbG9hZC1wYXRoICJ+Ly5lbWFjcy5kL2ljaWNsZXMiKQogIDs7IChyZXF1aXJlICdpY2lj bGVzKQojK2VuZF9zcmMKKiBoaWdobGlnaHQtcGFyZW50aGVzZXMKICBodHRwOi8vbnNjaHVtLmRl L3NyYy9lbWFjcy9oaWdobGlnaHQtcGFyZW50aGVzZXMvaGlnaGxpZ2h0LXBhcmVudGhlc2VzLmVs CiAgaGlnaGxpZ2h0IHBhcmVudGhlc2lzIHdpdGggZGlmZmVyZW50IGNvbG91cnMKIytiZWdpbl9z cmMgZW1hY3MtbGlzcAogIChyZXF1aXJlICdoaWdobGlnaHQtcGFyZW50aGVzZXMpCiAgKHNldHEg aGwtcGFyZW4tY29sb3JzICcoImdvbGQiICJJbmRpYW5SZWQiICJjeWFuIiAiZ3JlZW4iICJvcmFu Z2UiCiAgIm1hZ2VudGEiKSkKICAoZGVmdW4gaHBtLW9uICgpCiAgKGhpZ2hsaWdodC1wYXJlbnRo ZXNlcy1tb2RlIHQpKQogIChhZGQtaG9vayAnZXNzLW1vZGUtaG9vayAnaHBtLW9uKQogIChhZGQt aG9vayAnaW5mZXJpb3ItZXNzLW1vZGUtaG9vayAnaHBtLW9uKQojK2VuZF9zcmMKCiogYXV0b21h dGljYWxseSBjbG9zaW5nIGJyYWNrZXRzCioqIGZvbGxvd2luZyBmcm9tIE1hcmMgU2Nod2FydHog ZnJvbSBFU1MgbGlzdCwgd29ya3MgZ2xvYmFsbHkgdG8gaW5zZXJ0IGNsb3NpbmcgYnJhY2V0cyBh dXRvbWF0aWNhbGx5CiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoc2V0cSBza2VsZXRvbi1wYWly IHQpCiAgOyhzZXRxIHNrZWxldG9uLXBhaXItb24td29yZCB0KQogICAoZ2xvYmFsLXNldC1rZXkg KGtiZCAiKCIpICdza2VsZXRvbi1wYWlyLWluc2VydC1tYXliZSkKICAgKGdsb2JhbC1zZXQta2V5 IChrYmQgIlsiKSAnc2tlbGV0b24tcGFpci1pbnNlcnQtbWF5YmUpCiAgIChnbG9iYWwtc2V0LWtl eSAoa2JkICJ7IikgJ3NrZWxldG9uLXBhaXItaW5zZXJ0LW1heWJlKQogICAoZ2xvYmFsLXNldC1r ZXkgKGtiZCAiXCIiKSAnc2tlbGV0b24tcGFpci1pbnNlcnQtbWF5YmUpCiAgIChnbG9iYWwtc2V0 LWtleSAoa2JkICJcJyIpICdza2VsZXRvbi1wYWlyLWluc2VydC1tYXliZSkKICAgKGdsb2JhbC1z ZXQta2V5IChrYmQgIlxgIikgJ3NrZWxldG9uLXBhaXItaW5zZXJ0LW1heWJlKQogICA7OyAoZ2xv YmFsLXNldC1rZXkgKGtiZCAiPCIpICdza2VsZXRvbi1wYWlyLWluc2VydC1tYXliZSkKICA7OyBE ZWxldGUgZW1wdHkgcGFpcnMgbGlrZSAnKCknIHRha2VuIGZyb20KICA7OyBbW2h0dHA6Ly93d3cu ZW1hY3N3aWtpLm9yZy9jZ2ktYmluL3dpa2kvU2tlbGV0b25Nb2RlI3RvYzE0XV0gIyNEZWxldGlv biBzZWN0aW9uCiAgKGRlZnZhciBza2VsZXRvbnMtYWxpc3QKICAnKCg/XCggLiA/XCkpCiAgKD9c JyAuID9cJykKICAoP1wiIC4gP1wiKQogICg/WyAgLiA/XSkKICAoP3sgIC4gP30pCiAgOzsgKD88 ICAuID8+KQogICg/JCAgLiA/JCkpKQogIChkZWZhZHZpY2UgZGVsZXRlLWJhY2t3YXJkLWNoYXIg KGJlZm9yZSBkZWxldGUtZW1wdHktcGFpciBhY3RpdmF0ZSkKICAoaWYgKGVxIChjZHIgKGFzc3Eg KGNoYXItYmVmb3JlKSBza2VsZXRvbnMtYWxpc3QpKSAoY2hhci1hZnRlcikpCiAgKGFuZCAoY2hh ci1hZnRlcikgKGRlbGV0ZS1jaGFyIDEpKSkpCiMrZW5kX3NyYwoqKiBDT01NRU5UIENhbGxpbmcg Ui1hdXRveWFzIHdoZW5ldmVyICIoIiBpcyB0eXBlZCBpbiAKIytiZWdpbl9zcmMgZW1hY3MtbGlz cCA6dGFuZ2xlIG5vCiAgKGRlZmluZS1rZXkgZXNzLW1vZGUtbWFwIChrYmQgIigiKSAnKGxhbWJk YSAoKSAoaW50ZXJhY3RpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2tlbGV0b24tcGFpci1pbnNlcnQtbWF5YmUgbmlsKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHItYXV0b3lhcy1leHBhbmQgbmlsIHQpKSkKIytlbmRfc3JjCgoq IG9yZy1tb2RlCioqIEJhc2ljIG9yZyBtb2RlCioqKiBJbml0aWFsaXNlIG9yZy1tb2RlCiAgaHR0 cDovL29yZ21vZGUub3JnL21hbnVhbC9JbnN0YWxsYXRpb24uaHRtbCNJbnN0YWxsYXRpb24KICBo dHRwOi8vb3JnbW9kZS5vcmcvbWFudWFsL0FjdGl2YXRpb24uaHRtbCNBY3RpdmF0aW9uIAojK2Jl Z2luX3NyYyBlbWFjcy1saXNwCiAgOzsgVGhlIGZvbGxvd2luZyBsaW5lcyBhcmUgYWx3YXlzIG5l ZWRlZC4gIENob29zZSB5b3VyIG93biBrZXlzLgogIChhZGQtdG8tbGlzdCAnYXV0by1tb2RlLWFs aXN0ICcoIlxcLm9yZ1xcJyIgLiBvcmctbW9kZSkpCiAgKGdsb2JhbC1zZXQta2V5ICJcQy1jbCIg J29yZy1zdG9yZS1saW5rKQogIChnbG9iYWwtc2V0LWtleSAiXEMtY2EiICdvcmctYWdlbmRhKQog IChnbG9iYWwtc2V0LWtleSAiXEMtY2IiICdvcmctaXN3aXRjaGIpCiAgOzsgYWN0aXZhdGUgZm9u dC1sb2NrLW1vZGUKICAoZ2xvYmFsLWZvbnQtbG9jay1tb2RlIDEpICAgICAgICAgICAgICAgICAg ICAgOyBmb3IgYWxsIGJ1ZmZlcnMKICA7OyAoYWRkLWhvb2sgJ29yZy1tb2RlLWhvb2sgJ3R1cm4t b24tZm9udC1sb2NrKSAgOyBPcmcgYnVmZmVycyBvbmx5CiAgKHRyYW5zaWVudC1tYXJrLW1vZGUg MSkKIytlbmRfc3JjCgoqKiogU3RhcnR1cCBzZXR0aW5ncwoqKioqIEhpZGUgbGVhZGluZyBzdGFy cwojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHNldHEgb3JnLWhpZGUtbGVhZGluZy1zdGFycyB0 KQojK2VuZF9zcmMKKioqKiBJbmRlbnQgYnkgZGVmYXVsdAojK2JlZ2luX3NyYyBlbWFjcy1saXNw CihzZXRxIG9yZy1zdGFydHVwLWluZGVudGVkIHQpCiMrZW5kX3NyYwoqKioqIFN0YXJ0IHdpdGgg aGlkZGVuIHNvdXJjZSBibG9ja3MKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAooc2V0cSBvcmctaGlk ZS1ibG9jay1zdGFydHVwIG5pbCkKIytlbmRfc3JjCgoqKiogVXNlIHRoZSBpbmZvIGZpbGVzIGZy b20gdGhlIGFjdHVhbCBvcmctbW9kZSB1c2VkCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoYWRk LXRvLWxpc3QgJ0luZm8tZGVmYXVsdC1kaXJlY3RvcnktbGlzdCAifi8uZW1hY3MuZC9vcmctbW9k ZS9kb2MvIikKIytlbmRfc3JjCgoqKiogRW5hYmxlIGZvbnRpZmljYXRpb24gb2YgaW5saW5lIGNv ZGUgYmxvY2tzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoc2V0cSBvcmctc3JjLWZvbnRpZnkt bmF0aXZlbHkgdCkKIytlbmRfc3JjCgoqKiogRGlzYWJsZSB0YWIgaW4gc291cmNlIGJsb2NrClRv IGVuYWJsZSwgc2V0IHRvIG5vbi1uaWwgdmFsdWUKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChz ZXRxIG9yZy1zcmMtdGFiLWFjdHMtbmF0aXZlbHkgbmlsKQojK2VuZF9zcmMKCioqKiBDT01NRU5U IFVzZSB0ZXh0IHNlYXJjaCBpbnN0ZWFkIG9mIDpJRDogcHJvcGVydGllcyBmb3IgbGlua3MKIyti ZWdpbl9zcmMgZW1hY3MtbGlzcCA6dGFuZ2xlIG5vCiAgKHNldCBvcmctbGluay10by1vcmctdXNl LWlkIG5pbCkKIytlbmRfc3JjCgoqKiogRW5hYmxlIGZvbnRpZmllZCBjb2RlIGV4cG9ydCB0byBM YVRlWCAvIHBkZgojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHJlcXVpcmUgJ29yZy1sYXRleCkK ICAoc2V0cSBvcmctZXhwb3J0LWxhdGV4LWxpc3RpbmdzIHQpCiAgKGFkZC10by1saXN0ICdvcmct ZXhwb3J0LWxhdGV4LXBhY2thZ2VzLWFsaXN0ICcoIiIgImxpc3RpbmdzIikpCiAgKGFkZC10by1s aXN0ICdvcmctZXhwb3J0LWxhdGV4LXBhY2thZ2VzLWFsaXN0ICcoIiIgImNvbG9yIikpCiMrZW5k X3NyYwoKKioqIERpc3BsYXkgc291cmNlIGNvZGUgZWRpdCBidWZmZXIgaW4gdGhlIGN1cnJlbnQg d2luZG93LCBrZWVwaW5nIGFsbCBvdGhlciB3aW5kb3dzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AK ICAoc2V0cSBvcmctc3JjLXdpbmRvdy1zZXR1cCAnY3VycmVudC13aW5kb3cpCiMrZW5kX3NyYwoK KioqIFNjYWxlIExhVGVYIG1hdGggc3ltYm9scyBldCBhbAojK0JFR0lOX1NSQyBlbWFjcy1saXNw CiAgKHNldHEgb3JnLWZvcm1hdC1sYXRleC1vcHRpb25zIAogICAgICAgIChwbGlzdC1wdXQgb3Jn LWZvcm1hdC1sYXRleC1vcHRpb25zIDpzY2FsZSAxLjMpKQojK0VORF9TUkMKCioqKiBLaWxsIGV4 cG9ydCBidWZmZXIgd2hlbiBjcmVhdGVkCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoc2V0cSBv cmctZXhwb3J0LWtpbGwtcHJvZHVjdC1idWZmZXItd2hlbi1kaXNwbGF5ZWQgdCkKIytlbmRfc3Jj CgoqKiogQ2hhbmdlICJmb2xkaW5nIGVsbGlwc2VzIgojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAg OzsgKHNldHEgb3JnLWVsbGlwc2lzICIgLi4uIC4uLiA+IikgICAgIAogIChzZXRxIG9yZy1lbGxp cHNpcyAi44CWIOKcjiDjgJciKQojK2VuZF9zcmMKCiMrcmVzdWx0czoKOiAgLi4uIC4uLiA+Cgoq KiogQXNrIHdoZW4gZGVsZXRpbmcgc3VidHJlZQojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHNl dHEgb3JnLWN0cmwtay1wcm90ZWN0LXN1YnRyZWUgImFzayIpCiMrZW5kX3NyYwoKIytyZXN1bHRz Ogo6IGFzawoKKiogb3JnLW1pbWUKW1todHRwOi8vb3JnbW9kZS5vcmcvd29yZy9vcmctY29udHJp Yi9vcmctbWltZS5waHBdXQojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHJlcXVpcmUgJ29yZy1t aW1lKQogIChhZGQtaG9vayAnbWVzc2FnZS1tb2RlLWhvb2sKICAgICAgICAgICAgKGxhbWJkYSAo KQogICAgICAgICAgICAgIChsb2NhbC1zZXQta2V5ICJcQy1jXE0tbyIgJ29yZy1taW1lLWh0bWxp emUpKSkKICAKICAoYWRkLWhvb2sgJ29yZy1tb2RlLWhvb2sKICAgICAgICAgICAgKGxhbWJkYSAo KQogICAgICAgICAgICAgIChsb2NhbC1zZXQta2V5ICJcQy1jXE0tbyIgJ29yZy1taW1lLW9yZy1i dWZmZXItaHRtbGl6ZSkpKQojK2VuZF9zcmMKKiogb3JnLXByb3RvY29sCltbaHR0cDovL29yZ21v ZGUub3JnL3dvcmcvb3JnLWNvbnRyaWIvb3JnLXByb3RvY29sLnBocF1dIAojK2JlZ2luX3NyYyBl bWFjcy1saXNwCiAgKHNlcnZlci1zdGFydCkKICAoYWRkLXRvLWxpc3QgJ2xvYWQtcGF0aCAifi8u ZW1hY3MuZC9vcmctbW9kZS9saXNwLyIpCiAgKHJlcXVpcmUgJ29yZy1wcm90b2NvbCkKIytlbmRf c3JjCgoqKiBvcmctY2FwdHVyZQogIFNldCB0aGUga2V5Ym9hcmQgc2hvcnRjdXQgYW5kIGRlZmlu ZSB0aGUgdGVtcGxhdGVzCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoZGVmaW5lLWtleSBnbG9i YWwtbWFwICJcQy1jYyIgJ29yZy1jYXB0dXJlKSAKICAoc2V0cSBvcmctY2FwdHVyZS10ZW1wbGF0 ZXMKICAgICAgICBgKAogICAgICAgICAgOzsgKCJ0IiAiVG9kbyIgZW50cnkgKGZpbGUraGVhZGxp bmUgIn4vRG9jdW1lbnRzL29yZ2ZpbGVzLy9ub3Rlcy5vcmciICJUYXNrcyIpICIqIFRPRE8gJVUg JT8laSAlYSIpIAogICAgICAgICAgOzsgKCJqIiAiSm91cm5hbCIgZW50cnkgKGZpbGUraGVhZGxp bmUgIn4vRG9jdW1lbnRzL29yZ2ZpbGVzLy9ub3Rlcy5vcmciICIiKSAiKiAlVSAlPyAlaSAlYSIp CiAgICAgICAgICA7OyAoImkiICJJZGVhIiBlbnRyeSAoZmlsZStoZWFkbGluZSAifi9Eb2N1bWVu dHMvb3JnZmlsZXMvL25vdGVzLm9yZyIgIk5ldyBJZGVhcyIpICIqICVee1RpdGxlfSAlaSAlYSIp IAogICAgICAgICAgOzsgKCJyIiAiUmVmZXJlbmNlIE1hdGVyaWFsIiBlbnRyeSAoZmlsZStoZWFk bGluZSAicmVmZXJlbmNlLm9yZyIgIiIpICIqJT8gJSYlXmciKQogICAgICAgICAgOzsgKCJ4IiAi TWVzc2FnZSIgZW50cnkgKGZpbGUrZGF0ZXRyZWUgKGJ1ZmZlci1maWxlLW5hbWUgKGJ1ZmZlci1i YXNlLWJ1ZmZlcikpKSAiKiBNU0cgQCAlVSAlP1xuICVhIikKICA7OyA7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsKICA7OyAgICAgICAgKCJndCIgCiAgOzsgICAgICAgICAiR2xvYmFsIFRvZG8iIAogIDs7ICAg ICAgICAgZW50cnkgCiAgOzsgICAgICAgICAoZmlsZStoZWFkbGluZSAifi9Eb2N1bWVudHMvb3Jn ZmlsZXMvbm90ZXMub3JnIiAiVGFza3MiKSAKICA7OyAgICAgICAgICIqIFRPRE8gJVUKICA7OyAl PwogIDs7ICVpCiAgOzsgJWEiCiAgOzsgICAgICAgICApCiAgOzsgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7 CiAgOzsgICAgICAgICAoIkoiCiAgOzsgICAgICAgICAgIkdsb2JhbCBKb3VybmFsIiAKICA7OyAg ICAgICAgICBlbnRyeSAKICA7OyAgICAgICAgICAoZmlsZStoZWFkbGluZSAifi9Eb2N1bWVudHMv b3JnZmlsZXMvbm90ZXMub3JnIiAiIikgCiAgOzsgICAgICAgICAgIiogJVUgJT8KICAKICA7OyAg ICVpCiAgOzsgICAlYSIKICA7OyAgICAgICAgICApIAogIDs7IDs7Ozs7Ozs7Ozs7Ozs7Ozs7Owog IDs7ICAgICAgICAgKCJJIgogIDs7ICAgICAgICAgICJHbG9iYWwgSWRlYSIgCiAgOzsgICAgICAg ICAgZW50cnkgCiAgOzsgICAgICAgICAgKGZpbGUraGVhZGxpbmUgIn4vRG9jdW1lbnRzL29yZ2Zp bGVzL25vdGVzLm9yZyIgIk5ldyBJZGVhcyIpIAogIDs7ICAgICAgICAgICIqICVee1RpdGxlfQog IDs7ICAgJWkKICA7OyAgICVhIgogIDs7ICAgICAgICAgICkgCiAgOzsgOzs7Ozs7Ozs7Ozs7Ozs7 Ozs7CiAgOzsgICAgICAgICAoIlIiIAogIDs7ICAgICAgICAgICJHbG9iYWwgUmVmZXJlbmNlIE1h dGVyaWFsIiAKICA7OyAgICAgICAgICBlbnRyeSAKICA7OyAgICAgICAgICAoZmlsZStoZWFkbGlu ZSAifi9Eb2N1bWVudHMvb3JnZmlsZXMvbm90ZXMub3JnIiAiUmVmZXJlbmNlIikKICA7OyAgICAg ICAgICAiKiU/ICUmJV5nIgogIDs7ICAgICAgICAgICkgCiAgOzsgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7 CiAgICAgICAgICAoInAiIAogICAgICAgICAgICJQcm9ibGVtIHRvIGJlIGxvZ2dlZCBpbiBidWZm ZXIiIAogICAgICAgICAgIGVudHJ5IAogICAgICAgICAgKGZpbGUraGVhZGxpbmUgKGJ1ZmZlci1m aWxlLW5hbWUpICJRVUVTVElPTlMiKQogICAgICAgICAgICIqICU/CiAgLSBmaWxlICAgICA6OiAl KGJ1ZmZlci1maWxlLW5hbWUgKG9yZy1jYXB0dXJlLWdldCA6b3JpZ2luYWwtYnVmZmVyKSkKICAt IHJldmlzaW9uIDo6ICUoc3ltYm9sLW5hbWUgKHZjLXdvcmtpbmctcmV2aXNpb24gKGJ1ZmZlci1m aWxlLW5hbWUgKG9yZy1jYXB0dXJlLWdldCA6b3JpZ2luYWwtYnVmZmVyKSkpKQogIC0gc3RhdGUg ICAgOjogJShzeW1ib2wtbmFtZSAodmMtc3RhdGUgKGJ1ZmZlci1maWxlLW5hbWUgKG9yZy1jYXB0 dXJlLWdldCA6b3JpZ2luYWwtYnVmZmVyKSkpKQogIC0gbGluayAgICAgOjogJWEgCiAgLSBhdXRo b3IgICA6OiBSYWluZXIgTSBLcnVnLCBlbWFpbDogUmFpbmVyQGtydWdzLmRlIgogICAgICAgICAg ICkgCiAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7CiAgICAgICAgICAoImMiIAogICAgICAgICAgICJDaGFu Z2VzIHRvIGJlIGxvZ2dlZCBpbiBidWZmZXIiIAogICAgICAgICAgIGVudHJ5CiAgICAgICAgICAo ZmlsZStoZWFkbGluZSAoYnVmZmVyLWZpbGUtbmFtZSkgIkNIQU5HRVMiKQogICAgICAgICAgICIq ICVUICU/IAogIC0gZmlsZSAgICAgOjogJShidWZmZXItZmlsZS1uYW1lIChvcmctY2FwdHVyZS1n ZXQgOm9yaWdpbmFsLWJ1ZmZlcikpCiAgLSByZXZpc2lvbiA6OiAlKHN5bWJvbC1uYW1lICh2Yy13 b3JraW5nLXJldmlzaW9uIChidWZmZXItZmlsZS1uYW1lIChvcmctY2FwdHVyZS1nZXQgOm9yaWdp bmFsLWJ1ZmZlcikpKSkKICAtIHN0YXRlICAgIDo6ICUoc3ltYm9sLW5hbWUgKHZjLXN0YXRlIChi dWZmZXItZmlsZS1uYW1lIChvcmctY2FwdHVyZS1nZXQgOm9yaWdpbmFsLWJ1ZmZlcikpKSkKICAt IGxpbmsgICAgIDo6ICVhIAogIC0gYXV0aG9yICAgOjogUmFpbmVyIE0gS3J1ZywgZW1haWw6IFJh aW5lckBrcnVncy5kZSAlbiIKICAgICAgICAgICApCiAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7CiAgOzsg ICAgICAgICAoInQiIAogIDs7ICAgICAgICAgICJUT0RPIHRvIGJlIGxvZ2dlZCBpbiBidWZmZXIi IAogIDs7ICAgICAgICAgIGVudHJ5CiAgOzsgICAgICAgICAoZmlsZStoZWFkbGluZSAoYnVmZmVy LWZpbGUtbmFtZSkgIlRPRE8iKQogIDs7ICAgICAgICAgICIqICVUICU/IAogIDs7IC0gZmlsZSAg ICAgOjogJShidWZmZXItZmlsZS1uYW1lIChvcmctY2FwdHVyZS1nZXQgOm9yaWdpbmFsLWJ1ZmZl cikpCiAgOzsgLSByZXZpc2lvbiA6OiAlKHN5bWJvbC1uYW1lICh2Yy13b3JraW5nLXJldmlzaW9u IChidWZmZXItZmlsZS1uYW1lIChvcmctY2FwdHVyZS1nZXQgOm9yaWdpbmFsLWJ1ZmZlcikpKSkK ICA7OyAtIHN0YXRlICAgIDo6ICUoc3ltYm9sLW5hbWUgKHZjLXN0YXRlIChidWZmZXItZmlsZS1u YW1lIChvcmctY2FwdHVyZS1nZXQgOm9yaWdpbmFsLWJ1ZmZlcikpKSkKICA7OyAtIGxpbmsgICAg IDo6ICVhIAogIDs7IC0gYXV0aG9yICAgOjogUmFpbmVyIE0gS3J1ZywgZW1haWw6IFJhaW5lckBr cnVncy5kZSAlbiIKICA7OyAgICAgICAgICApCiAgOzs7Ozs7Ozs7Ozs7Ozs7Ozs7CiAgICAgICAg ICApCiAgICAgICAgKQogIAojK2VuZF9zcmMKCioqIG9yZy1iYWJlbAoqKiogRGlzYWJsZSBwcm9t cHRpbmcgZm9yIGNvZGUgZXhlY3V0aW9uCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKKHNldHEgb3Jn LWNvbmZpcm0tYmFiZWwtZXZhbHVhdGUgbmlsKQojK2VuZF9zcmMKCioqKiBTZXQgcHJvbXB0aW5n IGZvciBzaGVsbCBsaW5rIGV4ZWN1dGlvbgojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHNldHEg b3JnLWNvbmZpcm0tc2hlbGwtbGluay1mdW5jdGlvbiAneS1vci1uLXApCiMrZW5kX3NyYwoKKioq IExvYWQgbGlicmFyeS1vZi1iYWJlbC5lbApMb2FkIHRoZSBzb3VyY2UtY29kZSBibG9ja3MgZGVm aW5lZCBpbiBhbiBPcmctbW9kZSBmaWxlIGludG8gdGhlIGdsb2JhbCAib3JnLWJhYmVsLWxpYnJh cnktb2YtYmFiZWwiIHZhcmlhYmxlCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKKG9yZy1iYWJlbC1s b2ItaW5nZXN0ICJ+Ly5lbWFjcy5kL29yZy1tb2RlL2NvbnRyaWIvYmFiZWwvbGlicmFyeS1vZi1i YWJlbC5vcmciKQojK2VuZF9zcmMKCioqKiBUYW5nbGUgd2l0aCBjb21tZW50cwojK2JlZ2luX3Ny YyBlbWFjcy1saXNwCiAgKHNldHEgb3JnLWJhYmVsLXRhbmdsZS13LWNvbW1lbnRzIHQpCiAgOzsg KGFkZC10by1saXN0ICdvcmctYmFiZWwtZGVmYXVsdC1oZWFkZXItYXJnczpSICcoOmNvbW1lbnRz IC4gInllcyIpKQojK2VuZF9zcmMKCioqKiBTZXQgOm5vd2ViIHBlciBkZWZhdWx0IHRvIG5vClRo aXMgaXMgbmVlZGVkIGZvciBwbGFudHVtbApTZWUgbWFudWFsICIxNC4xMCBOb3dlYiByZWZlcmVu Y2Ugc3ludGF4IiBmb3IgZGV0YWlscy4KIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChzZXRxIG9y Zy1iYWJlbC1kZWZhdWx0LWhlYWRlci1hcmdzCiAgICAgICAgKGNvbnMgJyg6bm93ZWIgLiAibm8i KQogICAgICAgICAgICAgIChhc3NxLWRlbGV0ZS1hbGwgOm5vd2ViIG9yZy1iYWJlbC1kZWZhdWx0 LWhlYWRlci1hcmdzKSkpCiMrZW5kX3NyYwoKKioqIHNoCioqKiogc2V0IHNoZWJhbmcgZm9yIHNo IHNjcmlwdCB0byAiIyEvYmluL2Jhc2giCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKOzsgZW5zdXJl IHRoaXMgdmFyaWFibGUgaXMgZGVmaW5lZAoodW5sZXNzIChib3VuZHAgJ29yZy1iYWJlbC1kZWZh dWx0LWhlYWRlci1hcmdzOnNoKQooc2V0cSBvcmctYmFiZWwtZGVmYXVsdC1oZWFkZXItYXJnczpz aCAnKCkpKQoKOzsgYWRkIGEgZGVmYXVsdCBzaGViYW5nIGhlYWRlciBhcmd1bWVudAooYWRkLXRv LWxpc3QgJ29yZy1iYWJlbC1kZWZhdWx0LWhlYWRlci1hcmdzOnNoCicoOnNoZWJhbmcgLiAiIyEv YmluL2Jhc2giKSkKIytlbmRfc3JjCioqKiogRW5hYmxlIGxhbmd1YWdlIGV4ZWN1dGlvbgojK2Jl Z2luX3NyYyBlbWFjcy1saXNwCihyZXF1aXJlICdvYi1zaCkgICAgICAgICA7OyByZXF1aXJlcyBS IGFuZCBlc3MtbW9kZQojK2VuZF9zcmMKKioqIFIKRW5hYmxlIGxhbmd1YWdlIGV4ZWN1dGlvbgoj K2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKHJlcXVpcmUgJ29iLVIpICAgICAgICAgOzsgcmVxdWly ZXMgUiBhbmQgZXNzLW1vZGUKIytlbmRfc3JjCgoqKiogcGxhbnR1bWwgCkZ1cnRoZXIgaW5mbyBj YW4gYmUgZmluZCBhdCBodHRwOi8vZXNjaHVsdGUuZ2l0aHViLmNvbS9iYWJlbC1kZXYvRE9ORS1p bnRlZ3JhdGUtcGxhbnR1bWwtc3VwcG9ydC5odG1sIGh0dHA6Ly9wbGFudHVtbC5zb3VyY2Vmb3Jn ZS5uZXQvCkVuYWJsZSBsYW5ndWFnZSBleGVjdXRpb24KIytiZWdpbl9zcmMgZW1hY3MtbGlzcCA6 IHRhbmdsZSBubwogIChyZXF1aXJlICdvYi1wbGFudHVtbCkgICAgICAgICA7OyByZXF1aXJlcyBS IGFuZCBlc3MtbW9kZQojK2VuZF9zcmMKU2V0IGxvY2F0aW9uIHdoZXJlIHBsYW50dW1sLmphciBp cyBsb2NhdGVkCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoc2V0cSBvcmctcGxhbnR1bWwtamFy LXBhdGgKICAgICAgICAoZXhwYW5kLWZpbGUtbmFtZSAifi8uZW1hY3MuZC9vcmctbW9kZS9jb250 cmliL3NjcmlwdHMvcGxhbnR1bWwuamFyIikpCiMrZW5kX3NyYwoKKioqIExhVGVYClNldHRpbmdz IGNvcGllZCBmcm9tIGh0dHA6Ly9vcmdtb2RlLm9yZy93b3JnL29yZy1jb250cmliL2JhYmVsL2xh bmd1YWdlcy9vcmctYmFiZWwtZG9jLUxhVGVYLnBocAoqKioqIEFjdGl2YXRlIExhVGVYIEV2YWx1 YXRpb24KIytiZWdpbl9zcmMgZW1hY3MtbGlzcAoocmVxdWlyZSAnb2ItbGF0ZXgpCiMrZW5kX3Ny YwoqKioqIEF1Y1RlWApTdHJvbmdseSByZWNvbW1lbmRlZCBmb3IgZWRpdGluZyAudGV4IGZpbGVz LiBBZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIC5lbWFjczogCiMrYmVnaW5fc3JjIGVtYWNzLWxp c3AKKGFkZC10by1saXN0ICdsb2FkLXBhdGggIn4vLmVtYWNzLmQvYXVjdGV4IikKKGxvYWQgImF1 Y3RleC5lbCIgbmlsIHQgdCkKIytlbmRfc3JjCioqKiBSYWlzZSBOb3dlYi10eXBlIEVycm9ycwpB ZGQgTGFUZVggdG8gYSBsaXN0IG9mIGxhbmd1YWdlcyB0aGF0IHJhaXNlIG5vd2ViLXR5cGUgZXJy b3JzCkVkaXQgdGhlIGZvbGxvd2luZyBleGFtcGxlIHRvIGluY2x1ZGUgdGhlIGxhbmd1YWdlcyB5 b3UgdXNlIGluIE9yZy1iYWJlbAojK2JlZ2luX3NyYyBlbWFjcy1saXNwCihzZXRxIG9yZy1iYWJl bC1ub3dlYi1lcnJvci1sYW5ncyAnKCJSIiAibGF0ZXgiKSkKIytlbmRfc3JjCgoqKiogU2V0IHBv c3QtdGFuZ2xlLWhvb2sgZm9yIFIKVGhpcyBpcyBhbiBleGFtcGxlIG9uIGhvdyB0byBzZXQgdGhl IGhvb2sgZm9yIGxvYWRpbmcgUiBmaWxlcyB2aWEgZXNzLWxvYWQtZmlsZSBhZnRlciB0YW5nbGlu Zy4gVGhpcyBjb2RlIHNob3VsZCBiZSBjb3BpZWQgaW50byB0aGUgLm9yZyBmaWxlLCB0byBlbmFi bGUgcGVyLWZpbGUgc2V0dGluZyBvZiB0aGUgaG9vay4KIytiZWdpbl9zcmMgZW1hY3MtbGlzcCA6 cmVzdWx0cyBzaWxlbnQgOnRhbmdsZSBubwogIChhZGQtaG9vayAnb3JnLWJhYmVsLXBvc3QtdGFu Z2xlLWhvb2sKICAgICAgICAgICAgKGxhbWJkYSAoKSAoZXNzLWxvYWQtZmlsZSAoYnVmZmVyLWZp bGUtbmFtZSkpKSkKIytlbmRfc3JjCgoqKiogRW5hYmxlIGZvbnRpZmllZCBMYVRlWCBsaXN0aW5n IGV4cG9ydHMuIApTZXQgb3JnLWV4cG9ydC1sYXRleC1saXN0aW5ncyB0byBhIG5vbi1uaWwgdmFs dWUgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYWNrYWdlcyBsaXN0aW5ncyBhbmQgY29sb3IgYXJl IGxvYWRlZCBpbnRvIExhVGVYCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAoc2V0cSBvcmctZXhw b3J0LWxhdGV4LWxpc3RpbmdzIHQpCiAgKHJlcXVpcmUgJ29yZy1sYXRleCkKICAoYWRkLXRvLWxp c3QgJ29yZy1leHBvcnQtbGF0ZXgtcGFja2FnZXMtYWxpc3QgJygiIiAibGlzdGluZ3MiKSkKICAo YWRkLXRvLWxpc3QgJ29yZy1leHBvcnQtbGF0ZXgtcGFja2FnZXMtYWxpc3QgJygiIiAiY29sb3Ii KSkKIytlbmRfc3JjCgoqKiogb3JnLWJhYmVsLXRhbmdsZS1qdW1wLXRvLW9yZwojK2JlZ2luX3Ny YyBlbWFjcy1saXNwCiAgKGRlZnVuIG9yZy1iYWJlbC10YW5nbGUtanVtcC10by1vcmcgKCkKICAi SnVtcCBmcm9tIGEgdGFuZ2xlZCBjb2RlIGZpbGUgdG8gdGhlIHJlbGF0ZWQgT3JnLW1vZGUgZmls ZS4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChtaWQgKHBvaW50KSkKICB0YXJnZXQtYnVmZmVy IHRhcmdldC1jaGFyCiAgc3RhcnQgZW5kIGxpbmsgcGF0aCBibG9jay1uYW1lKQogICAgKHNhdmUt d2luZG93LWV4Y3Vyc2lvbgogIChzYXZlLWV4Y3Vyc2lvbgogICh1bmxlc3MgKGFuZCAocmUtc2Vh cmNoLWJhY2t3YXJkIG9yZy1icmFja2V0LWxpbmstYW5hbHl0aWMtcmVnZXhwIG5pbCB0KQogIChz ZXRxIHN0YXJ0IChwb2ludCkpCiAgKHNldHEgbGluayAobWF0Y2gtc3RyaW5nIDApKQogIChzZXRx IHBhdGggKG1hdGNoLXN0cmluZyAzKSkKICAoc2V0cSBibG9jay1uYW1lIChtYXRjaC1zdHJpbmcg NSkpCiAgKHJlLXNlYXJjaC1mb3J3YXJkIChjb25jYXQgIiAiIChyZWdleHAtcXVvdGUgYmxvY2st bmFtZSkKICAiIGVuZHMgaGVyZVtcblxyXSIpIG5pbCB0KQogIChzZXRxIGVuZCAocG9pbnQpKQog ICg8IHN0YXJ0IG1pZCkgKDwgbWlkIGVuZCkpCiAgKGVycm9yICJub3QgaW4gdGFuZ2xlZCBjb2Rl IikpKQogICh3aGVuIChzdHJpbmctbWF0Y2ggIjo6IiBwYXRoKQogIChzZXRxIHBhdGggKHN1YnN0 cmluZyBwYXRoIDAgKG1hdGNoLWJlZ2lubmluZyAwKSkpKQogIChmaW5kLWZpbGUgcGF0aCkgKHNl dHEgdGFyZ2V0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQogIChnb3RvLWNoYXIgc3RhcnQpIChv cmctb3Blbi1saW5rLWZyb20tc3RyaW5nIGxpbmspCiAgKGlmIChzdHJpbmctbWF0Y2ggIlteIFx0 XG5ccl06XFwoW1s6ZGlnaXQ6XV0rXFwpIiBibG9jay1uYW1lKQogIChvcmctYmFiZWwtbmV4dC1z cmMtYmxvY2sKICAoc3RyaW5nLXRvLWludCAobWF0Y2gtc3RyaW5nIDEgYmxvY2stbmFtZSkpKQog IChvcmctYmFiZWwtZ290by1uYW1lZC1zcmMtYmxvY2sgYmxvY2stbmFtZSkpCiAgKHNldHEgdGFy Z2V0LWNoYXIgKHBvaW50KSkpCiAgKHBvcC10by1idWZmZXIgdGFyZ2V0LWJ1ZmZlcikKICAoZ290 by1jaGFyIHRhcmdldC1jaGFyKSkpCiMrZW5kX3NyYwoKKioqIGluaGliaXRzIHRoZSBpbnNlcnRp b24gb2YgYmxhbmsgbGluZXMgb24gdGFuZ2xpbmcKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChz ZXRxIG9yZy1iYWJlbC10YW5nbGUtcGFkLW5ld2xpbmUgbmlsKQojK2VuZF9zcmMKCioqKiBDT01N RU5UIGFkZCBwbGFudHVtbCBsYW5ndWFnZSBtb2RlCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRh bmdsZSBubwogIChhZGQtdG8tbGlzdCAnb3JnLXNyYy1sYW5nLW1vZGVzICcoInBsYW50dW1sIiAu IGZ1bmRhbWVudGFsKSkKIytlbmRfc3JjCgoqKiBPcmctbW9iaWxlIHNldHRpbmdzCiMrYmVnaW5f c3JjIGVtYWNzLWxpc3AKICA7IFNldCB0byB0aGUgbG9jYXRpb24gb2YgeW91ciBPcmcgZmlsZXMg b24geW91ciBsb2NhbCBzeXN0ZW0KICAoc2V0cSBvcmctZGlyZWN0b3J5ICJ+L0RvY3VtZW50cy9v cmdmaWxlcyIpCiAgOzsgU2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHdoZXJlIG5ldyBub3Rl cyB3aWxsIGJlIHN0b3JlZAogIChzZXRxIG9yZy1tb2JpbGUtaW5ib3gtZm9yLXB1bGwgIn4vRG9j dW1lbnRzL29yZ2ZpbGVzL2ZsYWdnZWQub3JnIikKICA7OyBTZXQgdG8gPHlvdXIgRHJvcGJveCBy b290IGRpcmVjdG9yeT4vTW9iaWxlT3JnLgogIChzZXRxIG9yZy1tb2JpbGUtZGlyZWN0b3J5ICJ+ L0Ryb3Bib3gvTW9iaWxlT3JnIikKIytlbmRfc3JjCgoqKiBvcmctaHRtbDUtcHJlc2VudGF0aW9u CiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AKICAocmVxdWlyZSAnb3JnLWh0bWw1cHJlc2VudGF0aW9u KQojK2VuZF9zcmMKKiBEZWZpbmUgc2NyZWVuc2hvdCBmdW5jdGlvbgojK0JFR0lOX1NSQyBlbWFj cy1saXNwCiAgKGRlZnVuIG9yZy1zY3JlZW5zaG90ICgpCiAgICAiVGFrZSBhIHNjcmVlbnNob3Qg aW50byBhIHRpbWUgc3RhbXBlZCB1bmlxdWUtbmFtZWQgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv cnkgYXMgdGhlIG9yZy1idWZmZXIgYW5kIGluc2VydCBhIGxpbmsgdG8gdGhpcyBmaWxlLiIKICAg IChpbnRlcmFjdGl2ZSkKICAgIChzZXRxIGZpbGVuYW1lCiAgICAgICAgICAoY29uY2F0CiAgICAg ICAgICAgKG1ha2UtdGVtcC1uYW1lCiAgICAgICAgICAgIChjb25jYXQgKGJ1ZmZlci1maWxlLW5h bWUpCiAgICAgICAgICAgICAgICAgICAgIl8iCiAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC10 aW1lLXN0cmluZyAiJVklbSVkXyVIJU0lU18iKSkgKSAiLnBuZyIpKQogICAgKGNhbGwtcHJvY2Vz cyAiaW1wb3J0IiBuaWwgbmlsIG5pbCBmaWxlbmFtZSkKICAgIChpbnNlcnQgKGNvbmNhdCAiW1si IGZpbGVuYW1lICJdXSIpKQogICAgKG9yZy1kaXNwbGF5LWlubGluZS1pbWFnZXMpKQogIAogIAoj K0VORF9TUkMKCiogQ09NTUVOVCBwbGFudHVtbAoqKiBMb2FkIHBsYW50dW1sLW1vZGUKaHR0cDov L3poYW5nd2VpemUud29yZHByZXNzLmNvbS8yMDEwLzA5LzIwL3VwZGF0ZS1wbGFudHVtbC1tb2Rl LwojK2JlZ2luX3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAobG9hZC1maWxlICJ+Ly5lbWFj cy5kL3NpdGUtbGlzcC9wbGFudHVtbC1tb2RlLmVsIikKIytlbmRfc3JjCgoqIENPTU1FTlQgWUFT bmlwcGV0ClNlZSBbW2h0dHA6Ly95YXNuaXBwZXQuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL2Rv Yy9pbmRleC5odG1sXV0gZm9yIGRldGFpbHMKKiogTG9hZCBhbmQgYWN0aXZhdGUKIytiZWdpbl9z cmMgZW1hY3MtbGlzcCA6dGFuZ2xlIG5vCiAgKGFkZC10by1saXN0ICdsb2FkLXBhdGgKICAgICAg ICAgICAgICAgICJ+Ly5lbWFjcy5kL3lhc25pcHBldCIpCiAgKHJlcXVpcmUgJ3lhc25pcHBldCkg Ozsgbm90IHlhc25pcHBldC1idW5kbGUKICAoeWFzL2luaXRpYWxpemUpCiAgKHlhcy9sb2FkLWRp cmVjdG9yeSAifi8uZW1hY3MuZC95YXNuaXBwZXQvc25pcHBldHMiKQojK2VuZF9zcmMKKiogT3Jn LU1vZGUgSG9vawpBb21lIG1vZGlmaWNhdGlvbnMgKHNlZSBbW2h0dHA6Ly9lc2NodWx0ZS5naXRo dWIuY29tL2VtYWNzLXN0YXJ0ZXIta2l0L3N0YXJ0ZXIta2l0LW9yZy5odG1sXV0gZm9yIGRldGFp bHMuCiMrYmVnaW5fc3JjIGVtYWNzLWxpc3AgOnRhbmdsZSBubwogIChkZWZ1biB5YXMvb3JnLXZl cnktc2FmZS1leHBhbmQgKCkKICAgKGxldCAoKHlhcy9mYWxsYmFjay1iZWhhdmlvciAncmV0dXJu LW5pbCkpICh5YXMvZXhwYW5kKSkpICAgCiMrZW5kX3NyYwoKIytiZWdpbl9zcmMgZW1hY3MtbGlz cCA6dGFuZ2xlIG5vCihhZGQtaG9vayAnb3JnLW1vZGUtaG9vawogICAgICAgICAgKGxhbWJkYSAo KQogICAgICAgICAgICAobG9jYWwtc2V0LWtleSAiXE0tXEMtbiIgJ291dGxpbmUtbmV4dC12aXNp YmxlLWhlYWRpbmcpCiAgICAgICAgICAgIChsb2NhbC1zZXQta2V5ICJcTS1cQy1wIiAnb3V0bGlu ZS1wcmV2aW91cy12aXNpYmxlLWhlYWRpbmcpCiAgICAgICAgICAgIChsb2NhbC1zZXQta2V5ICJc TS1cQy11IiAnb3V0bGluZS11cC1oZWFkaW5nKQogICAgICAgICAgICA7OyB0YWJsZQogICAgICAg ICAgICAobG9jYWwtc2V0LWtleSAiXE0tXEMtdyIgJ29yZy10YWJsZS1jb3B5LXJlZ2lvbikKICAg ICAgICAgICAgKGxvY2FsLXNldC1rZXkgIlxNLVxDLXkiICdvcmctdGFibGUtcGFzdGUtcmVjdGFu Z2xlKQogICAgICAgICAgICAobG9jYWwtc2V0LWtleSAiXE0tXEMtbCIgJ29yZy10YWJsZS1zb3J0 LWxpbmVzKQogICAgICAgICAgICA7OyB5YXNuaXBwZXQgKHVzaW5nIHRoZSBuZXcgb3JnLWN5Y2xl IGhvb2tzKQogICAgICAgICAgICAobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3lhcy90cmln Z2VyLWtleSkKICAgICAgICAgICAgKHNldHEgeWFzL3RyaWdnZXIta2V5IFt0YWJdKQogICAgICAg ICAgICAoYWRkLXRvLWxpc3QgJ29yZy10YWItZmlyc3QtaG9vayAneWFzL29yZy12ZXJ5LXNhZmUt ZXhwYW5kKQogICAgICAgICAgICAoZGVmaW5lLWtleSB5YXMva2V5bWFwIFt0YWJdICd5YXMvbmV4 dC1maWVsZCkKICAgICAgICAgICAgKSkKIytlbmRfc3JjIAoKKiBDb2xvciB0aGVtZXMKKiogbG9h ZCBjb2xvci10aGVtZSBwYWNrYWdlCmxvYWQgY29sb3ItdGhlbWUgcGFja2FnZQojK2JlZ2luX3Ny YyBlbWFjcy1saXNwCiAgKGFkZC10by1saXN0ICdsb2FkLXBhdGggIn4vLmVtYWNzLmQvY29sb3It dGhlbWUiKQogIChyZXF1aXJlICdjb2xvci10aGVtZSkKICAoZXZhbC1hZnRlci1sb2FkICJjb2xv ci10aGVtZSIKICAgICcocHJvZ24KICAgICAgIChjb2xvci10aGVtZS1pbml0aWFsaXplKQogICAg ICAgKGNvbG9yLXRoZW1lLWhvYmVyKSkpCiMrZW5kX3NyYwphbmQgaW5pdGlhbGl6ZSBhbmQgbG9h ZCBob2JlciBjb2xvciB0aGVtZQojK2JlZ2luX3NyYyBlbWFjcy1saXNwIDp0YW5nbGUgbm8KICAo ZXZhbC1hZnRlci1sb2FkICJjb2xvci10aGVtZSIKICAgICcocHJvZ24KICAgICAgIChjb2xvci10 aGVtZS1pbml0aWFsaXplKQogICAgICAgKGNvbG9yLXRoZW1lLWhvYmVyKSkpCiMrZW5kX3NyYwoq KiBDT01NRU5UIEN5Y2xlIHRocm91Z2ggbG9hZGVkIGNvbG9yIHRoZW1lcwpiYXNlZCBvbiBbW2h0 dHA6Ly9vcmdtb2RlLm9yZy93b3JnL29yZy1jb2xvci10aGVtZXMucGhwXV0gICAgICAgICAgICAK IytCRUdJTl9TUkMgZW1hY3MtbGlzcCA6dGFuZ2xlIG5vCiAgKGFkZC10by1saXN0ICdsb2FkLXBh dGggIn4vLmVtYWNzLmQvY29sb3ItdGhlbWVzIikKICAoc2V0cSBjb2xvci10aGVtZS1pcy1nbG9i YWwgdCkKICAoY29sb3ItdGhlbWUtaW5pdGlhbGl6ZSkKICAKICA7Oyhsb2FkICJjb2xvci10aGVt ZS1jb2xvcmZ1bC1vYnNvbGVzY2VuY2UiKQogIChsb2FkICJjb2xvci10aGVtZS16ZW5idXJuIikK ICAobG9hZCAiY29sb3ItdGhlbWUtdGFuZ290YW5nbyIpCiAgOzsobG9hZCAiY29sb3ItdGhlbWUt cmFpbHNjYXN0IikKICAobG9hZCAiY29sb3ItdGhlbWUtc3ZhIikKICA7Oyhsb2FkICJjb2xvci10 aGVtZS1mb2xpbyIpCiAgKGxvYWQgImNvbG9yLXRoZW1lLXplbmFzaCIpCiAgOzsobG9hZCAiY29s b3ItdGhlbWUtbWFub2oiKQogIDs7KGxvYWQgImNvbG9yLXRoZW1lLWRhcmstZW1hY3MiKQogIDs7 KGxvYWQgImNvbG9yLXRoZW1lLWhvYmVyIikKICAKICAoc2V0cSBteS1jb2xvci10aGVtZXMgKGxp c3QKICAgICdjb2xvci10aGVtZS1ob2JlcgogICAgJ2NvbG9yLXRoZW1lLXRhbmdvdGFuZ28KICAg IDs7J2NvbG9yLXRoZW1lLWNvbG9yZnVsLW9ic29sZXNjZW5jZSAKICAgICdjb2xvci10aGVtZS16 ZW5idXJuCiAgICAnY29sb3ItdGhlbWUtc3ZhIAogICAgJ2NvbG9yLXRoZW1lLXplbmFzaAogICAg OzsnY29sb3ItdGhlbWUtZm9saW8gCiAgICA7Oydjb2xvci10aGVtZS1kYXJrLWVtYWNzIAogICAg OzsnY29sb3ItdGhlbWUtbWFub2ogJ2NvbG9yLXRoZW1lLXplbmFzaAogICAgOzsnY29sb3ItdGhl bWUtcmFpbHNjYXN0CiAgICA7Oydjb2xvci10aGVtZS1ob2JlcgogICkpCiAgCiAgKGRlZnVuIG15 LXRoZW1lLXNldC1kZWZhdWx0ICgpIDsgU2V0IHRoZSBmaXJzdCByb3cKICAgICAgICAoaW50ZXJh Y3RpdmUpCiAgICAgICAgKHNldHEgdGhlbWUtY3VycmVudCBteS1jb2xvci10aGVtZXMpCiAgICAg ICAgKGZ1bmNhbGwgKGNhciB0aGVtZS1jdXJyZW50KSkpCiAgCiAgICAgIChkZWZ1biBteS1kZXNj cmliZS10aGVtZSAoKSA7IFNob3cgdGhlIGN1cnJlbnQgdGhlbWUKICAgICAgICAoaW50ZXJhY3Rp dmUpCiAgICAgICAgKG1lc3NhZ2UgIiVzIiAoY2FyIHRoZW1lLWN1cnJlbnQpKSkKICAKICAgICA7 IFNldCB0aGUgbmV4dCB0aGVtZSAoZml4ZWQgYnkgQ2hyaXMgV2ViYmVyIC0gdGFua3MpCiAgICAg IChkZWZ1biBteS10aGVtZS1jeWNsZSAoKSAgICAgICAgICAgIAogICAgICAgIChpbnRlcmFjdGl2 ZSkKICAgICAgICAoc2V0cSB0aGVtZS1jdXJyZW50IChjZHIgdGhlbWUtY3VycmVudCkpCiAgICAg ICAgKGlmIChudWxsIHRoZW1lLWN1cnJlbnQpCiAgICAgICAgKHNldHEgdGhlbWUtY3VycmVudCBt eS1jb2xvci10aGVtZXMpKQogICAgICAgIChmdW5jYWxsIChjYXIgdGhlbWUtY3VycmVudCkpCiAg ICAgICAgKG1lc3NhZ2UgIiVTIiAoY2FyIHRoZW1lLWN1cnJlbnQpKSkKICAKICAgICAgKHNldHEg dGhlbWUtY3VycmVudCBteS1jb2xvci10aGVtZXMpCiAgKHNldHEgY29sb3ItdGhlbWUtaXMtZ2xv YmFsIG5pbCkgOyBJbml0aWFsaXphdGlvbgogICAgICAobXktdGhlbWUtc2V0LWRlZmF1bHQpCiAg KGdsb2JhbC1zZXQta2V5IFtmNF0gJ215LXRoZW1lLWN5Y2xlKQojK0VORF9TUkMKKiBNYWlsCioq IFNldCB1c2VyIG5hbWUgYW5kIG1haWwgYWRkcmVzcwojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAg KHNldHEgdXNlci1tYWlsLWFkZHJlc3MgIlJhaW5lckBrcnVncy5kZSIpCiAgKHNldHEgdXNlci1m dWxsLW5hbWUgIlJhaW5lciBNLiBLcnVnIikKIytlbmRfc3JjCioqIFNldHVwIHNtdHAgZm9yIHNl bmRpbmcgbWFpbApCYXNlZCBvbiBhbiBlbWFpbCBmcm9tIE9zY2FyIENhcmxzb246IFtbc2hlbGw6 eGRnLW9wZW4lMjBpbWFwLW1lc3NhZ2U6Ly9SLk0uS3J1ZyU0MGdtYWlsLmNvbUBpbWFwLmdvb2ds ZW1haWwuY29tL0xpc3RzL29yZ21vZGUjMTMyNDddW21haWw6IHtPcmdtb2RlfSBSZTogU2VuZGlu ZyBvcmcgYnVmZmVyIGFzIG1haWw/XV0KIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChzZXRxIG1l c3NhZ2Utc2VuZC1tYWlsLWZ1bmN0aW9uICdzbXRwbWFpbC1zZW5kLWl0CiAgICAgICAgc210cG1h aWwtc3RhcnR0bHMtY3JlZGVudGlhbHMgJygoInNtdHAuZ21haWwuY29tIiA1ODcgbmlsIG5pbCkp CiAgICAgICAgc210cG1haWwtYXV0aC1jcmVkZW50aWFscyAifi8uYXV0aGluZm8iCiAgICAgICAg c210cG1haWwtZGVmYXVsdC1zbXRwLXNlcnZlciAic210cC5nbWFpbC5jb20iCiAgICAgICAgc210 cG1haWwtc210cC1zZXJ2ZXIgInNtdHAuZ21haWwuY29tIgogICAgICAgIHNtdHBtYWlsLXNtdHAt c2VydmljZSA1ODcpCiMrZW5kX3NyYwoqIEFkZCBtZXNzYWdlIGhvb2sgdG8gaW5jbHVkZSBzZWxl Y3RlZCB0ZXh0IGFzIGJvZHkKVGhhbmtzIHRvIERlbml6IERvZ2FuIChbW3NoZWxsOnhkZy1vcGVu JTIwaW1hcC1tZXNzYWdlOi8vUi5NLktydWclNDBnbWFpbC5jb21AaW1hcC5nb29nbGVtYWlsLmNv bS9lbWFpbC9SLk0uS3J1Z0BnbWFpbC5jb20jNDQ2OF1bbWFpbDogQ3JlYXRlIGVtYWlsIHdpdGgg c2VsZWN0ZWQgdGV4dCBhcyBib2R5P11dKQojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKGFkZC1o b29rICdtZXNzYWdlLW1vZGUtaG9vawogICAgICAgICAgICAobGFtYmRhICgpCiAgICAgICAgICAg ICAgKGxldCAodGV4dCkKICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChvdGhl ci1idWZmZXIpCiAgICAgICAgICAgICAgICAgICh3aGVuIChyZWdpb24tYWN0aXZlLXApCiAgICAg ICAgICAgICAgICAgICAgKHNldHEgdGV4dAogICAgICAgICAgICAgICAgICAgICAgICAgIChidWZm ZXItc3Vic3RyaW5nIChyZWdpb24tYmVnaW5uaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChyZWdpb24tZW5kKSkpKSkKICAgICAgICAgICAgICAgICh3aGVu IHRleHQKICAgICAgICAgICAgICAgICAgKGVuZC1vZi1idWZmZXIpCiAgICAgICAgICAgICAgICAg IChpbnNlcnQgdGV4dCkpKSkpCiMrZW5kX3NyYwoKKiB0YWJiYXIKaHR0cDovL3d3dy5lbWFjc3dp a2kub3JnL2VtYWNzL1RhYkJhck1vZGUgYW5kIGh0dHA6Ly93d3cuZW1hY3N3aWtpLm9yZy9lbWFj cy90YWJiYXIuZWwKKiogbG9hZCB0YWJiYXIKIytiZWdpbl9zcmMgZW1hY3MtbGlzcAogIChyZXF1 aXJlICd0YWJiYXIpCiAgKHRhYmJhci1tb2RlKQojK2VuZF9zcmMKKHNldHEgdGFiYmFyLWJ1ZmZl ci1ncm91cHMtZnVuY3Rpb24KICAgICAgICAgIChsYW1iZGEgKCkKICAgICAgICAgICAgKGxpc3Qg IkFsbCIpKSkgOzsgY29kZSBieSBQZXRlciBCYXJhYmFzCioqIEFsbCB0YWJzIGluIG9uZSBncm91 cAojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgOzsgKHNldHEgdGFiYmFyLWJ1ZmZlci1ncm91cHMt ZnVuY3Rpb24KICA7OyAgICAgICAobGFtYmRhICgpCiAgOzsgICAgICAgICAobGlzdCAiQWxsIikp KSA7OyBjb2RlIGJ5IFBldGVyIEJhcmFiYXMKIytlbmRfc3JjCiogbm90bXVjaCBtYWlsIHRoaW5n eQojK2JlZ2luX3NyYyBlbWFjcy1saXNwCiAgKGFkZC10by1saXN0ICdsb2FkLXBhdGggIn4vc2hh cmUvZW1hY3Mvc2l0ZS1saXNwIikKICAocmVxdWlyZSAnbm90bXVjaCkKIytlbmRfc3JjcGQKCgo= --000e0cd60836bee91c04a5c4387e--