From owner-freebsd-questions@FreeBSD.ORG Fri Aug 6 20:53:19 2010 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E3F831065673 for ; Fri, 6 Aug 2010 20:53:19 +0000 (UTC) (envelope-from eb30750@gmail.com) Received: from mail-gy0-f182.google.com (mail-gy0-f182.google.com [209.85.160.182]) by mx1.freebsd.org (Postfix) with ESMTP id 479358FC15 for ; Fri, 6 Aug 2010 20:53:18 +0000 (UTC) Received: by gyg4 with SMTP id 4so3748907gyg.13 for ; Fri, 06 Aug 2010 13:53:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=KabkdxpAsiyHnxbaUGre/QYikYdFMpLCyYPBHdpMnYE=; b=QgRn2vlb0yQ48/JmMhbmg23D3YA7mqh8Lo3z+3OcTVuSwAta5lz8cZ0tYPoGc2A81Z R+73DzkY8qZsEjasxZceMnZF77LCq9DigIVIDZd8+Tv2bKwWpB5zkAf7o9xKitsAM9r4 gynQhZSnhB9zuOFSDnZI6l/6ST6org0OL7+6s= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=rIBhcQzAmL8S6KNHOvdR+rZZN14QH3ZF0Gc39rB7dmeciZVo0jtD41XjhmnHsWFShX K/klSJ+W1McailxffNXLCkoCfTeKsXz1/dev2hX1l0rgZ8aeo1nzcMSHZV7R/aWGJ3i0 laOPZHI2nvZIGe53djV2UvgJgWfHtTq+zKmaM= MIME-Version: 1.0 Received: by 10.151.112.13 with SMTP id p13mr7047155ybm.375.1281126688507; Fri, 06 Aug 2010 13:31:28 -0700 (PDT) Received: by 10.151.115.10 with HTTP; Fri, 6 Aug 2010 13:31:28 -0700 (PDT) In-Reply-To: <201008061735.o76HZEal051334@lurza.secnetix.de> References: <201008061735.o76HZEal051334@lurza.secnetix.de> Date: Fri, 6 Aug 2010 16:31:28 -0400 Message-ID: From: Paul Lambert To: freebsd-questions@freebsd.org Content-Type: multipart/mixed; boundary=0015175741102e46b5048d2d8dba X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Re: misc/149335: shell script runs on Linux but not on freebsd X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Aug 2010 20:53:20 -0000 --0015175741102e46b5048d2d8dba Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Oliver, Thanks for the reply. I am attaching the bash output from the shell script. This script implements RPMs so I am sure that I need the linux module. I had previously found a guide on how to install RPMs on FreeBSD. I have a printer that has an RPM that allows it to work on Linus. So I would think that I will need the Linux module in the future. I previously had made the "stat" change to the shell script and that part works. But, the bash shell is reporting an 'od" error. Finally, how much performance do you lose with the linux module emulator? Do you believe I only need the emulator to get VMware installed or will it make other linux calls that are not part of FreeBSD? Thanks Paul On Fri, Aug 6, 2010 at 1:35 PM, Oliver Fromme wrote= : > Redirected to the -questions. > > Paul wrote: > > What about matching the ' marks in this section? I get a command erro= r. > > > > > > # XXX: put extraction in its own function > > > > MAGIC_NUMBER=3D`od -An -t u4 -N 4 -j $MAGIC_OFFSET "$file" | tr = -d ' > '` > > That command works fine for me: > > $ MAGIC_OFFSET=3D42 > $ file=3D/etc/motd > $ MAGIC_NUMBER=3D`od -An -t u4 -N 4 -j $MAGIC_OFFSET "$file" | tr -d ' '` > $ echo $MAGIC_NUMBER > 540684323 > > What's the exact error message that you get, and what are > the values of the variables involved? > > By the way, when debugging shell scripts it is very helpful > to run the shell with -vx. Then it prints the script as it > is being parsed, and additionally each command is printed > after expansion. > > Best regards > Oliver > > -- > Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. > Handelsregister: Registergericht Muenchen, HRA 74606, Gesch=E4ftsfuehrun= g: > secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht M=FC= n- > chen, HRB 125758, Gesch=E4ftsf=FChrer: Maik Bachmann, Olaf Erb, Ralf Geb= hart > > FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd > > "I invented Ctrl-Alt-Delete, but Bill Gates made it famous." > -- David Bradley, original IBM PC design team > --0015175741102e46b5048d2d8dba Content-Type: text/plain; charset=US-ASCII; name="bashexecoutput.txt" Content-Disposition: attachment; filename="bashexecoutput.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gcjq9p7v0 QlJTSU5DLVZNMDIjIGtsZHN0YXQKSWQgUmVmcyBBZGRyZXNzICAgICAgICAgICAgU2l6ZSAgICAg TmFtZQogMSAgICA3IDB4ZmZmZmZmZmY4MDEwMDAwMCBkNmFhOTggICBrZXJuZWwKIDIgICAgMSAw eGZmZmZmZmZmODEwMjIwMDAgNWFkNGEgICAgcmFkZW9uLmtvCiAzICAgIDEgMHhmZmZmZmZmZjgx MDdkMDAwIDExNWRjICAgIGRybS5rbwoKCgoKCkJSU0lOQy1WTTAyIyBiYXNoIC12eCBWTXdhcmUt UGxheWVyLTMuMS4wLTI2MTAyNC54ODZfNjQuYnVuZGxlCiMhL3Vzci9iaW4vZW52IGJhc2gKIwoj IFZNd2FyZSBJbnN0YWxsZXIgTGF1bmNoZXIKIwojIFRoaXMgaXMgdGhlIGV4ZWN1dGFibGUgc3R1 YiB0byBjaGVjayBpZiB0aGUgVk13YXJlIEluc3RhbGxlciBTZXJ2aWNlCiMgaXMgaW5zdGFsbGVk IGFuZCBpZiBzbywgbGF1bmNoIGl0LiAgSWYgaXQgaXMgbm90IGluc3RhbGxlZCwgdGhlCiMgYXR0 YWNoZWQgcGF5bG9hZCBpcyBleHRyYWN0ZWQsIHRoZSBWTUlTIGlzIGluc3RhbGxlZCwgYW5kIHRo ZSBWTUlTCiMgaXMgbGF1bmNoZWQgdG8gaW5zdGFsbCB0aGUgYnVuZGxlIGFzIG5vcm1hbC4KCiMg QXJjaGl0ZWN0dXJlIHRoaXMgYnVuZGxlIHdhcyBidWlsdCBmb3IgKHg4NiBvciB4NjQpCkFSQ0g9 eDY0CisgQVJDSD14NjQKCmlmIFsgLXogIiRCQVNIIiBdOyB0aGVuCiAgICMgJC0gZXhwYW5kcyB0 byB0aGUgY3VycmVudCBvcHRpb25zIHNvIHRoaW5ncyBsaWtlIC14IGdldCBwYXNzZWQgdGhyb3Vn aAogICBpZiBbICEgLXogIiQtIiBdOyB0aGVuCiAgICAgIG9wdHM9Ii0kLSIKICAgZmkKCiAgICMg ZGFzaCBmbGlwcyBvdXQgb2YgJG9wdHMgaXMgcXVvdGVkLCBzbyBkb24ndC4KICAgZXhlYyAvdXNy L2Jpbi9lbnYgYmFzaCAkb3B0cyAiJDAiICIkQCIKICAgZWNobyAiVW5hYmxlIHRvIHJlc3RhcnQg d2l0aCBiYXNoIHNoZWxsIgogICBleGl0IDEKZmkKKyAnWycgLXogL3Vzci9sb2NhbC9iaW4vYmFz aCAnXScKCnNldCAtZQorIHNldCAtZQoKRVRDRElSPS9ldGMvdm13YXJlLWluc3RhbGxlcgorIEVU Q0RJUj0vZXRjL3Ztd2FyZS1pbnN0YWxsZXIKT0xERVRDRElSPSIvZXRjL3Ztd2FyZSIKKyBPTERF VENESVI9L2V0Yy92bXdhcmUKCiMjIyBPZmZzZXRzICMjIwojIFRoZXNlIGFyZSBvZmZzZXRzIHRo YXQgYXJlIGxhdGVyIHVzZWQgcmVsYXRpdmUgdG8gRU9GLgpGT09URVJfU0laRT01MgorIEZPT1RF Ul9TSVpFPTUyCgojIFRoaXMgd29uJ3Qgd29yayB3aXRoIG5vbi1HTlUgc3RhdC4KRklMRV9TSVpF PWBzdGF0IC1mICIleiIgIiQwImAKc3RhdCAtZiAiJXoiICIkMCIKKysgc3RhdCAtZiAleiBWTXdh cmUtUGxheWVyLTMuMS4wLTI2MTAyNC54ODZfNjQuYnVuZGxlCisgRklMRV9TSVpFPTEwMjQ2NzYz NwpvZmZzZXQ9JCgoJEZJTEVfU0laRSAtIDQpKQorIG9mZnNldD0xMDI0Njc2MzMKCk1BR0lDX09G RlNFVD0kb2Zmc2V0CisgTUFHSUNfT0ZGU0VUPTEwMjQ2NzYzMwpvZmZzZXQ9JCgoJG9mZnNldCAt IDQpKQorIG9mZnNldD0xMDI0Njc2MjkKCkNIRUNLU1VNX09GRlNFVD0kb2Zmc2V0CisgQ0hFQ0tT VU1fT0ZGU0VUPTEwMjQ2NzYyOQpvZmZzZXQ9JCgoJG9mZnNldCAtIDQpKQorIG9mZnNldD0xMDI0 Njc2MjUKClZFUlNJT05fT0ZGU0VUPSRvZmZzZXQKKyBWRVJTSU9OX09GRlNFVD0xMDI0Njc2MjUK b2Zmc2V0PSQoKCRvZmZzZXQgLSA0KSkKKyBvZmZzZXQ9MTAyNDY3NjIxCgpQUkVQQVlMT0FEX09G RlNFVD0kb2Zmc2V0CisgUFJFUEFZTE9BRF9PRkZTRVQ9MTAyNDY3NjIxCm9mZnNldD0kKCgkb2Zm c2V0IC0gNCkpCisgb2Zmc2V0PTEwMjQ2NzYxNwoKUFJFUEFZTE9BRF9TSVpFX09GRlNFVD0kb2Zm c2V0CisgUFJFUEFZTE9BRF9TSVpFX09GRlNFVD0xMDI0Njc2MTcKb2Zmc2V0PSQoKCRvZmZzZXQg LSA0KSkKKyBvZmZzZXQ9MTAyNDY3NjEzCgpMQVVOQ0hFUl9TSVpFX09GRlNFVD0kb2Zmc2V0Cisg TEFVTkNIRVJfU0laRV9PRkZTRVQ9MTAyNDY3NjEzCm9mZnNldD0kKCgkb2Zmc2V0IC0gNCkpCisg b2Zmc2V0PTEwMjQ2NzYwOQoKUEFZTE9BRF9PRkZTRVQ9JG9mZnNldAorIFBBWUxPQURfT0ZGU0VU PTEwMjQ2NzYwOQpvZmZzZXQ9JCgoJG9mZnNldCAtIDQpKQorIG9mZnNldD0xMDI0Njc2MDUKClBB WUxPQURfU0laRV9PRkZTRVQ9JG9mZnNldAorIFBBWUxPQURfU0laRV9PRkZTRVQ9MTAyNDY3NjA1 Cm9mZnNldD0kKCgkb2Zmc2V0IC0gNCkpCisgb2Zmc2V0PTEwMjQ2NzYwMQoKIyBSZXN0IG9mIHRo ZSBvZmZzZXRzIG9tbWl0dGVkCgojIyMgRW5kIG9mZnNldHMgIyMjCgojIFNob3J0IG5hbWUgKGll LCB2bXdhcmUtd29ya3N0YXRpb24pLiAgVGhpcyBpc24ndCB0ZWNobmljYWxseSBjb3JyZWN0CiMg c2luY2UgdGhlcmUgY291bGQgYmUgbXVsdGlwbGUgcHJvZHVjdCBjb21wb25lbnRzIGluIGEgYnVu ZGxlLgpQUk9EVUNUX05BTUU9dm13YXJlLXBsYXllcgorIFBST0RVQ1RfTkFNRT12bXdhcmUtcGxh eWVyCgojIENhbGxlZCB3aGVuIHRoZSBzY3JpcHQgZXhpdHMKIwojIEFyZ3VtZW50czoKIyAgICBO b25lCiMKIyBTaWRlIGVmZmVjdHM6CiMgICAgLSBWTUlTX1RFTVAgYW5kIFBSRVBBWUxPQUQgaXMg cmVtb3ZlZCB1bmxlc3MgVk1JU19LRUVQX1RFTVAgaXMgc2V0Cm9uX2V4aXQoKSB7CiAgIGlmIFsg LWUgIiRWTUlTX1RFTVAiIC1hIC16ICIkVk1JU19LRUVQX1RFTVAiIF07IHRoZW4KICAgICAgcm0g LXJmICIkVk1JU19URU1QIgogICBmaQoKICAgaWYgWyAtZSAiJFBSRVBBWUxPQUQiIC1hIC16ICIk Vk1JU19LRUVQX1RFTVAiIF07IHRoZW4KICAgICAgcm0gLXJmICIkUFJFUEFZTE9BRCIKICAgZmkK fQoKdHJhcCBvbl9leGl0IEVYSVQKKyB0cmFwIG9uX2V4aXQgRVhJVAp0cmFwICIiIFVTUjEKKyB0 cmFwICcnIFVTUjEKCiMgUmV0cml2ZXMgYW5kIHNldHMgdGhlIHZhcmlvdXMgbGVuZ3RocyB0aGF0 IGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUKIyBmb290ZXIgb2YgdGhlIGZpbGUuCiMKIyBBcmd1bWVu dHM6CiMgICAgJDEgPT4gYnVuZGxlIHRvIGdldCB0aGUgbGVuZ3RocyBmcm9tCiMKIyBTaWRlIGVm ZmVjdHM6CiMgICAgLSBNQUdJQ19OVU1CRVIsIExBVU5DSEVSX1NJWkUsIGFuZCBQQVlMT0FEX1NJ WkUgYXJlIHNldC4KIwojIFJldHVybnM6CiMgICAgMCBpZiBzdWNjZXNzZnVsLCBlbHNlIDEKc2V0 X2xlbmd0aHMoKSB7CiAgIGxvY2FsIGZpbGU9IiQxIgogICBpZiBbICEgLXMgIiRmaWxlIiBdOyB0 aGVuCiAgICAgIGVjaG8gIiRmaWxlIGRvZXMgbm90IGV4aXN0IgogICAgICBleGl0IDEKICAgZmkK CiAgICMgWFhYOiBwdXQgZXh0cmFjdGlvbiBpbiBpdHMgb3duIGZ1bmN0aW9uCiAgIE1BR0lDX05V TUJFUj1gb2QgLUFuIC10IHU0IC1OIDQgLWFqIAogICAkTUFHSUNfT0ZGU0VUICIkZmlsZSIgfCB0 ciAtZCAnICdgCgogICBpZiBbICIkTUFHSUNfTlVNQkVSIiAhPSAiOTA3MzgwMjQxIiBdOyB0aGVu CiAgICAgIGVjaG8gIm1hZ2ljIG51bWJlciBkb2VzIG5vdCBtYXRjaCIKICAgICAgZXhpdCAxCiAg IGZpCgogICBMQVVOQ0hFUl9TSVpFPWBvZCAtQW4gLXQgdTQgLU4gNCAtaiAkTEFVTkNIRVJfU0la RV9PRkZTRVQgIiRmaWxlIiB8IHRyIC1kICcgJ2AKICAgUEFZTE9BRF9TSVpFPWBvZCAtQW4gLXQg dTQgLU4gNCAtaiAkUEFZTE9BRF9TSVpFX09GRlNFVCAiJGZpbGUiIHwgdHIgLWQgJyAnYAogICBQ UkVQQVlMT0FEX1NJWkU9YG9kIC1BbiAtdCB1NCAtTiA0IC1qICRQUkVQQVlMT0FEX1NJWkVfT0ZG U0VUICIkZmlsZSIgfCB0ciAtZCAnICdgCgogICBTS0lQX0JZVEVTPSQoKCRQUkVQQVlMT0FEX1NJ WkUgKyAkTEFVTkNIRVJfU0laRSkpCgogICByZXR1cm4gMAp9CgojIERldGVybWluZXMgd2hldGhl ciB0aGUgdXNlciBsYW5kIGlzIDMyIG9yIDY0LWJpdC4KIwojIFNpZGUgZWZmZWN0czoKIyAgICBO b25lLgojCiMgUmV0dXJuczoKIyAgICAieDg2IiBvciAieDY0IiBvbiBzdWNjZXNzIHdpdGggZXJy b3IgY29kZSAwLiAgRXhpdHMgd2l0aCBub24temVybwojICAgIHN0YXR1cyBhbmQgdW5kZWZpbmVk IHRleHQgb24gZmFpbHVyZS4KZ2V0X2FyY2goKSB7CiAgICMgRmlyc3QgYnl0ZSBpcyB0aGUgRUxG IG1hZ2ljIG51bWJlci4gIFRoZSA1dGggYnl0ZSBpcyB3aGV0aGVyIGl0J3MKICAgIyBhIDMyIG9y IDY0LWJpdCBtYWNoaW5lICgxIG9yIDIsIHJlc3BlY3RpdmVseSkuICBTZWUgYG1hbiBlbGZgIGZv cgogICAjIGRldGFpbHMuCiAgIGxvY2FsIEVMRl9NQUdJQz03ZgoKICAgaWYgWyAiYG9kIC1OMSAt QW4gLXQgeDEgPCAvYmluL3NoIHwgdHIgLWQgJyAnYCIgIT0gIiRFTEZfTUFHSUMiIF07IHRoZW4K ICAgICAgZXhpdCAxCiAgIGZpCgogICBsb2NhbCBhcmNoPWBvZCAtajQgLU4xIC1BbiAtdCB1MSA8 IC9iaW4vc2ggfCB0ciAtZCAnICdgCgogICBjYXNlICRhcmNoIGluCiAgICAgIDEpCiAgICAgICAg IGVjaG8gIng4NiIKCSBleGl0IDAKCSA7OwogICAgICAyKQogICAgICAgICBlY2hvICJ4NjQiCiAg ICAgICAgIGV4aXQgMAoJIDs7CiAgICAgICopCiAgICAgICAgIGV4aXQgMQogICAgICAgICA7Owog ICBlc2FjCn0KCiMgRGV0ZXJtaW5lcyBpZiBwYXRoIGlzIHJlbGF0aXZlLgojCiMgU2lkZSBlZmZl Y3RzOgojICAgIE5vbmUuCiMKIyBSZXR1cm5zOgojICAgIDAgaWYgcmVsYXRpdmUsIG90aGVyd2lz ZSAxLgppc19yZWxhdGl2ZSgpIHsKICAgIGxvY2FsIHBhdGg9IiQxIgogICAgc2hpZnQKCiAgICBb ICIke3BhdGg6MDoxfSIgIT0gIi8iIF0KICAgIHJldHVybgp9CgojIEV4dHJhY3RzIHRoZSBwYXls b2FkIGRhdGEgaW50byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuCiMKIyBTaWRlIGVmZmVjdHM6CiMg ICAgLSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlzIGNyZWF0ZWQKIyAgICAtIFZNSVNfVEVNUCBpcyBz ZXQgdG8gdGVtcG9yYXJ5IGRpcmVjdG9yeQojCiMgUmV0dXJuczoKIyAgICBOb25lCmV4dHJhY3Rf c2VsZigpIHsKICAgVk1JU19URU1QPWBta3RlbXAgLWQgL3RtcC92bWlzLlhYWFhYWGAKICAgbG9j YWwgZmlsZT0iJDAiCiAgIGxvY2FsIGZpbHRlcj0iIgogICBsb2NhbCBib290c3RyYXBwZXI9IiRQ UkVQQVlMT0FEIi9ib290c3RyYXBwZXItZ3RrCgogICBpZiBbICEgLWQgIiRWTUlTX1RFTVAiIF07 IHRoZW4KICAgICAgZWNobyAiVW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIK ICAgICAgZXhpdCAxCiAgIGZpCgogICBpZiBpc19yZWxhdGl2ZSAiJGZpbGUiOyB0aGVuCiAgICAg IGZpbGU9IiRQV0QvJGZpbGUiCiAgIGZpCgogICBpZiBbIC1lICIkYm9vdHN0cmFwcGVyIiBdICYm ICIkYm9vdHN0cmFwcGVyIiAtLXZhbGlkYXRlIDI+IC9kZXYvbnVsbDsgdGhlbgogICAgICBmaWx0 ZXI9JyB8ICIkUFJFUEFZTE9BRCIvYm9vdHN0cmFwcGVyLWd0ayAtLXRpdGxlICJWTXdhcmUgSW5z dGFsbGVyIiBcCiAgICAgICAgICAgICAgICAtLW1lc3NhZ2UgIlBsZWFzZSB3YWl0IHdoaWxlIGV4 dHJhY3RpbmcgdGhlIFZNd2FyZSBJbnN0YWxsZXIuLi4iIFwKICAgICAgICAgICAgICAgIC0tdG90 YWwgJFBBWUxPQURfU0laRSInCiAgIGVsc2UKICAgICAgZWNobyAtbiAiRXh0cmFjdGluZyBWTXdh cmUgSW5zdGFsbGVyLi4uIgogICBmaQoKICAgKGNkICRWTUlTX1RFTVAgJiYgZGQgaWY9IiRmaWxl IiBpYnM9JFNLSVBfQllURVMgb2JzPTEwMjQgc2tpcD0xIDI+IC9kZXYvbnVsbCBcCiAgICAgICRm aWx0ZXIgfCBndW56aXAgLWMgMj4gL2Rldi9udWxsIHwgdGFyIC14ZiAtIDI+IC9kZXYvbnVsbCkK CiAgIGlmIFsgISAtZSAiJGJvb3RzdHJhcHBlciIgXTsgdGhlbgogICAgICBlY2hvICJkb25lLiIK ICAgZmkKfQoKZXh0cmFjdF9wcmVwYXlsb2FkKCkgewogICBQUkVQQVlMT0FEPWBta3RlbXAgLWQg L3RtcC92bWlzLlhYWFhYWGAKICAgbG9jYWwgZmlsZT0iJDAiCgogICBpZiBbICEgLWQgIiRQUkVQ QVlMT0FEIiBdOyB0aGVuCiAgICAgIGVjaG8gIlVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGRp cmVjdG9yeS4iCiAgICAgIGV4aXQgMQogICBmaQoKICAgaWYgaXNfcmVsYXRpdmUgIiRmaWxlIjsg dGhlbgogICAgICBmaWxlPSIkUFdELyRmaWxlIgogICBmaQoKICAgKGNkICRQUkVQQVlMT0FEICYm IGRkIGlmPSIkZmlsZSIgaWJzPSRMQVVOQ0hFUl9TSVpFIG9icz0xMDI0IHNraXA9MSAyPiAvZGV2 L251bGwgfCBcCiAgICAgIGd1bnppcCAtYyAyPiAvZGV2L251bGwgfCB0YXIgLXhmIC0gMj4gL2Rl di9udWxsKQp9CgojIERldGVybWluZXMgaWYgYSBwcm9ncmFtIGlzIGluIHRoZSB1c2VyJ3MgUEFU SC4gIFRoaXMgaXMgdXNlZCBpbnN0ZWFkCiMgb2YgdGhlIGV4dGVybmFsIHdoaWNoIGJlY2F1c2Ug U29sYXJpcycgdmVyc2lvbiBkb2VzIG5vdCB3b3JrIGFzCiMgZXhwZWN0ZWQuCiMKIyBTaWRlIGVm ZmVjdHM6CiMgICAgTm9uZQojCiMgQXJndW1lbnRzOgojICAgICQxID0+IHByb2dyYW0gdG8gY2hl Y2sKIwojIFJldHVybnM6CiMgICAgMCBpZiBmb3VuZCwgZWxzZSAxCmludGVybmFsX3doaWNoKCkg ewogICBsb2NhbCBiaW5hcnk9IiQxIgoKICAgZm9yIGRpciBpbiBgZWNobyAkUEFUSCB8IHRyICI6 IiAiXG4iYDsgZG8KICAgICAgaWYgWyAtcyAiJGRpci8kYmluYXJ5IiAtYSAteCAiJGRpci8kYmlu YXJ5IiBdOyB0aGVuCiAgICAgICAgIHJldHVybiAwCiAgICAgIGZpCiAgIGRvbmUKCiAgIHJldHVy biAxCn0KCgojIEluc3RhbGxzIHRoZSBpbnN0YWxsZXIgYW5kIHRoZSBjdXJyZW50IGJ1bmRsZS4K IwojIEFyZ3VtZW50czoKIyAgICAkMSA9PiBmaWxlIHNvdXJjZQojICAgICQyID0+IHRydWUgaWYg c2hvdyBoZWxwCiMgICAgJDMgPT4gcGF0aCB0byBidW5kbGUKIwojIFJldHVybnM6CiMgICAgTm9u ZQppbnN0YWxsKCkgewogICBsb2NhbCBzb3VyY2U9IiQxIi9pbnN0YWxsCiAgIHNoaWZ0CiAgIGxv Y2FsIGhlbHA9IiQxIgogICBzaGlmdAogICBsb2NhbCBidW5kbGU9IiQxIgogICBzaGlmdAoKICAg aWYgWyAhIC1kICIkc291cmNlIiBdOyB0aGVuCiAgICAgIGVjaG8gIiRzb3VyY2UgZG9lcyBub3Qg ZXhpc3QiID4mMgogICAgICBleGl0IDEKICAgZmkKCiAgIGV4cG9ydCBWTVdBUkVfQk9PVFNUUkFQ PSIkVk1JU19URU1QIi9ib290c3RyYXAKCiAgIGNwIC1mICIkc291cmNlIi92bXdhcmUtaW5zdGFs bGVyL2Jvb3RzdHJhcCAiJFZNV0FSRV9CT09UU1RSQVAiCiAgIHNlZCAtaSAtZSAicyxAQExJQkRJ UkBALCRzb3VyY2UsZyIgIiRWTVdBUkVfQk9PVFNUUkFQIgogICBzZWQgLWkgLWUgInMsQEBWTVdB UkVfSU5TVEFMTEVSQEAsJHNvdXJjZS92bXdhcmUtaW5zdGFsbGVyLGciICIkVk1XQVJFX0JPT1RT VFJBUCIKCiAgIC4gIiRWTVdBUkVfQk9PVFNUUkFQIgoKICAgbG9jYWwgaW5zdGFsbGVyPSIkVk1X QVJFX0lOU1RBTExFUiIvdm13YXJlLWluc3RhbGxlcgoKICAgaWYgWyAtbiAiJGhlbHAiIF07IHRo ZW4KICAgICAgIiRpbnN0YWxsZXIiIC0taGVscAogICAgICBleGl0IDAKICAgZmkKCiAgICMgV2Ug bXVzdCBmaXh1cCB0aGUgcGF0aHMgaW4gUGFuZ28gb3IgdGhlIGZvbnRzIHdpbGwgYmUgYWxsIG1l c3NlZCB1cAogICBsb2NhbCBsaWJjb25mPSIkc291cmNlIi92bXdhcmUtaW5zdGFsbGVyL2xpYi9s aWJjb25mCiAgIGZvciBmaWxlIGluIGV0Yy9wYW5nby9wYW5nb3JjIGV0Yy9wYW5nby9wYW5nby5t b2R1bGVzIGV0Yy9wYW5nby9wYW5nb3guYWxpYXNlcyBcCiAgICAgICAgICAgICAgIGV0Yy9ndGst Mi4wL2dkay1waXhidWYubG9hZGVycyBldGMvZ3RrLTIuMC9ndGsuaW1tb2R1bGVzOyBkbwogICAg ICAgc2VkIC1pIC1lICJzLEBATElCQ09ORl9ESVJAQCwkbGliY29uZixnIiAiJGxpYmNvbmYvJGZp bGUiCiAgIGRvbmUKCiAgICMgUGFzcyBhbGwgb3B0aW9ucyB0aGUgdXNlciBwYXNzZWQgaW4gc28g dGhhdCB0aGUgY29ycmVjdCBVSSB0eXBlCiAgICMgZ2V0cyBzZXQuCiAgICIkaW5zdGFsbGVyIiAt LXNldC1zZXR0aW5nIHZtd2FyZS1pbnN0YWxsZXIgbGliY29uZiAiJGxpYmNvbmYiICAgXAogICAg ICAgICAgICAgICAgLS1pbnN0YWxsLWNvbXBvbmVudCAiJHNvdXJjZSIvdm13YXJlLWluc3RhbGxl ciAgICAgIFwKICAgICAgICAgICAgICAgIC0taW5zdGFsbC1idW5kbGUgIiRidW5kbGUiICIkQCIK ICAgcmV0PSQ/CiAgIGlmIFsgJHJldCAhPSAwIF07IHRoZW4KICAgICAgZXhpdCAkcmV0CiAgIGZp CgogICByZXR1cm4gMAp9CgoKIyBVbmluc3RhbGwgZXhpc3RpbmcgYnVuZGxlIGluc3RhbGxhdGlv bi4KIwojIEFyZ3VtZW50czoKIyAgICAkMSA9PiBldGNkaXIKIyAgICAkMiA9PiBzdWZmaXggdG8g YWRkIHRvIHZtd2FyZS11bmluc3RhbGwgKGllIC12aXgpCiMKIyBSZXR1cm5zOgojICAgIDAgb24g c3VjY2Vzcwp1bmluc3RhbGxfYnVuZGxlKCkgewogICBldGNkaXI9IiQxIgogICBzaGlmdAogICBz dWZmaXg9IiQxIgogICBzaGlmdAoKICAgbG9jYWwgYm9vdHN0cmFwPSIkZXRjZGlyIi9ib290c3Ry YXAKCiAgICMgSWYgdGhlIGJvb3RzdHJhcCBmaWxlIGV4aXN0cywgd2UgYXJlIGRlYWxpbmcgd2l0 aCBhIFZNSVMKICAgIyBpbnN0YWxsZXIuCiAgIGlmIFsgLWUgIiRib290c3RyYXAiIF07IHRoZW4K ICAgICAgbG9jYWwgYmluZGlyPSJgLiAkZXRjZGlyL2Jvb3RzdHJhcCAmJiBlY2hvICRCSU5ESVJg IgogICAgICBsb2NhbCBpbnN0YWxsZXI9IiRiaW5kaXIiL3Ztd2FyZS11bmluc3RhbGwkc3VmZml4 CiAgICAgICMgQ2hlY2sgaWYgdGhpcyBpcyBhbiBvbGQgc3R5bGUgZmlsZSBieSBjaGVja2luZyB0 aGUgdmVyc2lvbgogICAgICAjIGxpbmUgZm9yICdWRVJTSU9OPSIxLjAiJyAgSWYgaXQncyBmb3Vu ZCwgcnVuIHRoZSBibGFua2V0CiAgICAgICMgdW5pbnN0YWxsLgogICAgICBpZiBncmVwIC1xICdW RVJTSU9OPSIxLjAiJyAiJGJvb3RzdHJhcCI7IHRoZW4KICAgICAgICAgaWYgWyAtZSAiJGluc3Rh bGxlciIgXTsgdGhlbgogICAgICAgICAgICBpZiAhICIkaW5zdGFsbGVyIiAiJEAiOyB0aGVuCiAg ICAgICAgICAgICAgIGVjaG8gIkluc3RhbGxlciBkaWQgbm90IHVuaW5zdGFsbCBzdWNjZXNzZnVs bHkuIgogICAgICAgICAgICBmaQogICAgICAgICBmaQogICAgICBmaQogICBmaQoKICAgcmV0dXJu IDAKfQoKCiMgVW5pbnN0YWxsIGEgdGFyIGluc3RhbGxhdGlvbi4KIwojIEFyZ3VtZW50czoKIyAg ICAkMSA9PiBldGNkaXIKIyAgICAkMiA9PiBzdWZmaXggdG8gYWRkIHRvIHZtd2FyZS11bmluc3Rh bGwgKGllIC12aXgpCiMKIyBSZXR1cm5zOgojICAgIDAgb24gc3VjY2Vzcwp1bmluc3RhbGxfdGFy KCkgewogICBldGNkaXI9IiQxIgogICBzaGlmdAogICBzdWZmaXg9IiQxIgogICBzaGlmdAoKICAg bG9jYXRpb25zPSIkZXRjZGlyIi9sb2NhdGlvbnMKCiAgIGlmIFsgLWUgJGxvY2F0aW9ucyBdOyB0 aGVuCiAgICAgIGxvY2FsIGJpbmRpcj1gZ3JlcCAiXmFuc3dlciBCSU5ESVIgIiAkbG9jYXRpb25z IHwgdGFpbCAtbiAxIHwgc2VkICdzLGFuc3dlciBCSU5ESVIgLCxnJ2AKICAgICAgbG9jYWwgaW5z dGFsbGVyPSIkYmluZGlyIi92bXdhcmUtdW5pbnN0YWxsJHN1ZmZpeC5wbAoKICAgICAgaWYgWyAt ZSAiJGluc3RhbGxlciIgXTsgdGhlbgogICAgICAgICBlY2hvICJVbmluc3RhbGxpbmcgbGVnYWN5 IGluc3RhbGxhdGlvbi4uLiIKICAgICAgICAgIiRpbnN0YWxsZXIiIC1kCiAgICAgIGVsc2UJCQkj IE5vIHVuaW5zdGFsbGVyIHByZXNlbnQsIGdldCByaWQgb2YgbG9jYXRpb25zIGRiLgogICAgICAg ICBybSAtZiAkbG9jYXRpb25zCiAgICAgIGZpCiAgIGZpCn0KCnJlbW92ZV9ycG0oKSB7CiAgIGxv Y2FsIHBrZz0iJDEiCiAgIHNoaWZ0CgogICAjIElmIG5vcm1hbCB1bmluc3RhbGxhdGlvbiBmYWls cywgd2Ugd2FudCB0byBmb3JjZSBpdCBvdXQuICBUaGlzCiAgICMgaXMgbGlrZWx5IGJlY2F1c2Ug dGhlIHByZXVuIHNjcmlwdCBmYWlsZWQuICB0cnkgYWdhaW4gd2l0aAogICAjIC0tbm9zY3JpcHRz CiAgIGlmICEgcnBtIC1lICRwa2c7IHRoZW4KICAgICAgZWNobyAiVW5pbnN0YWxsYXRpb24gb2Yg JHBrZyBmYWlsZWQuICBGb3JjaW5nIHVuaW5zdGFsbGF0aW9uLiIKICAgICAgcnBtIC1lICRwa2cg LS1ub3NjcmlwdHMKICAgZmkKfQoKIyBVbmluc3RhbGxzIGxlZ2FjeSBQbGF5ZXIvV29ya3N0YXRp b24uCiMKIyBBcmd1bWVudHM6CiMgICAgTm9uZQojCiMgUmV0dXJuczoKIyAgICAwIG9uIHN1Y2Nl c3MuCnVuaW5zdGFsbF9sZWdhY3koKSB7CiAgIGxvY2FsIGV0Y2Rpcj0iJDEiCiAgIHNoaWZ0Cgog ICBsb2NhbCBob3N0ZWQ9YGVjaG8gIiRQUk9EVUNUX05BTUUiIHwgZ3JlcCAiXCh2bXdhcmUtd29y a3N0YXRpb25cfHZtd2FyZS1wbGF5ZXJcfHZtd2FyZS1zZXJ2ZXJcfHZtd2FyZS12aXhcKSJgCgog ICBpZiBbIC1uICIkaG9zdGVkIiBdOyB0aGVuICMgQ2hlY2sgdG8gc2VlIGlmIHJwbSBpcyBpbnN0 YWxsZWQKICAgICAgZm9yIHBrZyBpbiBWTXdhcmVXb3Jrc3RhdGlvbiBWTXdhcmVQbGF5ZXI7IGRv CiAgICAgICAgIGlmIHJwbSAtcSAkcGtnID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICAg ICAgcmVtb3ZlX3JwbSAkcGtnCiAgICAgICAgIGZpCiAgICAgIGRvbmUKICAgICAgIyBOb3cgaGFu ZGxlIHRoZSBzZXJ2ZXIgY2FzZS4gIFRoZSBpbnN0YWxsZXIgaXMgbm9ybWFsbHkgcmVwbGFjaW5n CiAgICAgICMgUGxheWVyIGFuZC9vciBXb3Jrc3RhdGlvbiwgc28gdGhlcmUgaXMgbm8gbmVlZCB0 byBleHBsaWNpdGx5IGxldAogICAgICAjIHRoZSB1c2VyIGtub3cgdGhhdCB3ZSdyZSByZXBsYWNp bmcgdGhlbS4gIFNpbGVudGx5IHJlcGxhY2luZwogICAgICAjIHNlcnZlciBvbiB0aGUgb3RoZXIg aGFuZCBpcyBub3QgYSBnb29kIGlkZWEuCiAgICAgIGlmIHJwbSAtcSBWTXdhcmUtc2VydmVyID4g L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICAgZWNobyAiVk13YXJlIFNlcnZlciBtdXN0IGJl IHJlbW92ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBjYW4gY29udGludWUuIgogICAgICAgICBlY2hv ICJJdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgdW5pbnN0YWxsZWQgYnkgdGhpcyBpbnN0YWxsZXIu ICBQcmVzcyIKICAgICAgICAgZWNobyAiY3RybC1DIG5vdyBpZiB5b3UgZG8gbm90IHdpc2ggdG8g Y29udGludWUgb3IgaWYgeW91IGhhdmUgcnVubmluZyIKICAgICAgICAgZWNobyAidmlydHVhbCBt YWNoaW5lcyB0aGF0IG11c3QgYmUgY2xvc2VkLiIKICAgICAgICAgZWNobyAiIgogICAgICAgICBl Y2hvICJPdGhlcndpc2UgcHJlc3MgPGVudGVyPiB0byBjb250aW51ZSBhbmQgYXV0b21hdGljYWxs eSB1bmluc3RhbGwgVk13YXJlIFNlcnZlci4iCiAgICAgICAgIHJlYWQgLWUgTk9WQVIKICAgICAg ICAgcnBtIC1lIC0tbm9zY3JpcHRzIFZNd2FyZS1zZXJ2ZXIKICAgICAgZmkKICAgZmkKCiAgIHVu aW5zdGFsbF90YXIgIiRldGNkaXIiICIiCgogICAjIGNvbmZpZyB3YXMgYSBtZXNzIHVuZGVyIHRo ZSB0YXIvcnBtLiAgSXQgYWx3YXlzIGdvdCByZW5hbWVkIGFuZAogICAjIGNyYXp5IHRoaW5ncy4g IENsZWFuIHRoZW0gdXAuCiAgIHJtIC1mICIkZXRjZGlyIi9jb25maWcuWzAtOV0qCgogICAjIE5l dHdvcmtpbmcgaXMgc29tZXRpbWVzIHN0aWxsIHJ1bm5pbmcgYWZ0ZXIgc3RvcHBpbmcgc2Vydmlj ZXMgc28KICAgIyBmb3JjZWFibHkga2lsbCBpdC4gIElmIGl0J3Mgc3RpbGwgcnVubmluZyB0aGVu IHZtbmV0IGNhbid0IGJlCiAgICMgcmVtb3ZlZCBhbmQgbmV0d29yayBzZXR0aW5ncyBhcmVuJ3Qg bWlncmF0ZWQgcHJvcGVybHkgZWl0aGVyLgogICBraWxsYWxsIC0td2FpdCAtOSB2bW5ldC1uZXRp ZnVwIHZtbmV0LWRoY3BkIHZtbmV0LW5hdGQgdm1uZXQtYnJpZGdlIFwKICAgICAgICAgICAgICAg ICAgICAgdm1uZXQtZGV0ZWN0IHZtbmV0LXNuaWZmZXIgMj4gL2Rldi9udWxsIHx8IHRydWUKICAg L3NiaW4vcm1tb2Qgdm1uZXQgMj4gL2Rldi9udWxsIHx8IHRydWUKCiAgIHJldHVybiAwCn0KCgoj IFVuaW5zdGFsbHMgYnVuZGxlIHJwbSBmb3IgUGxheWVyL1dvcmtzdGF0aW9uLgojCiMgQXJndW1l bnRzOgojICAgIE5vbmUKIwojIFJldHVybnM6CiMgICAgTm9uZS4KdW5pbnN0YWxsX3JwbSgpIHsK ICAgbG9jYWwgaG9zdGVkPWBlY2hvICIkUFJPRFVDVF9OQU1FIiB8IGdyZXAgIlwodm13YXJlLXdv cmtzdGF0aW9uXHx2bXdhcmUtcGxheWVyXHx2bXdhcmUtc2VydmVyXHx2bXdhcmUtdml4XCkiYAoK ICAgaWYgWyAtbiAiJGhvc3RlZCIgXTsgdGhlbiAjIENoZWNrIHRvIHNlZSBpZiBycG0gaXMgaW5z dGFsbGVkCiAgICAgIGZvciBwa2cgaW4gVk13YXJlLVdvcmtzdGF0aW9uIFZNd2FyZS1QbGF5ZXI7 IGRvCiAgICAgICAgIGlmIHJwbSAtcSAkcGtnID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAg ICAgICAgcmVtb3ZlX3JwbSAkcGtnCiAgICAgICAgIGZpCiAgICAgIGRvbmUKICAgZmkKfQoKCiMg TWlncmF0ZXMgbmV0d29ya2luZyBzZXR0aW5ncyBmb3IgUGxheWVyL1dvcmtzdGF0aW9uLgojIElm IGNhbGxlZCBvbiBhbiBJcm9uIGluc3RhbGwgb2YgV29ya3N0YXRpb24sIGl0IHdpbGwKIyBkbyBu b3RoaW5nLiAgVGhlIGxvY2F0aW9ucyBhbmQgbmV0d29ya2luZyBmaWxlcyB3ZXJlCiMgbG9jYXRl ZCBieSBkZWZhdWx0IGluIC9ldGMvdm13YXJlLCBoZW5jZSBPTERFVENESVIuCiMgSWYgdGhleSB3 ZXJlIGluc3RhbGxlZCBlbHNld2hlcmUsIHdlIGhhdmUgbm8gd2F5IHRvCiMgZmluZCB0aGVtLgoj CiMgVGhpcyBvbmx5IHdvcmtzIGZvciBwcmUtSXJvbi4gIElyb24gbmV0d29yayBzZXR0aW5ncwoj IGFyZSBzdG9yZWQgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5IGFuZCB1cGdyYWRlcyBoYW5kbGVk CiMgYnkgVk1JUy4KIwojIEFyZ3VtZW50czoKIyAgICBOb25lCiMKIyBSZXR1cm5zOgojICAgIE5v bmUuCm1pZ3JhdGVfbmV0d29ya3MoKSB7CiAgIGxvY2FsIGxvY2F0aW9ucz0iJE9MREVUQ0RJUiIv bG9jYXRpb25zCiAgIGxvY2FsIG5ldHdvcmtpbmc9IiRPTERFVENESVIiL25ldHdvcmtpbmcKCiAg IGlmIFsgLWUgIiRuZXR3b3JraW5nIiBdOyB0aGVuCiAgICAgIGxvY2FsIHRlbXBOZXR3b3JraW5n PWBta3RlbXAgL3RtcC92bXdhcmVOZXR3b3JraW5nLlhYWFhYWGAKICAgICAgY3AgLWYgIiRuZXR3 b3JraW5nIiAkdGVtcE5ldHdvcmtpbmcKICAgICAgZXhwb3J0IFZNV0FSRV9SRVNUT1JFX05FVFdP UktJTkc9JHRlbXBOZXR3b3JraW5nCiAgIGVsaWYgWyAtZSAiJGxvY2F0aW9ucyIgXTsgdGhlbgog ICAgICBsb2NhbCB0ZW1wTG9jYXRpb25zPWBta3RlbXAgL3RtcC92bXdhcmVMb2NhdGlvbnMuWFhY WFhYYAogICAgICBjcCAtZiAiJGxvY2F0aW9ucyIgJHRlbXBMb2NhdGlvbnMKICAgICAgZXhwb3J0 IFZNV0FSRV9NSUdSQVRFX05FVFdPUktJTkc9JHRlbXBMb2NhdGlvbnMKICAgZmkKCiAgIHJldHVy biAwCn0KCnVuaW5zdGFsbF9vbGRfdml4KCkgewogICAjIFZJWCB1c2VkIHRvIGxpdmUgdW5kZXIg dm13YXJlLXZpeCwgc28gd2UgbmVlZCB0bwogICAjIGNoZWNrIGZvciBhbiBvbGRlciBWSVggdGhl cmUuCiAgIHVuaW5zdGFsbF9idW5kbGUgL2V0Yy92bXdhcmUtdml4ICItdml4IiAiJEAiCgogICAj IFVuaW5zdGFsbCBvbGQgVklYIHZlcnNpb25zIGlmIG5lY2Vzc2FyeS4KICAgdW5pbnN0YWxsX3Rh ciAvZXRjL3Ztd2FyZS12aXggIi12aXgiCn0KCnVuaW5zdGFsbF9vbGQoKSB7CiAgICMgVW5pbnN0 YWxsIHRoZSBvbGRlciAuYnVuZGxlcwogICB1bmluc3RhbGxfYnVuZGxlICIkT0xERVRDRElSIiAi IiAiJEAiCgogICAjIFZNV0FSRV9TS0lQX1JQTV9VTklOU1RBTEwgd2lsbCBiZSBzZXQgaWYgd2Un cmUgaW5zdGFsbGluZwogICAjIGluIGFuIHJwbSBjb250ZXh0LiBJbiB0aGF0IGNhc2UsIHdlIGRv bid0IHdhbnQgdG8gcnVuIGFueQogICAjIHJwbSBjb21tYW5kcyB0byBwcmV2ZW50IHJwbSBkZWFk bG9jay4KICAgaWYgWyAteiAiJFZNV0FSRV9TS0lQX1JQTV9VTklOU1RBTEwiIF07IHRoZW4KICAg ICAgdW5pbnN0YWxsX3JwbQogICBmaQoKICAgIyBDaGVjayBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUg dW5pbnN0YWxsIHBvcnRpb25zIG9mIHRoaXMgc2NyaXB0IGZvciBlYXJsaWVyCiAgICMgaW5zdGFs bGVycy4gIExvb2sgZm9yIHRoZSBsb2NhdGlvbnMgZGF0YWJhc2UgaW4gL2V0Yy92bXdhcmUuICBU aGlzIGZpbGUKICAgIyB3aWxsIG9ubHkgZXhpc3QgZm9yIHByZS1Jcm9uIGluc3RhbGxzLgogICBp ZiBbIC1lICIkT0xERVRDRElSIi9sb2NhdGlvbnMgXTsgdGhlbgogICAgICAjIFRoaXMgd2lsbCB1 bmluc3RhbGwgbGVnYWN5IHRhci9ycG0gaW5zdGFsbGF0aW9ucy4gTm90ZSB0aGF0CiAgICAgICMg d2UgZG8gbm90IG5lZWQgdG8gYmUgY29uY2VybmVkIGFib3V0IGNoZWNraW5nIGZvcgogICAgICAj IFZNV0FSRV9TS0lQX1JQTV9VTklOU1RBTEwgc2luY2UgdGhlIGJ1bmRsZSBycG1zIGFyZSBtYXJr ZWQKICAgICAgIyB0byBjb25mbGljdCB3aXRoIGxlZ2FjeSBycG1zLgogICAgICB1bmluc3RhbGxf bGVnYWN5ICRPTERFVENESVIKCiAgICAgICMgQ2hlY2sgaWYgd2UgbmVlZCB0byB1bmluc3RhbGwg Y29tcG9uZW50cwogICAgICB1bmluc3RhbGxfdGFyICRPTERFVENESVIgIiIKCiAgICAgIHVuaW5z dGFsbF9vbGRfdml4ICIkQCIKICAgZmkKfQoKCiMgTWFpbiBlbnRyeSBwb2ludC4gIENoZWNrcyB3 aGV0aGVyIHRoZSBWTUlTIGlzIGluc3RhbGxlZCBhbmQgaWYgc28gbGF1bmNoZXMgaXQuCiMgT3Ro ZXJ3aXNlIGV4dHJhY3RzIGl0c2VsZiB0aGVuIGluc3RhbGxzIHRoZSBWTUlTLgptYWluKCkgewog ICBsb2NhbCBmdWxscGF0aD0iJDAiCiAgIGxvY2FsIGhlbHAKICAgbG9jYWwgZXh0cmFjdAoKICAg aWYgWyAiYGdldF9hcmNoYCIgIT0gIiRBUkNIIiBdOyB0aGVuCiAgICAgIGVjaG8gIlRoaXMgaXMg YSAkQVJDSCBidW5kbGUgYW5kIGRvZXMgbm90IG1hdGNoIHRoYXQgb2YgdGhlIGN1cnJlbnQgIgog ICAgICBlY2hvICJhcmNoaXRlY3R1cmUuICBQbGVhc2UgZG93bmxvYWQgdGhlIGBnZXRfYXJjaGAg YnVuZGxlLiIKICAgICAgZXhpdCAxCiAgIGZpCgogICBpZiBbICIkMSIgPSAiLWgiIC1vICIkMSIg PSAiLS1oZWxwIiBdOyB0aGVuCiAgICAgIGhlbHA9JDEKICAgICAgc2hpZnQKICAgZmkKCiAgIGlm IFsgIiQxIiA9ICIteCIgLW8gIiQxIiA9ICItLWV4dHJhY3QiIF07IHRoZW4KICAgICAgZXh0cmFj dD0kMQogICAgICBzaGlmdAogICBmaQoKICAgaWYgaXNfcmVsYXRpdmUgIiRmdWxscGF0aCI7IHRo ZW4KICAgICAgZnVsbHBhdGg9IiRQV0QvJGZ1bGxwYXRoIgogICBmaQoKICAgaWYgWyAkVUlEIC1l cSAwIF0gJiYgWyAteiAiJGhlbHAiIF0gJiYgWyAteiAiJGV4dHJhY3QiIF07IHRoZW4KICAgICAg Y2FzZSAiJFBST0RVQ1RfTkFNRSIgaW4KICAgICAgICAgIHZtd2FyZS13b3Jrc3RhdGlvbikKICAg ICAgICAgICAgICBtaWdyYXRlX25ldHdvcmtzCiAgICAgICAgICAgICAgdW5pbnN0YWxsX29sZF92 aXggIiRAIgogICAgICAgICAgICAgIHVuaW5zdGFsbF9vbGQgIiRAIgogICAgICAgICAgICAgIDs7 CiAgICAgICAgICB2bXdhcmUtcGxheWVyKQogICAgICAgICAgICAgIG1pZ3JhdGVfbmV0d29ya3MK ICAgICAgICAgICAgICB1bmluc3RhbGxfb2xkICIkQCIKICAgICAgICAgICAgICA7OwogICAgICAg ICAgdm13YXJlLXNlcnZlcikKICAgICAgICAgICAgICBtaWdyYXRlX25ldHdvcmtzCiAgICAgICAg ICAgICAgdW5pbnN0YWxsX29sZCAiJEAiCiAgICAgICAgICAgICAgOzsKICAgICAgICAgIHZtd2Fy ZS12aXgpCiAgICAgICAgICAgICAgdW5pbnN0YWxsX29sZF92aXggIiRAIgogICAgICAgICAgICAg IDs7CiAgICAgICAgICB0ZXN0LWNvbXBvbmVudCkKICAgICAgICAgICAgICB1bmluc3RhbGxfYnVu ZGxlIC9ldGMvdm13YXJlLXRlc3QgLXRlc3QgIiRAIgogICAgICBlc2FjCiAgIGZpCgogICBpZiAh IHNldF9sZW5ndGhzICIkMCI7IHRoZW4KICAgICAgZWNobyAiVW5hYmxlIHRvIGV4dHJhY3QgbGVu Z3RocyBmcm9tIGJ1bmRsZS4iCiAgICAgIGV4aXQgMQogICBmaQoKICAgZXh0cmFjdF9wcmVwYXls b2FkCiAgIGV4dHJhY3Rfc2VsZgoKICAgaW5zdGFsbCAiJFZNSVNfVEVNUCIgIiRoZWxwIiAiJGZ1 bGxwYXRoIiAiJGV4dHJhY3QiICIkQCIKfQoKbWFpbiAiJEAiCisgbWFpbgorIGxvY2FsIGZ1bGxw YXRoPVZNd2FyZS1QbGF5ZXItMy4xLjAtMjYxMDI0Lng4Nl82NC5idW5kbGUKKyBsb2NhbCBoZWxw CisgbG9jYWwgZXh0cmFjdApnZXRfYXJjaAorKyBnZXRfYXJjaAorKyBsb2NhbCBFTEZfTUFHSUM9 N2YKb2QgLU4xIC1BbiAtdCB4MSA8IC9iaW4vc2ggfCB0ciAtZCAnICcKKysrIG9kIC1OMSAtQW4g LXQgeDEKKysrIHRyIC1kICcgJworKyAnWycgN2YgJyE9JyA3ZiAnXScKb2QgLWo0IC1OMSAtQW4g LXQgdTEgPCAvYmluL3NoIHwgdHIgLWQgJyAnCisrKyBvZCAtajQgLU4xIC1BbiAtdCB1MQorKysg dHIgLWQgJyAnCisrIGxvY2FsIGFyY2g9MgorKyBjYXNlICRhcmNoIGluCisrIGVjaG8geDY0Cisr IGV4aXQgMAorICdbJyB4NjQgJyE9JyB4NjQgJ10nCisgJ1snICcnID0gLWggLW8gJycgPSAtLWhl bHAgJ10nCisgJ1snICcnID0gLXggLW8gJycgPSAtLWV4dHJhY3QgJ10nCisgaXNfcmVsYXRpdmUg Vk13YXJlLVBsYXllci0zLjEuMC0yNjEwMjQueDg2XzY0LmJ1bmRsZQorIGxvY2FsIHBhdGg9Vk13 YXJlLVBsYXllci0zLjEuMC0yNjEwMjQueDg2XzY0LmJ1bmRsZQorIHNoaWZ0CisgJ1snIFYgJyE9 JyAvICddJworIHJldHVybgorIGZ1bGxwYXRoPS9ob21lL1ZpcnR1YWxNYWNoaW5lcy9WTXdhcmUt UGxheWVyLTMuMS4wLTI2MTAyNC54ODZfNjQuYnVuZGxlCisgJ1snIDAgLWVxIDAgJ10nCisgJ1sn IC16ICcnICddJworICdbJyAteiAnJyAnXScKKyBjYXNlICIkUFJPRFVDVF9OQU1FIiBpbgorIG1p Z3JhdGVfbmV0d29ya3MKKyBsb2NhbCBsb2NhdGlvbnM9L2V0Yy92bXdhcmUvbG9jYXRpb25zCisg bG9jYWwgbmV0d29ya2luZz0vZXRjL3Ztd2FyZS9uZXR3b3JraW5nCisgJ1snIC1lIC9ldGMvdm13 YXJlL25ldHdvcmtpbmcgJ10nCisgJ1snIC1lIC9ldGMvdm13YXJlL2xvY2F0aW9ucyAnXScKKyBy ZXR1cm4gMAorIHVuaW5zdGFsbF9vbGQKKyB1bmluc3RhbGxfYnVuZGxlIC9ldGMvdm13YXJlICcn CisgZXRjZGlyPS9ldGMvdm13YXJlCisgc2hpZnQKKyBzdWZmaXg9Cisgc2hpZnQKKyBsb2NhbCBi b290c3RyYXA9L2V0Yy92bXdhcmUvYm9vdHN0cmFwCisgJ1snIC1lIC9ldGMvdm13YXJlL2Jvb3Rz dHJhcCAnXScKKyByZXR1cm4gMAorICdbJyAteiAnJyAnXScKKyB1bmluc3RhbGxfcnBtCmVjaG8g IiRQUk9EVUNUX05BTUUiIHwgZ3JlcCAiXCh2bXdhcmUtd29ya3N0YXRpb25cfHZtd2FyZS1wbGF5 ZXJcfHZtd2FyZS1zZXJ2ZXJcfHZtd2FyZS12aXhcKSIKKysgZWNobyB2bXdhcmUtcGxheWVyCisr IGdyZXAgJ1wodm13YXJlLXdvcmtzdGF0aW9uXHx2bXdhcmUtcGxheWVyXHx2bXdhcmUtc2VydmVy XHx2bXdhcmUtdml4XCknCisgbG9jYWwgaG9zdGVkPXZtd2FyZS1wbGF5ZXIKKyAnWycgLW4gdm13 YXJlLXBsYXllciAnXScKKyBmb3IgcGtnIGluIFZNd2FyZS1Xb3Jrc3RhdGlvbiBWTXdhcmUtUGxh eWVyCisgcnBtIC1xIFZNd2FyZS1Xb3Jrc3RhdGlvbgorIGZvciBwa2cgaW4gVk13YXJlLVdvcmtz dGF0aW9uIFZNd2FyZS1QbGF5ZXIKKyBycG0gLXEgVk13YXJlLVBsYXllcgorICdbJyAtZSAvZXRj L3Ztd2FyZS9sb2NhdGlvbnMgJ10nCisgc2V0X2xlbmd0aHMgVk13YXJlLVBsYXllci0zLjEuMC0y NjEwMjQueDg2XzY0LmJ1bmRsZQorIGxvY2FsIGZpbGU9Vk13YXJlLVBsYXllci0zLjEuMC0yNjEw MjQueDg2XzY0LmJ1bmRsZQorICdbJyAnIScgLXMgVk13YXJlLVBsYXllci0zLjEuMC0yNjEwMjQu eDg2XzY0LmJ1bmRsZSAnXScKb2QgLUFuIC10IHU0IC1OIDQgLWFqIAorKyBvZCAtQW4gLXQgdTQg LU4gNCAtYWoKb2Q6IG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCAtLSBqCnVzYWdlOiBvZCBb LWFCYmNEZGVGZkhoSWlMbE9vc3ZYeF0gWy1BIGJhc2VdIFstaiBza2lwXSBbLU4gbGVuZ3RoXSBb LXQgdHlwZV0KICAgICAgICAgIFtbK11vZmZzZXRbLl1bQmJdXSBbZmlsZSAuLi5dCiAgICRNQUdJ Q19PRkZTRVQgIiRmaWxlIiB8IHRyIC1kICcgJworKyAxMDI0Njc2MzMgVk13YXJlLVBsYXllci0z LjEuMC0yNjEwMjQueDg2XzY0LmJ1bmRsZQpWTXdhcmUtUGxheWVyLTMuMS4wLTI2MTAyNC54ODZf NjQuYnVuZGxlOiBsaW5lIDExMTogMTAyNDY3NjMzOiBjb21tYW5kIG5vdCBmb3VuZAorKyB0ciAt ZCAnICcKKyBNQUdJQ19OVU1CRVI9CisgJ1snICcnICchPScgOTA3MzgwMjQxICddJworIGVjaG8g J21hZ2ljIG51bWJlciBkb2VzIG5vdCBtYXRjaCcKbWFnaWMgbnVtYmVyIGRvZXMgbm90IG1hdGNo CisgZXhpdCAxCm9uX2V4aXQKKyBvbl9leGl0CisgJ1snIC1lICcnIC1hIC16ICcnICddJworICdb JyAtZSAnJyAtYSAteiAnJyAnXScKCg== --0015175741102e46b5048d2d8dba--