From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([69.77.167.62] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1LPotB-0001XY-N2 for garchives@archives.gentoo.org; Thu, 22 Jan 2009 02:02:19 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 426BBE05C9; Thu, 22 Jan 2009 02:01:47 +0000 (UTC) Received: from yw-out-1718.google.com (yw-out-1718.google.com [74.125.46.153]) by pigeon.gentoo.org (Postfix) with ESMTP id 77509E05C9 for ; Thu, 22 Jan 2009 02:01:46 +0000 (UTC) Received: by yw-out-1718.google.com with SMTP id 5so1699976ywm.46 for ; Wed, 21 Jan 2009 18:01:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=nvvvzcsLZN/jnW6UyqyWqf3nm8jYCqJXOFeAPLy6Jp0=; b=ugTa3TFKn5HtpoAyFRRjn6szZFImc6M0exkvYeAqFMd3y1HT5b4ujMsb4lLDjCYfPH gEC+kKKrGQDZpmf3n5arLRI1L3OjCyxa+UbLmhOYfE7qAWUlroN+YF8WOgBlQgrEULFC w99rBqq279hyxXl+oYyv7FSR7QFWtsOm1i78w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=imGcKIx4g8hOZ8yo38nUISY0YvwEUTbgDPVgFWw+ZikySzTtzpXIw3ckJyyA2oI4ht KRjWFaNEu+bT2bdFc3m/I116sdl+C2pT6PitgAJNKBXuubjRadOPMJKcIo5iRzQMUUDF JWeB9+OQwQrEV+CXUsJLorVxWweN29cmaoxQc= Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-user@lists.gentoo.org Reply-to: gentoo-user@lists.gentoo.org MIME-Version: 1.0 Received: by 10.150.95.6 with SMTP id s6mr116247ybb.124.1232589706078; Wed, 21 Jan 2009 18:01:46 -0800 (PST) Date: Wed, 21 Jan 2009 22:01:45 -0400 Message-ID: <865773ce0901211801l34b02282of2c528fc2c0548bb@mail.gmail.com> Subject: [gentoo-user] Failed to emerge media-sound/alsa-driver-1.0.18a From: Guillermo Garron To: gentoo-user@lists.gentoo.org Content-Type: multipart/mixed; boundary=000e0cd6a9c695a9ec046108a732 X-Archives-Salt: 26e914d6-73a5-4282-bb89-0607ab6cbb8f X-Archives-Hash: 53f4a55646dfc9efbbb9ba5f042dea3c --000e0cd6a9c695a9ec046108a732 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I have tried to make a full upgrade of my system. Using emerge --update --newuse --deep world but I got this error: ********************************************************* Failed to emerge media-sound/alsa-driver-1.0.18a, Log file: >>> '/var/tmp/portage/media-sound/alsa-driver-1.0.18a/temp/build.log' * Messages for package media-sound/alsa-driver-1.0.18a: * * ERROR: media-sound/alsa-driver-1.0.18a failed. * Call stack: * ebuild.sh, line 49: Called src_compile * environment, line 3951: Called die * The specific snippet of code: * emake LDFLAGS="$(raw-ldflags)" HOSTCC="$(tc-getBUILD_CC)" CC="$(tc-getCC)" || die "Make Failed"; * The die message: * Make Failed * * If you need support, post the topmost build error, and the call stack if relevant. * A complete build log is located at '/var/tmp/portage/media-sound/alsa-driver-1.0.18a/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/media-sound/alsa-driver-1.0.18a/temp/environment'. * *************************************************************************** I am not new to Linux, but I use mostly Debian, and I am new to Gentoo, so actually I am stucked here for two weeks :(. I am also attaching the files it mentions in the above message. please help me. regards, -- Guillermo Garron "Linux IS user friendly... It's just selective about who its friends are." (Using Gentoo, Debian, Crunchbang, Ubuntu) http://feeds.feedburner.com/go2linux http://www.go2linux.org --000e0cd6a9c695a9ec046108a732 Content-Type: application/octet-stream; name=environment Content-Disposition: attachment; filename=environment Content-Transfer-Encoding: base64 X-Attachment-Id: f_fq8s02v51 QUxTQV9DQVJEUz0nIGFsaTU0NTEgYWxzNDAwMCBhdGlpeHAgYXRpaXhwLW1vZGVtIGJ0ODd4IGNh MDEwNiBjbWlwY2kgZW11MTBrMSBlbXUxMGsxeCBlbnMxMzcwIGVuczEzNzEgZXMxOTM4IGVzMTk2 OCBmbTgwMSBoZGEtaW50ZWwgaW50ZWw4eDAgaW50ZWw4eDBtIG1hZXN0cm8zIHRyaWRlbnQgdXNi LWF1ZGlvIHZpYTgyeHggdmlhODJ4eC1tb2RlbSB5bWZwY2knCkFMU0FfUENNX1BMVUdJTlM9J2Fk cGNtIGFsYXcgYXN5bSBjb3B5IGRtaXggZHNoYXJlIGRzbm9vcCBlbXB0eSBleHRwbHVnIGZpbGUg aG9va3MgaWVjOTU4IGlvcGx1ZyBsYWRzcGEgbGZsb2F0IGxpbmVhciBtZXRlciBtbWFwX2VtdWwg bXVsYXcgbXVsdGkgbnVsbCBwbHVnIHJhdGUgcm91dGUgc2hhcmUgc2htIHNvZnR2b2wnCkFQQUNI RTJfTU9EVUxFUz0nYWN0aW9ucyBhbGlhcyBhdXRoX2Jhc2ljIGF1dGhuX2FsaWFzIGF1dGhuX2Fu b24gYXV0aG5fZGJtIGF1dGhuX2RlZmF1bHQgYXV0aG5fZmlsZSBhdXRoel9kYm0gYXV0aHpfZGVm YXVsdCBhdXRoel9ncm91cGZpbGUgYXV0aHpfaG9zdCBhdXRoel9vd25lciBhdXRoel91c2VyIGF1 dG9pbmRleCBjYWNoZSBkYXYgZGF2X2ZzIGRhdl9sb2NrIGRlZmxhdGUgZGlyIGRpc2tfY2FjaGUg ZW52IGV4cGlyZXMgZXh0X2ZpbHRlciBmaWxlX2NhY2hlIGZpbHRlciBoZWFkZXJzIGluY2x1ZGUg aW5mbyBsb2dfY29uZmlnIGxvZ2lvIG1lbV9jYWNoZSBtaW1lIG1pbWVfbWFnaWMgbmVnb3RpYXRp b24gcmV3cml0ZSBzZXRlbnZpZiBzcGVsaW5nIHN0YXR1cyB1bmlxdWVfaWQgdXNlcmRpciB1c2Vy dHJhY2sgdmhvc3RfYWxpYXMnCkFSQ0g9eDg2CkFUX0dOVUNPTkZfVVBEQVRFPW5vCkFUX000RElS PQpDQlVJTEQ9aTY4Ni1wYy1saW51eC1nbnUKQ0RFRklORV9kZWZhdWx0PV9fdW5peF9fCkNGTEFH Uz0nLU8yIC1tYXJjaD1pNjg2IC1waXBlJwpDRkxBR1NfZGVmYXVsdD0KQ0hPU1Q9aTY4Ni1wYy1s aW51eC1nbnUKQ0hPU1RfZGVmYXVsdD1pNjg2LXBjLWxpbnV4LWdudQpDUk9TU0NPTVBJTEVfT1BU Uz0KQ1RBUkdFVF9kZWZhdWx0PWk2ODYtcGMtbGludXgtZ251CkNWU19SU0g9c3NoCkNYWEZMQUdT PSctTzIgLW1hcmNoPWk2ODYgLXBpcGUnCkRFRkFVTFRfQUJJPWRlZmF1bHQKREVQRU5EPSQndmly dHVhbC9tb2R1dGlsc1xuXHQ+PW1lZGlhLXNvdW5kL2Fsc2EtaGVhZGVycy0xLjAuMTdcblx0dmly dHVhbC9saW51eC1zb3VyY2VzXG5cdHN5cy1hcHBzL2RlYmlhbnV0aWxzICA9c3lzLWRldmVsL2F1 dG9tYWtlLTEuMTAqXG5cdD49c3lzLWRldmVsL2F1dG9jb25mLTIuNjEgc3lzLWRldmVsL2xpYnRv b2wga2VybmVsX2xpbnV4PyAoIHZpcnR1YWwvbGludXgtc291cmNlcyApIGtlcm5lbF9saW51eD8g KCB2aXJ0dWFsL21vZHV0aWxzIClcblx0c3lzLWFwcHMvc2VkIGtlcm5lbF9saW51eD8gKCB2aXJ0 dWFsL2xpbnV4LXNvdXJjZXMgKScKREVTQ1JJUFRJT049J0FkdmFuY2VkIExpbnV4IFNvdW5kIEFy Y2hpdGVjdHVyZSBrZXJuZWwgbW9kdWxlcycKREVTVFRSRUU9L3VzcgpESVJPUFRJT05TPS1tMDc1 NQpFQVBJPTAKRUxJQkM9Z2xpYmMKRUxJQlRPT0xfVkVSU0lPTj0yLjAuMgpFTFRfQVBQTElFRF9Q QVRDSEVTPQpFTFRfTFRNQUlOX1NIPQpFTFRfUEFUQ0hfRElSPS91c3IvcG9ydGFnZS9lY2xhc3Mv RUxULXBhdGNoZXMKRVBBVENIX0VYQ0xVREU9CkVQQVRDSF9GT1JDRT1ubwpFUEFUQ0hfTVVMVElf TVNHPSdBcHBseWluZyB2YXJpb3VzIHBhdGNoZXMgKGJ1Z2ZpeGVzL3VwZGF0ZXMpIC4uLicKRVBB VENIX09QVFM9Jy1nMCAtRSAtLW5vLWJhY2t1cC1pZi1taXNtYXRjaCcKRVBBVENIX1NJTkdMRV9N U0c9CkVQQVRDSF9TT1VSQ0U9L3Zhci90bXAvcG9ydGFnZS9tZWRpYS1zb3VuZC9hbHNhLWRyaXZl ci0xLjAuMThhL3dvcmsvcGF0Y2gKRVBBVENIX1NVRkZJWD1wYXRjaC5iejIKRVhFT1BUSU9OUz0t bTA3NTUKRkVBVFVSRVM9J2Rpc3Rsb2NrcyBmaXhwYWNrYWdlcyBwYXJhbGxlbC1mZXRjaCBwcm90 ZWN0LW93bmVkIHNhbmRib3ggc2ZwZXJtcyBzdHJpY3QgdW5tZXJnZS1vcnBoYW5zIHVzZXJmZXRj aCcKR0NDX1NQRUNTPQpHREtfVVNFX1hGVD0xCkhPTUVQQUdFPWh0dHA6Ly93d3cuYWxzYS1wcm9q ZWN0Lm9yZy8KSU5IRVJJVEVEPSd0b29sY2hhaW4tZnVuY3MgcG9ydGFiaWxpdHkgZmxhZy1vLW1h dGljIHZlcnNpb25hdG9yIG11bHRpbGliIGxpYnRvb2wgbGludXgtaW5mbyBhdXRvdG9vbHMgbGlu dXgtbW9kIGV1dGlscycKSU5QVVRfREVWSUNFUz0na2V5Ym9hcmQgbW91c2UnCklOU0RFU1RUUkVF PQpJTlNPUFRJT05TPS1tMDY0NApJVVNFPSdvc3MgZGVidWcgbWlkaSBhbHNhX2NhcmRzX3NlcS1k dW1teSBhbHNhX2NhcmRzX2R1bW15IGFsc2FfY2FyZHNfdmlybWlkaSBhbHNhX2NhcmRzX210cGF2 IGFsc2FfY2FyZHNfbXRzNjQgYWxzYV9jYXJkc19zZXJpYWwtdTE2NTUwIGFsc2FfY2FyZHNfbXB1 NDAxIGFsc2FfY2FyZHNfbG9vcGJhY2sgYWxzYV9jYXJkc19wb3J0bWFuMng0IGFsc2FfY2FyZHNf YWQxODQ4LWxpYiBhbHNhX2NhcmRzX2FkbGliIGFsc2FfY2FyZHNfYWQxODE2YSBhbHNhX2NhcmRz X2FkMTg0OCBhbHNhX2NhcmRzX2FsczEwMCBhbHNhX2NhcmRzX2F6dDIzMjAgYWxzYV9jYXJkc19j bWk4MzMwIGFsc2FfY2FyZHNfY3M0MjMxIGFsc2FfY2FyZHNfY3M0MjMyIGFsc2FfY2FyZHNfY3M0 MjM2IGFsc2FfY2FyZHNfZHQwMTl4IGFsc2FfY2FyZHNfZXM5NjggYWxzYV9jYXJkc19lczE2ODgg YWxzYV9jYXJkc19lczE4eHggYWxzYV9jYXJkc19ndXNjbGFzc2ljIGFsc2FfY2FyZHNfZ3VzZXh0 cmVtZSBhbHNhX2NhcmRzX2d1c21heCBhbHNhX2NhcmRzX2ludGVyd2F2ZSBhbHNhX2NhcmRzX2lu dGVyd2F2ZS1zdGIgYWxzYV9jYXJkc19vcGwzc2EyIGFsc2FfY2FyZHNfb3B0aTkyeC1hZDE4NDgg YWxzYV9jYXJkc19vcHRpOTJ4LWNzNDIzMSBhbHNhX2NhcmRzX29wdGk5M3ggYWxzYV9jYXJkc19t aXJvIGFsc2FfY2FyZHNfc2I4IGFsc2FfY2FyZHNfc2IxNiBhbHNhX2NhcmRzX3NiYXdlIGFsc2Ff Y2FyZHNfc2dhbGF4eSBhbHNhX2NhcmRzX3NzY2FwZSBhbHNhX2NhcmRzX3dhdmVmcm9udCBhbHNh X2NhcmRzX3BjOTgtY3M0MjMyIGFsc2FfY2FyZHNfbXNuZC1waW5uYWNsZSBhbHNhX2NhcmRzX2Fk MTg4OSBhbHNhX2NhcmRzX2FsczMwMCBhbHNhX2NhcmRzX2FsczQwMDAgYWxzYV9jYXJkc19hbGk1 NDUxIGFsc2FfY2FyZHNfYXRpaXhwIGFsc2FfY2FyZHNfYXRpaXhwLW1vZGVtIGFsc2FfY2FyZHNf YXU4ODEwIGFsc2FfY2FyZHNfYXU4ODIwIGFsc2FfY2FyZHNfYXU4ODMwIGFsc2FfY2FyZHNfYXp0 MzMyOCBhbHNhX2NhcmRzX2J0ODd4IGFsc2FfY2FyZHNfY2EwMTA2IGFsc2FfY2FyZHNfY21pcGNp IGFsc2FfY2FyZHNfY3M0MjgxIGFsc2FfY2FyZHNfY3M0Nnh4IGFsc2FfY2FyZHNfY3M1NTM1YXVk aW8gYWxzYV9jYXJkc19kYXJsYTIwIGFsc2FfY2FyZHNfZ2luYTIwIGFsc2FfY2FyZHNfbGF5bGEy MCBhbHNhX2NhcmRzX2RhcmxhMjQgYWxzYV9jYXJkc19naW5hMjQgYWxzYV9jYXJkc19sYXlsYTI0 IGFsc2FfY2FyZHNfbW9uYSBhbHNhX2NhcmRzX21pYSBhbHNhX2NhcmRzX2VjaG8zZyBhbHNhX2Nh cmRzX2luZGlnbyBhbHNhX2NhcmRzX2luZGlnb2lvIGFsc2FfY2FyZHNfaW5kaWdvZGogYWxzYV9j YXJkc19lbXUxMGsxIGFsc2FfY2FyZHNfZW11MTBrMXggYWxzYV9jYXJkc19lbnMxMzcwIGFsc2Ff Y2FyZHNfZW5zMTM3MSBhbHNhX2NhcmRzX2VzMTkzOCBhbHNhX2NhcmRzX2VzMTk2OCBhbHNhX2Nh cmRzX2ZtODAxIGFsc2FfY2FyZHNfZm04MDEtdGVhNTc1eCBhbHNhX2NhcmRzX2hkYS1pbnRlbCBh bHNhX2NhcmRzX2hkc3AgYWxzYV9jYXJkc19oZHNwbSBhbHNhX2NhcmRzX2ljZTE3MTIgYWxzYV9j YXJkc19pY2UxNzI0IGFsc2FfY2FyZHNfaW50ZWw4eDAgYWxzYV9jYXJkc19pbnRlbDh4MG0gYWxz YV9jYXJkc19rb3JnMTIxMiBhbHNhX2NhcmRzX21hZXN0cm8zIGFsc2FfY2FyZHNfbWl4YXJ0IGFs c2FfY2FyZHNfbm0yNTYgYWxzYV9jYXJkc19wY3hociBhbHNhX2NhcmRzX3JpcHRpZGUgYWxzYV9j YXJkc19ybWUzMiBhbHNhX2NhcmRzX3JtZTk2IGFsc2FfY2FyZHNfcm1lOTY1MiBhbHNhX2NhcmRz X3NvbmljdmliZXMgYWxzYV9jYXJkc190cmlkZW50IGFsc2FfY2FyZHNfdmlhODJ4eCBhbHNhX2Nh cmRzX3ZpYTgyeHgtbW9kZW0gYWxzYV9jYXJkc192eDIyMiBhbHNhX2NhcmRzX3ltZnBjaSBhbHNh X2NhcmRzX3BkcGx1cyBhbHNhX2NhcmRzX2FzaWhwaSBhbHNhX2NhcmRzX3Bvd2VybWFjIGFsc2Ff Y2FyZHNfYW9hIGFsc2FfY2FyZHNfYW9hLWZhYnJpYy1sYXlvdXQgYWxzYV9jYXJkc19hb2Etb255 eCBhbHNhX2NhcmRzX2FvYS10YXMgYWxzYV9jYXJkc19hb2EtdG9vbmllIGFsc2FfY2FyZHNfYW9h LXNvdW5kYnVzIGFsc2FfY2FyZHNfYW9hLXNvdW5kYnVzLWkycyBhbHNhX2NhcmRzX3NhMTF4eC11 ZGExMzQxIGFsc2FfY2FyZHNfYXJtYWFjaSBhbHNhX2NhcmRzX3MzYzI0MTAgYWxzYV9jYXJkc19w eGEyeHgtaTJzb3VuZCBhbHNhX2NhcmRzX2F1MXgwMCBhbHNhX2NhcmRzX3VzYi1hdWRpbyBhbHNh X2NhcmRzX3VzYi11c3gyeSBhbHNhX2NhcmRzX3VzYi11czEyMmwgYWxzYV9jYXJkc192eHBvY2tl dCBhbHNhX2NhcmRzX3BkYXVkaW9jZiBhbHNhX2NhcmRzX3N1bi1hbWQ3OTMwIGFsc2FfY2FyZHNf c3VuLWNzNDIzMSBhbHNhX2NhcmRzX3N1bi1kYnJpIGFsc2FfY2FyZHNfaGFybW9ueSBhbHNhX2Nh cmRzX3NvYyBhbHNhX2NhcmRzX2F0OTEtc29jIGFsc2FfY2FyZHNfYXQ5MS1zb2MtZXRpLWIxLXdt ODczMSBhbHNhX2NhcmRzX3B4YTJ4eC1zb2MgYWxzYV9jYXJkc19weGEyeHgtc29jLWNvcmdpIGFs c2FfY2FyZHNfcHhhMnh4LXNvYy1zcGl0eiBhbHNhX2NhcmRzX3B4YTJ4eC1zb2MtcG9vZGxlIGFs c2FfY2FyZHNfcHhhMnh4LXNvYy10b3NhIGFsc2FfY2FyZHNfaGlmaWVyIGFsc2FfY2FyZHNfbWw0 MDMtYWM5N2NyIGFsc2FfY2FyZHNfb3h5Z2VuIGFsc2FfY2FyZHNfcHhhMnh4LXNvYy1lODAwIGFs c2FfY2FyZHNfc2lzNzAxOSBhbHNhX2NhcmRzX3ZpcnR1b3NvICBrZXJuZWxfbGludXgnCklVU0Vf Q0FSRFM9JCdzZXEtZHVtbXkgZHVtbXkgdmlybWlkaSBtdHBhdiBtdHM2NCBzZXJpYWwtdTE2NTUw IG1wdTQwMVxubG9vcGJhY2sgcG9ydG1hbjJ4NCBhZDE4NDgtbGliIGFkbGliIGFkMTgxNmEgYWQx ODQ4XG5hbHMxMDAgYXp0MjMyMCBjbWk4MzMwIGNzNDIzMSBjczQyMzIgY3M0MjM2IGR0MDE5eCBl czk2OCBlczE2ODggZXMxOHh4XG5ndXNjbGFzc2ljIGd1c2V4dHJlbWUgZ3VzbWF4IGludGVyd2F2 ZSBpbnRlcndhdmUtc3RiIG9wbDNzYTJcbm9wdGk5MngtYWQxODQ4IG9wdGk5MngtY3M0MjMxIG9w dGk5M3ggbWlybyBzYjggc2IxNiBzYmF3ZSBzZ2FsYXh5XG5zc2NhcGUgd2F2ZWZyb250IHBjOTgt Y3M0MjMyIG1zbmQtcGlubmFjbGUgYWQxODg5IGFsczMwMCBhbHM0MDAwXG5hbGk1NDUxIGF0aWl4 cCBhdGlpeHAtbW9kZW0gYXU4ODEwIGF1ODgyMCBhdTg4MzAgYXp0MzMyOCBidDg3eCBjYTAxMDZc bmNtaXBjaSBjczQyODEgY3M0Nnh4IGNzNTUzNWF1ZGlvIGRhcmxhMjAgZ2luYTIwIGxheWxhMjAg ZGFybGEyNCBnaW5hMjRcbmxheWxhMjQgbW9uYSBtaWEgZWNobzNnIGluZGlnbyBpbmRpZ29pbyBp bmRpZ29kaiBlbXUxMGsxIGVtdTEwazF4XG5lbnMxMzcwIGVuczEzNzEgZXMxOTM4IGVzMTk2OCBm bTgwMSBmbTgwMS10ZWE1NzV4IGhkYS1pbnRlbCBoZHNwIGhkc3BtXG5pY2UxNzEyIGljZTE3MjQg aW50ZWw4eDAgaW50ZWw4eDBtIGtvcmcxMjEyIG1hZXN0cm8zIG1peGFydCBubTI1NlxucGN4aHIg cmlwdGlkZSBybWUzMiBybWU5NiBybWU5NjUyIHNvbmljdmliZXMgdHJpZGVudCB2aWE4Mnh4XG52 aWE4Mnh4LW1vZGVtIHZ4MjIyIHltZnBjaSBwZHBsdXMgYXNpaHBpIHBvd2VybWFjIGFvYVxuYW9h LWZhYnJpYy1sYXlvdXQgYW9hLW9ueXggYW9hLXRhcyBhb2EtdG9vbmllIGFvYS1zb3VuZGJ1c1xu YW9hLXNvdW5kYnVzLWkycyBzYTExeHgtdWRhMTM0MSBhcm1hYWNpIHMzYzI0MTAgcHhhMnh4LWky c291bmQgYXUxeDAwXG51c2ItYXVkaW8gdXNiLXVzeDJ5IHVzYi11czEyMmwgdnhwb2NrZXQgcGRh dWRpb2NmIHN1bi1hbWQ3OTMwIHN1bi1jczQyMzEgc3VuLWRicmlcbmhhcm1vbnkgc29jIGF0OTEt c29jIGF0OTEtc29jLWV0aS1iMS13bTg3MzEgcHhhMnh4LXNvY1xucHhhMnh4LXNvYy1jb3JnaSBw eGEyeHgtc29jLXNwaXR6IHB4YTJ4eC1zb2MtcG9vZGxlIHB4YTJ4eC1zb2MtdG9zYSBoaWZpZXJc bm1sNDAzLWFjOTdjciBveHlnZW4gcHhhMnh4LXNvYy1lODAwIHNpczcwMTkgdmlydHVvc28nCktF Uk5FTD1saW51eApLRVJORUxfQUJJPWRlZmF1bHQKS0VSTkVMX0RJUj0vdXNyL3NyYy9saW51eApL RVlXT1JEUz0nfmFscGhhIH5hbWQ2NCB+bWlwcyB+cHBjIH5wcGM2NCB+eDg2JwpLVj0yLjYuMjUt Z2VudG9vLXI4CktWX0RJUj0vdXNyL3NyYy9saW51eApLVl9FWFRSQT0tZ2VudG9vLXI4CktWX0ZV TEw9Mi42LjI1LWdlbnRvby1yOApLVl9MT0NBTD0KS1ZfTUFKT1I9MgpLVl9NSU5PUj02CktWX09C Sj1rbwpLVl9PVVRfRElSPS9saWIvbW9kdWxlcy8yLjYuMjUtZ2VudG9vLXI4L2J1aWxkCktWX1BB VENIPTI1CkxDRF9ERVZJQ0VTPSdiYXlyYWQgY2ZvbnR6IGNmb250ejYzMyBnbGsgaGQ0NDc4MCBs YjIxNiBsY2RtMDAxIG10eG9yYiBuY3Vyc2VzIHRleHQnCkxERkxBR1M9LVdsLC1PMQpMREZMQUdT X2RlZmF1bHQ9CkxJQkRJUl9kZWZhdWx0PWxpYgpMSUJPUFRJT05TPS1tMDY0NApMSUNFTlNFPUdQ TC0yCk1BS0VPUFRTPS1qMwpNVUxUSUxJQl9BQklTPWRlZmF1bHQKTVlfUD1hbHNhLWRyaXZlci0x LjAuMThhCk5FVEJFQU5TPSdhcGlzdXBwb3J0IGNuZCBncm9vdnkgZ3NmIGhhcm5lc3MgaWRlIGlk ZW50aXR5IGoyZWUgamF2YSBtb2JpbGl0eSBuYiBwaHAgcHJvZmlsZXIgc29hIHZpc3VhbHdlYiB3 ZWJjb21tb24gd2Vic3ZjY29tbW9uIHhtbCcKT1BFTkdMX1BST0ZJTEU9bnZpZGlhCk9VVFBVVF9E SVI9L2xpYi9tb2R1bGVzLzIuNi4yNS1nZW50b28tcjgvYnVpbGQKUERFUEVORD0nICcKUEtHX0NP TkZJR19QQVRIPS91c3IvcXQvMy9saWIvcGtnY29uZmlnClBPUlRBR0VfQ09NUFJFU1NfRVhDTFVE RV9TVUZGSVhFUz0nY3NzIGdpZiBodG1bbF0/IGpwW2VdP2cganMgcGRmIHBuZycKUFJPRklMRV9P TkxZX1ZBUklBQkxFUz0nQVJDSCBFTElCQyBLRVJORUwgVVNFUkxBTkQnClBST1BFUlRJRVM9ClBS T1ZJREU9dmlydHVhbC9hbHNhClFNQUtFU1BFQz1saW51eC1nKysKUVRESVI9L3Vzci9xdC8zClJE RVBFTkQ9J3ZpcnR1YWwvbW9kdXRpbHMgICAga2VybmVsX2xpbnV4PyAoIHZpcnR1YWwvbW9kdXRp bHMgKSAnClJFU1RSSUNUPQpTPS92YXIvdG1wL3BvcnRhZ2UvbWVkaWEtc291bmQvYWxzYS1kcml2 ZXItMS4wLjE4YS93b3JrL2Fsc2EtZHJpdmVyLTEuMC4xOGEKU0FOREJPWF9ERU5ZPS9ldGMvbGQu c28ucHJlbG9hZApTQU5EQk9YX1BSRURJQ1Q9Oi9kZXYvY29uc29sZTovZGV2L3JhbmRvbTovcHJv Yy9zZWxmL21hcHM6L3Vzci9saWIvcHl0aG9uMi4wLzovdXNyL2xpYi9weXRob24yLjEvOi91c3Iv bGliL3B5dGhvbjIuMi86L3Vzci9saWIvcHl0aG9uMi4zLzovdXNyL2xpYi9weXRob24yLjQvOi91 c3IvbGliL3B5dGhvbjIuNS86L3Vzci9saWIvcHl0aG9uMy4wLzovdmFyL2RiL2FsaWFzZXMuZGI6 L3Zhci9kYi9ldGhlcnMuZGI6L3Zhci9kYi9ncm91cC5kYjovdmFyL2RiL2hvc3RzLmRiOi92YXIv ZGIvbmV0Z3JvdXAuZGI6L3Zhci9kYi9uZXRtYXNrcy5kYjovdmFyL2RiL25ldHdvcmtzLmRiOi92 YXIvZGIvcGFzc3dkLmRiOi92YXIvZGIvcHJvdG9jb2xzLmRiOi92YXIvZGIvcnBjLmRiOi92YXIv ZGIvc2VydmljZXMuZGI6L3Zhci90bXAvcG9ydGFnZS9tZWRpYS1zb3VuZC9hbHNhLWRyaXZlci0x LjAuMThhL2hvbWVkaXIvLjoKU0FOREJPWF9SRUFEPTovOi9kZXYvc2htOi9kZXYvc3RkaW46L3Zh ci90bXA6ClNBTkRCT1hfV1JJVEU9Oi9kZXYvY29uc29sZTovZGV2L2ZkOi9kZXYvbnVsbDovZGV2 L3B0cy86L2Rldi9wdHk6L2Rldi9zaG06L2Rldi9zaG0vbmdwdDovZGV2L3N0ZGVycjovZGV2L3N0 ZG91dDovZGV2L3R0czovZGV2L3R0eTovZGV2L3ZjLzovZGV2L3plcm86L3Byb2Mvc2VsZi9mZDov dG1wOi90bXAvOi91c3IvbGliL2NmOi91c3IvbGliL2NvbmZ0ZXN0Oi91c3IvbGliMzIvY2Y6L3Vz ci9saWIzMi9jb25mdGVzdDovdXNyL2xpYjY0L2NmOi91c3IvbGliNjQvY29uZnRlc3Q6L3Vzci90 bXAvY2Y6L3Vzci90bXAvY29uZnRlc3Q6L3Zhci9sb2cvc2Nyb2xsa2VlcGVyLmxvZzovdmFyL3Rt cDovdmFyL3RtcC86L3Zhci90bXAvcG9ydGFnZS9tZWRpYS1zb3VuZC9hbHNhLWRyaXZlci0xLjAu MThhL2hvbWVkaXIvLmJhc2hfaGlzdG9yeTovdmFyL3RtcC9wb3J0YWdlL21lZGlhLXNvdW5kL2Fs c2EtZHJpdmVyLTEuMC4xOGEvaG9tZWRpci8uZ2NvbmZkL2xvY2s6ClNHTUxfQ0FUQUxPR19GSUxF Uz0vZXRjL3NnbWwvc2dtbC1kb2Nib29rLmNhdDovZXRjL3NnbWwvc2dtbC1kb2Nib29rLTMuMS5j YXQ6L2V0Yy9zZ21sL3NnbWwtZW50LmNhdDovZXRjL3NnbWwvb3BlbmphZGUtMS4zLjIuY2F0Oi9l dGMvc2dtbC9kc3NzbC1kb2Nib29rLXN0eWxlc2hlZXRzLmNhdDovZXRjL3NnbWwvc2dtbC1saXRl LmNhdApTTE9UPTAKU1JDX1VSST1taXJyb3I6Ly9hbHNhcHJvamVjdC9kcml2ZXIvYWxzYS1kcml2 ZXItMS4wLjE4YS50YXIuYnoyClVTRT0nYWxzYV9jYXJkc19hbGk1NDUxIGFsc2FfY2FyZHNfYWxz NDAwMCBhbHNhX2NhcmRzX2F0aWl4cCBhbHNhX2NhcmRzX2F0aWl4cC1tb2RlbSBhbHNhX2NhcmRz X2J0ODd4IGFsc2FfY2FyZHNfY2EwMTA2IGFsc2FfY2FyZHNfY21pcGNpIGFsc2FfY2FyZHNfZW11 MTBrMSBhbHNhX2NhcmRzX2VtdTEwazF4IGFsc2FfY2FyZHNfZW5zMTM3MCBhbHNhX2NhcmRzX2Vu czEzNzEgYWxzYV9jYXJkc19lczE5MzggYWxzYV9jYXJkc19lczE5NjggYWxzYV9jYXJkc19mbTgw MSBhbHNhX2NhcmRzX2hkYS1pbnRlbCBhbHNhX2NhcmRzX2ludGVsOHgwIGFsc2FfY2FyZHNfaW50 ZWw4eDBtIGFsc2FfY2FyZHNfbWFlc3RybzMgYWxzYV9jYXJkc190cmlkZW50IGFsc2FfY2FyZHNf dXNiLWF1ZGlvIGFsc2FfY2FyZHNfdmlhODJ4eCBhbHNhX2NhcmRzX3ZpYTgyeHgtbW9kZW0gYWxz YV9jYXJkc195bWZwY2kgZWxpYmNfZ2xpYmMga2VybmVsX2xpbnV4IG1pZGkgdXNlcmxhbmRfR05V IHg4NicKVVNFUkxBTkQ9R05VClZJREVPX0NBUkRTPQpXQU5UX0FVVE9DT05GPTIuNQpXQU5UX0FV VE9NQUtFPTEuMTAKXz1QS0dfSU5TVEFMTF9NQVNLCl9FX0RPQ0RFU1RUUkVFXz0KX0VfRVhFREVT VFRSRUVfPQpfX19FQ0xBU1NfUkVDVVJfTVVMVElMSUI9eWVzCl9fX0VDTEFTU19SRUNVUl9UT09M Q0hBSU5fRlVOQ1M9eWVzCl9waXBlc3RhdHVzPScwIDAnCmNhcmQ9eW1mcGNpCmNvbmY9YWxzYS1k cml2ZXItMS4wLjE4YS1yMAppdXNlX2NhcmQ9dmlydHVvc28KcmVwb3NpdG9yeT1nZW50b28Kc3Ry PSd1c2VfbTogZW50ZXJpbmcgZnVuY3Rpb24nCkVMVF9maW5kX2x0bWFpbl9zaCAoKSAKeyAKICAg IGxvY2FsIHg9OwogICAgbG9jYWwgZGlybGlzdD07CiAgICBmb3IgeCBpbiAkKGZpbmQgIiR7U30i IC1uYW1lICdsdG1haW4uc2gnKTsKICAgIGRvCiAgICAgICAgZGlybGlzdD0iJHtkaXJsaXN0fSAk e3glLyp9IjsKICAgIGRvbmU7CiAgICBlY2hvICIke2Rpcmxpc3R9Igp9CkVMVF9saWJ0b29sX3Zl cnNpb24gKCkgCnsgCiAgICBsb2NhbCBsdG1haW5fc2g9JDE7CiAgICBsb2NhbCB2ZXJzaW9uPTsK ICAgIHZlcnNpb249JChldmFsICQoZ3JlcCAtZSAnXltbOnNwYWNlOl1dKlZFUlNJT049JyAiJHts dG1haW5fc2h9Iik7IAkgICAgICAgICAgICAgICAgIGVjaG8gIiR7VkVSU0lPTn0iKTsKICAgIFtb IC16ICR7dmVyc2lvbn0gXV0gJiYgdmVyc2lvbj0iMCI7CiAgICBlY2hvICIke3ZlcnNpb259Igp9 CkVMVF90cnlfYW5kX2FwcGx5X3BhdGNoICgpIAp7IAogICAgbG9jYWwgcmV0PTA7CiAgICBsb2Nh bCBmaWxlPSQxOwogICAgbG9jYWwgcGF0Y2g9JDI7CiAgICBpZiBwYXRjaCAtcDAgLS1kcnktcnVu ICIke2ZpbGV9IiAiJHtwYXRjaH0iID4mIiR7VH0vZWxpYnRvb2wubG9nIjsgdGhlbgogICAgICAg IGVpbmZvICIgIEFwcGx5aW5nICQoYmFzZW5hbWUgIiQoZGlybmFtZSAiJHtwYXRjaH0iKSIpLSR7 cGF0Y2gjIyovfS5wYXRjaCAuLi4iOwogICAgICAgIHBhdGNoIC1wMCAtZzAgLS1uby1iYWNrdXAt aWYtbWlzbWF0Y2ggIiR7ZmlsZX0iICIke3BhdGNofSIgPiYiJHtUfS9lbGlidG9vbC5sb2ciOwog ICAgICAgIHJldD0kPzsKICAgICAgICBleHBvcnQgRUxUX0FQUExJRURfUEFUQ0hFUz0iJHtFTFRf QVBQTElFRF9QQVRDSEVTfSAke3BhdGNoIyMqL30iOwogICAgZWxzZQogICAgICAgIHJldD0xOwog ICAgZmk7CiAgICByZXR1cm4gIiR7cmV0fSIKfQpFTFRfd2Fsa19wYXRjaGVzICgpIAp7IAogICAg bG9jYWwgeD07CiAgICBsb2NhbCB5PTsKICAgIGxvY2FsIHJldD0xOwogICAgbG9jYWwgZmlsZT0k MTsKICAgIGxvY2FsIHBhdGNoX3NldD0kMjsKICAgIGxvY2FsIHBhdGNoX2Rpcj07CiAgICBsb2Nh bCByZW1faW50X2RlcD0kMzsKICAgIGlmIFtbIC1uICR7cGF0Y2hfc2V0fSBdXTsgdGhlbgogICAg ICAgIGlmIFtbIC1kICR7RUxUX1BBVENIX0RJUn0vJHtwYXRjaF9zZXR9IF1dOyB0aGVuCiAgICAg ICAgICAgIHBhdGNoX2Rpcj0iJHtFTFRfUEFUQ0hfRElSfS8ke3BhdGNoX3NldH0iOwogICAgICAg IGVsc2UKICAgICAgICAgICAgcmV0dXJuICIke3JldH0iOwogICAgICAgIGZpOwogICAgICAgIGZv ciB4IGluICQobHMgLWQgIiR7cGF0Y2hfZGlyfSIvKiAyPiAvZGV2L251bGwgfCBncmVwIC12ICdD VlMnIHwgc29ydCAtcik7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgLW4gJHt4fSAmJiAt ZiAke3h9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbWyAtbiAke3JlbV9pbnRfZGVwfSBd XTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHNlZCAtZSAic3xAUkVNX0lOVF9ERVBAfCR7cmVt X2ludF9kZXB9fGciICR7eH0gPiAiJHtUfS8kJC5yZW1faW50X2RlcHMucGF0Y2giOwogICAgICAg ICAgICAgICAgICAgIHg9IiR7VH0vJCQucmVtX2ludF9kZXBzLnBhdGNoIjsKICAgICAgICAgICAg ICAgIGZpOwogICAgICAgICAgICAgICAgaWYgRUxUX3RyeV9hbmRfYXBwbHlfcGF0Y2ggIiR7Zmls ZX0iICIke3h9IjsgdGhlbgogICAgICAgICAgICAgICAgICAgIHJldD0wOwogICAgICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAg IGRvbmU7CiAgICBmaTsKICAgIHJldHVybiAiJHtyZXR9Igp9ClZFUl9tYWpvciAoKSAKeyAKICAg IFtbIC16ICQxIF1dICYmIHJldHVybiAxOwogICAgbG9jYWwgVkVSPSRAOwogICAgZWNobyAiJHtW RVIlJVteWzpkaWdpdDpdXSp9Igp9ClZFUl9taWNybyAoKSAKeyAKICAgIFtbIC16ICQxIF1dICYm IHJldHVybiAxOwogICAgbG9jYWwgVkVSPSRAOwogICAgVkVSPSR7VkVSIyouKi59OwogICAgZWNo byAiJHtWRVIlJVteWzpkaWdpdDpdXSp9Igp9ClZFUl9taW5vciAoKSAKeyAKICAgIFtbIC16ICQx IF1dICYmIHJldHVybiAxOwogICAgbG9jYWwgVkVSPSRAOwogICAgVkVSPSR7VkVSIyoufTsKICAg IGVjaG8gIiR7VkVSJSVbXls6ZGlnaXQ6XV0qfSIKfQpWRVJfdG9faW50ICgpIAp7IAogICAgW1sg LXogJDEgXV0gJiYgcmV0dXJuIDE7CiAgICBsb2NhbCBWRVJfTUFKT1I9JChWRVJfbWFqb3IgIiQx Iik7CiAgICBsb2NhbCBWRVJfTUlOT1I9JChWRVJfbWlub3IgIiQxIik7CiAgICBsb2NhbCBWRVJf TUlDUk89JChWRVJfbWljcm8gIiQxIik7CiAgICBsb2NhbCBWRVJfaW50PSQoKCBWRVJfTUFKT1Ig KiA2NTUzNiArIFZFUl9NSU5PUiAqIDI1NiArIFZFUl9NSUNSTyApKTsKICAgIGlmIFtbICR7VkVS X2ludH0gLWdlIDY1NTM2IF1dOyB0aGVuCiAgICAgICAgZWNobyAiJHtWRVJfaW50fSI7CiAgICAg ICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGVjaG8gMTsKICAgIHJldHVybiAxCn0KX192ZXJzaW9u YXRvcl9fdGVzdF92ZXJzaW9uX2NvbXBhcmUgKCkgCnsgCiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0 X3RvZ2dsZSBvbjsKICAgIGxvY2FsIGx0PTEgZXE9MiBndD0zIHAgcTsKICAgIGZ1bmN0aW9uIF9f dmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgKCkgCiAgICB7IAogICAgICAgIHZl cnNpb25fY29tcGFyZSAiJHsxfSIgIiR7M30iOwogICAgICAgIGxvY2FsIHI9JD87CiAgICAgICAg W1sgJHtyfSAtZXEgJHsyfSBdXSB8fCBlY2hvICJGQUlMOiAke0B9IChnb3QgJHtyfSBleHAgJHsy fSkiCiAgICB9OwogICAgZWNobyAiCgkJMCAgICAgICAgICAgICAkbHQgMQoJCTEgICAgICAgICAg ICAgJGx0IDIKCQkyICAgICAgICAgICAgICRndCAxCgkJMiAgICAgICAgICAgICAkZXEgMgoJCTAg ICAgICAgICAgICAgJGVxIDAKCQkxMCAgICAgICAgICAgICRsdCAyMAoJCTY4ICAgICAgICAgICAg JGVxIDA2OAoJCTA2OCAgICAgICAgICAgJGd0IDY3CgkJMDY4ICAgICAgICAgICAkbHQgNjkKCgkJ MS4wICAgICAgICAgICAkbHQgMi4wCgkJMi4wICAgICAgICAgICAkZXEgMi4wCgkJMi4wICAgICAg ICAgICAkZ3QgMS4wCgoJCTEuMCAgICAgICAgICAgJGd0IDAuMAoJCTAuMCAgICAgICAgICAgJGVx IDAuMAoJCTAuMCAgICAgICAgICAgJGx0IDEuMAoKCQkwLjEgICAgICAgICAgICRsdCAwLjIKCQkw LjIgICAgICAgICAgICRlcSAwLjIKCQkwLjMgICAgICAgICAgICRndCAwLjIKCgkJMS4yICAgICAg ICAgICAkbHQgMi4xCgkJMi4xICAgICAgICAgICAkZ3QgMS4yCgoJCTEuMi4zICAgICAgICAgJGx0 IDEuMi40CgkJMS4yLjQgICAgICAgICAkZ3QgMS4yLjMKCgkJMS4yLjAgICAgICAgICAkZXEgMS4y CgkJMS4yLjEgICAgICAgICAkZ3QgMS4yCgkJMS4yICAgICAgICAgICAkbHQgMS4yLjEKCgkJMS4y YiAgICAgICAgICAkZXEgMS4yYgoJCTEuMmIgICAgICAgICAgJGx0IDEuMmMKCQkxLjJiICAgICAg ICAgICRndCAxLjJhCgkJMS4yYiAgICAgICAgICAkZ3QgMS4yCgkJMS4yICAgICAgICAgICAkbHQg MS4yYQoKCQkxLjMgICAgICAgICAgICRndCAxLjJhCgkJMS4zICAgICAgICAgICAkbHQgMS4zYQoK CQkxLjBfYWxwaGE3ICAgICRsdCAxLjBfYmV0YTcKCQkxLjBfYmV0YSAgICAgICRsdCAxLjBfcHJl CgkJMS4wX3ByZTUgICAgICAkbHQgMS4wX3JjMgoJCTEuMF9yYzIgICAgICAgJGx0IDEuMAoKCQkx LjBfcDEgICAgICAgICRndCAxLjAKCQkxLjBfcDEtcjEgICAgICRndCAxLjBfcDEKCgkJMS4wX2Fs cGhhNi1yMSAkZ3QgMS4wX2FscGhhNgoJCTEuMF9iZXRhNi1yMSAgJGd0IDEuMF9hbHBoYTYtcjIK CgkJMS4wX3ByZTEgICAgICAkbHQgMS4wLXAxCgoJCTEuMHAgICAgICAgICAgJGd0IDEuMF9wMQoJ CTEuMHIgICAgICAgICAgJGd0IDEuMC1yMQoJCTEuNi4xNSAgICAgICAgJGd0IDEuNi4xMC1yMgoJ CTEuNi4xMC1yMiAgICAgJGx0IDEuNi4xNQoKCSIgfCB3aGlsZSByZWFkIGEgYiBjOyBkbwogICAg ICAgIFtbIC16ICIke2F9JHtifSR7Y30iIF1dICYmIGNvbnRpbnVlOwogICAgICAgIF9fdmVyc2lv bmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIiR7YX0iICIke2J9IiAiJHtjfSI7CiAgICBk b25lOwogICAgZm9yIHEgaW4gImFscGhhIGJldGEgcHJlIHJjPSR7bHR9OyR7Z3R9IiAicCByPSR7 Z3R9OyR7bHR9IjsKICAgIGRvCiAgICAgICAgZm9yIHAgaW4gJHtxJSU9Kn07CiAgICAgICAgZG8K ICAgICAgICAgICAgbG9jYWwgYz0ke3EjIyo9fTsKICAgICAgICAgICAgbG9jYWwgYWx0PSR7YyUl Oyp9IGFndD0ke2MjIyo7fTsKICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9fdGVzdF92ZXJzaW9u X2NvbXBhcmVfdCAiMS4wIiAkYWd0ICIxLjBfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0 b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjEuMCIgJGFndCAiMS4wXyR7cH0xIjsKICAgICAg ICAgICAgX192ZXJzaW9uYXRvcl9fdGVzdF92ZXJzaW9uX2NvbXBhcmVfdCAiMS4wIiAkYWd0ICIx LjBfJHtwfTA2OCI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21w YXJlX3QgIjIuMF8ke3B9IiAkYWx0ICIyLjAiOwogICAgICAgICAgICBfX3ZlcnNpb25hdG9yX190 ZXN0X3ZlcnNpb25fY29tcGFyZV90ICIyLjBfJHtwfTEiICRhbHQgIjIuMCI7CiAgICAgICAgICAg IF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjIuMF8ke3B9MDY4IiAkYWx0 ICIyLjAiOwogICAgICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3ZlcnNpb25fY29tcGFyZV90 ICIxLjBfJHtwfSIgJGVxICIxLjBfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rl c3RfdmVyc2lvbl9jb21wYXJlX3QgIjAuMF8ke3B9IiAkbHQgIjAuMF8ke3B9MSI7CiAgICAgICAg ICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjY2Nl8ke3B9MyIgJGd0 ICI2NjZfJHtwfSI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21w YXJlX3QgIjFfJHtwfTciICRsdCAiMV8ke3B9OCI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3Jf X3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjFfJHtwfTciICRlcSAiMV8ke3B9NyI7CiAgICAgICAg ICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjFfJHtwfTciICRndCAi MV8ke3B9NiI7CiAgICAgICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJl X3QgIjFfJHtwfTA5IiAkZXEgIjFfJHtwfTkiOwogICAgICAgIGRvbmU7CiAgICBkb25lOwogICAg Zm9yIHAgaW4gIi1yIiAiX3AiOwogICAgZG8KICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3Zl cnNpb25fY29tcGFyZV90ICI3LjIke3B9MSIgJGx0ICI3LjIke3B9MiI7CiAgICAgICAgX192ZXJz aW9uYXRvcl9fdGVzdF92ZXJzaW9uX2NvbXBhcmVfdCAiNy4yJHtwfTIiICRndCAiNy4yJHtwfTEi OwogICAgICAgIF9fdmVyc2lvbmF0b3JfX3Rlc3RfdmVyc2lvbl9jb21wYXJlX3QgIjcuMiR7cH0z IiAkZ3QgIjcuMiR7cH0yIjsKICAgICAgICBfX3ZlcnNpb25hdG9yX190ZXN0X3ZlcnNpb25fY29t cGFyZV90ICI3LjIke3B9MiIgJGx0ICI3LjIke3B9MyI7CiAgICBkb25lOwogICAgX192ZXJzaW9u YXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgKCkgCnsg CiAgICBWRVJTSU9OQVRPUl9SRUNVUlNJT049JHtWRVJTSU9OQVRPUl9SRUNVUlNJT046LTB9Owog ICAgY2FzZSAiJDEiIGluIAogICAgICAgICJvbiIpCiAgICAgICAgICAgIGlmIFtbICRWRVJTSU9O QVRPUl9SRUNVUlNJT04gLWx0IDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIFZFUlNJT05BVE9S X09MRF9FWFRHTE9CPSQoc2hvcHQgLXAgZXh0Z2xvYik7CiAgICAgICAgICAgICAgICBzaG9wdCAt cyBleHRnbG9iOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgVkVSU0lPTkFUT1JfUkVDVVJT SU9OPSQoKCAkVkVSU0lPTkFUT1JfUkVDVVJTSU9OICsgMSApKQogICAgICAgIDs7CiAgICAgICAg Im9mZiIpCiAgICAgICAgICAgIFZFUlNJT05BVE9SX1JFQ1VSU0lPTj0kKCggJFZFUlNJT05BVE9S X1JFQ1VSU0lPTiAtIDEgKSk7CiAgICAgICAgICAgIGlmIFtbICRWRVJTSU9OQVRPUl9SRUNVUlNJ T04gLWx0IDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIGV2YWwgJFZFUlNJT05BVE9SX09MRF9F WFRHTE9COwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICBlc2FjOwogICAgcmV0dXJuIDAK fQpfY2Ryb21fbG9jYXRlX2ZpbGVfb25fY2QgKCkgCnsgCiAgICBsb2NhbCBtbGluZT0iIjsKICAg IGxvY2FsIHNob3dlZG1zZz0wIHNob3dqb2xpZXRtc2c9MDsKICAgIHdoaWxlIFtbIC16ICR7Q0RS T01fUk9PVH0gXV07IGRvCiAgICAgICAgbG9jYWwgaT0wOwogICAgICAgIGxvY2FsIC1hIGNkc2V0 PSgkeyovLzovIH0pOwogICAgICAgIGlmIFtbIC1uICR7Q0RST01fU0VUfSBdXTsgdGhlbgogICAg ICAgICAgICBjZHNldD0oJHtjZHNldFske0NEUk9NX1NFVH1dfSk7CiAgICAgICAgZmk7CiAgICAg ICAgd2hpbGUgW1sgLW4gJHtjZHNldFske2l9XX0gXV07IGRvCiAgICAgICAgICAgIGxvY2FsIGRp cj0kKGRpcm5hbWUgJHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBmaWxlPSQoYmFz ZW5hbWUgJHtjZHNldFske2l9XX0pOwogICAgICAgICAgICBsb2NhbCBwb2ludD0gbm9kZT0gZnM9 IGZvbz07CiAgICAgICAgICAgIHdoaWxlIHJlYWQgcG9pbnQgbm9kZSBmcyBmb287IGRvCiAgICAg ICAgICAgICAgICBbWyAiIGNkOTY2MCBpc285NjYwIHVkZiAiICE9ICoiICR7ZnN9ICIqIF1dICYm ICEgW1sgJHtmc30gPT0gInN1YmZzIiAmJiAiLCR7b3B0c30sIiA9PSAqIixmcz1jZGZzcywiKiBd XSAmJiBjb250aW51ZTsKICAgICAgICAgICAgICAgIHBvaW50PSR7cG9pbnQvL1wwNDAvIH07CiAg ICAgICAgICAgICAgICBbWyAhIC1kICR7cG9pbnR9LyR7ZGlyfSBdXSAmJiBjb250aW51ZTsKICAg ICAgICAgICAgICAgIFtbIC16ICQoZmluZCAiJHtwb2ludH0vJHtkaXJ9IiAtbWF4ZGVwdGggMSAt aW5hbWUgIiR7ZmlsZX0iKSBdXSAmJiBjb250aW51ZTsKICAgICAgICAgICAgICAgIGV4cG9ydCBD RFJPTV9ST09UPSR7cG9pbnR9OwogICAgICAgICAgICAgICAgZXhwb3J0IENEUk9NX1NFVD0ke2l9 OwogICAgICAgICAgICAgICAgZXhwb3J0IENEUk9NX01BVENIPSR7Y2RzZXRbJHtpfV19OwogICAg ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBkb25lIDw8PCAiJChnZXRfbW91bnRzKSI7 CiAgICAgICAgICAgICgoKytpKSk7CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvOwogICAgICAg IGlmIFtbICR7c2hvd2VkbXNnfSAtZXEgMCBdXTsgdGhlbgogICAgICAgICAgICBpZiBbWyAke0NE Uk9NX1RPVEFMX0NEU30gLWVxIDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFtbIC16ICR7 Q0RST01fTkFNRX0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGlu c2VydCttb3VudCB0aGUgY2Ryb20gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICAgICBlaW5mbyAiUGxlYXNlIGluc2VydCttb3VudCB0aGUgJHtD RFJPTV9OQU1FfSBjZHJvbSBub3cgISI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgaWYgW1sgLXogJHtDRFJPTV9OQU1FXzF9IF1dOyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQgY2QgIyR7Q0RST01f Q1VSUkVOVF9DRH0gZm9yICR7UE59IG5vdyAhIjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICAgICBsb2NhbCB2YXI9IkNEUk9NX05BTUVfJHtDRFJPTV9DVVJSRU5UX0NEfSI7 CiAgICAgICAgICAgICAgICAgICAgZWluZm8gIlBsZWFzZSBpbnNlcnQrbW91bnQgdGhlICR7IXZh cn0gY2Ryb20gbm93ICEiOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAg ICAgICAgICBzaG93ZWRtc2c9MTsKICAgICAgICBmaTsKICAgICAgICBlaW5mbyAiUHJlc3MgcmV0 dXJuIHRvIHNjYW4gZm9yIHRoZSBjZCBhZ2FpbiI7CiAgICAgICAgZWluZm8gIm9yIGhpdCBDVFJM K0MgdG8gYWJvcnQgdGhlIGVtZXJnZS4iOwogICAgICAgIGVjaG87CiAgICAgICAgaWYgW1sgJHtz aG93am9saWV0bXNnfSAtZXEgMCBdXTsgdGhlbgogICAgICAgICAgICBzaG93am9saWV0bXNnPTE7 CiAgICAgICAgZWxzZQogICAgICAgICAgICBld2FybiAiSWYgeW91IGFyZSBoYXZpbmcgdHJvdWJs ZSB3aXRoIHRoZSBkZXRlY3Rpb24iOwogICAgICAgICAgICBld2FybiAib2YgeW91ciBDRCwgaXQg aXMgcG9zc2libGUgdGhhdCB5b3UgZG8gbm90IGhhdmUiOwogICAgICAgICAgICBld2FybiAiSm9s aWV0IHN1cHBvcnQgZW5hYmxlZCBpbiB5b3VyIGtlcm5lbC4gIFBsZWFzZSI7CiAgICAgICAgICAg IGV3YXJuICJjaGVjayB0aGF0IENPTkZJR19KT0xJRVQgaXMgZW5hYmxlZCBpbiB5b3VyIGtlcm5l bC4iOwogICAgICAgICAgICBlYmVlcCA1OwogICAgICAgIGZpOwogICAgICAgIHJlYWQgfHwgZGll ICJzb21ldGhpbmcgaXMgc2NyZXdlZCB3aXRoIHlvdXIgc3lzdGVtIjsKICAgIGRvbmUKfQpfZWxp YnRvb2xpemUgKCkgCnsgCiAgICBsb2NhbCBvcHRzOwogICAgW1sgLW4gJChhdXRvdG9vbHNfY2hl Y2tfbWFjcm8gQUNfUFJPR19MSUJUT09MIEFNX1BST0dfTElCVE9PTCBMVF9JTklUKSBdXSB8fCBy ZXR1cm4gMDsKICAgIFtbIC1mIEdOVW1ha2VmaWxlLmFtIHx8IC1mIE1ha2VmaWxlLmFtIF1dICYm IG9wdHM9Ii0tYXV0b21ha2UiOwogICAgW1sgIiR7VVNFUkxBTkR9IiA9PSAiRGFyd2luIiBdXSAm JiBMSUJUT09MSVpFPSJnbGlidG9vbGl6ZSI7CiAgICBhdXRvdG9vbHNfcnVuX3Rvb2wgJHtMSUJU T09MSVpFOi1saWJ0b29saXplfSAiJEAiICR7b3B0c307CiAgICBlYWNsb2NhbAp9Cl9maWx0ZXIt aGFyZGVuZWQgKCkgCnsgCiAgICBsb2NhbCBmOwogICAgZm9yIGYgaW4gIiRAIjsKICAgIGRvCiAg ICAgICAgY2FzZSAiJHtmfSIgaW4gCiAgICAgICAgICAgIC1mUElDIHwgLWZwaWMgfCAtZlBJRSB8 IC1mcGllIHwgLVdsLHBpZSB8IC1waWUpCiAgICAgICAgICAgICAgICBnY2Mtc3BlY3MtcGllIHx8 IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgaXMtZmxhZ3EgLW5vcGllIHx8IGFwcGVuZC1mbGFn cyAtbm9waWUKICAgICAgICAgICAgOzsKICAgICAgICAgICAgLWZzdGFjay1wcm90ZWN0b3IpCiAg ICAgICAgICAgICAgICBnY2Mtc3BlY3Mtc3NwIHx8IGNvbnRpbnVlOwogICAgICAgICAgICAgICAg aXMtZmxhZ3EgLWZuby1zdGFjay1wcm90ZWN0b3IgfHwgYXBwZW5kLWZsYWdzICQodGVzdC1mbGFn cyAtZm5vLXN0YWNrLXByb3RlY3RvcikKICAgICAgICAgICAgOzsKICAgICAgICAgICAgLWZzdGFj ay1wcm90ZWN0b3ItYWxsKQogICAgICAgICAgICAgICAgZ2NjLXNwZWNzLXNzcC10by1hbGwgfHwg Y29udGludWU7CiAgICAgICAgICAgICAgICBpcy1mbGFncSAtZm5vLXN0YWNrLXByb3RlY3Rvci1h bGwgfHwgYXBwZW5kLWZsYWdzICQodGVzdC1mbGFncyAtZm5vLXN0YWNrLXByb3RlY3Rvci1hbGwp CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIC1mbm8tc3RyaWN0LW92ZXJmbG93KQogICAgICAg ICAgICAgICAgZ2NjLXNwZWNzLW5vc3RyaWN0IHx8IGNvbnRpbnVlOwogICAgICAgICAgICAgICAg aXMtZmxhZ3EgLWZzdHJpY3Qtb3ZlcmZsb3cgfHwgYXBwZW5kLWZsYWdzICQodGVzdC1mbGFncyAt ZnN0cmljdC1vdmVyZmxvdykKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9uZQp9 Cl9maWx0ZXItdmFyICgpIAp7IAogICAgbG9jYWwgZiB4IFZBUiBWQUw7CiAgICBkZWNsYXJlIC1h IG5ldzsKICAgIFZBUj0kMTsKICAgIHNoaWZ0OwogICAgZXZhbCBWQUw9XCR7JHtWQVJ9fTsKICAg IGZvciBmIGluICR7VkFMfTsKICAgIGRvCiAgICAgICAgZm9yIHggaW4gIiRAIjsKICAgICAgICBk bwogICAgICAgICAgICBbWyAke2Z9ID09ICR7eH0gXV0gJiYgY29udGludWUgMjsKICAgICAgICBk b25lOwogICAgICAgIGV2YWwgbmV3XFtcJHtcI25ld1xbQF19XT1cJHtmfTsKICAgIGRvbmU7CiAg ICBldmFsIGV4cG9ydCAke1ZBUn09XCR7bmV3XFsqXX0KfQpfZ2NjLWluc3RhbGwtZGlyICgpIAp7 IAogICAgZWNobyAiJChMQ19BTEw9QyAkKHRjLWdldENDKSAtcHJpbnQtc2VhcmNoLWRpcnMgMj4g L2Rldi9udWxsIHwJCWF3ayAnJDE9PSJpbnN0YWxsOiIge3ByaW50ICQyfScpIgp9Cl9nY2Mtc3Bl Y3MtZGlyZWN0aXZlX3JhdyAoKSAKeyAKICAgIGxvY2FsIGNjPSQodGMtZ2V0Q0MpOwogICAgbG9j YWwgc3BlY2ZpbGVzPSQoTENfQUxMPUMgJHtjY30gLXYgMj4mMSB8IGF3ayAnJDE9PSJSZWFkaW5n IiB7cHJpbnQgJE5GfScpOwogICAgJHtjY30gLWR1bXBzcGVjcyAyPiAvZGV2L251bGwgfCBjYXQg LSAke3NwZWNmaWxlc30gfCBhd2sgLXYgZGlyZWN0aXZlPSQxICdCRUdJTgl7IHBzcGVjPSIiOyBz cGVjPSIiOyBvdXRzaWRlPTEgfQokMT09IioiZGlyZWN0aXZlIjoiICB7IHBzcGVjPXNwZWM7IHNw ZWM9IiI7IG91dHNpZGU9MDsgbmV4dCB9CglvdXRzaWRlIHx8IE5GPT0wIHx8ICggc3Vic3RyKCQx LDEsMSk9PSIqIiAmJiBzdWJzdHIoJDEsbGVuZ3RoKCQxKSwxKT09IjoiICkgeyBvdXRzaWRlPTE7 IG5leHQgfQoJc3BlYz09IiIgJiYgc3Vic3RyKCQwLDEsMSk9PSIrIiB7IHNwZWM9cHNwZWMgIiAi IHN1YnN0cigkMCwyKTsgbmV4dCB9Cgl7IHNwZWM9c3BlYyAkMCB9CkVORAl7IHByaW50IHNwZWMg fSc7CiAgICByZXR1cm4gMAp9Cl9nY2Mtc3BlY3MtZXhpc3RzICgpIAp7IAogICAgW1sgLWYgJChf Z2NjLWluc3RhbGwtZGlyKS8kMSBdXQp9Cl9pc19mbGFncSAoKSAKeyAKICAgIGxvY2FsIHg7CiAg ICBmb3IgeCBpbiAkeyExfTsKICAgIGRvCiAgICAgICAgW1sgJHt4fSA9PSAkMiBdXSAmJiByZXR1 cm4gMDsKICAgIGRvbmU7CiAgICByZXR1cm4gMQp9CmFwcGVuZC1jcHBmbGFncyAoKSAKeyAKICAg IFtbIC16ICQqIF1dICYmIHJldHVybiAwOwogICAgZXhwb3J0IENQUEZMQUdTPSIke0NQUEZMQUdT fSAkKiI7CiAgICByZXR1cm4gMAp9CmFwcGVuZC1jeHhmbGFncyAoKSAKeyAKICAgIFtbIC16ICQq IF1dICYmIHJldHVybiAwOwogICAgZXhwb3J0IENYWEZMQUdTPSIke0NYWEZMQUdTfSAkKiI7CiAg ICByZXR1cm4gMAp9CmFwcGVuZC1mZmxhZ3MgKCkgCnsgCiAgICBbWyAteiAkKiBdXSAmJiByZXR1 cm4gMDsKICAgIGV4cG9ydCBGRkxBR1M9IiR7RkZMQUdTfSAkKiI7CiAgICBleHBvcnQgRkNGTEFH Uz0iJHtGQ0ZMQUdTfSAkKiI7CiAgICByZXR1cm4gMAp9CmFwcGVuZC1mbGFncyAoKSAKeyAKICAg IFtbIC16ICQqIF1dICYmIHJldHVybiAwOwogICAgZXhwb3J0IENGTEFHUz0iJHtDRkxBR1N9ICQq IjsKICAgIGV4cG9ydCBDWFhGTEFHUz0iJHtDWFhGTEFHU30gJCoiOwogICAgZXhwb3J0IEZGTEFH Uz0iJHtGRkxBR1N9ICQqIjsKICAgIGV4cG9ydCBGQ0ZMQUdTPSIke0ZDRkxBR1N9ICQqIjsKICAg IHJldHVybiAwCn0KYXBwZW5kLWxkZmxhZ3MgKCkgCnsgCiAgICBbWyAteiAkKiBdXSAmJiByZXR1 cm4gMDsKICAgIGxvY2FsIGZsYWc7CiAgICBmb3IgZmxhZyBpbiAiJEAiOwogICAgZG8KICAgICAg ICBbWyAke2ZsYWd9ID09IC1sKiBdXSAmJiBld2FybiAiQXBwZW5kaW5nIGEgbGlicmFyeSBsaW5r IGluc3RydWN0aW9uICgke2ZsYWd9KTsgbGlicmFyaWVzIHRvIGxpbmsgdG8gc2hvdWxkIG5vdCBi ZSBwYXNzZWQgdGhyb3VnaCBMREZMQUdTIjsKICAgIGRvbmU7CiAgICBleHBvcnQgTERGTEFHUz0i JHtMREZMQUdTfSAkKiI7CiAgICByZXR1cm4gMAp9CmFwcGVuZC1sZnMtZmxhZ3MgKCkgCnsgCiAg ICBbWyAtbiAkQCBdXSAmJiBkaWUgImFwcGVuZC1sZnMtZmxhZ3MgdGFrZXMgbm8gYXJndW1lbnRz IjsKICAgIGFwcGVuZC1jcHBmbGFncyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklM RV9TT1VSQ0UgLURfTEFSR0VGSUxFNjRfU09VUkNFCn0KYXV0b3Rvb2xzX2NoZWNrX21hY3JvICgp IAp7IAogICAgW1sgLWYgY29uZmlndXJlLmFjIHx8IC1mIGNvbmZpZ3VyZS5pbiBdXSB8fCByZXR1 cm4gMDsKICAgIGxvY2FsIG1hY3JvOwogICAgZm9yIG1hY3JvIGluICIkQCI7CiAgICBkbwogICAg ICAgIFdBTlRfQVVUT0NPTkY9IjIuNSIgYXV0b2NvbmYgLS10cmFjZT0iJHttYWNyb30iIDI+IC9k ZXYvbnVsbDsKICAgIGRvbmU7CiAgICByZXR1cm4gMAp9CmF1dG90b29sc19nZXRfYXV4ZGlyICgp IAp7IAogICAgbG9jYWwgYXV4ZGlyX3NjYW5fb3V0OwogICAgYXV4ZGlyX3NjYW5fb3V0PSQoYXV0 b3Rvb2xzX2NoZWNrX21hY3JvICJBQ19DT05GSUdfQVVYX0RJUiIpOwogICAgW1sgLW4gJHthdXhk aXJfc2Nhbl9vdXR9IF1dIHx8IHJldHVybiAwOwogICAgZWNobyAke2F1eGRpcl9zY2FuX291dH0g fCBnYXdrICcoJDAgIX4gL15bWzpzcGFjZTpdXSooI3xkbmwpLykgewoJCWlmIChtYXRjaCgkMCwg L0FDX0NPTkZJR19BVVhfRElSOiguKikkLywgcmVzKSkKCQkJcHJpbnQgcmVzWzFdCgl9JyB8IHVu aXE7CiAgICByZXR1cm4gMAp9CmF1dG90b29sc19nZXRfc3ViZGlycyAoKSAKeyAKICAgIGxvY2Fs IHN1YmRpcnNfc2Nhbl9vdXQ7CiAgICBzdWJkaXJzX3NjYW5fb3V0PSQoYXV0b3Rvb2xzX2NoZWNr X21hY3JvICJBQ19DT05GSUdfU1VCRElSUyIpOwogICAgW1sgLW4gJHtzdWJkaXJzX3NjYW5fb3V0 fSBdXSB8fCByZXR1cm4gMDsKICAgIGVjaG8gIiR7c3ViZGlyc19zY2FuX291dH0iIHwgZ2F3ayAn KCQwICF+IC9eW1s6c3BhY2U6XV0qKCN8ZG5sKS8pIHsKCQlpZiAobWF0Y2goJDAsIC9BQ19DT05G SUdfU1VCRElSUzooLiopJC8sIHJlcykpCgkJCXByaW50IHJlc1sxXQoJfScgfCB1bmlxOwogICAg cmV0dXJuIDAKfQphdXRvdG9vbHNfcnVuX3Rvb2wgKCkgCnsgCiAgICBpZiBbWyAke0VCVUlMRF9Q SEFTRX0gIT0gInVucGFjayIgJiYgJHtFQlVJTERfUEhBU0V9ICE9ICJwcmVwYXJlIiBdXTsgdGhl bgogICAgICAgIGV3YXJuICJRQSBXYXJuaW5nOiBydW5uaW5nICQxIGluICR7RUJVSUxEX1BIQVNF fSBwaGFzZSI7CiAgICBmaTsKICAgIGxvY2FsIFNUREVSUl9UQVJHRVQ9IiR7VH0vJCQub3V0IjsK ICAgIGxvY2FsIHJpczsKICAgIHByaW50ZiAiKioqKiogJDEgKioqKipcbioqKioqICQqXG5cbiIg PiAiJHtTVERFUlJfVEFSR0VUJS8qfS8kMS0ke1NUREVSUl9UQVJHRVQjIyovfSI7CiAgICBlYmVn aW4gIlJ1bm5pbmcgJEAiOwogICAgIiRAIiA+PiAiJHtTVERFUlJfVEFSR0VUJS8qfS8kMS0ke1NU REVSUl9UQVJHRVQjIyovfSIgMj4mMTsKICAgIHJpcz0kPzsKICAgIGVlbmQgJHtyaXN9OwogICAg aWYgW1sgJHtyaXN9ICE9IDAgJiYgJHtOT19GQUlMfSAhPSAxIF1dOyB0aGVuCiAgICAgICAgZWNo bzsKICAgICAgICBlZXJyb3IgIkZhaWxlZCBSdW5uaW5nICQxICEiOwogICAgICAgIGVlcnJvcjsK ICAgICAgICBlZXJyb3IgIkluY2x1ZGUgaW4geW91ciBidWdyZXBvcnQgdGhlIGNvbnRlbnRzIG9m OiI7CiAgICAgICAgZWVycm9yOwogICAgICAgIGVlcnJvciAiICAke1NUREVSUl9UQVJHRVQlLyp9 LyQxLSR7U1RERVJSX1RBUkdFVCMjKi99IjsKICAgICAgICBlY2hvOwogICAgICAgIGRpZSAiRmFp bGVkIFJ1bm5pbmcgJDEgISI7CiAgICBmaQp9CmJpbmRub3ctZmxhZ3MgKCkgCnsgCiAgICBld2Fy biAiUUE6IHN0b3AgdXNpbmcgdGhlIGJpbmRub3ctZmxhZ3MgZnVuY3Rpb24gLi4uIHNpbXBseSBk cm9wIGl0IGZyb20geW91ciBlYnVpbGQiCn0KYnVpbHRfd2l0aF91c2UgKCkgCnsgCiAgICBsb2Nh bCBoaWRkZW49Im5vIjsKICAgIGlmIFtbICQxID09ICItLWhpZGRlbiIgXV07IHRoZW4KICAgICAg ICBoaWRkZW49InllcyI7CiAgICAgICAgc2hpZnQ7CiAgICBmaTsKICAgIGxvY2FsIG1pc3Npbmdf YWN0aW9uPSJkaWUiOwogICAgaWYgW1sgJDEgPT0gIi0tbWlzc2luZyIgXV07IHRoZW4KICAgICAg ICBtaXNzaW5nX2FjdGlvbj0kMjsKICAgICAgICBzaGlmdDsKICAgICAgICBzaGlmdDsKICAgICAg ICBjYXNlICR7bWlzc2luZ19hY3Rpb259IGluIAogICAgICAgICAgICB0cnVlIHwgZmFsc2UgfCBk aWUpCgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgZGllICJ1 bmtub3duIGFjdGlvbiAnJHttaXNzaW5nX2FjdGlvbn0nIgogICAgICAgICAgICA7OwogICAgICAg IGVzYWM7CiAgICBmaTsKICAgIGxvY2FsIG9wdD0kMTsKICAgIFtbICR7b3B0OjA6MX0gPSAiLSIg XV0gJiYgc2hpZnQgfHwgb3B0PSItYSI7CiAgICBsb2NhbCBQS0c9JChiZXN0X3ZlcnNpb24gJDEp OwogICAgW1sgLXogJHtQS0d9IF1dICYmIGRpZSAiVW5hYmxlIHRvIHJlc29sdmUgJDEgdG8gYW4g aW5zdGFsbGVkIHBhY2thZ2UiOwogICAgc2hpZnQ7CiAgICBsb2NhbCBVU0VGSUxFPSR7Uk9PVH0v dmFyL2RiL3BrZy8ke1BLR30vVVNFOwogICAgbG9jYWwgSVVTRUZJTEU9JHtST09UfS92YXIvZGIv cGtnLyR7UEtHfS9JVVNFOwogICAgaWYgW1sgISAtZSAke1VTRUZJTEV9IF1dIHx8IFtbICEgLWUg JHtJVVNFRklMRX0gJiYgJHtoaWRkZW59ID09ICJubyIgXV07IHRoZW4KICAgICAgICBjYXNlICR7 bWlzc2luZ19hY3Rpb259IGluIAogICAgICAgICAgICB0cnVlKQogICAgICAgICAgICAgICAgcmV0 dXJuIDAKICAgICAgICAgICAgOzsKICAgICAgICAgICAgZmFsc2UpCiAgICAgICAgICAgICAgICBy ZXR1cm4gMQogICAgICAgICAgICA7OwogICAgICAgICAgICBkaWUpCiAgICAgICAgICAgICAgICBk aWUgIlVuYWJsZSB0byBkZXRlcm1pbmUgd2hhdCBVU0UgZmxhZ3MgJFBLRyB3YXMgYnVpbHQgd2l0 aCIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZmk7CiAgICBpZiBbWyAke2hpZGRl bn0gPT0gIm5vIiBdXTsgdGhlbgogICAgICAgIGxvY2FsIElVU0VfQlVJTFQ9KCQoPCIke0lVU0VG SUxFfSIpKTsKICAgICAgICBsb2NhbCBleHBhbmQ7CiAgICAgICAgZm9yIGV4cGFuZCBpbiAkKGVj aG8gJHtVU0VfRVhQQU5EfSB8IHRyICdbOnVwcGVyOl0nICdbOmxvd2VyOl0nKTsKICAgICAgICBk bwogICAgICAgICAgICBpZiBbWyAkMSA9PSAke2V4cGFuZH1fKiBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZXhwYW5kPSIiOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwog ICAgICAgIGRvbmU7CiAgICAgICAgaWYgW1sgLW4gJHtleHBhbmR9IF1dOyB0aGVuCiAgICAgICAg ICAgIGlmICEgaGFzICQxICR7SVVTRV9CVUlMVFtAXSNbLStdfTsgdGhlbgogICAgICAgICAgICAg ICAgY2FzZSAke21pc3NpbmdfYWN0aW9ufSBpbiAKICAgICAgICAgICAgICAgICAgICB0cnVlKQog ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAx CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBkaWUpCiAgICAgICAg ICAgICAgICAgICAgICAgIGRpZSAiJFBLRyBkb2VzIG5vdCBhY3R1YWxseSBzdXBwb3J0IHRoZSAk MSBVU0UgZmxhZyEiCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBsb2NhbCBVU0VfQlVJTFQ9 JCg8JHtVU0VGSUxFfSk7CiAgICB3aGlsZSBbWyAkIyAtZ3QgMCBdXTsgZG8KICAgICAgICBpZiBb WyAke29wdH0gPSAiLW8iIF1dOyB0aGVuCiAgICAgICAgICAgIGhhcyAkMSAke1VTRV9CVUlMVH0g JiYgcmV0dXJuIDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICBoYXMgJDEgJHtVU0VfQlVJTFR9 IHx8IHJldHVybiAxOwogICAgICAgIGZpOwogICAgICAgIHNoaWZ0OwogICAgZG9uZTsKICAgIFtb ICR7b3B0fSA9ICItYSIgXV0KfQpjZHJvbV9nZXRfY2RzICgpIAp7IAogICAgbG9jYWwgY2RjbnQ9 MDsKICAgIGxvY2FsIGY9OwogICAgZm9yIGYgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgKCgrK2Nk Y250KSk7CiAgICAgICAgZXhwb3J0IENEUk9NX0NIRUNLXyR7Y2RjbnR9PSIkZiI7CiAgICBkb25l OwogICAgZXhwb3J0IENEUk9NX1RPVEFMX0NEUz0ke2NkY250fTsKICAgIGV4cG9ydCBDRFJPTV9D VVJSRU5UX0NEPTE7CiAgICBpZiBbWyAtbiAke0NEX1JPT1R9JHtDRF9ST09UXzF9IF1dOyB0aGVu CiAgICAgICAgbG9jYWwgdmFyPTsKICAgICAgICBjZGNudD0wOwogICAgICAgIHdoaWxlIFtbICR7 Y2RjbnR9IC1sdCAke0NEUk9NX1RPVEFMX0NEU30gXV07IGRvCiAgICAgICAgICAgICgoKytjZGNu dCkpOwogICAgICAgICAgICB2YXI9IkNEX1JPT1RfJHtjZGNudH0iOwogICAgICAgICAgICBbWyAt eiAkeyF2YXJ9IF1dICYmIHZhcj0iQ0RfUk9PVCI7CiAgICAgICAgICAgIGlmIFtbIC16ICR7IXZh cn0gXV07IHRoZW4KICAgICAgICAgICAgICAgIGVlcnJvciAiWW91IG11c3QgZWl0aGVyIHVzZSBq dXN0IHRoZSBDRF9ST09UIjsKICAgICAgICAgICAgICAgIGVlcnJvciAib3Igc3BlY2lmeSBBTEwg dGhlIENEX1JPT1RfWCB2YXJpYWJsZXMuIjsKICAgICAgICAgICAgICAgIGVlcnJvciAiSW4gdGhp cyBjYXNlLCB5b3Ugd2lsbCBuZWVkICR7Q0RST01fVE9UQUxfQ0RTfSBDRF9ST09UX1ggdmFyaWFi bGVzLiI7CiAgICAgICAgICAgICAgICBkaWUgImNvdWxkIG5vdCBsb2NhdGUgQ0RfUk9PVF8ke2Nk Y250fSI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgZXhwb3J0IENEUk9N X1JPT1Q9JHtDRF9ST09UXzE6LSR7Q0RfUk9PVH19OwogICAgICAgIGVpbmZvICJGb3VuZCBDRCAj JHtDRFJPTV9DVVJSRU5UX0NEfSByb290IGF0ICR7Q0RST01fUk9PVH0iOwogICAgICAgIGV4cG9y dCBDRFJPTV9TRVQ9LTE7CiAgICAgICAgZm9yIGYgaW4gJHtDRFJPTV9DSEVDS18xLy86LyB9Owog ICAgICAgIGRvCiAgICAgICAgICAgICgoKytDRFJPTV9TRVQpKTsKICAgICAgICAgICAgW1sgLWUg JHtDRF9ST09UfS8ke2Z9IF1dICYmIGJyZWFrOwogICAgICAgIGRvbmU7CiAgICAgICAgZXhwb3J0 IENEUk9NX01BVENIPSR7Zn07CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBpZiBbWyAke0NE Uk9NX1RPVEFMX0NEU30gLWVxIDEgXV07IHRoZW4KICAgICAgICBlaW5mbyAiVGhpcyBlYnVpbGQg d2lsbCBuZWVkIHRoZSAke0NEUk9NX05BTUU6LWNkcm9tIGZvciAke1BOfX0iOwogICAgICAgIGVj aG87CiAgICAgICAgZWluZm8gIklmIHlvdSBkbyBub3QgaGF2ZSB0aGUgQ0QsIGJ1dCBoYXZlIHRo ZSBkYXRhIGZpbGVzIjsKICAgICAgICBlaW5mbyAibW91bnRlZCBzb21ld2hlcmUgb24geW91ciBm aWxlc3lzdGVtLCBqdXN0IGV4cG9ydCI7CiAgICAgICAgZWluZm8gInRoZSB2YXJpYWJsZSBDRF9S T09UIHNvIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSI7CiAgICAgICAgZWluZm8gImRpcmVjdG9yeSBj b250YWluaW5nIHRoZSBmaWxlcy4iOwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIkZvciBl eGFtcGxlOiI7CiAgICAgICAgZWluZm8gImV4cG9ydCBDRF9ST09UPS9tbnQvY2Ryb20iOwogICAg ICAgIGVjaG87CiAgICBlbHNlCiAgICAgICAgaWYgW1sgLW4gJHtDRFJPTV9OQU1FX1NFVH0gXV07 IHRoZW4KICAgICAgICAgICAgY2RjbnQ9MDsKICAgICAgICAgICAgd2hpbGUgW1sgJHtjZGNudH0g LWx0ICR7Q0RST01fVE9UQUxfQ0RTfSBdXTsgZG8KICAgICAgICAgICAgICAgICgoKytjZGNudCkp OwogICAgICAgICAgICAgICAgZXhwb3J0IENEUk9NX05BTUVfJHtjZGNudH09IiR7Q0RST01fTkFN RV9TRVRbJCgoJHtjZGNudH0tMSkpXX0iOwogICAgICAgICAgICBkb25lOwogICAgICAgIGZpOwog ICAgICAgIGVpbmZvICJUaGlzIHBhY2thZ2Ugd2lsbCBuZWVkIGFjY2VzcyB0byAke0NEUk9NX1RP VEFMX0NEU30gY2RzLiI7CiAgICAgICAgY2RjbnQ9MDsKICAgICAgICB3aGlsZSBbWyAke2NkY250 fSAtbHQgJHtDRFJPTV9UT1RBTF9DRFN9IF1dOyBkbwogICAgICAgICAgICAoKCsrY2RjbnQpKTsK ICAgICAgICAgICAgdmFyPSJDRFJPTV9OQU1FXyR7Y2RjbnR9IjsKICAgICAgICAgICAgW1sgISAt eiAkeyF2YXJ9IF1dICYmIGVpbmZvICIgQ0QgJHtjZGNudH06ICR7IXZhcn0iOwogICAgICAgIGRv bmU7CiAgICAgICAgZWNobzsKICAgICAgICBlaW5mbyAiSWYgeW91IGRvIG5vdCBoYXZlIHRoZSBD RHMsIGJ1dCBoYXZlIHRoZSBkYXRhIGZpbGVzIjsKICAgICAgICBlaW5mbyAibW91bnRlZCBzb21l d2hlcmUgb24geW91ciBmaWxlc3lzdGVtLCBqdXN0IGV4cG9ydCI7CiAgICAgICAgZWluZm8gInRo ZSBmb2xsb3dpbmcgdmFyaWFibGVzIHNvIHRoZXkgcG9pbnQgdG8gdGhlIHJpZ2h0IHBsYWNlOiI7 CiAgICAgICAgZWluZm9uICIiOwogICAgICAgIGNkY250PTA7CiAgICAgICAgd2hpbGUgW1sgJHtj ZGNudH0gLWx0ICR7Q0RST01fVE9UQUxfQ0RTfSBdXTsgZG8KICAgICAgICAgICAgKCgrK2NkY250 KSk7CiAgICAgICAgICAgIGVjaG8gLW4gIiBDRF9ST09UXyR7Y2RjbnR9IjsKICAgICAgICBkb25l OwogICAgICAgIGVjaG87CiAgICAgICAgZWluZm8gIk9yLCBpZiB5b3UgaGF2ZSBhbGwgdGhlIGZp bGVzIGluIHRoZSBzYW1lIHBsYWNlLCBvciI7CiAgICAgICAgZWluZm8gInlvdSBvbmx5IGhhdmUg b25lIGNkcm9tLCB5b3UgY2FuIGV4cG9ydCBDRF9ST09UIjsKICAgICAgICBlaW5mbyAiYW5kIHRo YXQgcGxhY2Ugd2lsbCBiZSB1c2VkIGFzIHRoZSBzYW1lIGRhdGEgc291cmNlIjsKICAgICAgICBl aW5mbyAiZm9yIGFsbCB0aGUgQ0RzLiI7CiAgICAgICAgZWNobzsKICAgICAgICBlaW5mbyAiRm9y IGV4YW1wbGU6IjsKICAgICAgICBlaW5mbyAiZXhwb3J0IENEX1JPT1RfMT0vbW50L2Nkcm9tIjsK ICAgICAgICBlY2hvOwogICAgZmk7CiAgICBleHBvcnQgQ0RST01fU0VUPSIiOwogICAgZXhwb3J0 IENEUk9NX0NVUlJFTlRfQ0Q9MDsKICAgIGNkcm9tX2xvYWRfbmV4dF9jZAp9CmNkcm9tX2xvYWRf bmV4dF9jZCAoKSAKeyAKICAgIGxvY2FsIHZhcjsKICAgICgoKytDRFJPTV9DVVJSRU5UX0NEKSk7 CiAgICB1bnNldCBDRFJPTV9ST09UOwogICAgdmFyPUNEX1JPT1RfJHtDRFJPTV9DVVJSRU5UX0NE fTsKICAgIFtbIC16ICR7IXZhcn0gXV0gJiYgdmFyPSJDRF9ST09UIjsKICAgIGlmIFtbIC16ICR7 IXZhcn0gXV07IHRoZW4KICAgICAgICB2YXI9IkNEUk9NX0NIRUNLXyR7Q0RST01fQ1VSUkVOVF9D RH0iOwogICAgICAgIF9jZHJvbV9sb2NhdGVfZmlsZV9vbl9jZCAkeyF2YXJ9OwogICAgZWxzZQog ICAgICAgIGV4cG9ydCBDRFJPTV9ST09UPSR7IXZhcn07CiAgICBmaTsKICAgIGVpbmZvICJGb3Vu ZCBDRCAjJHtDRFJPTV9DVVJSRU5UX0NEfSByb290IGF0ICR7Q0RST01fUk9PVH0iCn0KY2hlY2tf ZXh0cmFfY29uZmlnICgpIAp7IAogICAgbG9jYWwgY29uZmlnIG5lZ2F0ZSBkaWUgZXJyb3IgcmV3 b3JrbW9kdWxlbmFtZXM7CiAgICBsb2NhbCBzb2Z0X2Vycm9yc19jb3VudD0wIGhhcmRfZXJyb3Jz X2NvdW50PTAgY29uZmlnX3JlcXVpcmVkPTA7CiAgICBnZXRfdmVyc2lvbjsKICAgIGZvciBjb25m aWcgaW4gJHtDT05GSUdfQ0hFQ0t9OwogICAgZG8KICAgICAgICBpZiBbWyAiJHtjb25maWc6MDox fSIgIT0gIn4iIF1dOyB0aGVuCiAgICAgICAgICAgIGNvbmZpZ19yZXF1aXJlZD0xOwogICAgICAg ICAgICBicmVhazsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBpZiBbWyAke2NvbmZpZ19yZXF1 aXJlZH0gPT0gMCBdXTsgdGhlbgogICAgICAgIGlmICEgbGludXhfY29uZmlnX2V4aXN0czsgdGhl bgogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICByZXF1 aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAgZmk7CiAgICBlaW5mbyAiQ2hlY2tpbmcgZm9yIHN1 aXRhYmxlIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuLi4iOwogICAgZm9yIGNvbmZpZyBp biAke0NPTkZJR19DSEVDS307CiAgICBkbwogICAgICAgIGRpZT0xOwogICAgICAgIGVycm9yPTA7 CiAgICAgICAgbmVnYXRlPTA7CiAgICAgICAgcmV3b3JrbW9kdWxlbmFtZXM9MDsKICAgICAgICBp ZiBbWyAke2NvbmZpZzowOjF9ID09ICJ+IiBdXTsgdGhlbgogICAgICAgICAgICBkaWU9MDsKICAg ICAgICAgICAgY29uZmlnPSR7Y29uZmlnOjF9OwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYg W1sgJHtjb25maWc6MDoxfSA9PSAiQCIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGRpZT0wOwog ICAgICAgICAgICAgICAgcmV3b3JrbW9kdWxlbmFtZXM9MTsKICAgICAgICAgICAgICAgIGNvbmZp Zz0ke2NvbmZpZzoxfTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sg JHtjb25maWc6MDoxfSA9PSAiISIgXV07IHRoZW4KICAgICAgICAgICAgbmVnYXRlPTE7CiAgICAg ICAgICAgIGNvbmZpZz0ke2NvbmZpZzoxfTsKICAgICAgICBmaTsKICAgICAgICBpZiBbWyAke25l Z2F0ZX0gPT0gMSBdXTsgdGhlbgogICAgICAgICAgICBsaW51eF9jaGtjb25maWdfcHJlc2VudCAk e2NvbmZpZ30gJiYgZXJyb3I9MjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbICR7cmV3 b3JrbW9kdWxlbmFtZXN9ID09IDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIGxvY2FsIHRlbXBf Y29uZmlnPSIke2NvbmZpZy8vKjp9IiBpIG47CiAgICAgICAgICAgICAgICBjb25maWc9IiR7Y29u ZmlnLy86Kn0iOwogICAgICAgICAgICAgICAgaWYgbGludXhfY2hrY29uZmlnX3ByZXNlbnQgJHtj b25maWd9OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gJHtNT0RVTEVfTkFNRVN9 OwogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIG49IiR7aS8v JHt0ZW1wX2NvbmZpZ319IjsKICAgICAgICAgICAgICAgICAgICAgICAgW1sgLXogJHtuLy9cKCp9 IF1dICYmIE1PRFVMRV9JR05PUkU9IiR7TU9EVUxFX0lHTk9SRX0gJHt0ZW1wX2NvbmZpZ30iOwog ICAgICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICAgICAgZXJyb3I9MjsKICAg ICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBsaW51eF9j aGtjb25maWdfcHJlc2VudCAke2NvbmZpZ30gfHwgZXJyb3I9MTsKICAgICAgICAgICAgZmk7CiAg ICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtlcnJvcn0gPiAwIF1dOyB0aGVuCiAgICAgICAgICAg IGxvY2FsIHJlcG9ydF9mdW5jPSJlZXJyb3IiIGxvY2FsX2Vycm9yOwogICAgICAgICAgICBsb2Nh bF9lcnJvcj0iRVJST1JfJHtjb25maWd9IjsKICAgICAgICAgICAgbG9jYWxfZXJyb3I9IiR7IWxv Y2FsX2Vycm9yfSI7CiAgICAgICAgICAgIGlmIFtbIC16ICIke2xvY2FsX2Vycm9yfSIgXV07IHRo ZW4KICAgICAgICAgICAgICAgIGxvY2FsX2Vycm9yPSIke2NvbmZpZ31fRVJST1IiOwogICAgICAg ICAgICAgICAgbG9jYWxfZXJyb3I9IiR7IWxvY2FsX2Vycm9yfSI7CiAgICAgICAgICAgIGZpOwog ICAgICAgICAgICBpZiBbWyAke2RpZX0gPT0gMCAmJiAteiAiJHtsb2NhbF9lcnJvcn0iIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICBsb2NhbF9lcnJvcj0iV0FSTklOR18ke2NvbmZpZ30iOwogICAg ICAgICAgICAgICAgbG9jYWxfZXJyb3I9IiR7IWxvY2FsX2Vycm9yfSI7CiAgICAgICAgICAgICAg ICBpZiBbWyAtbiAiJHtsb2NhbF9lcnJvcn0iIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAg cmVwb3J0X2Z1bmM9ImV3YXJuIjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsK ICAgICAgICAgICAgaWYgW1sgLXogIiR7bG9jYWxfZXJyb3J9IiBdXTsgdGhlbgogICAgICAgICAg ICAgICAgW1sgJHtlcnJvcn0gPT0gMSBdXSAmJiBsb2NhbF9lcnJvcj0iaXMgbm90IHNldCB3aGVu IGl0IHNob3VsZCBiZS4iIHx8IGxvY2FsX2Vycm9yPSJzaG91bGQgbm90IGJlIHNldC4gQnV0IGl0 IGlzLiI7CiAgICAgICAgICAgICAgICBsb2NhbF9lcnJvcj0iQ09ORklHXyR7Y29uZmlnfTpcdCAk e2xvY2FsX2Vycm9yfSI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiBbWyAke2RpZX0g PT0gMCBdXTsgdGhlbgogICAgICAgICAgICAgICAgJHtyZXBvcnRfZnVuY30gIiAgJHtsb2NhbF9l cnJvcn0iOwogICAgICAgICAgICAgICAgc29mdF9lcnJvcnNfY291bnQ9JFtzb2Z0X2Vycm9yc19j b3VudCArIDFdOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAke3JlcG9ydF9mdW5j fSAiICAke2xvY2FsX2Vycm9yfSI7CiAgICAgICAgICAgICAgICBoYXJkX2Vycm9yc19jb3VudD0k W2hhcmRfZXJyb3JzX2NvdW50ICsgMV07CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAg ZG9uZTsKICAgIGlmIFtbICR7aGFyZF9lcnJvcnNfY291bnR9ID4gMCBdXTsgdGhlbgogICAgICAg IGVlcnJvciAiUGxlYXNlIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGVzZSBvcHRpb25zIGFyZSBzZXQg Y29ycmVjdGx5LiI7CiAgICAgICAgZWVycm9yICJGYWlsdXJlIHRvIGRvIHNvIG1heSBjYXVzZSB1 bmV4cGVjdGVkIHByb2JsZW1zLiI7CiAgICAgICAgZWVycm9yICJPbmNlIHlvdSBoYXZlIHNhdGlz ZmllZCB0aGVzZSBvcHRpb25zLCBwbGVhc2UgdHJ5IG1lcmdpbmciOwogICAgICAgIGVlcnJvciAi dGhpcyBwYWNrYWdlIGFnYWluLiI7CiAgICAgICAgZGllICJJbmNvcnJlY3Qga2VybmVsIGNvbmZp Z3VyYXRpb24gb3B0aW9ucyI7CiAgICBlbHNlCiAgICAgICAgaWYgW1sgJHtzb2Z0X2Vycm9yc19j b3VudH0gPiAwIF1dOyB0aGVuCiAgICAgICAgICAgIGV3YXJuICJQbGVhc2UgY2hlY2sgdG8gbWFr ZSBzdXJlIHRoZXNlIG9wdGlvbnMgYXJlIHNldCBjb3JyZWN0bHkuIjsKICAgICAgICAgICAgZXdh cm4gIkZhaWx1cmUgdG8gZG8gc28gbWF5IGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMuIjsKICAg ICAgICBlbHNlCiAgICAgICAgICAgIGVlbmQgMDsKICAgICAgICBmaTsKICAgIGZpCn0KY2hlY2tf a2VybmVsX2J1aWx0ICgpIAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5lbDsKICAgIGdl dF92ZXJzaW9uOwogICAgaWYgWyAhIC1mICIke0tWX09VVF9ESVJ9L2luY2x1ZGUvbGludXgvdmVy c2lvbi5oIiBdOyB0aGVuCiAgICAgICAgZWVycm9yICJUaGVzZSBzb3VyY2VzIGhhdmUgbm90IHll dCBiZWVuIHByZXBhcmVkLiI7CiAgICAgICAgZWVycm9yICJXZSBjYW5ub3QgYnVpbGQgYWdhaW5z dCBhbiB1bnByZXBhcmVkIHRyZWUuIjsKICAgICAgICBlZXJyb3IgIlRvIHJlc29sdmUgdGhpcywg cGxlYXNlIHR5cGUgdGhlIGZvbGxvd2luZzoiOwogICAgICAgIGVlcnJvcjsKICAgICAgICBlZXJy b3IgIiMgY2QgJHtLVl9ESVJ9IjsKICAgICAgICBlZXJyb3IgIiMgbWFrZSBvbGRjb25maWciOwog ICAgICAgIGVlcnJvciAiIyBtYWtlIG1vZHVsZXNfcHJlcGFyZSI7CiAgICAgICAgZWVycm9yOwog ICAgICAgIGVlcnJvciAiVGhlbiBwbGVhc2UgdHJ5IG1lcmdpbmcgdGhpcyBtb2R1bGUgYWdhaW4u IjsKICAgICAgICBkaWUgIktlcm5lbCBzb3VyY2VzIG5lZWQgY29tcGlsaW5nIGZpcnN0IjsKICAg IGZpCn0KY2hlY2tfbGljZW5zZSAoKSAKeyAKICAgIGxvY2FsIGxpYz0kMTsKICAgIGlmIFsgLXog IiR7bGljfSIgXTsgdGhlbgogICAgICAgIGxpYz0iJHtQT1JURElSfS9saWNlbnNlcy8ke0xJQ0VO U0V9IjsKICAgIGVsc2UKICAgICAgICBpZiBbIC1lICIke1BPUlRESVJ9L2xpY2Vuc2VzLyR7bGlj fSIgXTsgdGhlbgogICAgICAgICAgICBsaWM9IiR7UE9SVERJUn0vbGljZW5zZXMvJHtsaWN9IjsK ICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFsgLWUgIiR7UFdEfS8ke2xpY30iIF07IHRoZW4K ICAgICAgICAgICAgICAgIGxpYz0iJHtQV0R9LyR7bGljfSI7CiAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgIGlmIFsgLWUgIiR7bGljfSIgXTsgdGhlbgogICAgICAgICAgICAgICAgICAg IGxpYz0iJHtsaWN9IjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAgICAg ICBmaTsKICAgIGZpOwogICAgWyAhIC1mICIke2xpY30iIF0gJiYgZGllICJDb3VsZCBub3QgZmlu ZCByZXF1ZXN0ZWQgbGljZW5zZSAke2xpY30iOwogICAgbG9jYWwgbD0iYGJhc2VuYW1lICR7bGlj fWAiOwogICAgbG9jYWwgc2hvcHRzPSQtOwogICAgbG9jYWwgYWxpYzsKICAgIHNldCAtbyBub2ds b2I7CiAgICBmb3IgYWxpYyBpbiAke0FDQ0VQVF9MSUNFTlNFfTsKICAgIGRvCiAgICAgICAgaWYg W1sgJHthbGljfSA9PSAke2x9IF1dOyB0aGVuCiAgICAgICAgICAgIHNldCArbyBub2dsb2I7CiAg ICAgICAgICAgIHNldCAtJHtzaG9wdHN9OwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBm aTsKICAgIGRvbmU7CiAgICBzZXQgK28gbm9nbG9iOwogICAgc2V0IC0kc2hvcHRzOwogICAgbG9j YWwgbGljbXNnPSQoZW1rdGVtcCk7CiAgICBjYXQgPiAke2xpY21zZ30gIDw8LUVPRgoqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqClRoZSBm b2xsb3dpbmcgbGljZW5zZSBvdXRsaW5lcyB0aGUgdGVybXMgb2YgdXNlIG9mIHRoaXMKcGFja2Fn ZS4gIFlvdSBNVVNUIGFjY2VwdCB0aGlzIGxpY2Vuc2UgZm9yIGluc3RhbGxhdGlvbiB0bwpjb250 aW51ZS4gIFdoZW4geW91IGFyZSBkb25lIHZpZXdpbmcsIGhpdCAncScuCUlmIHlvdQpDVFJMK0Mg b3V0IG9mIHRoaXMsIHRoZSBpbnN0YWxsIHdpbGwgbm90IHJ1biEKKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKRU9GCgogICAgY2F0ICR7 bGljfSA+PiAke2xpY21zZ307CiAgICAke1BBR0VSOi1sZXNzfSAke2xpY21zZ30gfHwgZGllICJD b3VsZCBub3QgZXhlY3V0ZSBwYWdlciAoJHtQQUdFUn0pIHRvIGFjY2VwdCAke2xpY30iOwogICAg ZWluZm9uICJEbyB5b3UgYWNjZXB0IHRoZSB0ZXJtcyBvZiB0aGlzIGxpY2Vuc2UgKCR7bH0pPyBb eWVzL25vXSAiOwogICAgcmVhZCBhbGljOwogICAgY2FzZSAke2FsaWN9IGluIAogICAgICAgIHll cyB8IFllcyB8IHkgfCBZKQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIDs7CiAgICAgICAg KikKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWNobzsK ICAgICAgICAgICAgZWVycm9yICJZb3UgTVVTVCBhY2NlcHQgdGhlIGxpY2Vuc2UgdG8gY29udGlu dWUhICBFeGl0aW5nISI7CiAgICAgICAgICAgIGRpZSAiRmFpbGVkIHRvIGFjY2VwdCBsaWNlbnNl IgogICAgICAgIDs7CiAgICBlc2FjCn0KY2hlY2tfbW9kdWxlc19zdXBwb3J0ZWQgKCkgCnsgCiAg ICByZXF1aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAgZ2V0X3ZlcnNpb247CiAgICBpZiAhIGxp bnV4X2Noa2NvbmZpZ19idWlsdGluICJNT0RVTEVTIjsgdGhlbgogICAgICAgIGVlcnJvciAiVGhl c2Ugc291cmNlcyBkbyBub3Qgc3VwcG9ydCBsb2FkaW5nIGV4dGVybmFsIG1vZHVsZXMuIjsKICAg ICAgICBlZXJyb3IgInRvIGJlIGFibGUgdG8gdXNlIHRoaXMgbW9kdWxlIHBsZWFzZSBlbmFibGUg XCJMb2FkYWJsZSBtb2R1bGVzIHN1cHBvcnRcIiI7CiAgICAgICAgZWVycm9yICJpbiB5b3VyIGtl cm5lbCwgcmVjb21waWxlIGFuZCB0aGVuIHRyeSBtZXJnaW5nIHRoaXMgbW9kdWxlIGFnYWluLiI7 CiAgICAgICAgZGllICJObyBzdXBwb3J0IGZvciBleHRlcm5hbCBtb2R1bGVzIGluICR7S1ZfRlVM TH0gY29uZmlnIjsKICAgIGZpCn0KY2hlY2tfdmVybWFnaWMgKCkgCnsgCiAgICBkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2FsIGN1cnJfZ2NjX3Zlcj0kKGdjYyAt ZHVtcHZlcnNpb24pOwogICAgbG9jYWwgdG1wZmlsZSBvbGRfY2hvc3Qgb2xkX2djY192ZXIgcmVz dWx0PTA7CiAgICB0bXBmaWxlPWBmaW5kICR7S1ZfRElSfS8gLWluYW1lICIqLm8uY21kIiAtZXhl YyBncmVwIHVzci9saWIvZ2NjIHt9IFw7IC1xdWl0YDsKICAgIHRtcGZpbGU9JHt0bXBmaWxlLy8q dXNyL2xpYn07CiAgICB0bXBmaWxlPSR7dG1wZmlsZS8vXC9pbmNsdWRlKn07CiAgICBvbGRfY2hv c3Q9JHt0bXBmaWxlLy8qZ2NjXC99OwogICAgb2xkX2Nob3N0PSR7b2xkX2Nob3N0Ly9cLyp9Owog ICAgb2xkX2djY192ZXI9JHt0bXBmaWxlLy8qXC99OwogICAgaWYgW1sgLXogJHtvbGRfZ2NjX3Zl cn0gfHwgLXogJHtvbGRfY2hvc3R9IF1dOyB0aGVuCiAgICAgICAgZXdhcm4gIiI7CiAgICAgICAg ZXdhcm4gIlVuYWJsZSB0byBkZXRlY3Qgd2hhdCB2ZXJzaW9uIG9mIEdDQyB3YXMgdXNlZCB0byBj b21waWxlIjsKICAgICAgICBld2FybiAidGhlIGtlcm5lbC4gQnVpbGQgd2lsbCBjb250aW51ZSwg YnV0IHlvdSBtYXkgZXhwZXJpZW5jZSBwcm9ibGVtcy4iOwogICAgZWxzZQogICAgICAgIGlmIFtb ICR7Y3Vycl9nY2NfdmVyfSAhPSAke29sZF9nY2NfdmVyfSBdXTsgdGhlbgogICAgICAgICAgICBl d2FybiAiIjsKICAgICAgICAgICAgZXdhcm4gIlRoZSB2ZXJzaW9uIG9mIEdDQyB5b3UgYXJlIHVz aW5nICgke2N1cnJfZ2NjX3Zlcn0pIGRvZXMiOwogICAgICAgICAgICBld2FybiAibm90IG1hdGNo IHRoZSB2ZXJzaW9uIG9mIEdDQyB1c2VkIHRvIGNvbXBpbGUgdGhlIjsKICAgICAgICAgICAgZXdh cm4gImtlcm5lbCAoJHtvbGRfZ2NjX3Zlcn0pLiI7CiAgICAgICAgICAgIHJlc3VsdD0xOwogICAg ICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgJHtDSE9TVH0gIT0gJHtvbGRfY2hvc3R9IF1dOyB0 aGVuCiAgICAgICAgICAgICAgICBld2FybiAiIjsKICAgICAgICAgICAgICAgIGV3YXJuICJUaGUg Y3VycmVudCBDSE9TVCAoJHtDSE9TVH0pIGRvZXMgbm90IG1hdGNoIHRoZSBjaG9zdCI7CiAgICAg ICAgICAgICAgICBld2FybiAidXNlZCB3aGVuIGNvbXBpbGluZyB0aGUga2VybmVsICgke29sZF9j aG9zdH0pLiI7CiAgICAgICAgICAgICAgICByZXN1bHQ9MTsKICAgICAgICAgICAgZmk7CiAgICAg ICAgZmk7CiAgICBmaTsKICAgIGlmIFtbICR7cmVzdWx0fSAtZ3QgMCBdXTsgdGhlbgogICAgICAg IGV3YXJuICIiOwogICAgICAgIGV3YXJuICJCdWlsZCB3aWxsIG5vdCBjb250aW51ZSwgYmVjYXVz ZSB5b3Ugd2lsbCBleHBlcmllbmNlIHByb2JsZW1zLiI7CiAgICAgICAgZXdhcm4gIlRvIGZpeCB0 aGlzIGVpdGhlciBjaGFuZ2UgdGhlIHZlcnNpb24gb2YgR0NDIHlvdSB3aXNoIHRvIHVzZSI7CiAg ICAgICAgZXdhcm4gInRvIG1hdGNoIHRoZSBrZXJuZWwsIG9yIHJlY29tcGlsZSB0aGUga2VybmVs IGZpcnN0LiI7CiAgICAgICAgZGllICJHQ0MgVmVyc2lvbiBNaXNtYXRjaC4iOwogICAgZmkKfQpj aGVja196bGliaW5mbGF0ZSAoKSAKeyAKICAgIHJlcXVpcmVfY29uZmlndXJlZF9rZXJuZWw7CiAg ICBnZXRfdmVyc2lvbjsKICAgIGxvY2FsIElORkxBVEU7CiAgICBsb2NhbCBERUZMQVRFOwogICAg ZWluZm8gIkRldGVybWluaW5nIHRoZSB1c2FiaWxpdHkgb2YgWkxJQl9JTkZMQVRFIHN1cHBvcnQg aW4geW91ciBrZXJuZWwiOwogICAgZWJlZ2luICJjaGVja2luZyBaTElCX0lORkxBVEUiOwogICAg Z2V0ZmlsZXZhcl9pc2J1aWx0aW4gQ09ORklHX1pMSUJfSU5GTEFURSAke0tWX0RJUn0vLmNvbmZp ZzsKICAgIGVlbmQgJD87CiAgICBbICIkPyIgIT0gMCBdICYmIGRpZTsKICAgIGViZWdpbiAiY2hl Y2tpbmcgWkxJQl9ERUZMQVRFIjsKICAgIGdldGZpbGV2YXJfaXNidWlsdGluIENPTkZJR19aTElC X0RFRkxBVEUgJHtLVl9ESVJ9Ly5jb25maWc7CiAgICBlZW5kICQ/OwogICAgWyAiJD8iICE9IDAg XSAmJiBkaWU7CiAgICBsb2NhbCBMSU5FTk9fU1RBUlQ7CiAgICBsb2NhbCBMSU5FTk9fRU5EOwog ICAgbG9jYWwgU1lNQk9MUzsKICAgIGxvY2FsIHg7CiAgICBMSU5FTk9fRU5EPSIkKGdyZXAgLW4g J0NPTkZJR19aTElCX0lORkxBVEUgeScgJHtLVl9ESVJ9L2xpYi9Db25maWcuaW4gfCBjdXQgLWQg OiAtZiAxKSI7CiAgICBMSU5FTk9fU1RBUlQ9IiQoaGVhZCAtbiAkTElORU5PX0VORCAke0tWX0RJ Un0vbGliL0NvbmZpZy5pbiB8IGdyZXAgLW4gJ2lmIFxbJyB8IHRhaWwgLW4gMSB8IGN1dCAtZCA6 IC1mIDEpIjsKICAgICgoIExJTkVOT19BTU9VTlQgPSAkTElORU5PX0VORCAtICRMSU5FTk9fU1RB UlQgKSk7CiAgICAoKCBMSU5FTk9fRU5EID0gJExJTkVOT19FTkQgLSAxICkpOwogICAgU1lNQk9M Uz0iJChoZWFkIC1uICRMSU5FTk9fRU5EICR7S1ZfRElSfS9saWIvQ29uZmlnLmluIHwgdGFpbCAt biAkTElORU5PX0FNT1VOVCB8IHNlZCAtZSAncy9eLipcKENPTkZJR19bXlwiIF0qXCkuKi9cMS9n OycpIjsKICAgIGZvciB4IGluICRTWU1CT0xTOwogICAgZG8KICAgICAgICBpZiBbICIkeyF4fSIg PSAieSIgXTsgdGhlbgogICAgICAgICAgICBlaW5mbyAiJHt4fSBlbnN1cmVzIHpsaWIgaXMgbGlu a2VkIGludG8geW91ciBrZXJuZWwgLSBleGNlbGxlbnQiOwogICAgICAgICAgICByZXR1cm4gMDsK ICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBlZXJyb3I7CiAgICBlZXJyb3IgIlRoaXMga2VybmVs IG1vZHVsZSByZXF1aXJlcyBaTElCIGxpYnJhcnkgc3VwcG9ydC4iOwogICAgZWVycm9yICJZb3Ug aGF2ZSBlbmFibGVkIHpsaWIgc3VwcG9ydCBpbiB5b3VyIGtlcm5lbCwgYnV0IGhhdmVuJ3QgZW5h YmxlZCI7CiAgICBlZXJyb3IgImVuYWJsZWQgYW55IG9wdGlvbiB0aGF0IHdpbGwgZW5zdXJlIHRo YXQgemxpYiBpcyBsaW5rZWQgaW50byB5b3VyIjsKICAgIGVlcnJvciAia2VybmVsLiI7CiAgICBl ZXJyb3I7CiAgICBlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCB5b3UgZW5hYmxlIGF0IGxlYXN0 IG9uZSBvZiB0aGVzZSBvcHRpb25zOiI7CiAgICBlZXJyb3I7CiAgICBmb3IgeCBpbiAkU1lNQk9M UzsKICAgIGRvCiAgICAgICAgZWVycm9yICIgICogJHgiOwogICAgZG9uZTsKICAgIGVlcnJvcjsK ICAgIGVlcnJvciAiUGxlYXNlIHJlbWVtYmVyIHRvIHJlY29tcGlsZSBhbmQgaW5zdGFsbCB5b3Vy IGtlcm5lbCwgYW5kIHJlYm9vdCI7CiAgICBlZXJyb3IgImludG8geW91ciBuZXcga2VybmVsIGJl Zm9yZSBhdHRlbXB0aW5nIHRvIGxvYWQgdGhpcyBrZXJuZWwgbW9kdWxlLiI7CiAgICBkaWUgIktl cm5lbCBkb2Vzbid0IGluY2x1ZGUgemxpYiBzdXBwb3J0Igp9CmNvbnZlcnRfdG9fbSAoKSAKeyAK ICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgaWYgdXNlX207IHRo ZW4KICAgICAgICBbICEgLWYgIiR7MX0iIF0gJiYgZGllICJjb252ZXJ0X3RvX20oKSByZXF1aXJl cyBhIGZpbGVuYW1lIGFzIGFuIGFyZ3VtZW50IjsKICAgICAgICBlYmVnaW4gIkNvbnZlcnRpbmcg JHsxLyR7V09SS0RJUn1cLy99IHRvIHVzZSBNPSBpbnN0ZWFkIG9mIFNVQkRJUlM9IjsKICAgICAg ICBzZWQgLWkgJ3M6U1VCRElSUz06TT06ZycgJHsxfTsKICAgICAgICBlZW5kICQ/OwogICAgZmkK fQpjcmVhdGVfbWxfaW5jbHVkZXMgKCkgCnsgCiAgICBsb2NhbCBkZXN0PSQxOwogICAgc2hpZnQ7 CiAgICBsb2NhbCBiYXNlZGlycz0kKGNyZWF0ZV9tbF9pbmNsdWRlcy1saXN0ZGlycyAiJEAiKTsK ICAgIGNyZWF0ZV9tbF9pbmNsdWRlcy1tYWtlZGVzdGRpcnMgJHtkZXN0fSAke2Jhc2VkaXJzfTsK ICAgIGxvY2FsIGZpbGU7CiAgICBmb3IgZmlsZSBpbiAkKGNyZWF0ZV9tbF9pbmNsdWRlcy1hbGxm aWxlcyAke2Jhc2VkaXJzfSk7CiAgICBkbwogICAgICAgICggZWNobyAiLyogQXV0b2dlbmVyYXRl ZCBieSBjcmVhdGVfbWxfaW5jbHVkZXMoKSBpbiBtdWx0aWxpYi5lY2xhc3MgKi8iOwogICAgICAg IGxvY2FsIGRpcjsKICAgICAgICBmb3IgZGlyIGluICR7YmFzZWRpcnN9OwogICAgICAgIGRvCiAg ICAgICAgICAgIGlmIFtbIC1mICR7RH0vJHtkaXJ9LyR7ZmlsZX0gXV07IHRoZW4KICAgICAgICAg ICAgICAgIGVjaG8gIiI7CiAgICAgICAgICAgICAgICBsb2NhbCBzeW09JChjcmVhdGVfbWxfaW5j bHVkZXMtc3ltX2Zvcl9kaXIgJHtkaXJ9ICIkQCIpOwogICAgICAgICAgICAgICAgaWYgW1sgJHtz eW0vPX0gIT0gIiR7c3ltfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlY2hvICIjaWYg JHtzeW19IjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBpZiBbWyAk e3N5bTo6MX0gPT0gIiEiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiNp Zm5kZWYgJHtzeW06MX0iOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICAgICAgICAgZWNobyAiI2lmZGVmICR7c3ltfSI7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAg ICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGVjaG8gIiMgaW5jbHVkZSA8JChjcmVh dGVfbWxfaW5jbHVkZXMtYWJzb2x1dGUgJHtkaXJ9LyR7ZmlsZX0pPiI7CiAgICAgICAgICAgICAg ICBlY2hvICIjZW5kaWYgLyogJHtzeW19ICovIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9u ZSApID4gIiR7RH0vJHtkZXN0fS8ke2ZpbGV9IjsKICAgIGRvbmUKfQpjcmVhdGVfbWxfaW5jbHVk ZXMtYWJzb2x1dGUgKCkgCnsgCiAgICBsb2NhbCBkc3Q9IiQoY3JlYXRlX21sX2luY2x1ZGVzLXRp ZHlfcGF0aCAkMSkiOwogICAgZHN0PSgke2RzdC8vXC8vIH0pOwogICAgbG9jYWwgaTsKICAgIGZv ciAoKGk9MDsgaTwkeyNkc3RbKl19OyBpKyspKQogICAgZG8KICAgICAgICBbICIke2RzdFtpXX0i ID09ICJpbmNsdWRlIiBdICYmIGJyZWFrOwogICAgZG9uZTsKICAgIGxvY2FsIHN0cmlwX3VwdG89 JGk7CiAgICBmb3IgKChpPXN0cmlwX3VwdG8rMTsgaTwkeyNkc3RbKl19LTE7IGkrKykpCiAgICBk bwogICAgICAgIGVjaG8gLW4gJHtkc3RbaV19LzsKICAgIGRvbmU7CiAgICBlY2hvIC1uICR7ZHN0 W2ldfQp9CmNyZWF0ZV9tbF9pbmNsdWRlcy1hbGxmaWxlcyAoKSAKeyAKICAgIGxvY2FsIGJhc2Vk aXIgZmlsZTsKICAgIGZvciBiYXNlZGlyIGluICIkQCI7CiAgICBkbwogICAgICAgIGZvciBmaWxl IGluICQoZmluZCAiJHtEfSIvJHtiYXNlZGlyfSAtdHlwZSBmKTsKICAgICAgICBkbwogICAgICAg ICAgICBlY2hvICR7ZmlsZS8ke0R9XC8ke2Jhc2VkaXJ9XC8vfTsKICAgICAgICBkb25lOwogICAg ZG9uZSB8IHNvcnQgfCB1bmlxCn0KY3JlYXRlX21sX2luY2x1ZGVzLWxpc3RkaXJzICgpIAp7IAog ICAgbG9jYWwgZGlyczsKICAgIGxvY2FsIGRhdGE7CiAgICBmb3IgZGF0YSBpbiAiJEAiOwogICAg ZG8KICAgICAgICBkaXJzPSIke2RpcnN9ICR7ZGF0YS8qOi99IjsKICAgIGRvbmU7CiAgICBlY2hv ICR7ZGlyczoxfQp9CmNyZWF0ZV9tbF9pbmNsdWRlcy1tYWtlZGVzdGRpcnMgKCkgCnsgCiAgICBs b2NhbCBkZXN0PSQxOwogICAgc2hpZnQ7CiAgICBsb2NhbCBiYXNlZGlycz0kQDsKICAgIGRvZGly ICR7ZGVzdH07CiAgICBsb2NhbCBiYXNlZGlyOwogICAgZm9yIGJhc2VkaXIgaW4gJHtiYXNlZGly c307CiAgICBkbwogICAgICAgIGxvY2FsIGRpcjsKICAgICAgICBmb3IgZGlyIGluICQoZmluZCAk e0R9LyR7YmFzZWRpcn0gLXR5cGUgZCk7CiAgICAgICAgZG8KICAgICAgICAgICAgZG9kaXIgJHtk ZXN0fS8ke2Rpci8ke0R9XC8ke2Jhc2VkaXJ9L307CiAgICAgICAgZG9uZTsKICAgIGRvbmUKfQpj cmVhdGVfbWxfaW5jbHVkZXMtc3ltX2Zvcl9kaXIgKCkgCnsgCiAgICBsb2NhbCBkaXI9JDE7CiAg ICBzaGlmdDsKICAgIGxvY2FsIGRhdGE7CiAgICBmb3IgZGF0YSBpbiAiJEAiOwogICAgZG8KICAg ICAgICBpZiBbWyAke2RhdGF9ID09ICo6JHtkaXJ9IF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG8g JHtkYXRhLzoqL307CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGZpOwogICAgZG9uZTsK ICAgIGVjaG8gIlNob3VsZG4ndCBiZSBoZXJlIC0tIGNyZWF0ZV9tbF9pbmNsdWRlcy1zeW1fZm9y X2RpciAkMSAkQCI7CiAgICBleGl0IDEKfQpjcmVhdGVfbWxfaW5jbHVkZXMtdGlkeV9wYXRoICgp IAp7IAogICAgbG9jYWwgcmVtb3ZlZD0kMTsKICAgIGlmIFsgLW4gIiR7cmVtb3ZlZH0iIF07IHRo ZW4KICAgICAgICB3aGlsZSBbICIke3JlbW92ZWR9IiAhPSAiJHtyZW1vdmVkL1wvXC8vXC99IiBd OyBkbwogICAgICAgICAgICByZW1vdmVkPSR7cmVtb3ZlZC9cL1wvL1wvfTsKICAgICAgICBkb25l OwogICAgICAgIHdoaWxlIFsgIiR7cmVtb3ZlZH0iICE9ICIke3JlbW92ZWQvL1wvLlwvL1wvfSIg XTsgZG8KICAgICAgICAgICAgcmVtb3ZlZD0ke3JlbW92ZWQvL1wvLlwvL1wvfTsKICAgICAgICBk b25lOwogICAgICAgIFsgIiR7cmVtb3ZlZCMjKi99IiA9ICIuIiBdICYmIHJlbW92ZWQ9JHtyZW1v dmVkJS8qfTsKICAgICAgICB3aGlsZSBbICIke3JlbW92ZWR9IiAhPSAiJHtyZW1vdmVkLy9cLy4u XC99IiBdOyBkbwogICAgICAgICAgICBsb2NhbCBwMT0iJHtyZW1vdmVkJSVcLy4uXC8qfSI7CiAg ICAgICAgICAgIGxvY2FsIHAyPSIke3JlbW92ZWQjKlwvLi5cL30iOwogICAgICAgICAgICByZW1v dmVkPSIke3AxJVwvKn0vJHtwMn0iOwogICAgICAgIGRvbmU7CiAgICAgICAgWyAiJHtyZW1vdmVk IyMqL30iID0gIi4uIiBdICYmIHJlbW92ZWQ9JHtyZW1vdmVkJS8qLyp9OwogICAgICAgIFsgIiR7 cmVtb3ZlZCMjKi99IiA9ICIiIF0gJiYgcmVtb3ZlZD0ke3JlbW92ZWQlLyp9OwogICAgICAgIGVj aG8gJHtyZW1vdmVkfTsKICAgIGZpCn0KZGFyd2ludG9vbGl6ZSAoKSAKeyAKICAgIGV3YXJuICJk YXJ3aW50b29saXplKCkgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIGp1c3QgdXNlIGVsaWJ0b29saXpl KCkhIjsKICAgIGVsaWJ0b29saXplCn0KZGVsZXRlX2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgKCkg CnsgCiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIHJlcGxhY2VfYWxsX3Zl cnNpb25fc2VwYXJhdG9ycyAiIiAiJHsxfSI7CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2ds ZSBvZmYKfQpkZWxldGVfdmVyc2lvbl9zZXBhcmF0b3IgKCkgCnsgCiAgICBfX3ZlcnNpb25hdG9y X3Nob3B0X3RvZ2dsZSBvbjsKICAgIHJlcGxhY2VfdmVyc2lvbl9zZXBhcmF0b3IgIiR7MX0iICIi ICIkezJ9IjsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9CmRsb3Blbl9saWIg KCkgCnsgCiAgICBpZiBbWyAke0VMSUJDfSAhPSAqQlNEIF1dOyB0aGVuCiAgICAgICAgZWNobyAi LWxkbCI7CiAgICBmaQp9CmRvaWNvbiAoKSAKeyAKICAgICggbG9jYWwgaSBqIHJldDsKICAgIGlu c2ludG8gL3Vzci9zaGFyZS9waXhtYXBzOwogICAgZm9yIGkgaW4gIiRAIjsKICAgIGRvCiAgICAg ICAgaWYgW1sgLWYgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICBkb2lucyAiJHtpfSI7CiAgICAg ICAgICAgICgocmV0Kz0kPykpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLWQgJHtp fSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm9yIGogaW4gIiR7aX0iLyoucG5nOwogICAgICAg ICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBkb2lucyAiJHtqfSI7CiAgICAgICAgICAg ICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAgICAgICAgICBkb25lOwogICAgICAgICAgICBl bHNlCiAgICAgICAgICAgICAgICAoKCsrcmV0KSk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZp OwogICAgZG9uZTsKICAgIGV4aXQgJHtyZXR9ICkKfQpkb21lbnUgKCkgCnsgCiAgICAoIGxvY2Fs IGkgaiByZXQ9MDsKICAgIGluc2ludG8gL3Vzci9zaGFyZS9hcHBsaWNhdGlvbnM7CiAgICBmb3Ig aSBpbiAiJEAiOwogICAgZG8KICAgICAgICBpZiBbWyAtZiAke2l9IF1dOyB0aGVuCiAgICAgICAg ICAgIGRvaW5zICIke2l9IjsKICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBpZiBbWyAtZCAke2l9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBmb3IgaiBp biAiJHtpfSIvKi5kZXNrdG9wOwogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAg ICBkb2lucyAiJHtqfSI7CiAgICAgICAgICAgICAgICAgICAgKChyZXQrPSQ/KSk7CiAgICAgICAg ICAgICAgICBkb25lOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAoKCsrcmV0KSk7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGV4aXQgJHtyZXR9ICkK fQplYWNsb2NhbCAoKSAKeyAKICAgIGxvY2FsIGFjbG9jYWxfb3B0czsKICAgIGxvY2FsIGFtZmxh Z3NfZmlsZTsKICAgIGZvciBhbWZsYWdzX2ZpbGUgaW4gR05VbWFrZWZpbGUuYW0gTWFrZWZpbGUu YW0gR05VbWFrZWZpbGUuaW4gTWFrZWZpbGUuaW47CiAgICBkbwogICAgICAgIFtbIC1lICR7YW1m bGFnc19maWxlfSBdXSB8fCBjb250aW51ZTsKICAgICAgICBhY2xvY2FsX29wdHM9JChzZWQgLW4g Jy9eQUNMT0NBTF9BTUZMQUdTW1s6c3BhY2U6XV0qPS9zOltePV0qPTo6cCcgJHthbWZsYWdzX2Zp bGV9KTsKICAgICAgICBldmFsIGFjbG9jYWxfb3B0cz1cIiR7YWNsb2NhbF9vcHRzfVwiOwogICAg ICAgIGJyZWFrOwogICAgZG9uZTsKICAgIGlmIFtbIC1uICR7QVRfTTRESVJ9IF1dOyB0aGVuCiAg ICAgICAgZm9yIHggaW4gJHtBVF9NNERJUn07CiAgICAgICAgZG8KICAgICAgICAgICAgY2FzZSAi JHt4fSIgaW4gCiAgICAgICAgICAgICAgICAiLUkiKQoKICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIFtbICEgLWQgJHt4fSBdXSAmJiBld2Fy biAiZWFjbG9jYWw6ICcke3h9JyBkb2VzIG5vdCBleGlzdCI7CiAgICAgICAgICAgICAgICAgICAg YWNsb2NhbF9vcHRzPSIke2FjbG9jYWxfb3B0c30gLUkgJHt4fSIKICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgW1sgISAtZiBhY2xv Y2FsLm00IHx8IC1uICQoZ3JlcCAtZSAnZ2VuZXJhdGVkLipieSBhY2xvY2FsJyBhY2xvY2FsLm00 KSBdXSAmJiBhdXRvdG9vbHNfcnVuX3Rvb2wgYWNsb2NhbCAiJEAiICR7YWNsb2NhbF9vcHRzfQp9 CmVhdXRvY29uZiAoKSAKeyAKICAgIGlmIFtbICEgLWYgY29uZmlndXJlLmFjICYmICEgLWYgY29u ZmlndXJlLmluIF1dOyB0aGVuCiAgICAgICAgZWNobzsKICAgICAgICBlZXJyb3IgIk5vIGNvbmZp Z3VyZS57YWMsaW59IHByZXNlbnQgaW4gJyQocHdkIHwgc2VkIC1lICdzOi4qLzo6JyknISI7CiAg ICAgICAgZWNobzsKICAgICAgICBkaWUgIk5vIGNvbmZpZ3VyZS57YWMsaW59IHByZXNlbnQhIjsK ICAgIGZpOwogICAgYXV0b3Rvb2xzX3J1bl90b29sIGF1dG9jb25mICIkQCIKfQplYXV0b2hlYWRl ciAoKSAKeyAKICAgIFtbIC1uICQoYXV0b3Rvb2xzX2NoZWNrX21hY3JvICJBQ19DT05GSUdfSEVB REVSUyIpIF1dIHx8IHJldHVybiAwOwogICAgTk9fRkFJTD0xIGF1dG90b29sc19ydW5fdG9vbCBh dXRvaGVhZGVyICIkQCIKfQplYXV0b21ha2UgKCkgCnsgCiAgICBsb2NhbCBleHRyYV9vcHRzOwog ICAgbG9jYWwgbWFrZWZpbGVfbmFtZTsKICAgIGlmIFtbIC1mIEdOVW1ha2VmaWxlLmFtIF1dOyB0 aGVuCiAgICAgICAgbWFrZWZpbGVfbmFtZT0iR05VbWFrZWZpbGUiOwogICAgZWxzZQogICAgICAg IGlmIFtbIC1mIE1ha2VmaWxlLmFtIF1dOyB0aGVuCiAgICAgICAgICAgIG1ha2VmaWxlX25hbWU9 Ik1ha2VmaWxlIjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGZp OwogICAgZmk7CiAgICBpZiBbWyAteiAke0ZST01fRUFVVE9SRUNPTkZ9ICYmIC1mICR7bWFrZWZp bGVfbmFtZX0uaW4gXV07IHRoZW4KICAgICAgICBsb2NhbCB1c2VkX2F1dG9tYWtlOwogICAgICAg IGxvY2FsIGluc3RhbGxlZF9hdXRvbWFrZTsKICAgICAgICBpbnN0YWxsZWRfYXV0b21ha2U9JChh dXRvbWFrZSAtLXZlcnNpb24gfCBoZWFkIC1uIDEgfCAJCQlzZWQgLWUgJ3M6LiooR05VIGF1dG9t YWtlKSA6OicpOwogICAgICAgIHVzZWRfYXV0b21ha2U9JChoZWFkIC1uIDEgPCAke21ha2VmaWxl X25hbWV9LmluIHwgCQkJc2VkIC1lICdzOi4qYnkgYXV0b21ha2UgXCguKlwpIGZyb20gLio6XDE6 Jyk7CiAgICAgICAgaWYgW1sgJHtpbnN0YWxsZWRfYXV0b21ha2V9ICE9ICR7dXNlZF9hdXRvbWFr ZX0gXV07IHRoZW4KICAgICAgICAgICAgZWluZm8gIkF1dG9tYWtlIHVzZWQgZm9yIHRoZSBwYWNr YWdlICgke3VzZWRfYXV0b21ha2V9KSBkaWZmZXJzIGZyb20iOwogICAgICAgICAgICBlaW5mbyAi dGhlIGluc3RhbGxlZCB2ZXJzaW9uICgke2luc3RhbGxlZF9hdXRvbWFrZX0pLiI7CiAgICAgICAg ICAgIGVhdXRvcmVjb25mOwogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGZp OwogICAgW1sgLWYgSU5TVEFMTCAmJiAtZiBBVVRIT1JTICYmIC1mIENoYW5nZUxvZyAmJiAtZiBO RVdTIF1dIHx8IGV4dHJhX29wdHM9IiR7ZXh0cmFfb3B0c30gLS1mb3JlaWduIjsKICAgIGF1dG90 b29sc19ydW5fdG9vbCBhdXRvbWFrZSAtLWFkZC1taXNzaW5nIC0tY29weSAke2V4dHJhX29wdHN9 ICIkQCIKfQplYXV0b3JlY29uZiAoKSAKeyAKICAgIGxvY2FsIHB3ZD0kKHB3ZCkgeCBhdXhkaXI7 CiAgICBpZiBbWyAteiAke0FUX05PX1JFQ1VSU0lWRX0gXV07IHRoZW4KICAgICAgICBmb3IgeCBp biAkKGF1dG90b29sc19nZXRfc3ViZGlycyk7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sg LWQgJHt4fSBdXTsgdGhlbgogICAgICAgICAgICAgICAgY2QgIiR7eH0iOwogICAgICAgICAgICAg ICAgQVRfTk9FTElCVE9PTElaRT0ieWVzIiBlYXV0b3JlY29uZjsKICAgICAgICAgICAgICAgIGNk ICIke3B3ZH0iOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgZmk7CiAgICBhdXhk aXI9JChhdXRvdG9vbHNfZ2V0X2F1eGRpcik7CiAgICBlaW5mbyAiUnVubmluZyBlYXV0b3JlY29u ZiBpbiAnJChwd2QpJyAuLi4iOwogICAgW1sgLW4gJHthdXhkaXJ9IF1dICYmIG1rZGlyIC1wICR7 YXV4ZGlyfTsKICAgIGVhY2xvY2FsOwogICAgaWYgJHtMSUJUT09MSVpFOi1saWJ0b29saXplfSAt biAtLWluc3RhbGwgPiYvZGV2L251bGw7IHRoZW4KICAgICAgICBfZWxpYnRvb2xpemUgLS1jb3B5 IC0tZm9yY2UgLS1pbnN0YWxsOwogICAgZWxzZQogICAgICAgIF9lbGlidG9vbGl6ZSAtLWNvcHkg LS1mb3JjZTsKICAgIGZpOwogICAgZWF1dG9jb25mOwogICAgZWF1dG9oZWFkZXI7CiAgICBGUk9N X0VBVVRPUkVDT05GPSJ5ZXMiIGVhdXRvbWFrZSAke0FNX09QVFN9OwogICAgW1sgJHtBVF9OT0VM SUJUT09MSVpFfSA9PSAieWVzIiBdXSAmJiByZXR1cm4gMDsKICAgIGVsaWJ0b29saXplOwogICAg cmV0dXJuIDAKfQplYmVlcCAoKSAKeyAKICAgIGxvY2FsIG47CiAgICBpZiBbWyAteiAke0VCRUVQ X0lHTk9SRX0gXV07IHRoZW4KICAgICAgICBmb3IgKChuPTEgOyBuIDw9ICR7MTotNX0gOyBuKysp KQogICAgICAgIGRvCiAgICAgICAgICAgIGVjaG8gLW5lICJcYSI7CiAgICAgICAgICAgIHNsZWVw IDAuMSA+Ji9kZXYvbnVsbDsKICAgICAgICAgICAgc2xlZXAgMCwxID4mL2Rldi9udWxsOwogICAg ICAgICAgICBlY2hvIC1uZSAiXGEiOwogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIGRvbmU7 CiAgICBmaQp9CmVjdnNfY2xlYW4gKCkgCnsgCiAgICBbWyAteiAkKiBdXSAmJiBzZXQgLS0gLjsK ICAgIGZpbmQgIiRAIiAtdHlwZSBkIC1uYW1lICdDVlMnIC1wcnVuZSAtcHJpbnQwIHwgeGFyZ3Mg LTAgcm0gLXJmOwogICAgZmluZCAiJEAiIC10eXBlIGYgLW5hbWUgJy5jdnMqJyAtcHJpbnQwIHwg eGFyZ3MgLTAgcm0gLXJmCn0KZWRvczJ1bml4ICgpIAp7IAogICAgZWNobyAiJEAiIHwgeGFyZ3Mg c2VkIC1pICdzL1xyJC8vJwp9CmVnZXRlbnQgKCkgCnsgCiAgICBjYXNlICR7Q0hPU1R9IGluIAog ICAgICAgICotZGFyd2luKikKICAgICAgICAgICAgY2FzZSAiJDIiIGluIAogICAgICAgICAgICAg ICAgKlshMC05XSopCiAgICAgICAgICAgICAgICAgICAgbmlkdW1wICQxIC4gfCBhd2sgLUYiOiIg InsgaWYgKFwkMSB+IC9eJDIkLykge3ByaW50IFwkMDtleGl0O30gfSIKICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIG5pZHVtcCAkMSAuIHwg YXdrIC1GIjoiICJ7IGlmIChcJDMgPT0gJDIpIHtwcmludCBcJDA7ZXhpdDt9IH0iCiAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAgOzsKICAgICAgICAqLWZyZWVic2Qq IHwgKi1kcmFnb25mbHkqKQogICAgICAgICAgICBsb2NhbCBvcHRzIGFjdGlvbj0idXNlciI7CiAg ICAgICAgICAgIFtbICQxID09ICJwYXNzd2QiIF1dIHx8IGFjdGlvbj0iZ3JvdXAiOwogICAgICAg ICAgICBpZiBbWyAkMiA9PSBbWzpkaWdpdDpdXSogXV07IHRoZW4KICAgICAgICAgICAgICAgIFtb ICR7YWN0aW9ufSA9PSAidXNlciIgXV0gJiYgb3B0cz0iLXUiIHx8IG9wdHM9Ii1nIjsKICAgICAg ICAgICAgZmk7CiAgICAgICAgICAgIHB3IHNob3cgJHthY3Rpb259ICR7b3B0c30gIiQyIiAtcQog ICAgICAgIDs7CiAgICAgICAgKi1uZXRic2QqIHwgKi1vcGVuYnNkKikKICAgICAgICAgICAgZ3Jl cCAiJDI6XCo6IiAvZXRjLyQxCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICB0eXBl IC1wIG5zY2QgPiYvZGV2L251bGwgJiYgbnNjZCAtaSAiJDEiOwogICAgICAgICAgICBnZXRlbnQg IiQxIiAiJDIiCiAgICAgICAgOzsKICAgIGVzYWMKfQplZ2V0aG9tZSAoKSAKeyAKICAgIGVudD0k KGVnZXRlbnQgcGFzc3dkICQxKTsKICAgIGNhc2UgJHtDSE9TVH0gaW4gCiAgICAgICAgKi1kYXJ3 aW4qIHwgKi1mcmVlYnNkKiB8ICotZHJhZ29uZmx5KikKICAgICAgICAgICAgZWNobyAke2VudH0g fCBjdXQgLWQ6IC1mOQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZWNobyAke2Vu dH0gfCBjdXQgLWQ6IC1mNgogICAgICAgIDs7CiAgICBlc2FjCn0KZWdldHNoZWxsICgpIAp7IAog ICAgZW50PSQoZWdldGVudCBwYXNzd2QgIiQxIik7CiAgICBjYXNlICR7Q0hPU1R9IGluIAogICAg ICAgICotZGFyd2luKiB8ICotZnJlZWJzZCogfCAqLWRyYWdvbmZseSopCiAgICAgICAgICAgIGVj aG8gJHtlbnR9IHwgY3V0IC1kOiAtZjEwCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAg ICBlY2hvICR7ZW50fSBjdXQgLWQ6IC1mNwogICAgICAgIDs7CiAgICBlc2FjCn0KZWxpYnRvb2xp emUgKCkgCnsgCiAgICBsb2NhbCB4PTsKICAgIGxvY2FsIHk9OwogICAgbG9jYWwgZG9fcG9ydGFn ZT0ibm8iOwogICAgbG9jYWwgZG9fcmV2ZXJzZWRlcHM9Im5vIjsKICAgIGxvY2FsIGRvX29ubHlf cGF0Y2hlcz0ibm8iOwogICAgbG9jYWwgZG9fdWNsaWJjPSJ5ZXMiOwogICAgbG9jYWwgZGVwdG9y ZW1vdmU9OwogICAgbG9jYWwgbXlfZGlybGlzdD07CiAgICBsb2NhbCBlbHRfcGF0Y2hlcz0iaW5z dGFsbC1zaCBsdG1haW4gcG9ydGFnZSByZWxpbmsgbWF4X2NtZF9sZW4gc2VkIHRlc3QgdG1wIjsK ICAgIGxvY2FsIHN0YXJ0X2Rpcj0ke1BXRH07CiAgICBteV9kaXJsaXN0PSQoRUxUX2ZpbmRfbHRt YWluX3NoKTsKICAgIGZvciB4IGluICIkQCI7CiAgICBkbwogICAgICAgIGNhc2UgIiR7eH0iIGlu IAogICAgICAgICAgICAiLS1wb3J0YWdlIikKICAgICAgICAgICAgICAgIGRvX3BvcnRhZ2U9Inll cyIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgIi0tcmV2ZXJzZS1kZXBzIikKICAgICAgICAg ICAgICAgIGRvX3JldmVyc2VkZXBzPSJ5ZXMiOwogICAgICAgICAgICAgICAgZWx0X3BhdGNoZXM9 IiR7ZWx0X3BhdGNoZXN9IGZpeC1yZWxpbmsiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICIt LXBhdGNoLW9ubHkiKQogICAgICAgICAgICAgICAgZG9fb25seV9wYXRjaGVzPSJ5ZXMiCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICJeLS1yZW1vdmUtaW50ZXJuYWwtZGVwPSIqKQogICAgICAg ICAgICAgICAgZGVwdG9yZW1vdmU9JChlY2hvICIke3h9IiB8IHNlZCAtZSAnc3wtLXJlbW92ZS1p bnRlcm5hbC1kZXA9fHwnKTsKICAgICAgICAgICAgICAgIFtbIC1uICR7ZGVwdG9yZW1vdmV9IF1d ICYmIGVsdF9wYXRjaGVzPSIke2VsdF9wYXRjaGVzfSByZW0taW50LWRlcCIKICAgICAgICAgICAg OzsKICAgICAgICAgICAgIi0tc2hhbGxvdyIpCiAgICAgICAgICAgICAgICBpZiBbWyAtZiAke1N9 L2x0bWFpbi5zaCBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIG15X2Rpcmxpc3Q9JHtTfTsK ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBteV9kaXJsaXN0PTsKICAg ICAgICAgICAgICAgIGZpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICItLW5vLXVjbGliYyIp CiAgICAgICAgICAgICAgICBkb191Y2xpYmM9Im5vIgogICAgICAgICAgICA7OwogICAgICAgICAg ICAqKQogICAgICAgICAgICAgICAgZWVycm9yICJJbnZhbGlkIGVsaWJ0b29saXplIG9wdGlvbjog JHt4fSI7CiAgICAgICAgICAgICAgICBkaWUgImVsaWJ0b29saXplIGNhbGxlZCB3aXRoICR7eH0g Pz8iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7CiAgICBbWyAke2RvX3Vj bGliY30gPT0gInllcyIgXV0gJiYgZWx0X3BhdGNoZXM9IiR7ZWx0X3BhdGNoZXN9IHVjbGliYy1j b25mIHVjbGliYy1sdGNvbmYiOwogICAgW1sgJHtDSE9TVH0gPT0gKiItZnJlZWJzZCIqIF1dICYm IGVsdF9wYXRjaGVzPSIke2VsdF9wYXRjaGVzfSBmYnNkLWNvbmYgZmJzZC1sdGNvbmYiOwogICAg W1sgJHtDSE9TVH0gPT0gKiItZGFyd2luIiogXV0gJiYgZWx0X3BhdGNoZXM9IiR7ZWx0X3BhdGNo ZXN9IGRhcndpbi1sdGNvbmYgZGFyd2luLWx0bWFpbiI7CiAgICBmb3IgeCBpbiAke215X2Rpcmxp c3R9OwogICAgZG8KICAgICAgICBsb2NhbCB0bXA9JChlY2hvICIke3h9IiB8IHNlZCAtZSAic3wk e1dPUktESVJ9fHwiKTsKICAgICAgICBleHBvcnQgRUxUX0FQUExJRURfUEFUQ0hFUz07CiAgICAg ICAgZXhwb3J0IEVMVF9MVE1BSU5fU0g9IiR7eH0vbHRtYWluLnNoIjsKICAgICAgICBbWyAtZiAk e3h9Ly5lbGlidG9vbGl6ZWQgXV0gJiYgY29udGludWU7CiAgICAgICAgY2QgJHt4fTsKICAgICAg ICBlaW5mbyAiUnVubmluZyBlbGlidG9vbGl6ZSBpbjogJChlY2hvICIvJHt0bXB9IiB8IHNlZCAt ZSAnc3wvL3wvfGc7IHN8Xi98fCcpIjsKICAgICAgICBmb3IgeSBpbiAke2VsdF9wYXRjaGVzfTsK ICAgICAgICBkbwogICAgICAgICAgICBsb2NhbCByZXQ9MDsKICAgICAgICAgICAgY2FzZSAiJHt5 fSIgaW4gCiAgICAgICAgICAgICAgICAicG9ydGFnZSIpCiAgICAgICAgICAgICAgICAgICAgaWYg W1sgLXogJChncmVwICdXZSBkbyBub3Qgd2FudCBwb3J0YWdlJyAiJHt4fS9sdG1haW4uc2giKSBd XTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBFTFRfd2Fsa19wYXRjaGVzICIke3h9L2x0 bWFpbi5zaCIgIiR7eX0iOwogICAgICAgICAgICAgICAgICAgICAgICByZXQ9JD87CiAgICAgICAg ICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAicmVtLWlu dC1kZXAiKQogICAgICAgICAgICAgICAgICAgIEVMVF93YWxrX3BhdGNoZXMgIiR7eH0vbHRtYWlu LnNoIiAiJHt5fSIgIiR7ZGVwdG9yZW1vdmV9IjsKICAgICAgICAgICAgICAgICAgICByZXQ9JD8K ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAiZml4LXJlbGluayIpCiAgICAgICAg ICAgICAgICAgICAgaWYgW1sgLW4gJChncmVwICdpbnN0X3ByZWZpeF9kaXInICIke3h9L2x0bWFp bi5zaCIpIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIEVMVF93YWxrX3BhdGNoZXMg IiR7eH0vbHRtYWluLnNoIiAiJHt5fSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldD0kPzsK ICAgICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICJtYXhfY21kX2xlbiIpCiAgICAgICAgICAgICAgICAgICAgaWYgW1sgLW4gJChncmVwICdtYXhf Y21kX2xlbicgIiR7eH0vbHRtYWluLnNoIikgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAg ICAgRUxUX3dhbGtfcGF0Y2hlcyAiJHt4fS9sdG1haW4uc2giICIke3l9IjsKICAgICAgICAgICAg ICAgICAgICAgICAgcmV0PSQ/OwogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgInVjbGliYy1jb25mIikKICAgICAgICAgICAgICAgICAgICBp ZiBbWyAtZSAke3h9L2NvbmZpZ3VyZSAmJiAtbiAkKGdyZXAgJ1RyYW5zZm9ybSBsaW51eCcgIiR7 eH0vY29uZmlndXJlIikgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgRUxUX3dhbGtf cGF0Y2hlcyAiJHt4fS9jb25maWd1cmUiICIke3l9IjsKICAgICAgICAgICAgICAgICAgICAgICAg cmV0PSQ/OwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg aWYgW1sgISAtZSAke3h9L2NvbmZpZ3VyZSAmJiAtZSAke3h9Ly4uL2NvbmZpZ3VyZSAmJiAtbiAk KGdyZXAgJ1RyYW5zZm9ybSBsaW51eCcgIiR7eH0vLi4vY29uZmlndXJlIikgXV07IHRoZW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVMVF93YWxrX3BhdGNoZXMgIiR7eH0vLi4vY29uZmln dXJlIiAiJHt5fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQ9JD87CiAgICAgICAg ICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgInVjbGliYy1sdGNvbmYiKQogICAgICAgICAgICAgICAgICAg IGlmIFtbIC1zICR7eH0vbHRjb25maWcgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAg RUxUX3dhbGtfcGF0Y2hlcyAiJHt4fS9sdGNvbmZpZyIgIiR7eX0iOwogICAgICAgICAgICAgICAg ICAgICAgICByZXQ9JD87CiAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAiZmJzZC1jb25mIikKICAgICAgICAgICAgICAgICAgICBpZiBbWyAt ZSAke3h9L2NvbmZpZ3VyZSAmJiAtbiAkKGdyZXAgJ3ZlcnNpb25fdHlwZT1mcmVlYnNkLScgIiR7 eH0vY29uZmlndXJlIikgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgRUxUX3dhbGtf cGF0Y2hlcyAiJHt4fS9jb25maWd1cmUiICIke3l9IjsKICAgICAgICAgICAgICAgICAgICAgICAg cmV0PSQ/OwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAg aWYgW1sgISAtZSAke3h9L2NvbmZpZ3VyZSAmJiAtZSAke3h9Ly4uL2NvbmZpZ3VyZSAmJiAtbiAk KGdyZXAgJ3ZlcnNpb25fdHlwZT1mcmVlYnNkLScgIiR7eH0vLi4vY29uZmlndXJlIikgXV07IHRo ZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVMVF93YWxrX3BhdGNoZXMgIiR7eH0vLi4v Y29uZmlndXJlIiAiJHt5fSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQ9JD87CiAg ICAgICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgImZic2QtbHRjb25mIikKICAgICAgICAgICAgICAg ICAgICBpZiBbWyAtcyAke3h9L2x0Y29uZmlnIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAg ICAgIEVMVF93YWxrX3BhdGNoZXMgIiR7eH0vbHRjb25maWciICIke3l9IjsKICAgICAgICAgICAg ICAgICAgICAgICAgcmV0PSQ/OwogICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgImRhcndpbi1sdGNvbmYiKQogICAgICAgICAgICAgICAgICAg IGlmIFtbIC1zICR7eH0vbHRjb25maWcgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAg RUxUX3dhbGtfcGF0Y2hlcyAiJHt4fS9sdGNvbmZpZyIgIiR7eX0iOwogICAgICAgICAgICAgICAg ICAgICAgICByZXQ9JD87CiAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAiaW5zdGFsbC1zaCIpCiAgICAgICAgICAgICAgICAgICAgRUxUX3dh bGtfcGF0Y2hlcyAiJHt4fS9pbnN0YWxsLXNoIiAiJHt5fSI7CiAgICAgICAgICAgICAgICAgICAg cmV0PSQ/CiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgKikKICAgICAgICAgICAg ICAgICAgICBFTFRfd2Fsa19wYXRjaGVzICIke3h9L2x0bWFpbi5zaCIgIiR7eX0iOwogICAgICAg ICAgICAgICAgICAgIHJldD0kPwogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYzsK ICAgICAgICAgICAgaWYgW1sgJHtyZXR9IC1uZSAwIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBj YXNlICR7eX0gaW4gCiAgICAgICAgICAgICAgICAgICAgInJlbGluayIpCiAgICAgICAgICAgICAg ICAgICAgICAgIGxvY2FsIHZlcnNpb249JChFTFRfbGlidG9vbF92ZXJzaW9uICIke3h9L2x0bWFp bi5zaCIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAteiAkKGdyZXAgJ2luc3RfcHJl Zml4X2RpcicgIiR7eH0vbHRtYWluLnNoIikgJiYgJChWRVJfdG9faW50ICIke3ZlcnNpb259Iikg LWdlICQoVkVSX3RvX2ludCAiMS40LjAiKSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZXdhcm4gIiAgQ291bGQgbm90IGFwcGx5IHJlbGluay5wYXRjaCEiOwogICAgICAgICAg ICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgInBvcnRhZ2UiKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAke2RvX3BvcnRhZ2V9 ID09ICJ5ZXMiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAteiAk KGdyZXAgJ1dlIGRvIG5vdCB3YW50IHBvcnRhZ2UnICIke3h9L2x0bWFpbi5zaCIpIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlZXJyb3IgIlBvcnRhZ2UgcGF0Y2ggcmVxdWVzdGVkLCBidXQgZmFpbGVk IHRvIGFwcGx5ISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWVycm9yICJQbGVh c2UgYnVnIGF6YXJhaCBvciB2YXBpZXIgdG8gYWRkIHByb3BlciBwYXRjaC4iOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpZSAiUG9ydGFnZSBwYXRjaCByZXF1ZXN0ZWQsIGJ1dCBm YWlsZWQgdG8gYXBwbHkhIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAg ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAt biAkKGdyZXAgJ1dlIGRvIG5vdCB3YW50IHBvcnRhZ2UnICIke3h9L2x0bWFpbi5zaCIpIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCB2ZXJz aW9uPSQoIAkJCQkJCQkJCWV2YWwgJChncmVwIC1lICdeW1s6c3BhY2U6XV0qVkVSU0lPTj0nICIk e3h9L2x0bWFpbi5zaCIpOyAJCQkJCQkJCQllY2hvICIke1ZFUlNJT059Iik7CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlZXJyb3IgIlBvcnRhZ2UgcGF0Y2ggZmFpbGVkIHRvIGFwcGx5IChsdG1haW4uc2ggdmVyc2lv biAke3ZlcnNpb259KSEiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVlcnJvciAi UGxlYXNlIGJ1ZyBhemFyYWggb3IgdmFwaWVyIHRvIGFkZCBwcm9wZXIgcGF0Y2guIjsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkaWUgIlBvcnRhZ2UgcGF0Y2ggZmFpbGVkIHRvIGFw cGx5ISI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVMVF9BUFBMSUVEX1BBVENIRVM9InBvcnRhZ2UiOwogICAgICAgICAgICAgICAg ICAgICAgICBmaQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgInVj bGliYy0iKikKICAgICAgICAgICAgICAgICAgICAgICAgW1sgJHtDSE9TVH0gPT0gKiItdWNsaWJj IiBdXSAmJiBld2FybiAiICB1Q2xpYmMgcGF0Y2ggc2V0ICcke3l9JyBmYWlsZWQgdG8gYXBwbHkh IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgImZic2QtIiopCiAg ICAgICAgICAgICAgICAgICAgICAgIGlmIFtbICR7Q0hPU1R9ID09ICoiLWZyZWVic2QiKiBdXTsg dGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgLXogJChncmVwICdIYW5kbGUg R2VudG9vL0ZyZWVCU0QgYXMgaXQgd2FzIExpbnV4JyAJCQkJCQkJCSIke3h9L2NvbmZpZ3VyZSIg IiR7eH0vLi4vY29uZmlndXJlIiAyPi9kZXYvbnVsbCkgXV07IHRoZW4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlZXJyb3IgIiAgRnJlZUJTRCBwYXRjaCBzZXQgJyR7eX0nIGZhaWxl ZCB0byBhcHBseSEiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZSAiRnJlZUJT RCBwYXRjaCBzZXQgJyR7eX0nIGZhaWxlZCB0byBhcHBseSEiOwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICAiZGFyd2luLSIqKQogICAgICAgICAgICAgICAgICAg ICAgICBbWyAke0NIT1NUfSA9PSAqIi1kYXJ3aW4iKiBdXSAmJiBld2FybiAiICBEYXJ3aW4gcGF0 Y2ggc2V0ICcke3l9JyBmYWlsZWQgdG8gYXBwbHkhIgogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgICAg IGlmIFtbIC16ICR7RUxUX0FQUExJRURfUEFUQ0hFU30gXV07IHRoZW4KICAgICAgICAgICAgaWYg W1sgJHtkb19wb3J0YWdlfSA9PSAibm8iICYmICR7ZG9fcmV2ZXJzZWRlcHN9ID09ICJubyIgJiYg JHtkb19vbmx5X3BhdGNoZXN9ID09ICJubyIgJiYgJHtkZXB0b3JlbW92ZX0gPT0gIiIgXV07IHRo ZW4KICAgICAgICAgICAgICAgIGV3YXJuICJDYW5ub3QgYXBwbHkgYW55IHBhdGNoZXMsIHBsZWFz ZSBmaWxlIGEgYnVnIGFib3V0IHRoaXMiOwogICAgICAgICAgICAgICAgZGllOwogICAgICAgICAg ICBmaTsKICAgICAgICBmaTsKICAgICAgICBbWyAtZiAke3h9L2xpYnRvb2wgXV0gJiYgcm0gLWYg IiR7eH0vbGlidG9vbCI7CiAgICAgICAgID4+ICIke3h9Ly5lbGlidG9vbGl6ZWQiOwogICAgZG9u ZTsKICAgIGNkICIke3N0YXJ0X2Rpcn0iCn0KZW1rdGVtcCAoKSAKeyAKICAgIGxvY2FsIGV4ZT0i dG91Y2giOwogICAgW1sgJDEgPT0gLWQgXV0gJiYgZXhlPSJta2RpciIgJiYgc2hpZnQ7CiAgICBs b2NhbCB0b3BkaXI9JDE7CiAgICBpZiBbWyAteiAke3RvcGRpcn0gXV07IHRoZW4KICAgICAgICBb WyAteiAke1R9IF1dICYmIHRvcGRpcj0iL3RtcCIgfHwgdG9wZGlyPSR7VH07CiAgICBmaTsKICAg IGlmICEgdHlwZSAtUCBta3RlbXAgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBsb2NhbCB0bXA9 LzsKICAgICAgICB3aGlsZSBbWyAtZSAke3RtcH0gXV07IGRvCiAgICAgICAgICAgIHRtcD0ke3Rv cGRpcn0vdG1wLiR7UkFORE9NfS4ke1JBTkRPTX0uJHtSQU5ET019OwogICAgICAgIGRvbmU7CiAg ICAgICAgJHtleGV9ICIke3RtcH0iIHx8ICR7ZXhlfSAtcCAiJHt0bXB9IjsKICAgICAgICBlY2hv ICIke3RtcH0iOwogICAgZWxzZQogICAgICAgIGlmIFtbICR7ZXhlfSA9PSAidG91Y2giIF1dOyB0 aGVuCiAgICAgICAgICAgIFRNUERJUj0iJHt0b3BkaXJ9IiBta3RlbXAgLXQgdG1wLlhYWFhYWFhY WFg7CiAgICAgICAgZWxzZQogICAgICAgICAgICBUTVBESVI9IiR7dG9wZGlyfSIgbWt0ZW1wIC1k dCB0bXAuWFhYWFhYWFhYWDsKICAgICAgICBmaTsKICAgIGZpCn0KZW5ld2dyb3VwICgpIAp7IAog ICAgY2FzZSAke0VCVUlMRF9QSEFTRX0gaW4gCiAgICAgICAgdW5wYWNrIHwgY29tcGlsZSB8IHRl c3QgfCBpbnN0YWxsKQogICAgICAgICAgICBlZXJyb3IgIidlbmV3Z3JvdXAoKScgY2FsbGVkIGZy b20gJyR7RUJVSUxEX1BIQVNFfSgpJyB3aGljaCBpcyBub3QgYSBwa2dfKiBmdW5jdGlvbi4iOwog ICAgICAgICAgICBlZXJyb3IgIlBhY2thZ2UgZmFpbHMgYXQgUUEgYW5kIGF0IGxpZmUuICBQbGVh c2UgZmlsZSBhIGJ1Zy4iOwogICAgICAgICAgICBkaWUgIkJhZCBwYWNrYWdlISAgZW5ld2dyb3Vw IGlzIG9ubHkgZm9yIHVzZSBpbiBwa2dfKiBmdW5jdGlvbnMhIgogICAgICAgIDs7CiAgICBlc2Fj OwogICAgbG9jYWwgZWdyb3VwPSIkMSI7CiAgICBzaGlmdDsKICAgIGlmIFsgLXogIiR7ZWdyb3Vw fSIgXTsgdGhlbgogICAgICAgIGVlcnJvciAiTm8gZ3JvdXAgc3BlY2lmaWVkICEiOwogICAgICAg IGRpZSAiQ2Fubm90IGNhbGwgZW5ld2dyb3VwIHdpdGhvdXQgYSBncm91cCI7CiAgICBmaTsKICAg IGlmIFtbIC1uICQoZWdldGVudCBncm91cCAiJHtlZ3JvdXB9IikgXV07IHRoZW4KICAgICAgICBy ZXR1cm4gMDsKICAgIGZpOwogICAgZWluZm8gIkFkZGluZyBncm91cCAnJHtlZ3JvdXB9JyB0byB5 b3VyIHN5c3RlbSAuLi4iOwogICAgbG9jYWwgb3B0cz07CiAgICBsb2NhbCBlZ2lkPSIkMSI7CiAg ICBzaGlmdDsKICAgIGlmIFsgISAteiAiJHtlZ2lkfSIgXTsgdGhlbgogICAgICAgIGlmIFsgIiR7 ZWdpZH0iIC1ndCAwIF07IHRoZW4KICAgICAgICAgICAgaWYgWyAteiAiYGVnZXRlbnQgZ3JvdXAg JHtlZ2lkfWAiIF07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFtbICIke0NIT1NUfSIgPT0gKi1k YXJ3aW4qIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgb3B0cz0iJHtvcHRzfSAke2VnaWR9 IjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBvcHRzPSIke29wdHN9 IC1nICR7ZWdpZH0iOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgIGVnaWQ9Im5leHQgYXZhaWxhYmxlOyByZXF1ZXN0ZWQgZ2lkIHRha2VuIjsKICAg ICAgICAgICAgZmk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBlZXJyb3IgIkdyb3VwaWQgZ2l2 ZW4gYnV0IGlzIG5vdCBncmVhdGVyIHRoYW4gMCAhIjsKICAgICAgICAgICAgZGllICIke2VnaWR9 IGlzIG5vdCBhIHZhbGlkIEdJRCI7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgZWdpZD0i bmV4dCBhdmFpbGFibGUiOwogICAgZmk7CiAgICBlaW5mbyAiIC0gR3JvdXBpZDogJHtlZ2lkfSI7 CiAgICBsb2NhbCBlZXh0cmE9IiRAIjsKICAgIG9wdHM9IiR7b3B0c30gJHtlZXh0cmF9IjsKICAg IGxvY2FsIG9sZHNhbmRib3g9IiR7U0FOREJPWF9PTn0iOwogICAgZXhwb3J0IFNBTkRCT1hfT049 IjAiOwogICAgY2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAg IGlmIFsgISAteiAiJHtlZXh0cmF9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBlaW5mbyAiRXh0 cmEgb3B0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBvbiBEYXJ3aW4vT1MgWCB5ZXQiOwogICAgICAg ICAgICAgICAgZWluZm8gIlBsZWFzZSByZXBvcnQgdGhlIGVidWlsZCBhbG9uZyB3aXRoIHRoZSBp bmZvIGJlbG93IjsKICAgICAgICAgICAgICAgIGVpbmZvICJlZXh0cmE6ICR7ZWV4dHJhfSI7CiAg ICAgICAgICAgICAgICBkaWUgIlJlcXVpcmVkIGZ1bmN0aW9uIG1pc3NpbmciOwogICAgICAgICAg ICBmaTsKICAgICAgICAgICAgY2FzZSAke2VnaWR9IGluIAogICAgICAgICAgICAgICAgKlshMC05 XSopCiAgICAgICAgICAgICAgICAgICAgZm9yICgoZWdpZCA9IDEwMTsgZWdpZCA8PSA5OTk7IGVn aWQrKykpCiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgW1sg LXogJChlZ2V0ZW50IGdyb3VwICR7ZWdpZH0pIF1dICYmIGJyZWFrOwogICAgICAgICAgICAgICAg ICAgIGRvbmUKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAg IGRzY2wgLiBjcmVhdGUgL2dyb3Vwcy8ke2Vncm91cH0gZ2lkICR7ZWdpZH07CiAgICAgICAgICAg IGRzY2wgLiBjcmVhdGUgL2dyb3Vwcy8ke2Vncm91cH0gcGFzc3dkICcqJwogICAgICAgIDs7CiAg ICAgICAgKi1mcmVlYnNkKiB8ICotZHJhZ29uZmx5KikKICAgICAgICAgICAgY2FzZSAke2VnaWR9 IGluIAogICAgICAgICAgICAgICAgKlshMC05XSopCiAgICAgICAgICAgICAgICAgICAgZm9yICgo ZWdpZCA9IDEwMTsgZWdpZCA8PSA5OTk7IGVnaWQrKykpCiAgICAgICAgICAgICAgICAgICAgZG8K ICAgICAgICAgICAgICAgICAgICAgICAgW1sgLXogJChlZ2V0ZW50IGdyb3VwICR7ZWdpZH0pIF1d ICYmIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRvbmUKICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgIHB3IGdyb3VwYWRkICR7ZWdyb3VwfSAtZyAke2Vn aWR9IHx8IGRpZSAiZW5ld2dyb3VwIGZhaWxlZCIKICAgICAgICA7OwogICAgICAgICotbmV0YnNk KikKICAgICAgICAgICAgY2FzZSAke2VnaWR9IGluIAogICAgICAgICAgICAgICAgKlshMC05XSop CiAgICAgICAgICAgICAgICAgICAgZm9yICgoZWdpZCA9IDEwMTsgZWdpZCA8PSA5OTk7IGVnaWQr KykpCiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgW1sgLXog JChlZ2V0ZW50IGdyb3VwICR7ZWdpZH0pIF1dICYmIGJyZWFrOwogICAgICAgICAgICAgICAgICAg IGRvbmUKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgIGdy b3VwYWRkIC1nICR7ZWdpZH0gJHtlZ3JvdXB9IHx8IGRpZSAiZW5ld2dyb3VwIGZhaWxlZCIKICAg ICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGdyb3VwYWRkICR7b3B0c30gJHtlZ3JvdXB9 IHx8IGRpZSAiZW5ld2dyb3VwIGZhaWxlZCIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGV4cG9y dCBTQU5EQk9YX09OPSIke29sZHNhbmRib3h9Igp9CmVuZXd1c2VyICgpIAp7IAogICAgY2FzZSAk e0VCVUlMRF9QSEFTRX0gaW4gCiAgICAgICAgdW5wYWNrIHwgY29tcGlsZSB8IHRlc3QgfCBpbnN0 YWxsKQogICAgICAgICAgICBlZXJyb3IgIidlbmV3dXNlcigpJyBjYWxsZWQgZnJvbSAnJHtFQlVJ TERfUEhBU0V9KCknIHdoaWNoIGlzIG5vdCBhIHBrZ18qIGZ1bmN0aW9uLiI7CiAgICAgICAgICAg IGVlcnJvciAiUGFja2FnZSBmYWlscyBhdCBRQSBhbmQgYXQgbGlmZS4gIFBsZWFzZSBmaWxlIGEg YnVnLiI7CiAgICAgICAgICAgIGRpZSAiQmFkIHBhY2thZ2UhICBlbmV3dXNlciBpcyBvbmx5IGZv ciB1c2UgaW4gcGtnXyogZnVuY3Rpb25zISIKICAgICAgICA7OwogICAgZXNhYzsKICAgIGxvY2Fs IGV1c2VyPSQxOwogICAgc2hpZnQ7CiAgICBpZiBbWyAteiAke2V1c2VyfSBdXTsgdGhlbgogICAg ICAgIGVlcnJvciAiTm8gdXNlcm5hbWUgc3BlY2lmaWVkICEiOwogICAgICAgIGRpZSAiQ2Fubm90 IGNhbGwgZW5ld3VzZXIgd2l0aG91dCBhIHVzZXJuYW1lIjsKICAgIGZpOwogICAgaWYgW1sgLW4g JChlZ2V0ZW50IHBhc3N3ZCAiJHtldXNlcn0iKSBdXTsgdGhlbgogICAgICAgIHJldHVybiAwOwog ICAgZmk7CiAgICBlaW5mbyAiQWRkaW5nIHVzZXIgJyR7ZXVzZXJ9JyB0byB5b3VyIHN5c3RlbSAu Li4iOwogICAgbG9jYWwgb3B0cz07CiAgICBsb2NhbCBldWlkPSQxOwogICAgc2hpZnQ7CiAgICBp ZiBbWyAtbiAke2V1aWR9ICYmICR7ZXVpZH0gIT0gLTEgXV07IHRoZW4KICAgICAgICBpZiBbWyAk e2V1aWR9IC1ndCAwIF1dOyB0aGVuCiAgICAgICAgICAgIGlmIFtbIC1uICQoZWdldGVudCBwYXNz d2QgJHtldWlkfSkgXV07IHRoZW4KICAgICAgICAgICAgICAgIGV1aWQ9Im5leHQiOwogICAgICAg ICAgICBmaTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGVlcnJvciAiVXNlcmlkIGdpdmVuIGJ1 dCBpcyBub3QgZ3JlYXRlciB0aGFuIDAgISI7CiAgICAgICAgICAgIGRpZSAiJHtldWlkfSBpcyBu b3QgYSB2YWxpZCBVSUQiOwogICAgICAgIGZpOwogICAgZWxzZQogICAgICAgIGV1aWQ9Im5leHQi OwogICAgZmk7CiAgICBpZiBbWyAke2V1aWR9ID09ICJuZXh0IiBdXTsgdGhlbgogICAgICAgIGZv ciAoKGV1aWQgPSAxMDE7IGV1aWQgPD0gOTk5OyBldWlkKyspKQogICAgICAgIGRvCiAgICAgICAg ICAgIFtbIC16ICQoZWdldGVudCBwYXNzd2QgJHtldWlkfSkgXV0gJiYgYnJlYWs7CiAgICAgICAg ZG9uZTsKICAgIGZpOwogICAgb3B0cz0iJHtvcHRzfSAtdSAke2V1aWR9IjsKICAgIGVpbmZvICIg LSBVc2VyaWQ6ICR7ZXVpZH0iOwogICAgbG9jYWwgZXNoZWxsPSQxOwogICAgc2hpZnQ7CiAgICBp ZiBbWyAhIC16ICR7ZXNoZWxsfSBdXSAmJiBbWyAke2VzaGVsbH0gIT0gIi0xIiBdXTsgdGhlbgog ICAgICAgIGlmIFtbICEgLWUgJHtST09UfSR7ZXNoZWxsfSBdXTsgdGhlbgogICAgICAgICAgICBl ZXJyb3IgIkEgc2hlbGwgd2FzIHNwZWNpZmllZCBidXQgaXQgZG9lcyBub3QgZXhpc3QgISI7CiAg ICAgICAgICAgIGRpZSAiJHtlc2hlbGx9IGRvZXMgbm90IGV4aXN0IGluICR7Uk9PVH0iOwogICAg ICAgIGZpOwogICAgICAgIGlmIFtbICR7ZXNoZWxsfSA9PSAqL2ZhbHNlIHx8ICR7ZXNoZWxsfSA9 PSAqL25vbG9naW4gXV07IHRoZW4KICAgICAgICAgICAgZWVycm9yICJEbyBub3Qgc3BlY2lmeSAk e2VzaGVsbH0geW91cnNlbGYsIHVzZSAtMSI7CiAgICAgICAgICAgIGRpZSAiUGFzcyAnLTEnIGFz IHRoZSBzaGVsbCBwYXJhbWV0ZXIiOwogICAgICAgIGZpOwogICAgZWxzZQogICAgICAgIGZvciBz aGVsbCBpbiAvc2Jpbi9ub2xvZ2luIC91c3Ivc2Jpbi9ub2xvZ2luIC9iaW4vZmFsc2UgL3Vzci9i aW4vZmFsc2UgL2Rldi9udWxsOwogICAgICAgIGRvCiAgICAgICAgICAgIFtbIC14ICR7Uk9PVH0k e3NoZWxsfSBdXSAmJiBicmVhazsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtbICR7c2hlbGx9 ID09ICIvZGV2L251bGwiIF1dOyB0aGVuCiAgICAgICAgICAgIGVlcnJvciAiVW5hYmxlIHRvIGlk ZW50aWZ5IHRoZSBzaGVsbCB0byB1c2UsIHByb2NlZWRpbmcgd2l0aCB1c2VybGFuZCBkZWZhdWx0 LiI7CiAgICAgICAgICAgIGNhc2UgJHtVU0VSTEFORH0gaW4gCiAgICAgICAgICAgICAgICBHTlUp CiAgICAgICAgICAgICAgICAgICAgc2hlbGw9Ii9iaW4vZmFsc2UiCiAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgQlNEKQogICAgICAgICAgICAgICAgICAgIHNoZWxsPSIvc2Jpbi9u b2xvZ2luIgogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIERhcndpbikKICAgICAg ICAgICAgICAgICAgICBzaGVsbD0iL3Vzci9zYmluL25vbG9naW4iCiAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICBkaWUgIlVuYWJsZSB0byBp ZGVudGlmeSB0aGUgZGVmYXVsdCBzaGVsbCBmb3IgdXNlcmxhbmQgJHtVU0VSTEFORH0iCiAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjOwogICAgICAgIGZpOwogICAgICAgIGVzaGVs bD0ke3NoZWxsfTsKICAgIGZpOwogICAgZWluZm8gIiAtIFNoZWxsOiAke2VzaGVsbH0iOwogICAg b3B0cz0iJHtvcHRzfSAtcyAke2VzaGVsbH0iOwogICAgbG9jYWwgZWhvbWU9JDE7CiAgICBzaGlm dDsKICAgIGlmIFtbIC16ICR7ZWhvbWV9IF1dIHx8IFtbICR7ZWhvbWV9ID09ICItMSIgXV07IHRo ZW4KICAgICAgICBlaG9tZT0iL2Rldi9udWxsIjsKICAgIGZpOwogICAgZWluZm8gIiAtIEhvbWU6 ICR7ZWhvbWV9IjsKICAgIG9wdHM9IiR7b3B0c30gLWQgJHtlaG9tZX0iOwogICAgbG9jYWwgZWdy b3Vwcz0kMTsKICAgIHNoaWZ0OwogICAgaWYgW1sgISAteiAke2Vncm91cHN9IF1dOyB0aGVuCiAg ICAgICAgbG9jYWwgb2xkaWZzPSR7SUZTfTsKICAgICAgICBsb2NhbCBkZWZncm91cD0iIiBleGdy b3Vwcz0iIjsKICAgICAgICBleHBvcnQgSUZTPSIsIjsKICAgICAgICBmb3IgZyBpbiAke2Vncm91 cHN9OwogICAgICAgIGRvCiAgICAgICAgICAgIGV4cG9ydCBJRlM9JHtvbGRpZnN9OwogICAgICAg ICAgICBpZiBbWyAteiAkKGVnZXRlbnQgZ3JvdXAgIiR7Z30iKSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZWVycm9yICJZb3UgbXVzdCBhZGQgZ3JvdXAgJHtnfSB0byB0aGUgc3lzdGVtIGZpcnN0 IjsKICAgICAgICAgICAgICAgIGRpZSAiJHtnfSBpcyBub3QgYSB2YWxpZCBHSUQiOwogICAgICAg ICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgLXogJHtkZWZncm91cH0gXV07IHRoZW4KICAgICAg ICAgICAgICAgIGRlZmdyb3VwPSR7Z307CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg IGV4Z3JvdXBzPSIke2V4Z3JvdXBzfSwke2d9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAg IGV4cG9ydCBJRlM9IiwiOwogICAgICAgIGRvbmU7CiAgICAgICAgZXhwb3J0IElGUz0ke29sZGlm c307CiAgICAgICAgb3B0cz0iJHtvcHRzfSAtZyAke2RlZmdyb3VwfSI7CiAgICAgICAgaWYgW1sg ISAteiAke2V4Z3JvdXBzfSBdXTsgdGhlbgogICAgICAgICAgICBvcHRzPSIke29wdHN9IC1HICR7 ZXhncm91cHM6MX0iOwogICAgICAgIGZpOwogICAgZWxzZQogICAgICAgIGVncm91cHM9Iihub25l KSI7CiAgICBmaTsKICAgIGVpbmZvICIgLSBHcm91cHM6ICR7ZWdyb3Vwc30iOwogICAgbG9jYWwg b2xkc2FuZGJveD0ke1NBTkRCT1hfT059OwogICAgZXhwb3J0IFNBTkRCT1hfT049IjAiOwogICAg Y2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIGlmIFtbIC16 ICRAIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC91c2Vycy8ke2V1c2Vy fSB1aWQgJHtldWlkfTsKICAgICAgICAgICAgICAgIGRzY2wgLiBjcmVhdGUgL3VzZXJzLyR7ZXVz ZXJ9IHNoZWxsICR7ZXNoZWxsfTsKICAgICAgICAgICAgICAgIGRzY2wgLiBjcmVhdGUgL3VzZXJz LyR7ZXVzZXJ9IGhvbWUgJHtlaG9tZX07CiAgICAgICAgICAgICAgICBkc2NsIC4gY3JlYXRlIC91 c2Vycy8ke2V1c2VyfSByZWFsbmFtZSAiYWRkZWQgYnkgcG9ydGFnZSBmb3IgJHtQTn0iOwogICAg ICAgICAgICAgICAgbG9jYWwgb2xkaWZzPSR7SUZTfTsKICAgICAgICAgICAgICAgIGV4cG9ydCBJ RlM9IiwiOwogICAgICAgICAgICAgICAgZm9yIGcgaW4gJHtlZ3JvdXBzfTsKICAgICAgICAgICAg ICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZHNjbCAuIG1lcmdlIC9ncm91cHMvJHtnfSB1c2Vy cyAke2V1c2VyfTsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICBleHBvcnQg SUZTPSR7b2xkaWZzfTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWluZm8gIkV4 dHJhIG9wdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgb24gRGFyd2luIHlldCI7CiAgICAgICAgICAg ICAgICBlaW5mbyAiUGxlYXNlIHJlcG9ydCB0aGUgZWJ1aWxkIGFsb25nIHdpdGggdGhlIGluZm8g YmVsb3ciOwogICAgICAgICAgICAgICAgZWluZm8gImVleHRyYTogJEAiOwogICAgICAgICAgICAg ICAgZGllICJSZXF1aXJlZCBmdW5jdGlvbiBtaXNzaW5nIjsKICAgICAgICAgICAgZmkKICAgICAg ICA7OwogICAgICAgICotZnJlZWJzZCogfCAqLWRyYWdvbmZseSopCiAgICAgICAgICAgIGlmIFtb IC16ICRAIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBwdyB1c2VyYWRkICR7ZXVzZXJ9ICR7b3B0 c30gLWMgImFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiBkaWUgImVuZXd1c2VyIGZhaWxlZCI7 CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVpbmZvICIgLSBFeHRyYTogJEAiOwog ICAgICAgICAgICAgICAgcHcgdXNlcmFkZCAke2V1c2VyfSAke29wdHN9ICIkQCIgfHwgZGllICJl bmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAgICAgKi1uZXRi c2QqKQogICAgICAgICAgICBpZiBbWyAteiAkQCBdXTsgdGhlbgogICAgICAgICAgICAgICAgdXNl cmFkZCAke29wdHN9ICR7ZXVzZXJ9IHx8IGRpZSAiZW5ld3VzZXIgZmFpbGVkIjsKICAgICAgICAg ICAgZWxzZQogICAgICAgICAgICAgICAgZWluZm8gIiAtIEV4dHJhOiAkQCI7CiAgICAgICAgICAg ICAgICB1c2VyYWRkICR7b3B0c30gJHtldXNlcn0gIiRAIiB8fCBkaWUgImVuZXd1c2VyIGZhaWxl ZCI7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsKICAgICAgICAqLW9wZW5ic2QqKQogICAgICAg ICAgICBpZiBbWyAteiAkQCBdXTsgdGhlbgogICAgICAgICAgICAgICAgdXNlcmFkZCAtdSAke2V1 aWR9IC1zICR7ZXNoZWxsfSAtZCAke2Vob21lfSAtYyAiQWRkZWQgYnkgcG9ydGFnZSBmb3IgJHtQ Tn0iIC1nICR7ZWdyb3Vwc30gJHtldXNlcn0gfHwgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBlaW5mbyAiIC0gRXh0cmE6ICRAIjsKICAgICAg ICAgICAgICAgIHVzZXJhZGQgLXUgJHtldWlkfSAtcyAke2VzaGVsbH0gLWQgJHtlaG9tZX0gLWMg IkFkZGVkIGJ5IHBvcnRhZ2UgZm9yICR7UE59IiAtZyAke2Vncm91cHN9ICR7ZXVzZXJ9ICIkQCIg fHwgZGllICJlbmV3dXNlciBmYWlsZWQiOwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAg ICAgKikKICAgICAgICAgICAgaWYgW1sgLXogJEAgXV07IHRoZW4KICAgICAgICAgICAgICAgIHVz ZXJhZGQgJHtvcHRzfSAke2V1c2VyfSAtYyAiYWRkZWQgYnkgcG9ydGFnZSBmb3IgJHtQTn0iIHx8 IGRpZSAiZW5ld3VzZXIgZmFpbGVkIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg ZWluZm8gIiAtIEV4dHJhOiAkQCI7CiAgICAgICAgICAgICAgICB1c2VyYWRkICR7b3B0c30gJHtl dXNlcn0gIiRAIiB8fCBkaWUgImVuZXd1c2VyIGZhaWxlZCI7CiAgICAgICAgICAgIGZpCiAgICAg ICAgOzsKICAgIGVzYWM7CiAgICBpZiBbWyAhIC1lICR7Uk9PVH0vJHtlaG9tZX0gXV07IHRoZW4K ICAgICAgICBlaW5mbyAiIC0gQ3JlYXRpbmcgJHtlaG9tZX0gaW4gJHtST09UfSI7CiAgICAgICAg bWtkaXIgLXAgIiR7Uk9PVH0vJHtlaG9tZX0iOwogICAgICAgIGNob3duICR7ZXVzZXJ9ICIke1JP T1R9LyR7ZWhvbWV9IjsKICAgICAgICBjaG1vZCA3NTUgIiR7Uk9PVH0vJHtlaG9tZX0iOwogICAg Zmk7CiAgICBleHBvcnQgU0FOREJPWF9PTj0ke29sZHNhbmRib3h9Cn0KZXBhdGNoICgpIAp7IAog ICAgZnVuY3Rpb24gX2VwYXRjaF9kcmF3X2xpbmUgKCkgCiAgICB7IAogICAgICAgIFtbIC16ICQx IF1dICYmIHNldCAiJChwcmludGYgIiU2NXMiICcnKSI7CiAgICAgICAgZWNobyAiJHsxLy8/Lz19 IgogICAgfTsKICAgIGZ1bmN0aW9uIF9lcGF0Y2hfYXNzZXJ0ICgpIAogICAgeyAKICAgICAgICBs b2NhbCBfcGlwZXN0YXR1cz0ke1BJUEVTVEFUVVNbKl19OwogICAgICAgIFtbICR7X3BpcGVzdGF0 dXMvLyAvfSAtZXEgMCBdXQogICAgfTsKICAgIGxvY2FsIFBJUEVfQ01EPSIiOwogICAgbG9jYWwg U1RERVJSX1RBUkdFVD0iJHtUfS8kJC5vdXQiOwogICAgbG9jYWwgUEFUQ0hfVEFSR0VUPSIke1R9 LyQkLnBhdGNoIjsKICAgIGxvY2FsIFBBVENIX1NVRkZJWD0iIjsKICAgIGxvY2FsIFNJTkdMRV9Q QVRDSD0ibm8iOwogICAgbG9jYWwgeD0iIjsKICAgIHVuc2V0IFA0Q09ORklHIFA0UE9SVCBQNFVT RVI7CiAgICBpZiBbICIkIyIgLWd0IDEgXTsgdGhlbgogICAgICAgIGxvY2FsIG09IiI7CiAgICAg ICAgZm9yIG0gaW4gIiRAIjsKICAgICAgICBkbwogICAgICAgICAgICBlcGF0Y2ggIiR7bX0iOwog ICAgICAgIGRvbmU7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGlmIFsgLW4gIiQxIiAt YSAtZiAiJDEiIF07IHRoZW4KICAgICAgICBTSU5HTEVfUEFUQ0g9InllcyI7CiAgICAgICAgbG9j YWwgRVBBVENIX1NPVVJDRT0iJDEiOwogICAgICAgIGxvY2FsIEVQQVRDSF9TVUZGSVg9IiR7MSMj KlwufSI7CiAgICBlbHNlCiAgICAgICAgaWYgWyAtbiAiJDEiIC1hIC1kICIkMSIgXTsgdGhlbgog ICAgICAgICAgICBpZiBbICIke0VQQVRDSF9GT1JDRX0iID0gInllcyIgXSAmJiBbIC16ICIke0VQ QVRDSF9TVUZGSVh9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbCBFUEFUQ0hfU09VUkNF PSIkMS8qIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgbG9jYWwgRVBBVENIX1NP VVJDRT0iJDEvKi4ke0VQQVRDSF9TVUZGSVh9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgZWxz ZQogICAgICAgICAgICBpZiBbWyAhIC1kICR7RVBBVENIX1NPVVJDRX0gXV0gfHwgW1sgLW4gJDEg XV07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFsgLW4gIiQxIiAtYSAiJHtFUEFUQ0hfU09VUkNF fSIgPSAiJHtXT1JLRElSfS9wYXRjaCIgXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIEVQQVRD SF9TT1VSQ0U9IiQxIjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZWNobzsK ICAgICAgICAgICAgICAgIGVlcnJvciAiQ2Fubm90IGZpbmQgXCRFUEFUQ0hfU09VUkNFISAgVmFs dWUgZm9yIFwkRVBBVENIX1NPVVJDRSBpczoiOwogICAgICAgICAgICAgICAgZWVycm9yOwogICAg ICAgICAgICAgICAgZWVycm9yICIgICR7RVBBVENIX1NPVVJDRX0iOwogICAgICAgICAgICAgICAg ZWVycm9yICIgICggJHtFUEFUQ0hfU09VUkNFIyMqL30gKSI7CiAgICAgICAgICAgICAgICBlY2hv OwogICAgICAgICAgICAgICAgZGllICJDYW5ub3QgZmluZCBcJEVQQVRDSF9TT1VSQ0UhIjsKICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGxvY2FsIEVQQVRDSF9TT1VSQ0U9IiR7RVBBVENIX1NP VVJDRX0vKi4ke0VQQVRDSF9TVUZGSVh9IjsKICAgICAgICBmaTsKICAgIGZpOwogICAgY2FzZSAk e0VQQVRDSF9TVUZGSVgjIypcLn0gaW4gCiAgICAgICAgbHptYSkKICAgICAgICAgICAgUElQRV9D TUQ9Imx6bWEgLWRjIjsKICAgICAgICAgICAgUEFUQ0hfU1VGRklYPSJsem1hIgogICAgICAgIDs7 CiAgICAgICAgYnoyKQogICAgICAgICAgICBQSVBFX0NNRD0iYnppcDIgLWRjIjsKICAgICAgICAg ICAgUEFUQ0hfU1VGRklYPSJiejIiCiAgICAgICAgOzsKICAgICAgICBneiB8IFogfCB6KQogICAg ICAgICAgICBQSVBFX0NNRD0iZ3ppcCAtZGMiOwogICAgICAgICAgICBQQVRDSF9TVUZGSVg9Imd6 IgogICAgICAgIDs7CiAgICAgICAgWklQIHwgemlwKQogICAgICAgICAgICBQSVBFX0NNRD0idW56 aXAgLXAiOwogICAgICAgICAgICBQQVRDSF9TVUZGSVg9InppcCIKICAgICAgICA7OwogICAgICAg ICopCiAgICAgICAgICAgIFBJUEVfQ01EPSJjYXQiOwogICAgICAgICAgICBQQVRDSF9TVUZGSVg9 InBhdGNoIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgaWYgWyAiJHtTSU5HTEVfUEFUQ0h9IiA9 ICJubyIgXTsgdGhlbgogICAgICAgIGVpbmZvICIke0VQQVRDSF9NVUxUSV9NU0d9IjsKICAgIGZp OwogICAgZm9yIHggaW4gJHtFUEFUQ0hfU09VUkNFfTsKICAgIGRvCiAgICAgICAgaWYgWyAtZiAk e3h9IF0gJiYgKCBbICIke1NJTkdMRV9QQVRDSH0iID0gInllcyIgLW8gIiR7eC9fYWxsX30iICE9 ICIke3h9IiAtbyAiJHt4L18ke0FSQ0h9X30iICE9ICIke3h9IiBdIHx8IFsgIiR7RVBBVENIX0ZP UkNFfSIgPSAieWVzIiBdICk7IHRoZW4KICAgICAgICAgICAgbG9jYWwgY291bnQ9MDsKICAgICAg ICAgICAgbG9jYWwgcG9wdHM9IiR7RVBBVENIX09QVFN9IjsKICAgICAgICAgICAgbG9jYWwgcGF0 Y2huYW1lPSR7eCMjKi99OwogICAgICAgICAgICBpZiBbIC1uICIke0VQQVRDSF9FWENMVURFfSIg XTsgdGhlbgogICAgICAgICAgICAgICAgaWYgWyAiJHtFUEFUQ0hfRVhDTFVERS8ke3BhdGNobmFt ZX19IiAhPSAiJHtFUEFUQ0hfRVhDTFVERX0iIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICBj b250aW51ZTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAg aWYgWyAiJHtTSU5HTEVfUEFUQ0h9IiA9ICJ5ZXMiIF07IHRoZW4KICAgICAgICAgICAgICAgIGlm IFsgLW4gIiR7RVBBVENIX1NJTkdMRV9NU0d9IiBdOyB0aGVuCiAgICAgICAgICAgICAgICAgICAg ZWluZm8gIiR7RVBBVENIX1NJTkdMRV9NU0d9IjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICAgICBlaW5mbyAiQXBwbHlpbmcgJHtwYXRjaG5hbWV9IC4uLiI7CiAgICAgICAg ICAgICAgICBmaTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZWluZm8gIiAgJHtw YXRjaG5hbWV9IC4uLiI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBlY2hvICIqKioqKiAk e3BhdGNobmFtZX0gKioqKioiID4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtT VERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgIGVjaG8gPj4gJHtTVERFUlJfVEFSR0VUJS8q fS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgIGlmIFtbICR7 UEFUQ0hfU1VGRklYfSAhPSAicGF0Y2giIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvIC1u ICJQSVBFX0NPTU1BTkQ6CSIgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtT VERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgICAgICBlY2hvICIke1BJUEVfQ01EfSAke3h9 ID4gJHtQQVRDSF9UQVJHRVR9IiA+PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0k e1NUREVSUl9UQVJHRVQjIyovfTsKICAgICAgICAgICAgICAgIGlmICEgKCAke1BJUEVfQ01EfSAk e3h9ID4gJHtQQVRDSF9UQVJHRVR9ICkgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFt ZX0tJHtTVERFUlJfVEFSR0VUIyMqL30gMj4mMTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGVj aG87CiAgICAgICAgICAgICAgICAgICAgZWVycm9yICJDb3VsZCBub3QgZXh0cmFjdCBwYXRjaCEi OwogICAgICAgICAgICAgICAgICAgIGNvdW50PTU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgUEFU Q0hfVEFSR0VUPSIke3h9IjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGxvY2FsIGFic19w YXRocz0kKGVncmVwIC1uICdeWy0rXXszfSAvJyAiJHtQQVRDSF9UQVJHRVR9IiB8IGF3ayAnJDIg IT0gIi9kZXYvbnVsbCIgeyBwcmludCB9Jyk7CiAgICAgICAgICAgIGlmIFtbIC1uICR7YWJzX3Bh dGhzfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgY291bnQ9MTsKICAgICAgICAgICAgICAgIGVj aG8gIk5PVEU6IHNraXBwaW5nIC1wMCBkdWUgdG8gYWJzb2x1dGUgcGF0aHMgaW4gcGF0Y2g6IiA+ PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfTsK ICAgICAgICAgICAgICAgIGVjaG8gIiR7YWJzX3BhdGhzfSIgPj4gJHtTVERFUlJfVEFSR0VUJS8q fS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgIGZpOwogICAg ICAgICAgICB3aGlsZSBbICIke2NvdW50fSIgLWx0IDUgXTsgZG8KICAgICAgICAgICAgICAgIF9l cGF0Y2hfZHJhd19saW5lICIqKioqKiAke3BhdGNobmFtZX0gKioqKioiID4+ICR7U1RERVJSX1RB UkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICAg ICAgZWNobyA+PiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJH RVQjIyovfTsKICAgICAgICAgICAgICAgIGVjaG8gLW4gIlBBVENIIENPTU1BTkQ6CSAiID4+ICR7 U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAg ICAgICAgICAgICAgZWNobyAicGF0Y2ggLXAke2NvdW50fSAke3BvcHRzfSA8ICR7UEFUQ0hfVEFS R0VUfSIgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VU IyMqL307CiAgICAgICAgICAgICAgICBlY2hvID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRj aG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99OwogICAgICAgICAgICAgICAgX2VwYXRjaF9kcmF3 X2xpbmUgIioqKioqICR7cGF0Y2huYW1lfSAqKioqKiIgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8k e3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAgICAgICAgICAgICBpZiAoIGNh dCAke1BBVENIX1RBUkdFVH0gfCBwYXRjaCAtcCR7Y291bnR9ICR7cG9wdHN9IC0tZHJ5LXJ1biAt ZjsKICAgICAgICAgICAgICAgIF9lcGF0Y2hfYXNzZXJ0ICkgPj4gJHtTVERFUlJfVEFSR0VUJS8q fS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL30gMj4mMTsgdGhlbgogICAgICAgICAg ICAgICAgICAgIF9lcGF0Y2hfZHJhd19saW5lICIqKioqKiAke3BhdGNobmFtZX0gKioqKioiID4g JHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL30ucmVh bDsKICAgICAgICAgICAgICAgICAgICBlY2hvID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRj aG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99LnJlYWw7CiAgICAgICAgICAgICAgICAgICAgZWNo byAiQUNUVUFMTFkgQVBQTFlJTkcgJHtwYXRjaG5hbWV9IC4uLiIgPj4gJHtTVERFUlJfVEFSR0VU JS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL30ucmVhbDsKICAgICAgICAgICAg ICAgICAgICBlY2hvID4+ICR7U1RERVJSX1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJS X1RBUkdFVCMjKi99LnJlYWw7CiAgICAgICAgICAgICAgICAgICAgX2VwYXRjaF9kcmF3X2xpbmUg IioqKioqICR7cGF0Y2huYW1lfSAqKioqKiIgPj4gJHtTVERFUlJfVEFSR0VUJS8qfS8ke3BhdGNo bmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL30ucmVhbDsKICAgICAgICAgICAgICAgICAgICBjYXQg JHtQQVRDSF9UQVJHRVR9IHwgcGF0Y2ggLXAke2NvdW50fSAke3BvcHRzfSA+PiAke1NUREVSUl9U QVJHRVQlLyp9LyR7cGF0Y2huYW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfS5yZWFsIDI+JjE7CiAg ICAgICAgICAgICAgICAgICAgX2VwYXRjaF9hc3NlcnQ7CiAgICAgICAgICAgICAgICAgICAgaWYg WyAiJD8iIC1uZSAwIF07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgY2F0ICR7U1RERVJS X1RBUkdFVCUvKn0vJHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99LnJlYWwgPj4gJHtT VERFUlJfVEFSR0VUJS8qfS8ke3BhdGNobmFtZX0tJHtTVERFUlJfVEFSR0VUIyMqL307CiAgICAg ICAgICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICAgICAgICAgIGVlcnJvciAi QSBkcnktcnVuIG9mIHBhdGNoIGNvbW1hbmQgc3VjY2VlZGVkLCBidXQgYWN0dWFsbHkiOwogICAg ICAgICAgICAgICAgICAgICAgICBlZXJyb3IgImFwcGx5aW5nIHRoZSBwYXRjaCBmYWlsZWQhIjsK ICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9NTsKICAgICAgICAgICAgICAgICAgICBmaTsK ICAgICAgICAgICAgICAgICAgICBybSAtZiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2huYW1l fS0ke1NUREVSUl9UQVJHRVQjIyovfS5yZWFsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBjb3VudD0kKChjb3VudCArIDEpKTsK ICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgaWYgWyAiJHtQQVRDSF9TVUZGSVh9IiAhPSAi cGF0Y2giIF07IHRoZW4KICAgICAgICAgICAgICAgIHJtIC1mICR7UEFUQ0hfVEFSR0VUfTsKICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFsgIiR7Y291bnR9IiAtZXEgNSBdOyB0aGVuCiAg ICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZWVycm9yICJGYWlsZWQgUGF0Y2g6 ICR7cGF0Y2huYW1lfSAhIjsKICAgICAgICAgICAgICAgIGVlcnJvciAiICggJHtQQVRDSF9UQVJH RVR9ICkiOwogICAgICAgICAgICAgICAgZWVycm9yOwogICAgICAgICAgICAgICAgZWVycm9yICJJ bmNsdWRlIGluIHlvdXIgYnVncmVwb3J0IHRoZSBjb250ZW50cyBvZjoiOwogICAgICAgICAgICAg ICAgZWVycm9yOwogICAgICAgICAgICAgICAgZWVycm9yICIgICR7U1RERVJSX1RBUkdFVCUvKn0v JHtwYXRjaG5hbWV9LSR7U1RERVJSX1RBUkdFVCMjKi99IjsKICAgICAgICAgICAgICAgIGVjaG87 CiAgICAgICAgICAgICAgICBkaWUgIkZhaWxlZCBQYXRjaDogJHtwYXRjaG5hbWV9ISI7CiAgICAg ICAgICAgIGZpOwogICAgICAgICAgICBybSAtZiAke1NUREVSUl9UQVJHRVQlLyp9LyR7cGF0Y2hu YW1lfS0ke1NUREVSUl9UQVJHRVQjIyovfTsKICAgICAgICAgICAgZWVuZCAwOwogICAgICAgIGZp OwogICAgZG9uZTsKICAgIGlmIFsgIiR7U0lOR0xFX1BBVENIfSIgPSAibm8iIF07IHRoZW4KICAg ICAgICBlaW5mbyAiRG9uZSB3aXRoIHBhdGNoaW5nIjsKICAgIGZpCn0KZXBhdXNlICgpIAp7IAog ICAgW1sgLXogJHtFUEFVU0VfSUdOT1JFfSBdXSAmJiBzbGVlcCAkezE6LTV9Cn0KZXB1bnRfY3h4 ICgpIAp7IAogICAgbG9jYWwgZGlyPSQxOwogICAgW1sgLXogJHtkaXJ9IF1dICYmIGRpcj0ke1N9 OwogICAgZWJlZ2luICJSZW1vdmluZyB1c2VsZXNzIEMrKyBjaGVja3MiOwogICAgbG9jYWwgZjsK ICAgIGZpbmQgIiR7ZGlyfSIgLW5hbWUgY29uZmlndXJlIHwgd2hpbGUgcmVhZCBmOyBkbwogICAg ICAgIHBhdGNoIC0tbm8tYmFja3VwLWlmLW1pc21hdGNoIC1wMCAiJHtmfSIgIiR7UE9SVERJUn0v ZWNsYXNzL0VMVC1wYXRjaGVzL25vY3h4L25vY3h4LnBhdGNoIiA+IC9kZXYvbnVsbDsKICAgIGRv bmU7CiAgICBlZW5kIDAKfQplc3ZuX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0 IC0tIC47CiAgICBmaW5kICIkQCIgLXR5cGUgZCAtbmFtZSAnLnN2bicgLXBydW5lIC1wcmludDAg fCB4YXJncyAtMCBybSAtcmYKfQpmaWx0ZXItZmxhZ3MgKCkgCnsgCiAgICBfZmlsdGVyLWhhcmRl bmVkICIkQCI7CiAgICBfZmlsdGVyLXZhciBDRkxBR1MgIiRAIjsKICAgIF9maWx0ZXItdmFyIENQ UEZMQUdTICIkQCI7CiAgICBfZmlsdGVyLXZhciBDWFhGTEFHUyAiJEAiOwogICAgX2ZpbHRlci12 YXIgRkZMQUdTICIkQCI7CiAgICBfZmlsdGVyLXZhciBGQ0ZMQUdTICIkQCI7CiAgICByZXR1cm4g MAp9CmZpbHRlci1sZGZsYWdzICgpIAp7IAogICAgX2ZpbHRlci12YXIgTERGTEFHUyAiJEAiOwog ICAgcmV0dXJuIDAKfQpmaWx0ZXItbGZzLWZsYWdzICgpIAp7IAogICAgW1sgLW4gJEAgXV0gJiYg ZGllICJmaWx0ZXItbGZzLWZsYWdzIHRha2VzIG5vIGFyZ3VtZW50cyI7CiAgICBmaWx0ZXItZmxh Z3MgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFIC1EX0xBUkdFRklM RTY0X1NPVVJDRQp9CmZpbHRlci1tZnBtYXRoICgpIAp7IAogICAgbG9jYWwgb3JpZ19tZnBtYXRo IG5ld19tYXRoIHBydW5lX21hdGg7CiAgICBvcmlnX21mcG1hdGg9JChnZXQtZmxhZyAtbWZwbWF0 aCk7CiAgICBuZXdfbWF0aD0kKGdldC1mbGFnIG1mcG1hdGgpOwogICAgbmV3X21hdGg9IiAke25l d19tYXRoLy8sLyB9ICI7CiAgICBwcnVuZV9tYXRoPSIiOwogICAgZm9yIHBydW5lX21hdGggaW4g IiRAIjsKICAgIGRvCiAgICAgICAgbmV3X21hdGg9JHtuZXdfbWF0aC8gJHtwcnVuZV9tYXRofSAv IH07CiAgICBkb25lOwogICAgbmV3X21hdGg9JChlY2hvICR7bmV3X21hdGh9KTsKICAgIG5ld19t YXRoPSR7bmV3X21hdGgvLyAvLH07CiAgICBpZiBbWyAteiAke25ld19tYXRofSBdXTsgdGhlbgog ICAgICAgIGZpbHRlci1mbGFncyAke29yaWdfbWZwbWF0aH07CiAgICBlbHNlCiAgICAgICAgcmVw bGFjZS1mbGFncyAke29yaWdfbWZwbWF0aH0gLW1mcG1hdGg9JHtuZXdfbWF0aH07CiAgICBmaTsK ICAgIHJldHVybiAwCn0KZmluZF9tb2R1bGVfcGFyYW1zICgpIAp7IAogICAgZGVidWctcHJpbnQt ZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtYXRjaGVkX29mZnNldD0wIG1hdGNo ZWRfb3B0cz0wIHRlc3Q9IiR7QH0iIHRlbXBfdmFyIHJlc3VsdDsKICAgIGxvY2FsIGk9MCB5PTAg ej0wOwogICAgZm9yICgoaT0wOyBpPD0keyN0ZXN0fTsgaSsrKSkKICAgIGRvCiAgICAgICAgY2Fz ZSAke3Rlc3Q6JHtpfToxfSBpbiAKICAgICAgICAgICAgXCgpCiAgICAgICAgICAgICAgICBtYXRj aGVkX29mZnNldFswXT0ke2l9CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFw6KQogICAgICAg ICAgICAgICAgbWF0Y2hlZF9vcHRzPSQoKCR7bWF0Y2hlZF9vcHRzfSArIDEpKTsKICAgICAgICAg ICAgICAgIG1hdGNoZWRfb2Zmc2V0WyR7bWF0Y2hlZF9vcHRzfV09IiR7aX0iCiAgICAgICAgICAg IDs7CiAgICAgICAgICAgIFwpKQogICAgICAgICAgICAgICAgbWF0Y2hlZF9vcHRzPSQoKCR7bWF0 Y2hlZF9vcHRzfSArIDEpKTsKICAgICAgICAgICAgICAgIG1hdGNoZWRfb2Zmc2V0WyR7bWF0Y2hl ZF9vcHRzfV09IiR7aX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7CiAg ICBmb3IgKChpPTA7IGk8PSR7bWF0Y2hlZF9vcHRzfTsgaSsrKSkKICAgIGRvCiAgICAgICAgY2Fz ZSAke2l9IGluIAogICAgICAgICAgICAwKQogICAgICAgICAgICAgICAgdGVtcHZhcj0ke3Rlc3Q6 MDoke21hdGNoZWRfb2Zmc2V0WzBdfX0KICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAg ICAgICAgICAgICAgIHk9JCgoJHttYXRjaGVkX29mZnNldFskKCgke2l9IC0gMSkpXX0gKyAxKSk7 CiAgICAgICAgICAgICAgICB6PSQoKCR7bWF0Y2hlZF9vZmZzZXRbJHtpfV19IC0gJHttYXRjaGVk X29mZnNldFskKCgke2l9IC0gMSkpXX0pKTsKICAgICAgICAgICAgICAgIHo9JCgoJHt6fSAtIDEp KTsKICAgICAgICAgICAgICAgIHRlbXB2YXI9JHt0ZXN0OiR7eX06JHt6fX0KICAgICAgICAgICAg OzsKICAgICAgICBlc2FjOwogICAgICAgIGNhc2UgJHtpfSBpbiAKICAgICAgICAgICAgMCkKICAg ICAgICAgICAgICAgIHJlc3VsdD0iJHtyZXN1bHR9IG1vZHVsZW5hbWU6JHt0ZW1wdmFyfSIKICAg ICAgICAgICAgOzsKICAgICAgICAgICAgMSkKICAgICAgICAgICAgICAgIHJlc3VsdD0iJHtyZXN1 bHR9IGxpYmRpcjoke3RlbXB2YXJ9IgogICAgICAgICAgICA7OwogICAgICAgICAgICAyKQogICAg ICAgICAgICAgICAgcmVzdWx0PSIke3Jlc3VsdH0gc3JjZGlyOiR7dGVtcHZhcn0iCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgIDMpCiAgICAgICAgICAgICAgICByZXN1bHQ9IiR7cmVzdWx0fSBv YmpkaXI6JHt0ZW1wdmFyfSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9uZTsK ICAgIGVjaG8gJHtyZXN1bHR9Cn0KZmluZF91bnBhY2thYmxlX2ZpbGUgKCkgCnsgCiAgICBsb2Nh bCBzcmM9JDE7CiAgICBpZiBbWyAteiAke3NyY30gXV07IHRoZW4KICAgICAgICBzcmM9JHtESVNU RElSfS8ke0F9OwogICAgZWxzZQogICAgICAgIGlmIFtbIC1lICR7RElTVERJUn0vJHtzcmN9IF1d OyB0aGVuCiAgICAgICAgICAgIHNyYz0ke0RJU1RESVJ9LyR7c3JjfTsKICAgICAgICBlbHNlCiAg ICAgICAgICAgIGlmIFtbIC1lICR7UFdEfS8ke3NyY30gXV07IHRoZW4KICAgICAgICAgICAgICAg IHNyYz0ke1BXRH0vJHtzcmN9OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBpZiBb WyAtZSAke3NyY30gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBzcmM9JHtzcmN9OwogICAg ICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBb WyAhIC1lICR7c3JjfSBdXSAmJiByZXR1cm4gMTsKICAgIGVjaG8gIiR7c3JjfSIKfQpnY2MtZnVs bHZlcnNpb24gKCkgCnsgCiAgICAkKHRjLWdldENDICIkQCIpIC1kdW1wdmVyc2lvbgp9CmdjYy1t YWpvci12ZXJzaW9uICgpIAp7IAogICAgZ2NjLXZlcnNpb24gIiRAIiB8IGN1dCAtZjEgLWQuCn0K Z2NjLW1pY3JvLXZlcnNpb24gKCkgCnsgCiAgICBnY2MtZnVsbHZlcnNpb24gIiRAIiB8IGN1dCAt ZjMgLWQuIHwgY3V0IC1mMSAtZC0KfQpnY2MtbWlub3ItdmVyc2lvbiAoKSAKeyAKICAgIGdjYy12 ZXJzaW9uICIkQCIgfCBjdXQgLWYyIC1kLgp9CmdjYy1zcGVjcy1kaXJlY3RpdmUgKCkgCnsgCiAg ICBsb2NhbCBkaXJlY3RpdmUgc3ViZG5hbWUgc3ViZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSIk KF9nY2Mtc3BlY3MtZGlyZWN0aXZlX3JhdyAkMSkiOwogICAgd2hpbGUgW1sgJHtkaXJlY3RpdmV9 ID09IColXCgqXCkqIF1dOyBkbwogICAgICAgIHN1YmRuYW1lPSR7ZGlyZWN0aXZlLyolXCh9Owog ICAgICAgIHN1YmRuYW1lPSR7c3ViZG5hbWUvXCkqfTsKICAgICAgICBzdWJkaXJlY3RpdmU9IiQo X2djYy1zcGVjcy1kaXJlY3RpdmVfcmF3ICR7c3ViZG5hbWV9KSI7CiAgICAgICAgZGlyZWN0aXZl PSIke2RpcmVjdGl2ZS8vXCUoJHtzdWJkbmFtZX0pLyR7c3ViZGlyZWN0aXZlfX0iOwogICAgZG9u ZTsKICAgIGVjaG8gIiR7ZGlyZWN0aXZlfSI7CiAgICByZXR1cm4gMAp9CmdjYy1zcGVjcy1ub3N0 cmljdCAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVj cy1kaXJlY3RpdmUgY2MxKTsKICAgIHJldHVybiAkKFtbICIke2RpcmVjdGl2ZS9ceyFmc3RyaWN0 LW92ZXJmbG93On0iICE9ICIke2RpcmVjdGl2ZX0iIF1dKQp9CmdjYy1zcGVjcy1ub3cgKCkgCnsg CiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZl IGxpbmtfY29tbWFuZCk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshbm9ub3c6fSIg IT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXNwZWNzLXBpZSAoKSAKeyAKICAgIGxvY2FsIGRp cmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2MxKTsKICAgIHJl dHVybiAkKFtbICIke2RpcmVjdGl2ZS9ceyFub3BpZTp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkK fQpnY2Mtc3BlY3MtcmVscm8gKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3Rp dmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICByZXR1cm4gJChbWyAi JHtkaXJlY3RpdmUvXHshbm9yZWxybzp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXSkKfQpnY2Mtc3Bl Y3Mtc3NwICgpIAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2NjLXNw ZWNzLWRpcmVjdGl2ZSBjYzEpOwogICAgcmV0dXJuICQoW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1z dGFjay1wcm90ZWN0b3I6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXNwZWNzLXNzcC10 by1hbGwgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3Bl Y3MtZGlyZWN0aXZlIGNjMSk7CiAgICByZXR1cm4gJChbWyAiJHtkaXJlY3RpdmUvXHshZm5vLXN0 YWNrLXByb3RlY3Rvci1hbGw6fSIgIT0gIiR7ZGlyZWN0aXZlfSIgXV0pCn0KZ2NjLXZlcnNpb24g KCkgCnsgCiAgICBnY2MtZnVsbHZlcnNpb24gIiRAIiB8IGN1dCAtZjEsMiAtZC4KfQpnZW5fdXNy X2xkc2NyaXB0ICgpIAp7IAogICAgbG9jYWwgbGliIGxpYmRpcj0kKGdldF9saWJkaXIpIG91dHB1 dF9mb3JtYXQ9IiI7CiAgICBkb2RpciAvdXNyLyR7bGliZGlyfTsKICAgIG91dHB1dF9mb3JtYXQ9 JCgkKHRjLWdldENDKSAke0NGTEFHU30gJHtMREZMQUdTfSAtV2wsLS12ZXJib3NlIDI+JjEgfCBz ZWQgLW4gJ3MvXk9VVFBVVF9GT1JNQVQoIlwoW14iXSpcKSIsLiovXDEvcCcpOwogICAgW1sgLW4g JHtvdXRwdXRfZm9ybWF0fSBdXSAmJiBvdXRwdXRfZm9ybWF0PSJPVVRQVVRfRk9STUFUICggJHtv dXRwdXRfZm9ybWF0fSApIjsKICAgIGZvciBsaWIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgaWYg W1sgJHtVU0VSTEFORH0gPT0gIkRhcndpbiIgXV07IHRoZW4KICAgICAgICAgICAgZXdhcm4gIk5v dCBjcmVhdGluZyBmYWtlIGR5bmFtaWMgbGlicmFyeSBmb3IgJGxpYiBvbiBEYXJ3aW47IjsKICAg ICAgICAgICAgZXdhcm4gIm1ha2luZyBhIHN5bWxpbmsgaW5zdGVhZC4iOwogICAgICAgICAgICBk b3N5bSAiLyR7bGliZGlyfS8ke2xpYn0iICIvdXNyLyR7bGliZGlyfS8ke2xpYn0iOwogICAgICAg IGVsc2UKICAgICAgICAgICAgY2F0ID4gIiR7RH0vdXNyLyR7bGliZGlyfS8ke2xpYn0iICA8PC1F TkRfTERTQ1JJUFQKLyogR05VIGxkIHNjcmlwdAogICBTaW5jZSBHZW50b28gaGFzIGNyaXRpY2Fs IGR5bmFtaWMgbGlicmFyaWVzCiAgIGluIC9saWIsIGFuZCB0aGUgc3RhdGljIHZlcnNpb25zIGlu IC91c3IvbGliLAogICB3ZSBuZWVkIHRvIGhhdmUgYSAiZmFrZSIgZHluYW1pYyBsaWIgaW4gL3Vz ci9saWIsCiAgIG90aGVyd2lzZSB3ZSBydW4gaW50byBsaW5raW5nIHByb2JsZW1zLgoKICAgU2Vl IGJ1ZyBodHRwOi8vYnVncy5nZW50b28ub3JnLzQ0MTEgZm9yIG1vcmUgaW5mby4KICovCiR7b3V0 cHV0X2Zvcm1hdH0KR1JPVVAgKCAvJHtsaWJkaXJ9LyR7bGlifSApCkVORF9MRFNDUklQVAoKICAg ICAgICBmaQogICAgICAgIGZwZXJtcyBhK3ggIi91c3IvJHtsaWJkaXJ9LyR7bGlifSIgfHwgZGll ICJjb3VsZCBub3QgY2hhbmdlIHBlcm1zIG9uICR7bGlifSI7CiAgICBkb25lCn0KZ2VuZXJhdGVf bW9kdWxlc2QgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsK ICAgIGxvY2FsIGN1cnJtX3BhdGggY3Vycm0gY3Vycm1fdCB0IG15SUZTIG15VkFSOwogICAgbG9j YWwgbW9kdWxlX2RvY3MgbW9kdWxlX2VuYWJsZWQgbW9kdWxlX2FsaWFzZXMgbW9kdWxlX2FkZGl0 aW9ucyBtb2R1bGVfZXhhbXBsZXMgbW9kdWxlX21vZGluZm8gbW9kdWxlX29wdHM7CiAgICBmb3Ig Y3Vycm1fcGF0aCBpbiAke0B9OwogICAgZG8KICAgICAgICBjdXJybT0ke2N1cnJtX3BhdGgvLypc L307CiAgICAgICAgY3Vycm09JChlY2hvICR7Y3Vycm19IHwgdHIgJ1s6bG93ZXI6XScgJ1s6dXBw ZXI6XScpOwogICAgICAgIGN1cnJtX3Q9JHtjdXJybX07CiAgICAgICAgd2hpbGUgW1sgLXogJHtj dXJybV90Ly8qLSp9IF1dOyBkbwogICAgICAgICAgICBjdXJybV90PSR7Y3Vycm1fdC8tL199Owog ICAgICAgIGRvbmU7CiAgICAgICAgbW9kdWxlX2RvY3M9IiQoZXZhbCBlY2hvIFwke01PRFVMRVNE XyR7Y3Vycm1fdH1fRE9DU30pIjsKICAgICAgICBtb2R1bGVfZW5hYmxlZD0iJChldmFsIGVjaG8g XCR7TU9EVUxFU0RfJHtjdXJybV90fV9FTkFCTEVEfSkiOwogICAgICAgIG1vZHVsZV9hbGlhc2Vz PSIkKGV2YWwgZWNobyBcJHsjTU9EVUxFU0RfJHtjdXJybV90fV9BTElBU0VTWypdfSkiOwogICAg ICAgIG1vZHVsZV9hZGRpdGlvbnM9IiQoZXZhbCBlY2hvIFwkeyNNT0RVTEVTRF8ke2N1cnJtX3R9 X0FERElUSU9OU1sqXX0pIjsKICAgICAgICBtb2R1bGVfZXhhbXBsZXM9IiQoZXZhbCBlY2hvIFwk eyNNT0RVTEVTRF8ke2N1cnJtX3R9X0VYQU1QTEVTWypdfSkiOwogICAgICAgIFtbICR7bW9kdWxl X2FsaWFzZXN9IC1lcSAwIF1dICYmIHVuc2V0IG1vZHVsZV9hbGlhc2VzOwogICAgICAgIFtbICR7 bW9kdWxlX2FkZGl0aW9uc30gLWVxIDAgXV0gJiYgdW5zZXQgbW9kdWxlX2FkZGl0aW9uczsKICAg ICAgICBbWyAke21vZHVsZV9leGFtcGxlc30gLWVxIDAgXV0gJiYgdW5zZXQgbW9kdWxlX2V4YW1w bGVzOwogICAgICAgIFtbICR7bW9kdWxlX2VuYWJsZWR9ID09IG5vIF1dICYmIHJldHVybiAwOwog ICAgICAgIGZvciB0IGluICR7IW1vZHVsZV8qfTsKICAgICAgICBkbwogICAgICAgICAgICBbWyAt eiAkeyF0fSBdXSAmJiB1bnNldCAke3R9OwogICAgICAgIGRvbmU7CiAgICAgICAgW1sgLXogJHsh bW9kdWxlXyp9IF1dICYmIHJldHVybiAwOwogICAgICAgIG1vZHVsZV9tb2RpbmZvPSIkKG1vZGlu Zm8gLXAgJHtjdXJybV9wYXRofS4ke0tWX09CSn0pIjsKICAgICAgICBtb2R1bGVfY29uZmlnPSIk e1R9L21vZHVsZXNkLSR7Y3Vycm19IjsKICAgICAgICBlYmVnaW4gIlByZXBhcmluZyBmaWxlIGZv ciBtb2R1bGVzLmQiOwogICAgICAgIGVjaG8gIiMgbW9kdWxlcy5kIGNvbmZpZ3VyYXRpb24gZmls ZSBmb3IgJHtjdXJybX0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgW1sgLW4gJHttb2R1 bGVfZG9jc30gXV0gJiYgZWNobyAiIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiBwbGVhc2UgcmVhZDoi ID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgZm9yIHQgaW4gJHttb2R1bGVfZG9jc307CiAg ICAgICAgZG8KICAgICAgICAgICAgZWNobyAiIyAgICAke3QvLypcL30iID4+ICR7bW9kdWxlX2Nv bmZpZ307CiAgICAgICAgZG9uZTsKICAgICAgICBlY2hvID4+ICR7bW9kdWxlX2NvbmZpZ307CiAg ICAgICAgaWYgW1sgJHttb2R1bGVfYWxpYXNlc30gLWd0IDAgXV07IHRoZW4KICAgICAgICAgICAg ZWNobyAiIyBJbnRlcm5hbCBBbGlhc2VzIC0gRG8gbm90IGVkaXQiID4+ICR7bW9kdWxlX2NvbmZp Z307CiAgICAgICAgICAgIGVjaG8gIiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA+ PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAgICBmb3IgKCh0PTA7IHQ8JHttb2R1bGVfYWxp YXNlc307IHQrKykpCiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBlY2hvICJhbGlhcyAk KGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9BTElBU0VTWyR0XX0pIiA+PiAke21vZHVs ZV9jb25maWd9OwogICAgICAgICAgICBkb25lOwogICAgICAgICAgICBlY2hvICcnID4+ICR7bW9k dWxlX2NvbmZpZ307CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgLW4gJHttb2R1bGVfbW9kaW5m b30gXV07IHRoZW4KICAgICAgICAgICAgZWNobyA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAg ICAgICBlY2hvICIjIENvbmZpZ3VyYWJsZSBtb2R1bGUgcGFyYW1ldGVycyIgPj4gJHttb2R1bGVf Y29uZmlnfTsKICAgICAgICAgICAgZWNobyAiIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgIG15SUZTPSIke0lGU30iOwogICAg ICAgICAgICBJRlM9IiQoZWNobyAtZW4gIlxuXGIiKSI7CiAgICAgICAgICAgIGZvciB0IGluICR7 bW9kdWxlX21vZGluZm99OwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgbXlWQVI9IiQo ZWNobyAke3QjKjp9IHwgZ3JlcCAtZSAiIFswLTldWyA9XSIgfCBzZWQgInM6LipcKFswMV1bPSBd XCkuKjpcMToiKSI7CiAgICAgICAgICAgICAgICBpZiBbWyAtbiAke215VkFSfSBdXTsgdGhlbgog ICAgICAgICAgICAgICAgICAgIG1vZHVsZV9vcHRzPSIke21vZHVsZV9vcHRzfSAke3QlJToqfTok e215VkFSfSI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGVjaG8gLWUgIiMg JHt0JSU6Kn06XHQke3QjKjp9IiA+PiAke21vZHVsZV9jb25maWd9OwogICAgICAgICAgICBkb25l OwogICAgICAgICAgICBJRlM9IiR7bXlJRlN9IjsKICAgICAgICAgICAgZWNobyAnJyA+PiAke21v ZHVsZV9jb25maWd9OwogICAgICAgIGZpOwogICAgICAgIGlmIFtbICQoZXZhbCBlY2hvIFwke01P RFVMRVNEXyR7Y3Vycm19X0FMSUFTRVNbMF19KSA9PSBndWVzcyBdXTsgdGhlbgogICAgICAgICAg ICBpZiBbWyAtbiAke21vZHVsZV9vcHRzfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyAi IyBGb3IgRXhhbXBsZS4uLiIgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAgICAgICAgIGVj aG8gIiMgLS0tLS0tLS0tLS0tLS0iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgICAg ICBmb3IgdCBpbiAke21vZHVsZV9vcHRzfTsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAg ICAgICAgICAgZWNobyAiIyBvcHRpb25zICR7Y3Vycm19ICR7dC8vOip9PSR7dC8vKjp9IiA+PiAk e21vZHVsZV9jb25maWd9OwogICAgICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgICAgIGVj aG8gJycgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICAgICAgZmk7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBpZiBbWyAke21vZHVsZV9leGFtcGxlc30gLWd0IDAgXV07IHRoZW4KICAgICAg ICAgICAgICAgIGVjaG8gIiMgRm9yIEV4YW1wbGUuLi4iID4+ICR7bW9kdWxlX2NvbmZpZ307CiAg ICAgICAgICAgICAgICBlY2hvICIjIC0tLS0tLS0tLS0tLS0tIiA+PiAke21vZHVsZV9jb25maWd9 OwogICAgICAgICAgICAgICAgZm9yICgodD0wOyB0PCR7bW9kdWxlX2V4YW1wbGVzfTsgdCsrKSkK ICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZWNobyAib3B0aW9ucyAkKGV2 YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9FWEFNUExFU1skdF19KSIgPj4gJHttb2R1bGVf Y29uZmlnfTsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICBlY2hvICcnID4+ ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgICAgIGlm IFtbICR7bW9kdWxlX2FkZGl0aW9uc30gLWd0IDAgXV07IHRoZW4KICAgICAgICAgICAgZm9yICgo dD0wOyB0PCR7bW9kdWxlX2FkZGl0aW9uc307IHQrKykpCiAgICAgICAgICAgIGRvCiAgICAgICAg ICAgICAgICBlY2hvICIkKGV2YWwgZWNobyBcJHtNT0RVTEVTRF8ke2N1cnJtfV9BRERJVElPTlNb JHRdfSkiID4+ICR7bW9kdWxlX2NvbmZpZ307CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAg IGVjaG8gJycgPj4gJHttb2R1bGVfY29uZmlnfTsKICAgICAgICBmaTsKICAgICAgICBpZiBrZXJu ZWxfaXMgZ2UgMiA2OyB0aGVuCiAgICAgICAgICAgIGluc2ludG8gL2V0Yy9tb2Rwcm9iZS5kOwog ICAgICAgIGVsc2UKICAgICAgICAgICAgaW5zaW50byAvZXRjL21vZHVsZXMuZDsKICAgICAgICBm aTsKICAgICAgICBuZXdpbnMgJHttb2R1bGVfY29uZmlnfSAke2N1cnJtX3BhdGgvLypcL307CiAg ICAgICAgW1sgLW4gJHttb2R1bGVfZG9jc30gXV0gJiYgZG9kb2MgJHttb2R1bGVfZG9jc307CiAg ICBkb25lOwogICAgZWVuZCAwOwogICAgcmV0dXJuIDAKfQpnZXQtS0VSTkVMX0NDICgpIAp7IAog ICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBpZiBbWyAtbiAke0tF Uk5FTF9DQ30gXV07IHRoZW4KICAgICAgICBlY2hvICIke0tFUk5FTF9DQ30iOwogICAgICAgIHJl dHVybjsKICAgIGZpOwogICAgbG9jYWwga2VybmVsX2NjOwogICAgaWYgWyAtbiAiJHtLRVJORUxf QUJJfSIgXTsgdGhlbgogICAgICAgIGtlcm5lbF9jYz0iJCh0Yy1nZXRDQyAkKEFCST0ke0tFUk5F TF9BQkl9IGdldF9hYmlfQ0hPU1QpKSI7CiAgICBlbHNlCiAgICAgICAga2VybmVsX2NjPSQodGMt Z2V0Q0MpOwogICAgZmk7CiAgICBlY2hvICIke2tlcm5lbF9jY30iCn0KZ2V0LWZsYWcgKCkgCnsg CiAgICBsb2NhbCBmIGZpbmRmbGFnPSIkMSI7CiAgICBmb3IgZiBpbiAke0NGTEFHU30gJHtDWFhG TEFHU30gJHtGRkxBR1N9ICR7RkNGTEFHU307CiAgICBkbwogICAgICAgIGlmIFsgIiR7Zi8ke2Zp bmRmbGFnfX0iICE9ICIke2Z9IiBdOyB0aGVuCiAgICAgICAgICAgIHByaW50ZiAiJXNcbiIgIiR7 Zi8tJHtmaW5kZmxhZ309fSI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGZpOwogICAg ZG9uZTsKICAgIHJldHVybiAxCn0KZ2V0X2FiaV9BU0ZMQUdTICgpIAp7IAogICAgZ2V0X2FiaV92 YXIgQVNGTEFHUyAiJEAiCn0KZ2V0X2FiaV9DREVGSU5FICgpIAp7IAogICAgZ2V0X2FiaV92YXIg Q0RFRklORSAiJEAiCn0KZ2V0X2FiaV9DRkxBR1MgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBDRkxB R1MgIiRAIgp9CmdldF9hYmlfQ0hPU1QgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBDSE9TVCAiJEAi Cn0KZ2V0X2FiaV9DVEFSR0VUICgpIAp7IAogICAgZ2V0X2FiaV92YXIgQ1RBUkdFVCAiJEAiCn0K Z2V0X2FiaV9GQUtFX1RBUkdFVFMgKCkgCnsgCiAgICBnZXRfYWJpX3ZhciBGQUtFX1RBUkdFVFMg IiRAIgp9CmdldF9hYmlfTERGTEFHUyAoKSAKeyAKICAgIGdldF9hYmlfdmFyIExERkxBR1MgIiRA Igp9CmdldF9hYmlfTElCRElSICgpIAp7IAogICAgZ2V0X2FiaV92YXIgTElCRElSICIkQCIKfQpn ZXRfYWJpX3ZhciAoKSAKeyAKICAgIGxvY2FsIGZsYWc9JDE7CiAgICBsb2NhbCBhYmk7CiAgICBp ZiBbICQjIC1ndCAxIF07IHRoZW4KICAgICAgICBhYmk9JHsyfTsKICAgIGVsc2UKICAgICAgICBp ZiBbIC1uICIke0FCSX0iIF07IHRoZW4KICAgICAgICAgICAgYWJpPSR7QUJJfTsKICAgICAgICBl bHNlCiAgICAgICAgICAgIGlmIFsgLW4gIiR7REVGQVVMVF9BQkl9IiBdOyB0aGVuCiAgICAgICAg ICAgICAgICBhYmk9JHtERUZBVUxUX0FCSX07CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgIGFiaT0iZGVmYXVsdCI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAg ICBsb2NhbCB2YXI9IiR7ZmxhZ31fJHthYml9IjsKICAgIGVjaG8gJHshdmFyfQp9CmdldF9hZnRl cl9tYWpvcl92ZXJzaW9uICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb247 CiAgICBlY2hvICQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDItICIkezE6LSR7UFZ9fSIg KTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9CmdldF9hbGxfYWJpcyAoKSAK eyAKICAgIGxvY2FsIG9yZGVyPSIiOwogICAgaWYgW1sgLXogJHtNVUxUSUxJQl9BQklTfSBdXTsg dGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAwOwogICAgZmk7CiAg ICBmb3IgeCBpbiAke01VTFRJTElCX0FCSVN9OwogICAgZG8KICAgICAgICBpZiBbWyAke3h9ICE9 ICR7REVGQVVMVF9BQkl9IF1dOyB0aGVuCiAgICAgICAgICAgIG9yZGVyPSIke29yZGVyOiske29y ZGVyfSB9JHt4fSI7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgb3JkZXI9IiR7b3JkZXI6KyR7 b3JkZXJ9IH0ke0RFRkFVTFRfQUJJfSI7CiAgICBlY2hvICR7b3JkZXJ9OwogICAgcmV0dXJuIDAK fQpnZXRfYWxsX2xpYmRpcnMgKCkgCnsgCiAgICBsb2NhbCBsaWJkaXJzPSJsaWIiOwogICAgbG9j YWwgYWJpOwogICAgbG9jYWwgZGlyOwogICAgZm9yIGFiaSBpbiAke01VTFRJTElCX0FCSVN9Owog ICAgZG8KICAgICAgICBbICIkKGdldF9hYmlfTElCRElSICR7YWJpfSkiICE9ICJsaWIiIF0gJiYg bGliZGlycz0iJHtsaWJkaXJzfSAkKGdldF9hYmlfTElCRElSICR7YWJpfSkiOwogICAgZG9uZTsK ICAgIGVjaG8gIiR7bGliZGlyc30iCn0KZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgKCkgCnsg CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIHZlcl9zdHI9JHsx Oi0ke1BWfX0gcmVzdWx0IHJlc3VsdF9pZHg9MDsKICAgIHJlc3VsdD0oKTsKICAgIGlmIFtbICIk e1ZFUlNJT05BVE9SX0NBQ0hFX1ZFUl9TVFJ9IiA9PSAiJHt2ZXJfc3RyfSIgXV07IHRoZW4KICAg ICAgICBlY2hvICR7VkVSU0lPTkFUT1JfQ0FDSEVfUkVTVUxUfTsKICAgICAgICBfX3ZlcnNpb25h dG9yX3Nob3B0X3RvZ2dsZSBvZmY7CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBleHBvcnQg VkVSU0lPTkFUT1JfQ0FDSEVfVkVSX1NUUj0iJHt2ZXJfc3RyfSI7CiAgICB3aGlsZSBbWyAtbiAi JHZlcl9zdHIiIF1dOyBkbwogICAgICAgIGNhc2UgIiR7dmVyX3N0cjowOjF9IiBpbiAKICAgICAg ICAgICAgW1s6ZGlnaXQ6XV0pCiAgICAgICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhdPSIk e3Zlcl9zdHIlJVteWzpkaWdpdDpdXSp9IjsKICAgICAgICAgICAgICAgIHZlcl9zdHI9IiR7dmVy X3N0ciMjKyhbWzpkaWdpdDpdXSl9IjsKICAgICAgICAgICAgICAgIHJlc3VsdF9pZHg9JCgoJHJl c3VsdF9pZHggKyAxKSkKICAgICAgICAgICAgOzsKICAgICAgICAgICAgWy1fLl0pCiAgICAgICAg ICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhdPSIke3Zlcl9zdHI6MDoxfSI7CiAgICAgICAgICAg ICAgICB2ZXJfc3RyPSIke3Zlcl9zdHI6MX0iOwogICAgICAgICAgICAgICAgcmVzdWx0X2lkeD0k KCgkcmVzdWx0X2lkeCArIDEpKQogICAgICAgICAgICA7OwogICAgICAgICAgICBbWzphbHBoYTpd XSkKICAgICAgICAgICAgICAgIGxvY2FsIG5vdF9tYXRjaD0iJHt2ZXJfc3RyIyMrKFtbOmFscGhh Ol1dKSooW1s6ZGlnaXQ6XV0pfSI7CiAgICAgICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhd PSR7dmVyX3N0cjowOiQoKCR7I3Zlcl9zdHJ9IC0gJHsjbm90X21hdGNofSkpfTsKICAgICAgICAg ICAgICAgIHZlcl9zdHI9IiR7bm90X21hdGNofSI7CiAgICAgICAgICAgICAgICByZXN1bHRfaWR4 PSQoKCRyZXN1bHRfaWR4ICsgMSkpCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAg ICAgICAgICAgICByZXN1bHRbJHJlc3VsdF9pZHhdPSIke3Zlcl9zdHI6MDoxfSI7CiAgICAgICAg ICAgICAgICB2ZXJfc3RyPSIke3Zlcl9zdHI6MX0iOwogICAgICAgICAgICAgICAgcmVzdWx0X2lk eD0kKCgkcmVzdWx0X2lkeCArIDEpKQogICAgICAgICAgICA7OwogICAgICAgIGVzYWM7CiAgICBk b25lOwogICAgZXhwb3J0IFZFUlNJT05BVE9SX0NBQ0hFX1JFU1VMVD0iJHtyZXN1bHRbQF19IjsK ICAgIGVjaG8gJHtyZXN1bHRbQF19OwogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2Zm Cn0KZ2V0X2JtYWtlICgpIAp7IAogICAgaWYgW1sgJHtVU0VSTEFORH0gPT0gKkJTRCBdXTsgdGhl bgogICAgICAgIGVjaG8gbWFrZTsKICAgIGVsc2UKICAgICAgICBpZiBbWyAke1VTRVJMQU5EfSA9 PSAiRGFyd2luIiBdXTsgdGhlbgogICAgICAgICAgICBlY2hvIGJzZG1ha2U7CiAgICAgICAgZWxz ZQogICAgICAgICAgICBlY2hvIHBtYWtlOwogICAgICAgIGZpOwogICAgZmkKfQpnZXRfaW5zdGFs bF9hYmlzICgpIAp7IAogICAgbG9jYWwgb3JkZXI9IiI7CiAgICBpZiBbWyAteiAke01VTFRJTElC X0FCSVN9IF1dOyB0aGVuCiAgICAgICAgZWNobyAiZGVmYXVsdCI7CiAgICAgICAgcmV0dXJuIDA7 CiAgICBmaTsKICAgIGlmIFtbICR7RU1VTFRJTElCX1BLR30gPT0gInRydWUiIF1dOyB0aGVuCiAg ICAgICAgZm9yIHggaW4gJHtNVUxUSUxJQl9BQklTfTsKICAgICAgICBkbwogICAgICAgICAgICBp ZiBbWyAke3h9ICE9ICIke0RFRkFVTFRfQUJJfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGhh c3EgJHt4fSAke0FCSV9ERU5ZfSB8fCBvcmRlcmE9IiR7b3JkZXJhfSAke3h9IjsKICAgICAgICAg ICAgZmk7CiAgICAgICAgZG9uZTsKICAgICAgICBoYXNxICR7REVGQVVMVF9BQkl9ICR7QUJJX0RF Tll9IHx8IG9yZGVyPSIke29yZGVyYX0gJHtERUZBVUxUX0FCSX0iOwogICAgICAgIGlmIFtbIC1u ICR7QUJJX0FMTE9XfSBdXTsgdGhlbgogICAgICAgICAgICBsb2NhbCBvcmRlcmE9IiI7CiAgICAg ICAgICAgIGZvciB4IGluICR7b3JkZXJ9OwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAg aWYgaGFzcSAke3h9ICR7QUJJX0FMTE9XfTsgdGhlbgogICAgICAgICAgICAgICAgICAgIG9yZGVy YT0iJHtvcmRlcmF9ICR7eH0iOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGRvbmU7 CiAgICAgICAgICAgIG9yZGVyPSR7b3JkZXJhfTsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAg ICBvcmRlcj0ke0RFRkFVTFRfQUJJfTsKICAgIGZpOwogICAgaWYgW1sgLXogJHtvcmRlcn0gXV07 IHRoZW4KICAgICAgICBkaWUgIlRoZSBBQkkgbGlzdCBpcyBlbXB0eS4gIEFyZSB5b3UgdXNpbmcg YSBwcm9wZXIgbXVsdGlsaWIgcHJvZmlsZT8gIFBlcmhhcHMgeW91ciBVU0UgZmxhZ3Mgb3IgTVVM VElMSUJfQUJJUyBhcmUgdG9vIHJlc3RyaWN0aXZlIGZvciB0aGlzIHBhY2thZ2UuIjsKICAgIGZp OwogICAgZWNobyAke29yZGVyfTsKICAgIHJldHVybiAwCn0KZ2V0X2xhc3RfdmVyc2lvbl9jb21w b25lbnRfaW5kZXggKCkgCnsgCiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAg IGVjaG8gJCgoICQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X2NvdW50ICIkezE6LSR7UFZ9fSIgKSAt IDEgKSk7CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYKfQpnZXRfbGliZGlyICgp IAp7IAogICAgbG9jYWwgQ09ORl9MSUJESVI7CiAgICBpZiBbIC1uICIke0NPTkZfTElCRElSX09W RVJSSURFfSIgXTsgdGhlbgogICAgICAgIGVjaG8gJHtDT05GX0xJQkRJUl9PVkVSUklERX07CiAg ICBlbHNlCiAgICAgICAgZ2V0X2FiaV9MSUJESVI7CiAgICBmaQp9CmdldF9saWJkaXJfb3ZlcnJp ZGUgKCkgCnsgCiAgICBpZiBoYXNfbXVsdGlsaWJfcHJvZmlsZTsgdGhlbgogICAgICAgIGVlcnJv ciAiZ2V0X2xpYmRpcl9vdmVycmlkZSBjYWxsZWQsIGJ1dCBpdCBzaG91bGRuJ3QgYmUgbmVlZGVk IHdpdGggdGhlIG5ldyBtdWx0aWxpYiBhcHByb2FjaC4gIFBsZWFzZSBmaWxlIGEgYnVnIGF0IGh0 dHA6Ly9idWdzLmdlbnRvby5vcmcgYW5kIGFzc2lnbiBpdCB0byBlcmFkaWNhdG9yQGdlbnRvby5v cmciOwogICAgICAgIGV4aXQgMTsKICAgIGZpOwogICAgQ09ORl9MSUJESVI9IiQxIjsKICAgIENP TkZfTElCRElSX09WRVJSSURFPSIkMSI7CiAgICBMSUJESVJfZGVmYXVsdD0iJDEiCn0KZ2V0X2xp Ym5hbWUgKCkgCnsgCiAgICBsb2NhbCBsaWJuYW1lOwogICAgbG9jYWwgdmVyPSQxOwogICAgY2Fz ZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWN5Z3dpbiB8IG1pbmd3KiB8ICotbWluZ3cqKQogICAg ICAgICAgICBsaWJuYW1lPSJkbGwiCiAgICAgICAgOzsKICAgICAgICAqLWRhcndpbiopCiAgICAg ICAgICAgIGxpYm5hbWU9ImR5bGliIgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAg bGlibmFtZT0ic28iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBpZiBbWyAteiAkKiBdXTsgdGhl bgogICAgICAgIGVjaG8gIi4ke2xpYm5hbWV9IjsKICAgIGVsc2UKICAgICAgICBmb3IgdmVyIGlu ICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgY2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAg ICAgICAgICotZGFyd2luKikKICAgICAgICAgICAgICAgICAgICBlY2hvICIuJHt2ZXJ9LiR7bGli bmFtZX0iCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgKikKICAgICAgICAgICAg ICAgICAgICBlY2hvICIuJHtsaWJuYW1lfS4ke3Zlcn0iCiAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICBlc2FjOwogICAgICAgIGRvbmU7CiAgICBmaQp9CmdldF9sb2NhbHZlcnNpb24gKCkg CnsgCiAgICBsb2NhbCBsdl9saXN0IGkgeDsKICAgIGZvciBpIGluICQobHMgJHsxfS9sb2NhbHZl cnNpb24qIDI+L2Rldi9udWxsKTsKICAgIGRvCiAgICAgICAgW1sgLW4gJHtpLy8qfip9IF1dICYm IGx2X2xpc3Q9IiR7bHZfbGlzdH0gJHtpfSI7CiAgICBkb25lOwogICAgZm9yIGkgaW4gJHtsdl9s aXN0fTsKICAgIGRvCiAgICAgICAgeD0iJHt4fSQoPCR7aX0pIjsKICAgIGRvbmU7CiAgICB4PSR7 eC8gL307CiAgICBlY2hvICR7eH0KfQpnZXRfbWFqb3JfdmVyc2lvbiAoKSAKeyAKICAgIF9fdmVy c2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9uOwogICAgbG9jYWwgYzsKICAgIGM9KCQoZ2V0X2FsbF92 ZXJzaW9uX2NvbXBvbmVudHMgIiR7MTotJHtQVn19IiApKTsKICAgIGVjaG8gJHtjWzBdfTsKICAg IF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9CmdldF9tbF9pbmNkaXIgKCkgCnsgCiAg ICBsb2NhbCBkaXI9L3Vzci9pbmNsdWRlOwogICAgaWYgW1sgJCMgLWd0IDAgXV07IHRoZW4KICAg ICAgICBpbmNkaXI9JDE7CiAgICAgICAgc2hpZnQ7CiAgICBmaTsKICAgIGlmIFtbIC16ICIke01V TFRJTElCX0FCSVN9IiBdXTsgdGhlbgogICAgICAgIGVjaG8gJHtpbmNkaXJ9OwogICAgICAgIHJl dHVybiAwOwogICAgZmk7CiAgICBsb2NhbCBhYmk9JHtBQkktJHtERUZBVUxUX0FCSX19OwogICAg aWYgW1sgJCMgLWd0IDAgXV07IHRoZW4KICAgICAgICBhYmk9JDE7CiAgICAgICAgc2hpZnQ7CiAg ICBmaTsKICAgIGlmIFtbIC1kICIke2Rpcn0vZ2VudG9vLW11bHRpbGliLyR7YWJpfSIgXV07IHRo ZW4KICAgICAgICBlY2hvICR7ZGlyfS9nZW50b28tbXVsdGlsaWIvJHthYml9OwogICAgZWxzZQog ICAgICAgIGVjaG8gJHtkaXJ9OwogICAgZmkKfQpnZXRfbW91bnRzICgpIAp7IAogICAgbG9jYWwg cG9pbnQ9IG5vZGU9IGZzPSBvcHRzPSBmb289OwogICAgaWYgW1sgJCh1bmFtZSAtcykgPT0gIkxp bnV4IiBdXTsgdGhlbgogICAgICAgIHdoaWxlIHJlYWQgbm9kZSBwb2ludCBmcyBvcHRzIGZvbzsg ZG8KICAgICAgICAgICAgZWNobyAiJHtwb2ludH0gJHtub2RlfSAke2ZzfSAke29wdHN9IjsKICAg ICAgICBkb25lIDwgL3Byb2MvbW91bnRzOwogICAgICAgIHJldHVybjsKICAgIGZpOwogICAgbG9j YWwgSUZTPScJJzsKICAgIExDX0FMTD1DIG1vdW50IC1wIHwgd2hpbGUgcmVhZCBub2RlIHBvaW50 IGZzIGZvbzsgZG8KICAgICAgICBvcHRzPSR7ZnMjKiB9OwogICAgICAgIGZzPSR7ZnMlJSAqfTsK ICAgICAgICBlY2hvICIke3BvaW50Ly8gL1wwNDB9ICR7bm9kZS8vIC9cMDQwfSAke2ZzJSUgKn0g JHtvcHRzLy8gL1wwNDB9IjsKICAgIGRvbmUKfQpnZXRfbXVsdGlsaWJkaXIgKCkgCnsgCiAgICBp ZiBoYXNfbXVsdGlsaWJfcHJvZmlsZTsgdGhlbgogICAgICAgIGVlcnJvciAiZ2V0X211bHRpbGli ZGlyIGNhbGxlZCwgYnV0IGl0IHNob3VsZG4ndCBiZSBuZWVkZWQgd2l0aCB0aGUgbmV3IG11bHRp bGliIGFwcHJvYWNoLiAgUGxlYXNlIGZpbGUgYSBidWcgYXQgaHR0cDovL2J1Z3MuZ2VudG9vLm9y ZyBhbmQgYXNzaWduIGl0IHRvIGVyYWRpY2F0b3JAZ2VudG9vLm9yZyI7CiAgICAgICAgZXhpdCAx OwogICAgZmk7CiAgICBlY2hvICR7Q09ORl9NVUxUSUxJQkRJUjo9bGliMzJ9Cn0KZ2V0X3J1bm5p bmdfdmVyc2lvbiAoKSAKeyAKICAgIEtWX0ZVTEw9JCh1bmFtZSAtcik7CiAgICBpZiBbWyAtZiAk e1JPT1R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vc291cmNlL01ha2VmaWxlIF1dOyB0aGVuCiAg ICAgICAgS0VSTkVMX0RJUj0kKHJlYWRsaW5rIC1mICR7Uk9PVH0vbGliL21vZHVsZXMvJHtLVl9G VUxMfS9zb3VyY2UpOwogICAgICAgIHVuc2V0IEtWX0ZVTEw7CiAgICAgICAgZ2V0X3ZlcnNpb247 CiAgICAgICAgcmV0dXJuICQ/OwogICAgZWxzZQogICAgICAgIGlmIFtbIC1mICR7Uk9PVH0vbGli L21vZHVsZXMvJHtLVl9GVUxMfS9idWlsZC9NYWtlZmlsZSBdXTsgdGhlbgogICAgICAgICAgICBL RVJORUxfRElSPSQocmVhZGxpbmsgLWYgJHtST09UfS9saWIvbW9kdWxlcy8ke0tWX0ZVTEx9L2J1 aWxkKTsKICAgICAgICAgICAgdW5zZXQgS1ZfRlVMTDsKICAgICAgICAgICAgZ2V0X3ZlcnNpb247 CiAgICAgICAgICAgIHJldHVybiAkPzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEtWX01BSk9S PSQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDEgJHtLVl9GVUxMfSk7CiAgICAgICAgICAg IEtWX01JTk9SPSQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDIgJHtLVl9GVUxMfSk7CiAg ICAgICAgICAgIEtWX1BBVENIPSQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDMtICR7S1Zf RlVMTH0pOwogICAgICAgICAgICBLVl9QQVRDSD0ke0tWX1BBVENILy8tKn07CiAgICAgICAgICAg IFtbIC1uICR7S1ZfRlVMTCMqLX0gXV0gJiYgW1sgLW4gJHtLVl9GVUxMLy8ke0tWX0ZVTEwjKi19 fSBdXSAmJiBLVl9FWFRSQT0iLSR7S1ZfRlVMTCMqLX0iOwogICAgICAgIGZpOwogICAgZmk7CiAg ICByZXR1cm4gMAp9CmdldF92ZXJzaW9uICgpIAp7IAogICAgbG9jYWwga2J1aWxkX291dHB1dDsK ICAgIFsgLW4gIiR7S1ZfRlVMTH0iIF0gJiYgcmV0dXJuIDA7CiAgICB1bnNldCBLVl9ESVI7CiAg ICBxZWluZm8gIkRldGVybWluaW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZSBj b2RlIjsKICAgIFsgLWggIiR7S0VSTkVMX0RJUn0iIF0gJiYgS1ZfRElSPSIkKHJlYWRsaW5rIC1m ICR7S0VSTkVMX0RJUn0pIjsKICAgIFsgLWQgIiR7S0VSTkVMX0RJUn0iIF0gJiYgS1ZfRElSPSIk e0tFUk5FTF9ESVJ9IjsKICAgIGlmIFsgLXogIiR7S1ZfRElSfSIgXTsgdGhlbgogICAgICAgIHFl ZXJyb3IgIlVuYWJsZSB0byBmaW5kIGtlcm5lbCBzb3VyY2VzIGF0ICR7S0VSTkVMX0RJUn0iOwog ICAgICAgIHFlaW5mbyAiVGhpcyBwYWNrYWdlIHJlcXVpcmVzIExpbnV4IHNvdXJjZXMuIjsKICAg ICAgICBpZiBbICIke0tFUk5FTF9ESVJ9IiA9PSAiL3Vzci9zcmMvbGludXgiIF07IHRoZW4KICAg ICAgICAgICAgcWVpbmZvICJQbGVhc2UgbWFrZSBzdXJlIHRoYXQgJHtLRVJORUxfRElSfSBwb2lu dHMgYXQgeW91ciBydW5uaW5nIGtlcm5lbCwgIjsKICAgICAgICAgICAgcWVpbmZvICIob3IgdGhl IGtlcm5lbCB5b3Ugd2lzaCB0byBidWlsZCBhZ2FpbnN0KS4iOwogICAgICAgICAgICBxZWluZm8g IkFsdGVybmF0aXZlbHksIHNldCB0aGUgS0VSTkVMX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0 byB0aGUga2VybmVsIHNvdXJjZXMgbG9jYXRpb24iOwogICAgICAgIGVsc2UKICAgICAgICAgICAg cWVpbmZvICJQbGVhc2UgZW5zdXJlIHRoYXQgdGhlIEtFUk5FTF9ESVIgZW52aXJvbm1lbnQgdmFy aWFibGUgcG9pbnRzIGF0IGZ1bGwgTGludXggc291cmNlcyBvZiB0aGUga2VybmVsIHlvdSB3aXNo IHRvIGNvbXBpbGUgYWdhaW5zdC4iOwogICAgICAgIGZpOwogICAgICAgIHJldHVybiAxOwogICAg Zmk7CiAgICBxZWluZm8gIkZvdW5kIGtlcm5lbCBzb3VyY2UgZGlyZWN0b3J5OiI7CiAgICBxZWlu Zm8gIiAgICAke0tWX0RJUn0iOwogICAgaWYgWyAhIC1zICIke0tWX0RJUn0vTWFrZWZpbGUiIF07 IHRoZW4KICAgICAgICBxZWVycm9yICJDb3VsZCBub3QgZmluZCBhIE1ha2VmaWxlIGluIHRoZSBr ZXJuZWwgc291cmNlIGRpcmVjdG9yeS4iOwogICAgICAgIHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUg dGhhdCAke0tFUk5FTF9ESVJ9IHBvaW50cyB0byBhIGNvbXBsZXRlIHNldCBvZiBMaW51eCBzb3Vy Y2VzIjsKICAgICAgICByZXR1cm4gMTsKICAgIGZpOwogICAgT1VUUFVUX0RJUj0iJHtPVVRQVVRf RElSOi0ke0tCVUlMRF9PVVRQVVR9fSI7CiAgICBrYnVpbGRfb3V0cHV0PSIkKGdldGZpbGV2YXIg S0JVSUxEX09VVFBVVCAke0tWX0RJUn0vTWFrZWZpbGUpIjsKICAgIE9VVFBVVF9ESVI9IiR7T1VU UFVUX0RJUjotJHtrYnVpbGRfb3V0cHV0fX0iOwogICAgS1ZfTUFKT1I9IiQoZ2V0ZmlsZXZhciBW RVJTSU9OICR7S1ZfRElSfS9NYWtlZmlsZSkiOwogICAgS1ZfTUlOT1I9IiQoZ2V0ZmlsZXZhciBQ QVRDSExFVkVMICR7S1ZfRElSfS9NYWtlZmlsZSkiOwogICAgS1ZfUEFUQ0g9IiQoZ2V0ZmlsZXZh ciBTVUJMRVZFTCAke0tWX0RJUn0vTWFrZWZpbGUpIjsKICAgIEtWX0VYVFJBPSIkKGdldGZpbGV2 YXIgRVhUUkFWRVJTSU9OICR7S1ZfRElSfS9NYWtlZmlsZSkiOwogICAgaWYgWyAteiAiJHtLVl9N QUpPUn0iIC1vIC16ICIke0tWX01JTk9SfSIgLW8gLXogIiR7S1ZfUEFUQ0h9IiBdOyB0aGVuCiAg ICAgICAgcWVlcnJvciAiQ291bGQgbm90IGRldGVjdCBrZXJuZWwgdmVyc2lvbi4iOwogICAgICAg IHFlZXJyb3IgIlBsZWFzZSBlbnN1cmUgdGhhdCAke0tFUk5FTF9ESVJ9IHBvaW50cyB0byBhIGNv bXBsZXRlIHNldCBvZiBMaW51eCBzb3VyY2VzLiI7CiAgICAgICAgcmV0dXJuIDE7CiAgICBmaTsK ICAgIFsgIiR7S1ZfTUFKT1J9LiR7S1ZfTUlOT1J9LiR7S1ZfUEFUQ0h9JHtLVl9FWFRSQX0iID09 ICIkKHVuYW1lIC1yKSIgXSAmJiBPVVRQVVRfRElSPSIke09VVFBVVF9ESVI6LS9saWIvbW9kdWxl cy8ke0tWX01BSk9SfS4ke0tWX01JTk9SfS4ke0tWX1BBVENIfSR7S1ZfRVhUUkF9L2J1aWxkfSI7 CiAgICBbIC1oICIke09VVFBVVF9ESVJ9IiBdICYmIEtWX09VVF9ESVI9IiQocmVhZGxpbmsgLWYg JHtPVVRQVVRfRElSfSkiOwogICAgWyAtZCAiJHtPVVRQVVRfRElSfSIgXSAmJiBLVl9PVVRfRElS PSIke09VVFBVVF9ESVJ9IjsKICAgIGlmIFsgLW4gIiR7S1ZfT1VUX0RJUn0iIF07IHRoZW4KICAg ICAgICBxZWluZm8gIkZvdW5kIGtlcm5lbCBvYmplY3QgZGlyZWN0b3J5OiI7CiAgICAgICAgcWVp bmZvICIgICAgJHtLVl9PVVRfRElSfSI7CiAgICAgICAgS1ZfTE9DQUw9IiQoZ2V0X2xvY2FsdmVy c2lvbiAke0tWX09VVF9ESVJ9KSI7CiAgICBmaTsKICAgIEtWX09VVF9ESVI9IiR7S1ZfT1VUX0RJ UjotJHtLVl9ESVJ9fSI7CiAgICBLVl9MT0NBTD0iJHtLVl9MT0NBTH0kKGdldF9sb2NhbHZlcnNp b24gJHtLVl9ESVJ9KSI7CiAgICBpZiBsaW51eF9jb25maWdfZXhpc3RzOyB0aGVuCiAgICAgICAg S1ZfTE9DQUw9IiR7S1ZfTE9DQUx9JChsaW51eF9jaGtjb25maWdfc3RyaW5nIExPQ0FMVkVSU0lP TikiOwogICAgICAgIEtWX0xPQ0FMPSIke0tWX0xPQ0FMLy9cIi99IjsKICAgICAgICBbIC1lICR7 S1ZfRElSfS9zY3JpcHRzL3NldGxvY2FsdmVyc2lvbiBdICYmIGxpbnV4X2Noa2NvbmZpZ19idWls dGluIExPQ0FMVkVSU0lPTl9BVVRPICYmIEtWX0xPQ0FMPSIke0tWX0xPQ0FMfSQoc2ggJHtLVl9E SVJ9L3NjcmlwdHMvc2V0bG9jYWx2ZXJzaW9uICR7S1ZfRElSfSkiOwogICAgZmk7CiAgICBLVl9G VUxMPSIke0tWX01BSk9SfS4ke0tWX01JTk9SfS4ke0tWX1BBVENIfSR7S1ZfRVhUUkF9JHtLVl9M T0NBTH0iOwogICAgcWVpbmZvICJGb3VuZCBzb3VyY2VzIGZvciBrZXJuZWwgdmVyc2lvbjoiOwog ICAgcWVpbmZvICIgICAgJHtLVl9GVUxMfSI7CiAgICByZXR1cm4gMAp9CmdldF92ZXJzaW9uX2Nv bXBvbmVudF9jb3VudCAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9uOwog ICAgbG9jYWwgYTsKICAgIGE9KCQoZ2V0X3ZlcnNpb25fY29tcG9uZW50cyAiJHsxOi0ke1BWfX0i ICkpOwogICAgZWNobyAkeyNhW0BdfTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9m Zgp9CmdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jf c2hvcHRfdG9nZ2xlIG9uOwogICAgbG9jYWwgYyB2PSIkezI6LSR7UFZ9fSIgcmFuZ2U9IiR7MX0i IHJhbmdlX3N0YXJ0IHJhbmdlX2VuZCBpPS0xIGo9MDsKICAgIGM9KCQoZ2V0X2FsbF92ZXJzaW9u X2NvbXBvbmVudHMgJHt2fSApKTsKICAgIHJhbmdlX3N0YXJ0PSIke3JhbmdlJS0qfSI7CiAgICBy YW5nZV9zdGFydD0iJHtyYW5nZV9zdGFydDotMX0iOwogICAgcmFuZ2VfZW5kPSIke3JhbmdlIyot fSI7CiAgICByYW5nZV9lbmQ9IiR7cmFuZ2VfZW5kOi0keyNjW0BdfX0iOwogICAgd2hpbGUgKCgg aiA8ICR7cmFuZ2Vfc3RhcnR9ICkpOyBkbwogICAgICAgIGk9JCgoJGkgKyAxKSk7CiAgICAgICAg W1sgJGkgLWd0ICR7I2NbQF19IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZiAm JiByZXR1cm47CiAgICAgICAgW1sgLW4gIiR7Y1ske2l9XS8vWy0uX119IiBdXSAmJiBqPSQoKCRq ICsgMSkpOwogICAgZG9uZTsKICAgIHdoaWxlICgoIGogPD0gJHtyYW5nZV9lbmR9ICkpOyBkbwog ICAgICAgIGVjaG8gLW4gJHtjWyRpXX07CiAgICAgICAgW1sgJGkgLWd0ICR7I2NbQF19IF1dICYm IF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZiAmJiByZXR1cm47CiAgICAgICAgW1sgLW4g IiR7Y1ske2l9XS8vWy0uX119IiBdXSAmJiBqPSQoKCRqICsgMSkpOwogICAgICAgIGk9JCgoJGkg KyAxKSk7CiAgICBkb25lOwogICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KZ2V0 X3ZlcnNpb25fY29tcG9uZW50cyAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xl IG9uOwogICAgbG9jYWwgYz0iJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHsxOi0ke1BW fX0iKSI7CiAgICBjPSgke2NbQF0vL1stLl9dLyB9KTsKICAgIGVjaG8gJHtjW0BdfTsKICAgIF9f dmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZgp9CmdldGZpbGV2YXIgKCkgCnsgCiAgICBsb2Nh bCBFUlJPUiBiYXNlZm5hbWUgYmFzZWRuYW1lIG15QVJDSD0iJHtBUkNIfSI7CiAgICBFUlJPUj0w OwogICAgWyAteiAiJHsxfSIgXSAmJiBFUlJPUj0xOwogICAgWyAhIC1mICIkezJ9IiBdICYmIEVS Uk9SPTE7CiAgICBpZiBbICIke0VSUk9SfSIgPSAxIF07IHRoZW4KICAgICAgICBlY2hvIC1lICJc biI7CiAgICAgICAgZWVycm9yICJnZXRmaWxldmFyIHJlcXVpcmVzIDIgdmFyaWFibGVzLCB3aXRo IHRoZSBzZWNvbmQgYSB2YWxpZCBmaWxlLiI7CiAgICAgICAgZWVycm9yICIgICBnZXRmaWxldmFy IDxWQVJJQUJMRT4gPENPTkZJR0ZJTEU+IjsKICAgIGVsc2UKICAgICAgICBiYXNlZm5hbWU9IiQo YmFzZW5hbWUgJHsyfSkiOwogICAgICAgIGJhc2VkbmFtZT0iJChkaXJuYW1lICR7Mn0pIjsKICAg ICAgICB1bnNldCBBUkNIOwogICAgICAgIGVjaG8gLWUgImU6XFxuXFx0QGVjaG8gXCQoJHsxfSlc XG5pbmNsdWRlICR7YmFzZWZuYW1lfSIgfCBtYWtlIC1DICIke2Jhc2VkbmFtZX0iIE09IiR7U30i ICR7QlVJTERfRklYRVN9IC1zIC1mIC0gMj4gL2Rldi9udWxsOwogICAgICAgIEFSQ0g9JHtteUFS Q0h9OwogICAgZmkKfQpoYXNfaGFyZGVuZWQgKCkgCnsgCiAgICBld2FybiAiaGFzX2hhcmRlbmVk OiBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGdjYy1zcGVjcy17cmVscm8sbm93fSgpISIgMT4mMjsK ICAgIHRlc3RfdmVyc2lvbl9pbmZvIEhhcmRlbmVkICYmIHJldHVybiAwOwogICAgW1sgLWYgJHtH Q0NfU1BFQ1N9ICYmICR7R0NDX1NQRUNTfSAhPSAke0dDQ19TUEVDUy9oYXJkZW5lZC99IF1dCn0K aGFzX20zMiAoKSAKeyAKICAgIFsgIiQodGMtYXJjaCkiID0gImFtZDY0IiBdICYmIGhhc19tdWx0 aWxpYl9wcm9maWxlICYmIHJldHVybiAwOwogICAgbG9jYWwgdGVtcD0kKGVta3RlbXApOwogICAg ZWNobyAiaW50IG1haW4oKSB7IHJldHVybigwKTsgfSIgPiAiJHt0ZW1wfSIuYzsKICAgIE1ZX0ND PSQodGMtZ2V0Q0MpOwogICAgJHtNWV9DQy8gLiovfSAtbTMyIC1vICIkKGVta3RlbXApIiAiJHt0 ZW1wfSIuYyA+IC9kZXYvbnVsbCAyPiYxOwogICAgbG9jYWwgcmV0PSQ/OwogICAgcm0gLWYgIiR7 dGVtcH0iLmM7CiAgICBbWyAke3JldH0gIT0gMSBdXSAmJiByZXR1cm4gMDsKICAgIHJldHVybiAx Cn0KaGFzX202NCAoKSAKeyAKICAgIGxvY2FsIHRlbXA9IiQoZW1rdGVtcCkiOwogICAgZWNobyAi aW50IG1haW4oKSB7IHJldHVybigwKTsgfSIgPiAiJHt0ZW1wfSIuYzsKICAgIE1ZX0NDPSQodGMt Z2V0Q0MpOwogICAgJHtNWV9DQy8gLiovfSAtbTY0IC1vICIkKGVta3RlbXApIiAiJHt0ZW1wfSIu YyA+IC9kZXYvbnVsbCAyPiYxOwogICAgbG9jYWwgcmV0PSQ/OwogICAgcm0gLWYgIiR7dGVtcH0i LmM7CiAgICBbWyAke3JldH0gIT0gMSBdXSAmJiByZXR1cm4gMDsKICAgIHJldHVybiAxCn0KaGFz X211bHRpbGliX3Byb2ZpbGUgKCkgCnsgCiAgICBbIC1uICIke01VTFRJTElCX0FCSVN9IiAtYSAi JHtNVUxUSUxJQl9BQklTfSIgIT0gIiR7TVVMVElMSUJfQUJJUy8gL30iIF0KfQpoYXNfcGljICgp IAp7IAogICAgZXdhcm4gImhhc19waWM6IGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgZ2NjLXNwZWNz LXBpZSgpISIgMT4mMjsKICAgIFtbICR7Q0ZMQUdTLy1mUElDfSAhPSAke0NGTEFHU30gfHwgJHtD RkxBR1MvLWZwaWN9ICE9ICR7Q0ZMQUdTfSBdXSB8fCBnY2Mtc3BlY3MtcGllCn0KaGFzX3BpZSAo KSAKeyAKICAgIGV3YXJuICJoYXNfcGllOiBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIGdjYy1zcGVj cy1waWUoKSEiIDE+JjI7CiAgICBbWyAke0NGTEFHUy8tZlBJRX0gIT0gJHtDRkxBR1N9IHx8ICR7 Q0ZMQUdTLy1mcGllfSAhPSAke0NGTEFHU30gXV0gfHwgZ2NjLXNwZWNzLXBpZQp9Cmhhc19zc3Ag KCkgCnsgCiAgICBld2FybiAiaGFzX3NzcDogZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBnY2Mtc3Bl Y3Mtc3NwKCkhIiAxPiYyOwogICAgW1sgJHtDRkxBR1MvLWZzdGFjay1wcm90ZWN0b3J9ICE9ICR7 Q0ZMQUdTfSB8fCAtbiAkKGVjaG8gfCAkKHRjLWdldENDKSAke0NGTEFHU30gLUUgLWRNIC0gfCBn cmVwIF9fU1NQX18pIF1dIHx8IGdjYy1zcGVjcy1zc3AKfQpoYXNfc3NwX2FsbCAoKSAKeyAKICAg IGV3YXJuICJoYXNfc3NwX2FsbDogZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBnY2Mtc3BlY3Mtc3Nw KCkhIiAxPiYyOwogICAgW1sgJHtDRkxBR1MvLWZzdGFjay1wcm90ZWN0b3ItYWxsfSAhPSAke0NG TEFHU30gfHwgLW4gJChlY2hvIHwgJCh0Yy1nZXRDQykgJHtDRkxBR1N9IC1FIC1kTSAtIHwgZ3Jl cCBfX1NTUF9BTExfXykgXV0gfHwgZ2NjLXNwZWNzLXNzcC10by1hbGwKfQppcy1mbGFnICgpIAp7 IAogICAgaXMtZmxhZ3EgIiRAIiAmJiBlY2hvIHRydWUKfQppcy1mbGFncSAoKSAKeyAKICAgIFtb IC1uICQyIF1dICYmIGRpZSAiVXNhZ2U6IGlzLWZsYWcgPGZsYWc+IjsKICAgIF9pc19mbGFncSBD RkxBR1MgJDEgfHwgX2lzX2ZsYWdxIENYWEZMQUdTICQxIHx8IF9pc19mbGFncSBGRkxBR1MgJDEg fHwgX2lzX2ZsYWdxIEZDRkxBR1MgJDEKfQppcy1sZGZsYWcgKCkgCnsgCiAgICBpcy1sZGZsYWdx ICIkQCIgJiYgZWNobyB0cnVlCn0KaXMtbGRmbGFncSAoKSAKeyAKICAgIFtbIC1uICQyIF1dICYm IGRpZSAiVXNhZ2U6IGlzLWxkZmxhZyA8ZmxhZz4iOwogICAgX2lzX2ZsYWdxIExERkxBR1MgJDEK fQppcy1sb2dpbi1kaXNhYmxlZCAoKSAKeyAKICAgIHNoZWxsPSQoZWdldHNoZWxsICIkMSIpOwog ICAgY2FzZSAke3NoZWxsfSBpbiAKICAgICAgICAvYmluL2ZhbHNlIHwgL3Vzci9iaW4vZmFsc2Ug fCAvc2Jpbi9ub2xvZ2luIHwgL3Vzci9zYmluL25vbG9naW4pCiAgICAgICAgICAgIHJldHVybiAw CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICByZXR1cm4gMQogICAgICAgIDs7CiAg ICBlc2FjCn0KaXNfZmluYWxfYWJpICgpIAp7IAogICAgaGFzX211bHRpbGliX3Byb2ZpbGUgfHwg cmV0dXJuIDA7CiAgICBsb2NhbCBBTExfQUJJUz0kKGdldF9pbnN0YWxsX2FiaXMpOwogICAgbG9j YWwgTEFTVF9BQkk9JHtBTExfQUJJUy8qIC99OwogICAgW1sgJHtMQVNUX0FCSX0gPT0gJHtBQkl9 IF1dCn0Ka2VybmVsX2lzICgpIAp7IAogICAgZ2V0X3ZlcnNpb247CiAgICBsb2NhbCBvcGVyYXRv ciB0ZXN0IHZhbHVlIHg9MCB5PTAgej0wOwogICAgY2FzZSAkezF9IGluIAogICAgICAgIGx0KQog ICAgICAgICAgICBvcGVyYXRvcj0iLWx0IjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7Owog ICAgICAgIGd0KQogICAgICAgICAgICBvcGVyYXRvcj0iLWd0IjsKICAgICAgICAgICAgc2hpZnQK ICAgICAgICA7OwogICAgICAgIGxlKQogICAgICAgICAgICBvcGVyYXRvcj0iLWxlIjsKICAgICAg ICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGdlKQogICAgICAgICAgICBvcGVyYXRvcj0i LWdlIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgIGVxKQogICAgICAgICAg ICBvcGVyYXRvcj0iLWVxIjsKICAgICAgICAgICAgc2hpZnQKICAgICAgICA7OwogICAgICAgICop CiAgICAgICAgICAgIG9wZXJhdG9yPSItZXEiCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBmb3Ig eCBpbiAke0B9OwogICAgZG8KICAgICAgICBmb3IgKCh5PTA7IHk8JCgoMyAtICR7I3h9KSk7IHkr KykpCiAgICAgICAgZG8KICAgICAgICAgICAgdmFsdWU9IiR7dmFsdWV9MCI7CiAgICAgICAgZG9u ZTsKICAgICAgICB2YWx1ZT0iJHt2YWx1ZX0ke3h9IjsKICAgICAgICB6PSQoKCR7en0gKyAxKSk7 CiAgICAgICAgY2FzZSAke3p9IGluIAogICAgICAgICAgICAxKQogICAgICAgICAgICAgICAgZm9y ICgoeT0wOyB5PCQoKDMgLSAkeyNLVl9NQUpPUn0pKTsgeSsrKSkKICAgICAgICAgICAgICAgIGRv CiAgICAgICAgICAgICAgICAgICAgdGVzdD0iJHt0ZXN0fTAiOwogICAgICAgICAgICAgICAgZG9u ZTsKICAgICAgICAgICAgICAgIHRlc3Q9IiR7dGVzdH0ke0tWX01BSk9SfSIKICAgICAgICAgICAg OzsKICAgICAgICAgICAgMikKICAgICAgICAgICAgICAgIGZvciAoKHk9MDsgeTwkKCgzIC0gJHsj S1ZfTUlOT1J9KSk7IHkrKykpCiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAg IHRlc3Q9IiR7dGVzdH0wIjsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICB0 ZXN0PSIke3Rlc3R9JHtLVl9NSU5PUn0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDMpCiAg ICAgICAgICAgICAgICBmb3IgKCh5PTA7IHk8JCgoMyAtICR7I0tWX1BBVENIfSkpOyB5KyspKQog ICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICB0ZXN0PSIke3Rlc3R9MCI7CiAg ICAgICAgICAgICAgICBkb25lOwogICAgICAgICAgICAgICAgdGVzdD0iJHt0ZXN0fSR7S1ZfUEFU Q0h9IgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgZGllICJF cnJvciBpbiBrZXJuZWwtMl9rZXJuZWxfaXMoKTogVG9vIG1hbnkgcGFyYW1ldGVycy4iCiAgICAg ICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGRvbmU7CiAgICBbICR7dGVzdH0gJHtvcGVyYXRv cn0gJHt2YWx1ZX0gXSAmJiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CmxpbnV4LWluZm9fcGtnX3Nl dHVwICgpIAp7IAogICAgZ2V0X3ZlcnNpb24gfHwgZGllICJVbmFibGUgdG8gY2FsY3VsYXRlIExp bnV4IEtlcm5lbCB2ZXJzaW9uIjsKICAgIGlmIGtlcm5lbF9pcyAyIDQ7IHRoZW4KICAgICAgICBp ZiBbICIkKCBnY2MtbWFqb3ItdmVyc2lvbiApIiAtZXEgIjQiIF07IHRoZW4KICAgICAgICAgICAg ZWNobzsKICAgICAgICAgICAgZXdhcm4gIkJlIHdhcm5lZCAhISA+PXN5cy1kZXZlbC9nY2MtNC4w LjAgaXNuJ3Qgc3VwcG9ydGVkIHdpdGgiOwogICAgICAgICAgICBld2FybiAibGludXgtMi40IChv ciBtb2R1bGVzIGJ1aWxkaW5nIGFnYWluc3QgYSBsaW51eC0yLjQga2VybmVsKSEiOwogICAgICAg ICAgICBlY2hvOwogICAgICAgICAgICBld2FybiAiRWl0aGVyIHN3aXRjaCB0byBhbm90aGVyIGdj Yy12ZXJzaW9uICh2aWEgZ2NjLWNvbmZpZykgb3IgdXNlIGEiOwogICAgICAgICAgICBld2FybiAi bmV3ZXIga2VybmVsIHRoYXQgc3VwcG9ydHMgZ2NjLTQuIjsKICAgICAgICAgICAgZWNobzsKICAg ICAgICAgICAgZXdhcm4gIkFsc28gYmUgYXdhcmUgdGhhdCBidWdyZXBvcnRzIGFib3V0IGdjYy00 IG5vdCB3b3JraW5nIjsKICAgICAgICAgICAgZXdhcm4gIndpdGggbGludXgtMi40IGJhc2VkIGVi dWlsZHMgd2lsbCBiZSBjbG9zZWQgYXMgSU5WQUxJRCEiOwogICAgICAgICAgICBlY2hvOwogICAg ICAgICAgICBlcGF1c2UgMTA7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIFsgLW4gIiR7Q09ORklH X0NIRUNLfSIgXSAmJiBjaGVja19leHRyYV9jb25maWcKfQpsaW51eC1tb2RfcGtnX3Bvc3RpbnN0 ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICAke1VQ REFURV9ERVBNT0R9ICYmIHVwZGF0ZV9kZXBtb2Q7CiAgICAke1VQREFURV9NT0RVTEVTfSAmJiB1 cGRhdGVfbW9kdWxlczsKICAgICR7VVBEQVRFX01PRFVMRURCfSAmJiB1cGRhdGVfbW9kdWxlZGIK fQpsaW51eC1tb2RfcGtnX3Bvc3RybSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7 RlVOQ05BTUV9ICQqOwogICAgcmVtb3ZlX21vZHVsZWRiCn0KbGludXgtbW9kX3BrZ19wcmVpbnN0 ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBbIC1k ICIke0R9bGliL21vZHVsZXMiIF0gJiYgVVBEQVRFX0RFUE1PRD10cnVlIHx8IFVQREFURV9ERVBN T0Q9ZmFsc2U7CiAgICBbIC1kICIke0R9ZXRjL21vZHVsZXMuZCIgXSAmJiBVUERBVEVfTU9EVUxF Uz10cnVlIHx8IFVQREFURV9NT0RVTEVTPWZhbHNlOwogICAgWyAtZCAiJHtEfWxpYi9tb2R1bGVz IiBdICYmIFVQREFURV9NT0RVTEVEQj10cnVlIHx8IFVQREFURV9NT0RVTEVEQj1mYWxzZQp9Cmxp bnV4LW1vZF9wa2dfc2V0dXAgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNO QU1FfSAkKjsKICAgIGxpbnV4LWluZm9fcGtnX3NldHVwOwogICAgcmVxdWlyZV9jb25maWd1cmVk X2tlcm5lbDsKICAgIGNoZWNrX2tlcm5lbF9idWlsdDsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwog ICAgW1sgLW4gJHtNT0RVTEVfTkFNRVN9IF1dICYmIGNoZWNrX21vZHVsZXNfc3VwcG9ydGVkOwog ICAgc2V0X2t2b2JqCn0KbGludXgtbW9kX3NyY19jb21waWxlICgpIAp7IAogICAgZGVidWctcHJp bnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRpciBz cmNkaXIgb2JqZGlyIGkgbiBteUFCST0iJHtBQkl9IjsKICAgIHNldF9hcmNoX3RvX2tlcm5lbDsK ICAgIEFCST0iJHtLRVJORUxfQUJJfSI7CiAgICBCVUlMRF9UQVJHRVRTPSR7QlVJTERfVEFSR0VU UzotY2xlYW4gbW9kdWxlfTsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgY2QgIiR7U30iOwog ICAgdG91Y2ggTW9kdWxlLnN5bXZlcnM7CiAgICBmb3IgaSBpbiAke01PRFVMRV9OQU1FU307CiAg ICBkbwogICAgICAgIHVuc2V0IGxpYmRpciBzcmNkaXIgb2JqZGlyOwogICAgICAgIGZvciBuIGlu ICQoZmluZF9tb2R1bGVfcGFyYW1zICR7aX0pOwogICAgICAgIGRvCiAgICAgICAgICAgIGV2YWwg JHtuLzoqfT0ke24vKjovfTsKICAgICAgICBkb25lOwogICAgICAgIGxpYmRpcj0ke2xpYmRpcjot bWlzY307CiAgICAgICAgc3JjZGlyPSR7c3JjZGlyOi0ke1N9fTsKICAgICAgICBvYmpkaXI9JHtv YmpkaXI6LSR7c3JjZGlyfX07CiAgICAgICAgaWYgWyAhIC1mICIke3NyY2Rpcn0vLmJ1aWx0IiBd OyB0aGVuCiAgICAgICAgICAgIGNkICR7c3JjZGlyfTsKICAgICAgICAgICAgbG4gLXMgIiR7U30i L01vZHVsZS5zeW12ZXJzIE1vZHVsZS5zeW12ZXJzOwogICAgICAgICAgICBlaW5mbyAiUHJlcGFy aW5nICR7bW9kdWxlbmFtZX0gbW9kdWxlIjsKICAgICAgICAgICAgaWYgW1sgLW4gJHtFQ09ORl9Q QVJBTVN9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBlY29uZiAke0VDT05GX1BBUkFNU30gfHwg ZGllICJVbmFibGUgdG8gcnVuIGVjb25mICR7RUNPTkZfUEFSQU1TfSI7CiAgICAgICAgICAgIGZp OwogICAgICAgICAgICBldmFsICJlbWFrZSBIT1NUQ0M9XCIkKHRjLWdldEJVSUxEX0NDKVwiIAkJ CQkJCUNST1NTX0NPTVBJTEU9JHtDSE9TVH0tIAkJCQkJCUxERkxBR1M9XCIkKGdldF9hYmlfTERG TEFHUylcIiAJCQkJCQkke0JVSUxEX0ZJWEVTfSAJCQkJCQkke0JVSUxEX1BBUkFNU30gCQkJCQkJ JHtCVUlMRF9UQVJHRVRTfSAiIHx8IGRpZSAiVW5hYmxlIHRvIGVtYWtlIEhPU1RDQz0iJCh0Yy1n ZXRCVUlMRF9DQykiIENST1NTX0NPTVBJTEU9JHtDSE9TVH0tIExERkxBR1M9IiQoZ2V0X2FiaV9M REZMQUdTKSIgJHtCVUlMRF9GSVhFU30gJHtCVUlMRF9QQVJBTVN9ICR7QlVJTERfVEFSR0VUU30i OwogICAgICAgICAgICBjZCAke09MRFBXRH07CiAgICAgICAgICAgIHRvdWNoICR7c3JjZGlyfS8u YnVpbHQ7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgc2V0X2FyY2hfdG9fcG9ydGFnZTsKICAg IEFCST0iJHtteUFCSX0iCn0KbGludXgtbW9kX3NyY19pbnN0YWxsICgpIAp7IAogICAgZGVidWct cHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2NhbCBtb2R1bGVuYW1lIGxpYmRp ciBzcmNkaXIgb2JqZGlyIGkgbjsKICAgIHN0cmlwX21vZHVsZW5hbWVzOwogICAgZm9yIGkgaW4g JHtNT0RVTEVfTkFNRVN9OwogICAgZG8KICAgICAgICB1bnNldCBsaWJkaXIgc3JjZGlyIG9iamRp cjsKICAgICAgICBmb3IgbiBpbiAkKGZpbmRfbW9kdWxlX3BhcmFtcyAke2l9KTsKICAgICAgICBk bwogICAgICAgICAgICBldmFsICR7bi86Kn09JHtuLyo6L307CiAgICAgICAgZG9uZTsKICAgICAg ICBsaWJkaXI9JHtsaWJkaXI6LW1pc2N9OwogICAgICAgIHNyY2Rpcj0ke3NyY2RpcjotJHtTfX07 CiAgICAgICAgb2JqZGlyPSR7b2JqZGlyOi0ke3NyY2Rpcn19OwogICAgICAgIGVpbmZvICJJbnN0 YWxsaW5nICR7bW9kdWxlbmFtZX0gbW9kdWxlIjsKICAgICAgICBjZCAke29iamRpcn0gfHwgZGll ICIke29iamRpcn0gZG9lcyBub3QgZXhpc3QiOwogICAgICAgIGluc2ludG8gL2xpYi9tb2R1bGVz LyR7S1ZfRlVMTH0vJHtsaWJkaXJ9OwogICAgICAgIGRvaW5zICR7bW9kdWxlbmFtZX0uJHtLVl9P Qkp9IHx8IGRpZSAiZG9pbnMgJHttb2R1bGVuYW1lfS4ke0tWX09CSn0gZmFpbGVkIjsKICAgICAg ICBjZCAke09MRFBXRH07CiAgICAgICAgZ2VuZXJhdGVfbW9kdWxlc2QgJHtvYmpkaXJ9LyR7bW9k dWxlbmFtZX07CiAgICBkb25lCn0KbGludXhfY2hrY29uZmlnX2J1aWx0aW4gKCkgCnsgCiAgICBs b2NhbCBSRVNVTFQ7CiAgICByZXF1aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAgUkVTVUxUPSIk KGdldGZpbGV2YXIgQ09ORklHXyR7MX0gJHtLVl9PVVRfRElSfS8uY29uZmlnKSI7CiAgICBbICIk e1JFU1VMVH0iID0gInkiIF0gJiYgcmV0dXJuIDAgfHwgcmV0dXJuIDEKfQpsaW51eF9jaGtjb25m aWdfbW9kdWxlICgpIAp7IAogICAgbG9jYWwgUkVTVUxUOwogICAgcmVxdWlyZV9jb25maWd1cmVk X2tlcm5lbDsKICAgIFJFU1VMVD0iJChnZXRmaWxldmFyIENPTkZJR18kezF9ICR7S1ZfT1VUX0RJ Un0vLmNvbmZpZykiOwogICAgWyAiJHtSRVNVTFR9IiA9ICJtIiBdICYmIHJldHVybiAwIHx8IHJl dHVybiAxCn0KbGludXhfY2hrY29uZmlnX3ByZXNlbnQgKCkgCnsgCiAgICBsb2NhbCBSRVNVTFQ7 CiAgICByZXF1aXJlX2NvbmZpZ3VyZWRfa2VybmVsOwogICAgUkVTVUxUPSIkKGdldGZpbGV2YXIg Q09ORklHXyR7MX0gJHtLVl9PVVRfRElSfS8uY29uZmlnKSI7CiAgICBbICIke1JFU1VMVH0iID0g Im0iIC1vICIke1JFU1VMVH0iID0gInkiIF0gJiYgcmV0dXJuIDAgfHwgcmV0dXJuIDEKfQpsaW51 eF9jaGtjb25maWdfc3RyaW5nICgpIAp7IAogICAgcmVxdWlyZV9jb25maWd1cmVkX2tlcm5lbDsK ICAgIGdldGZpbGV2YXIgIkNPTkZJR18kezF9IiAiJHtLVl9PVVRfRElSfS8uY29uZmlnIgp9Cmxp bnV4X2NvbmZpZ19leGlzdHMgKCkgCnsgCiAgICBbIC1zICIke0tWX09VVF9ESVJ9Ly5jb25maWci IF0KfQptYWtlX2Rlc2t0b3BfZW50cnkgKCkgCnsgCiAgICBbWyAteiAkMSBdXSAmJiBlZXJyb3Ig Im1ha2VfZGVza3RvcF9lbnRyeTogWW91IG11c3Qgc3BlY2lmeSB0aGUgZXhlY3V0YWJsZSIgJiYg cmV0dXJuIDE7CiAgICBsb2NhbCBleGVjPSR7MX07CiAgICBsb2NhbCBuYW1lPSR7MjotJHtQTn19 OwogICAgbG9jYWwgaWNvbj0kezM6LSR7UE59fTsKICAgIGxvY2FsIHR5cGU9JHs0fTsKICAgIGxv Y2FsIHBhdGg9JHs1fTsKICAgIGlmIFtbIC16ICR7dHlwZX0gXV07IHRoZW4KICAgICAgICBsb2Nh bCBjYXRtYWo9JHtDQVRFR09SWSUlLSp9OwogICAgICAgIGxvY2FsIGNhdG1pbj0ke0NBVEVHT1JZ IyMqLX07CiAgICAgICAgY2FzZSAke2NhdG1han0gaW4gCiAgICAgICAgICAgIGFwcCkKICAgICAg ICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGFjY2Vzc2li aWxpdHkpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QWNjZXNzaWJpbGl0eQogICAgICAg ICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYWRtaW4pCiAgICAgICAgICAgICAg ICAgICAgICAgIHR5cGU9U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ICAgICAgICBhbnRpdmlydXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U3lzdGVtCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBhcmNoKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPUFyY2hpdmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgYmFja3VwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUFyY2hp dmluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2RyKQogICAg ICAgICAgICAgICAgICAgICAgICB0eXBlPURpc2NCdXJuaW5nCiAgICAgICAgICAgICAgICAgICAg OzsKICAgICAgICAgICAgICAgICAgICBkaWN0cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1EaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBk b2MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RG9jdW1lbnRhdGlvbgogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWRpdG9ycykKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1UZXh0RWRpdG9yCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBlbWFjcykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1UZXh0RWRpdG9y CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbXVsYXRpb24pCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RW11bGF0b3IKICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgICAgIGxhcHRvcCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlw ZT1IYXJkd2FyZVNldHRpbmdzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICBvZmZpY2UpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9T2ZmaWNlCiAgICAgICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBwZGEpCiAgICAgICAgICAgICAgICAg ICAgICAgIHR5cGU9UERBCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAg ICB2aW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9VGV4dEVkaXRvcgogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgeGVtYWNzKQogICAgICAgICAgICAgICAg ICAgICAgICB0eXBlPVRleHRFZGl0b3IKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAg ICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgOzsKICAgICAgICAgICAg ZGV2KQogICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQiCiAgICAgICAgICAgIDs7CiAg ICAgICAgICAgIGdhbWVzKQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAg ICAgICAgICAgICAgICAgYWN0aW9uIHwgZnBzKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PUFjdGlvbkdhbWUKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGFy Y2FkZSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1BcmNhZGVHYW1lCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBib2FyZCkKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1Cb2FyZEdhbWUKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAg ICAgICAgIGVtdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbXVsYXRvcgog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAga2lkcykKICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZT1LaWRzR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgcHV6emxlKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUxvZ2lj R2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcm9ndWVsaWtl KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVJvbGVQbGF5aW5nCiAgICAgICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBycGcpCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9Um9sZVBsYXlpbmcKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAg ICAgIHNpbXVsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9U2ltdWxhdGlvbgog ICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgc3BvcnRzKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPVNwb3J0c0dhbWUKICAgICAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBl PVN0cmF0ZWd5R2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAg KikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0KICAgICAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9IkdhbWU7JHt0eXBlfSIK ICAgICAgICAgICAgOzsKICAgICAgICAgICAgZ25vbWUpCiAgICAgICAgICAgICAgICB0eXBlPSJH bm9tZTtHVEsiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGtkZSkKICAgICAgICAgICAgICAg IHR5cGU9IktERTtRdCIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgbWFpbCkKICAgICAgICAg ICAgICAgIHR5cGU9Ik5ldHdvcms7RW1haWwiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIG1l ZGlhKQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAg ICAgZ2Z4KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUdyYXBoaWNzCiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICByYWRpbykKICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1UdW5lcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgc291bmQpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QXVkaW8KICAgICAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHR2KQogICAgICAgICAgICAgICAgICAgICAg ICB0eXBlPVRWCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICB2aWRl bykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1WaWRlbwogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0K ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAg ICAgIHR5cGU9IkF1ZGlvVmlkZW87JHt0eXBlfSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAg bmV0KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAg ICAgZGlhbHVwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURpYWx1cAogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZnRwKQogICAgICAgICAgICAgICAgICAg ICAgICB0eXBlPUZpbGVUcmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAgaW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9SW5zdGFudE1lc3NhZ2lu ZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgaXJjKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPUlSQ0NsaWVudAogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgbWFpbCkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbWFp bAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbmV3cykKICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZT1OZXdzCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBubnRwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPU5ld3MKICAg ICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHAycCkKICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT1GaWxlVHJhbnNmZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBl PSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHNjaSkKICAgICAg ICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGFzdHJvKikK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Bc3Ryb25vbXkKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIGJpbyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9QmlvbG9neQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2Fs YyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2FsY3VsYXRvcgogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2hlbSopCiAgICAgICAgICAgICAgICAgICAg ICAgIHR5cGU9Q2hlbWlzdHJ5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICBlbGVjKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1FbGVjdHJvbmljcwogICAg ICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZ2VvKikKICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT1HZW9sb2d5CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBtYXRoKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1NYXRoCiAgICAg ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBwaHlzaWNzKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPVBoeXNpY3MKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgICAgIHZpc3VhbCopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RGF0YVZp c3VhbGl6YXRpb24KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICop CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBlPSJTY2llbmNlOyR7dHlwZX0i CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHN5cykKICAgICAgICAgICAgICAgIHR5cGU9IlN5 c3RlbSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgd3d3KQogICAgICAgICAgICAgICAgY2Fz ZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgY2xpZW50KQogICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPVdlYkJyb3dzZXIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9CiAgICAgICAgICAg ICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICB0eXBlPSJO ZXR3b3JrIgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgdHlw ZT0KICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZmk7CiAgICBpZiBbICIke1NMT1R9 IiA9PSAiMCIgXTsgdGhlbgogICAgICAgIGxvY2FsIGRlc2t0b3BfbmFtZT0iJHtQTn0iOwogICAg ZWxzZQogICAgICAgIGxvY2FsIGRlc2t0b3BfbmFtZT0iJHtQTn0tJHtTTE9UfSI7CiAgICBmaTsK ICAgIGxvY2FsIGRlc2t0b3A9IiR7VH0vJChlY2hvICR7ZXhlY30gfCBzZWQgJ3M6W1s6c3BhY2U6 XS86XTpfOmcnKS0ke2Rlc2t0b3BfbmFtZX0uZGVza3RvcCI7CiAgICBjYXQgPiAiJHtkZXNrdG9w fSIgIDw8LUVPRgpbRGVza3RvcCBFbnRyeV0KVmVyc2lvbj0xLjAKTmFtZT0ke25hbWV9ClR5cGU9 QXBwbGljYXRpb24KQ29tbWVudD0ke0RFU0NSSVBUSU9OfQpFeGVjPSR7ZXhlY30KVHJ5RXhlYz0k e2V4ZWMlJSAqfQpJY29uPSR7aWNvbn0KQ2F0ZWdvcmllcz0ke3R5cGV9OwpFT0YKCiAgICBbWyAt biAke3BhdGh9IF1dICYmIGVjaG8gIlBhdGg9JHtwYXRofSIgPj4gIiR7ZGVza3RvcH0iOwogICAg KCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgZG9pbnMgIiR7ZGVza3RvcH0i ICkKfQptYWtlX3Nlc3Npb25fZGVza3RvcCAoKSAKeyAKICAgIFtbIC16ICQxIF1dICYmIGVlcnJv ciAibWFrZV9zZXNzaW9uX2Rlc2t0b3A6IFlvdSBtdXN0IHNwZWNpZnkgdGhlIHRpdGxlIiAmJiBy ZXR1cm4gMTsKICAgIFtbIC16ICQyIF1dICYmIGVlcnJvciAibWFrZV9zZXNzaW9uX2Rlc2t0b3A6 IFlvdSBtdXN0IHNwZWNpZnkgdGhlIGNvbW1hbmQiICYmIHJldHVybiAxOwogICAgbG9jYWwgdGl0 bGU9JDE7CiAgICBsb2NhbCBjb21tYW5kPSQyOwogICAgbG9jYWwgZGVza3RvcD0ke1R9LyR7d219 LmRlc2t0b3A7CiAgICBjYXQgPiAiJHtkZXNrdG9wfSIgIDw8LUVPRgpbRGVza3RvcCBFbnRyeV0K TmFtZT0ke3RpdGxlfQpDb21tZW50PVRoaXMgc2Vzc2lvbiBsb2dzIHlvdSBpbnRvICR7dGl0bGV9 CkV4ZWM9JHtjb21tYW5kfQpUcnlFeGVjPSR7Y29tbWFuZH0KVHlwZT1BcHBsaWNhdGlvbgpFT0YK CiAgICAoIGluc2ludG8gL3Vzci9zaGFyZS94c2Vzc2lvbnM7CiAgICBkb2lucyAiJHtkZXNrdG9w fSIgKQp9Cm1ha2Vfd3JhcHBlciAoKSAKeyAKICAgIGxvY2FsIHdyYXBwZXI9JDEgYmluPSQyIGNo ZGlyPSQzIGxpYmRpcj0kNCBwYXRoPSQ1OwogICAgbG9jYWwgdG1wd3JhcHBlcj0kKGVta3RlbXAp OwogICAgY2F0ID4gIiR7dG1wd3JhcHBlcn0iICA8PEVPRgojIS9iaW4vc2gKY2QgIiR7Y2hkaXI6 LS59IgppZiBbIC1uICIke2xpYmRpcn0iIF0gOyB0aGVuCglpZiBbICJcJHtMRF9MSUJSQVJZX1BB VEgrc2V0fSIgPSAic2V0IiBdIDsgdGhlbgoJCWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9Ilwke0xE X0xJQlJBUllfUEFUSH06JHtsaWJkaXJ9IgoJZWxzZQoJCWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9 IiR7bGliZGlyfSIKCWZpCmZpCmV4ZWMgJHtiaW59ICJcJEAiCkVPRgoKICAgIGNobW9kIGdvK3J4 ICIke3RtcHdyYXBwZXJ9IjsKICAgIGlmIFtbIC1uICR7cGF0aH0gXV07IHRoZW4KICAgICAgICAo IGV4ZWludG8gIiR7cGF0aH0iOwogICAgICAgIG5ld2V4ZSAiJHt0bXB3cmFwcGVyfSIgIiR7d3Jh cHBlcn0iICkgfHwgZGllOwogICAgZWxzZQogICAgICAgIG5ld2JpbiAiJHt0bXB3cmFwcGVyfSIg IiR7d3JhcHBlcn0iIHx8IGRpZTsKICAgIGZpCn0KbW92ZV9vbGRfbW9kdWxlZGIgKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAkKjsKICAgIGxvY2FsIE9MRERJUj0k e1JPT1R9L3Vzci9zaGFyZS9tb2R1bGUtcmVidWlsZC87CiAgICBsb2NhbCBORVdESVI9JHtST09U fS92YXIvbGliL21vZHVsZS1yZWJ1aWxkLzsKICAgIGlmIFtbIC1mICR7T0xERElSfS9tb2R1bGVk YiBdXTsgdGhlbgogICAgICAgIFtbICEgLWQgJHtORVdESVJ9IF1dICYmIG1rZGlyIC1wICR7TkVX RElSfTsKICAgICAgICBbWyAhIC1mICR7TkVXRElSfS9tb2R1bGVkYiBdXSAmJiBtdiAke09MRERJ Un0vbW9kdWxlZGIgJHtORVdESVJ9L21vZHVsZWRiOwogICAgICAgIHJtIC1mICR7T0xERElSfS8q OwogICAgICAgIHJtZGlyICR7T0xERElSfTsKICAgIGZpCn0KbXVsdGlsaWJfZW52ICgpIAp7IAog ICAgbG9jYWwgQ1RBUkdFVD0kezE6LSR7Q1RBUkdFVH19OwogICAgY2FzZSAke0NUQVJHRVR9IGlu IAogICAgICAgIHg4Nl82NCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfeDg2PSR7Q0ZMQUdT X3g4Ni0tbTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3g4Nj0ke0NUQVJHRVQveDg2XzY0 L2k2ODZ9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF94ODY9JHtDSE9TVF94ODZ9OwogICAg ICAgICAgICBleHBvcnQgQ0RFRklORV94ODY9Il9faTM4Nl9fIjsKICAgICAgICAgICAgZXhwb3J0 IExJQkRJUl94ODY9ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfYW1kNjQ9JHtDRkxB R1NfYW1kNjQtLW02NH07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9hbWQ2ND0ke0NUQVJHRVR9 OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9hbWQ2ND0ke0NIT1NUX2FtZDY0fTsKICAgICAg ICAgICAgZXhwb3J0IENERUZJTkVfYW1kNjQ9Il9feDg2XzY0X18iOwogICAgICAgICAgICBleHBv cnQgTElCRElSX2FtZDY0PSJsaWI2NCI7CiAgICAgICAgICAgIGV4cG9ydCBNVUxUSUxJQl9BQklT PSJhbWQ2NCB4ODYiOwogICAgICAgICAgICBleHBvcnQgREVGQVVMVF9BQkk9ImFtZDY0IgogICAg ICAgIDs7CiAgICAgICAgbWlwczY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19vMzI9JHtD RkxBR1NfbzMyLS1tYWJpPTMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX28zMj0ke0NUQVJH RVQvbWlwczY0L21pcHN9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9vMzI9JHtDSE9TVF9v MzJ9OwogICAgICAgICAgICBleHBvcnQgQ0RFRklORV9vMzI9Il9NSVBTX1NJTSA9PSBfQUJJTzMy IjsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9vMzI9ImxpYiI7CiAgICAgICAgICAgIGV4cG9y dCBDRkxBR1NfbjMyPSR7Q0ZMQUdTX24zMi0tbWFiaT1uMzJ9OwogICAgICAgICAgICBleHBvcnQg Q0hPU1RfbjMyPSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX24zMj0ke0NI T1NUX24zMn07CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5FX24zMj0iX01JUFNfU0lNID09IF9B QklOMzIiOwogICAgICAgICAgICBleHBvcnQgTElCRElSX24zMj0ibGliMzIiOwogICAgICAgICAg ICBleHBvcnQgQ0ZMQUdTX242ND0ke0NGTEFHU19uNjQtLW1hYmk9NjR9OwogICAgICAgICAgICBl eHBvcnQgQ0hPU1RfbjY0PSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX242 ND0ke0NIT1NUX242NH07CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5FX242ND0iX01JUFNfU0lN ID09IF9BQkk2NCI7CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfbjY0PSJsaWI2NCI7CiAgICAg ICAgICAgIGV4cG9ydCBNVUxUSUxJQl9BQklTPSJuNjQgbjMyIG8zMiI7CiAgICAgICAgICAgIGV4 cG9ydCBERUZBVUxUX0FCST0ibjMyIgogICAgICAgIDs7CiAgICAgICAgcG93ZXJwYzY0KikKICAg ICAgICAgICAgZXhwb3J0IENGTEFHU19wcGM9JHtDRkxBR1NfcHBjLS1tMzJ9OwogICAgICAgICAg ICBleHBvcnQgQ0hPU1RfcHBjPSR7Q1RBUkdFVC9wb3dlcnBjNjQvcG93ZXJwY307CiAgICAgICAg ICAgIGV4cG9ydCBDVEFSR0VUX3BwYz0ke0NIT1NUX3BwY307CiAgICAgICAgICAgIGV4cG9ydCBD REVGSU5FX3BwYz0iIV9fcG93ZXJwYzY0X18iOwogICAgICAgICAgICBleHBvcnQgTElCRElSX3Bw Yz0ibGliIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19wcGM2ND0ke0NGTEFHU19wcGM2NC0t bTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3BwYzY0PSR7Q1RBUkdFVH07CiAgICAgICAg ICAgIGV4cG9ydCBDVEFSR0VUX3BwYzY0PSR7Q0hPU1RfcHBjNjR9OwogICAgICAgICAgICBleHBv cnQgQ0RFRklORV9wcGM2ND0iX19wb3dlcnBjNjRfXyI7CiAgICAgICAgICAgIGV4cG9ydCBMSUJE SVJfcHBjNjQ9ImxpYjY0IjsKICAgICAgICAgICAgZXhwb3J0IE1VTFRJTElCX0FCSVM9InBwYzY0 IHBwYyI7CiAgICAgICAgICAgIGV4cG9ydCBERUZBVUxUX0FCST0icHBjNjQiCiAgICAgICAgOzsK ICAgICAgICBzMzkweCopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1NfczM5MD0ke0NGTEFHU19z MzkwLS1tMzF9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfczM5MD0ke0NUQVJHRVQvczM5MHgv czM5MH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3MzOTA9JHtDSE9TVF9zMzkwfTsKICAg ICAgICAgICAgZXhwb3J0IENERUZJTkVfczM5MD0iIV9fczM5MHhfXyI7CiAgICAgICAgICAgIGV4 cG9ydCBMSUJESVJfczM5MD0ibGliIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19zMzkweD0k e0NGTEFHU19zMzkweC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3MzOTB4PSR7Q1RB UkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX3MzOTB4PSR7Q0hPU1RfczM5MHh9Owog ICAgICAgICAgICBleHBvcnQgQ0RFRklORV9zMzkweD0iX19zMzkweF9fIjsKICAgICAgICAgICAg ZXhwb3J0IExJQkRJUl9zMzkweD0ibGliNjQiOwogICAgICAgICAgICBleHBvcnQgTVVMVElMSUJf QUJJUz0iczM5MHggczM5MCI7CiAgICAgICAgICAgIGV4cG9ydCBERUZBVUxUX0FCST0iczM5MHgi CiAgICAgICAgOzsKICAgICAgICBzcGFyYyopCiAgICAgICAgICAgIGV4cG9ydCBDRkxBR1Nfc3Bh cmMzMj0ke0NGTEFHU19zcGFyYzMyfTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3NwYXJjMzI9 JHtDVEFSR0VUL3NwYXJjNjQvc3BhcmN9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9zcGFy YzMyPSR7Q0hPU1Rfc3BhcmMzMn07CiAgICAgICAgICAgIGV4cG9ydCBDREVGSU5FX3NwYXJjMzI9 IiFfX2FyY2g2NF9fIjsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9zcGFyYzMyPSJsaWIiOwog ICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3NwYXJjNjQ9JHtDRkxBR1Nfc3BhcmM2NC0tbTY0fTsK ICAgICAgICAgICAgZXhwb3J0IENIT1NUX3NwYXJjNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAg ZXhwb3J0IENUQVJHRVRfc3BhcmM2ND0ke0NIT1NUX3NwYXJjNjR9OwogICAgICAgICAgICBleHBv cnQgQ0RFRklORV9zcGFyYzY0PSJfX2FyY2g2NF9fIjsKICAgICAgICAgICAgZXhwb3J0IExJQkRJ Ul9zcGFyYzY0PSJsaWI2NCI7CiAgICAgICAgICAgIGV4cG9ydCBNVUxUSUxJQl9BQklTPSIke01V TFRJTElCX0FCSVMtc3BhcmM2NCBzcGFyYzMyfSI7CiAgICAgICAgICAgIGV4cG9ydCBERUZBVUxU X0FCST0iJHtERUZBVUxUX0FCSS1zcGFyYzY0fSIKICAgICAgICA7OwogICAgICAgICopCiAgICAg ICAgICAgIGV4cG9ydCBNVUxUSUxJQl9BQklTPSJkZWZhdWx0IjsKICAgICAgICAgICAgZXhwb3J0 IERFRkFVTFRfQUJJPSJkZWZhdWx0IgogICAgICAgIDs7CiAgICBlc2FjCn0KbXVsdGlsaWJfdG9v bGNoYWluX3NldHVwICgpIAp7IAogICAgZXhwb3J0IEFCST0kMTsKICAgIGlmIFtbICR7QUJJfSAh PSAke0RFRkFVTFRfQUJJfSBdXTsgdGhlbgogICAgICAgIDogJHtDQ0FDSEVfRElTQUJMRTo9bXVs dGlsaWItZGlzYWJsZX07CiAgICBlbHNlCiAgICAgICAgaWYgW1sgJHtDQ0FDSEVfRElTQUJMRX0g PT0gIm11bHRpbGliLWRpc2FibGUiIF1dOyB0aGVuCiAgICAgICAgICAgIHVuc2V0IENDQUNIRV9E SVNBQkxFOwogICAgICAgIGZpOwogICAgZmk7CiAgICBleHBvcnQgQ0NBQ0hFX0RJU0FCTEU7CiAg ICBpZiBoYXNfdmVyc2lvbiBhcHAtYWRtaW4vZXNlbGVjdC1jb21waWxlcjsgdGhlbgogICAgICAg IGV4cG9ydCBMRD0ibGQgJChnZXRfYWJpX0xERkxBR1MgJDEpIjsKICAgICAgICBleHBvcnQgQVM9 ImFzICQoZ2V0X2FiaV9BU0ZMQUdTICQxKSI7CiAgICAgICAgZXhwb3J0IENIT1NUPSQoZ2V0X2Fi aV9DSE9TVCAkMSk7CiAgICAgICAgZXhwb3J0IENCVUlMRD0kKGdldF9hYmlfQ0hPU1QgJDEpOwog ICAgZWxzZQogICAgICAgIHRjLWV4cG9ydCBDQzsKICAgIGZpCn0KbmV3aWNvbiAoKSAKeyAKICAg ICggaW5zaW50byAvdXNyL3NoYXJlL3BpeG1hcHM7CiAgICBuZXdpbnMgIiRAIiApCn0KbmV3bWVu dSAoKSAKeyAKICAgICggaW5zaW50byAvdXNyL3NoYXJlL2FwcGxpY2F0aW9uczsKICAgIG5ld2lu cyAiJEAiICkKfQpudW1iZXJfYWJpcyAoKSAKeyAKICAgIGdldF9pbnN0YWxsX2FiaXMgfCB3YyAt dwp9CnBrZ19ub2ZldGNoICgpIAp7IAogICAgX2VhcGkwX3BrZ19ub2ZldGNoICIkQCIKfQpwa2df cG9zdGluc3QgKCkgCnsgCiAgICBlbG9nOwogICAgZWxvZyAiUmVtZW1iZXIgdGhhdCBhbGwgbWl4 ZXIgY2hhbm5lbHMgd2lsbCBiZSBNVVRFRCBieSBkZWZhdWx0LiI7CiAgICBlbG9nICJVc2UgdGhl ICdhbHNhbWl4ZXInIHByb2dyYW0gdG8gdW5tdXRlIHRoZW0sIHRoZW4gc2F2ZSB5b3VyIjsKICAg IGVsb2cgIm1peGVyIHNldHRpbmdzIHdpdGggL2V0Yy9pbml0LmQvYWxzYXNvdW5kIHNhdmUiOwog ICAgZWxvZzsKICAgIGVsb2cgIklmIHlvdSBleHBlcmllbmNlIHByb2JsZW1zLCBwbGVhc2UgdHJ5 IGJ1aWxkaW5nIHRoZSBpbi1rZXJuZWwiOwogICAgZWxvZyAiQUxTQSBkcml2ZXJzIGluc3RlYWQu IFRoaXMgZWJ1aWxkIGlzIHVuc3VwcG9ydGVkLiI7CiAgICBlbG9nOwogICAgbGludXgtbW9kX3Br Z19wb3N0aW5zdDsKICAgIGlmIGtlcm5lbF9pcyAyIDYgJiYgWyAtZSAiJHtST09UfS9saWIvbW9k dWxlcy8ke0tWX0ZVTEx9L2tlcm5lbC9zb3VuZCIgXTsgdGhlbgogICAgICAgIGZvciBmaWxlIGlu ICQoZmluZCAiJHtST09UfS9saWIvbW9kdWxlcy8ke0tWX0ZVTEx9LyR7UE59IiAtdHlwZSBmKTsK ICAgICAgICBkbwogICAgICAgICAgICBybSAtZiAke2ZpbGUvLyR7S1ZfRlVMTH1cLyR7UE59LyR7 S1ZfRlVMTH1cL2tlcm5lbFwvc291bmR9OwogICAgICAgIGRvbmU7CiAgICAgICAgZmluZCAiJHtS T09UfS9saWIvbW9kdWxlcy8ke0tWX0ZVTEx9L2tlcm5lbC9zb3VuZCIgLXR5cGUgZCAtcHJpbnQw IHwgeGFyZ3MgLS1udWxsIHJtZGlyOwogICAgZmkKfQpwa2dfcG9zdHJtICgpIAp7IAogICAgbGlu dXgtbW9kX3BrZ19wb3N0cm0gIiRAIgp9CnBrZ19wcmVpbnN0ICgpIAp7IAogICAgbGludXgtbW9k X3BrZ19wcmVpbnN0ICIkQCIKfQpwa2dfc2V0dXAgKCkgCnsgCiAgICBBTFNBX0NBUkRTPSR7QUxT QV9DQVJEUzotJHtJVVNFX0FMU0FfQ0FSRFN9fTsKICAgIGxvY2FsIFBOUF9EUklWRVJTPSJpbnRl cndhdmUgaW50ZXJ3YXZlLXN0YiI7CiAgICBsb2NhbCBQTlBfRVJST1I9IlNvbWUgb2YgdGhlIGRy aXZlcnMgeW91IHNlbGVjdGVkIHJlcXVpcmUgUG5QIHN1cHBvcnQgaW4geW91ciBrZXJuZWwgKCR7 UE5QX0RSSVZFUlN9KS4gRWl0aGVyIGVuYWJsZSBQblAgaW4geW91ciBrZXJuZWwgb3IgdHJpbSB3 aGljaCBkcml2ZXJzIGdldCBjb21waWxlZCB1c2luZyBBTFNBX0NBUkRTIGluIC9ldGMvbWFrZS5j b25mLiI7CiAgICBsb2NhbCBJU0FfRFJJVkVSUz0iY3M0MjMyIG1zbmQtcGlubmFjbGUgYWRsaWIg YWQxODE2YSBhZDE4NDggYWxzMTAwIGF6dDIzMjAKCQljbWk4MzMwIGNzNDIzMSBjczQyMzYgZHQw MTl4ICBlczk2OCBlczE2ODggZXMxOHh4IGd1c2NsYXNzaWMgZ3VzZXh0cmVtZSBndXNtYXgKCQlp bnRlcndhdmUgaW50ZXJ3YXZlLXN0YiBvcGwzc2EyIG9wdGk5MngtYWQxODQ4IG9wdGk5MngtY3M0 MjMxIG9wdGk5M3ggbWlybyBzYjgKCQlzYjE2IHNiYXdlIHNiMTZfY3NwIHNnYWxheHkgc3NjYXBl IHdhdmVmcm9udCI7CiAgICBsb2NhbCBJU0FfRVJST1I9IlNvbWUgb2YgdGhlIGRyaXZlcnMgeW91 IHNlbGVjdGVkIHJlcXVpcmUgSVNBIHN1cHBvcnQgaW4geW91ciBrZXJuZWwgKCQoZWNobyAkSVNB X0RSSVZFUlMpKS4gRWl0aGVyIGVuYWJsZSBJU0EgaW4geW91ciBrZXJuZWwgb3IgdHJpbSB3aGlj aCBkcml2ZXJzIGdldCBjb21waWxlZCB1c2luZyBBTFNBX0NBUkRTIGluIC9ldGMvbWFrZS5jb25m LiI7CiAgICBsb2NhbCBGV19EUklWRVJTPSJkYXJsYTIwIGdpbmEyMCBsYXlsYTIwIGRhcmxhMjQg Z2luYTI0IGxheWxhMjQgbW9uYSBtaWEgZWNobzNnIGluZGlnbwoJCWluZGlnb2lvIGluZGlnb2Rq IGVtdTEwazEga29yZzEyMTIgbWFlc3RybzMgcmlwdGlkZSB5bWZwY2kgYXNpaHBpIjsKICAgIGxv Y2FsIEZXX0xPQURFUl9FUlJPUj0iU29tZSBvZiB0aGUgZHJpdmVycyB5b3Ugc2VsZWN0ZWQgcmVx dWlyZSAnVXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcgc3VwcG9ydCcgaW4geW91ciBrZXJuZWwg KCR7RldfRFJJVkVSU30pLiBFaXRoZXIgZW5hYmxlIHRoYXQgZmVhdHVyZSBvciB0cmltIHdoaWNo IGRyaXZlcnMgZ2V0IGNvbXBpbGVkIHVzaW5nIEFMU0FfQ0FSRFMgaW4gL2V0Yy9tYWtlLmNvbmYu IjsKICAgIGxvY2FsIFBBUlBPUlRfRFJJVkVSUz0icG9ydG1hbjJ4NCI7CiAgICBsb2NhbCBQQVJQ T1JUX0VSUk9SPSJTb21lIGlmIHRoZSBkcml2ZXJzIHlvdSBzZWxlY3RlZCByZXF1aXJlIFBhcmFs bGVsIFBvcnQgc3VwcG9ydCAoJHtQQVJQT1JUX0RSSVZFUlN9KS4gRWl0aGVyIGVuYWJsZSB0aGF0 IGZlYXR1cmUgb3IgdHJpbSB3aGljaCBkcml2ZXJzIGdldCBjb21waWxlZCB1c2luZyBBTFNBX0NB UkRTIGluIC9ldGMvbWFrZS5jb25mLiI7CiAgICBsb2NhbCBUTVBfQUxTQV9DQVJEUzsKICAgIGxv Y2FsIENIRUNLX1BOUDsKICAgIGxvY2FsIENIRUNLX0lTQTsKICAgIGxvY2FsIENIRUNLX0ZXOwog ICAgbG9jYWwgQ0hFQ0tfUEFSUE9SVDsKICAgIGZvciBjYXJkIGluICR7QUxTQV9DQVJEU307CiAg ICBkbwogICAgICAgIGlmIGhhcyBhbHNhX2NhcmRzXyR7Y2FyZH0gJHtJVVNFfSAmJiB1c2UgYWxz YV9jYXJkc18ke2NhcmR9OyB0aGVuCiAgICAgICAgICAgIFRNUF9BTFNBX0NBUkRTPSIke1RNUF9B TFNBX0NBUkRTfSAke2NhcmR9IjsKICAgICAgICAgICAgaGFzICR7Y2FyZH0gJHtQTlBfRFJJVkVS U30gJiYgQ0hFQ0tfUE5QPSJQTlAiOwogICAgICAgICAgICBoYXMgJHtjYXJkfSAke0lTQV9EUklW RVJTfSAmJiBDSEVDS19JU0E9IklTQSI7CiAgICAgICAgICAgIGhhcyAke2NhcmR9ICR7RldfRFJJ VkVSU30gJiYgQ0hFQ0tfRlc9IkZXX0xPQURFUiI7CiAgICAgICAgICAgIGhhcyAke2NhcmR9ICR7 UEFSUE9SVF9EUklWRVJTfSAmJiBDSEVDS19QQVJQT1JUPSJQQVJQT1JUIjsKICAgICAgICBmaTsK ICAgIGRvbmU7CiAgICBBTFNBX0NBUkRTPSIke1RNUF9BTFNBX0NBUkRTfSI7CiAgICBsb2NhbCBD T05GSUdfQ0hFQ0s9IiFTTkQgU09VTkQgJHtDSEVDS19QTlB9ICR7Q0hFQ0tfSVNBfSAke0NIRUNL X0ZXfSAke0NIRUNLX1BBUlBPUlR9IjsKICAgIGxvY2FsIFNORF9FUlJPUj0iQUxTQSBpcyBhbHJl YWR5IGNvbXBpbGVkIGludG8gdGhlIGtlcm5lbC4gVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgY29u ZmlndXJhdGlvbiwgZG9uJ3QgZW1lcmdlIGFsc2EtZHJpdmVyLiI7CiAgICBsb2NhbCBTT1VORF9F UlJPUj0iWW91ciBrZXJuZWwgZG9lc24ndCBoYXZlIHNvdW5kIHN1cHBvcnQgZW5hYmxlZC4iOwog ICAgbG9jYWwgU09VTkRfUFJJTUVfRVJST1I9IllvdXIga2VybmVsIGlzIGNvbmZpZ3VyZWQgdG8g dXNlIHRoZSBkZXByZWNhdGVkIE9TUyBkcml2ZXJzLgkgUGxlYXNlIGRpc2FibGUgdGhlbSBhbmQg cmUtZW1lcmdlIGFsc2EtZHJpdmVyLiI7CiAgICBsaW51eC1tb2RfcGtnX3NldHVwOwogICAgaWYg W1sgJHtQUk9GSUxFX0FSQ0h9ID09ICJzcGFyYzY0IiBdXTsgdGhlbgogICAgICAgIGV4cG9ydCBD QlVJTEQ9JHtDQlVJTEQtJHtDSE9TVH19OwogICAgICAgIGV4cG9ydCBDSE9TVD0ic3BhcmM2NC11 bmtub3duLWxpbnV4LWdudSI7CiAgICBmaQp9CnByZXBfbWxfaW5jbHVkZXMgKCkgCnsgCiAgICBp ZiBbWyAkKG51bWJlcl9hYmlzKSAtZ3QgMSBdXTsgdGhlbgogICAgICAgIGxvY2FsIGRpcjsKICAg ICAgICBsb2NhbCBkaXJzOwogICAgICAgIGxvY2FsIGJhc2U7CiAgICAgICAgaWYgW1sgJCMgLWVx IDAgXV07IHRoZW4KICAgICAgICAgICAgZGlycz0vdXNyL2luY2x1ZGU7CiAgICAgICAgZWxzZQog ICAgICAgICAgICBkaXJzPSIkQCI7CiAgICAgICAgZmk7CiAgICAgICAgZm9yIGRpciBpbiAke2Rp cnN9OwogICAgICAgIGRvCiAgICAgICAgICAgIGJhc2U9JHtUfS9nZW50b28tbXVsdGlsaWIvJHtk aXJ9L2dlbnRvby1tdWx0aWxpYjsKICAgICAgICAgICAgbWtkaXIgLXAgIiR7YmFzZX0iOwogICAg ICAgICAgICBbWyAtZCAke2Jhc2V9LyR7QUJJfSBdXSAmJiBybSAtcmYgIiR7YmFzZX0vJHtBQkl9 IjsKICAgICAgICAgICAgbXYgIiR7RH0vJHtkaXJ9IiAiJHtiYXNlfS8ke0FCSX0iOwogICAgICAg IGRvbmU7CiAgICAgICAgaWYgaXNfZmluYWxfYWJpOyB0aGVuCiAgICAgICAgICAgIGJhc2U9JHtU fS9nZW50b28tbXVsdGlsaWI7CiAgICAgICAgICAgIHB1c2hkICIke2Jhc2V9IjsKICAgICAgICAg ICAgZmluZCAuIHwgdGFyIC1jIC1UIC0gLWYgLSB8IHRhciAteCAtLW5vLXNhbWUtb3duZXIgLWYg LSAtQyAke0R9OwogICAgICAgICAgICBwb3BkOwogICAgICAgICAgICBzZXQgLS07CiAgICAgICAg ICAgIGZvciBkaXIgaW4gJHtkaXJzfTsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIHNl dCAtLSAiJEAiICIke2Rpcn0iOwogICAgICAgICAgICAgICAgbG9jYWwgYWJpOwogICAgICAgICAg ICAgICAgZm9yIGFiaSBpbiAkKGdldF9pbnN0YWxsX2FiaXMpOwogICAgICAgICAgICAgICAgZG8K ICAgICAgICAgICAgICAgICAgICBzZXQgLS0gIiRAIiAiJChnZXRfYWJpX0NERUZJTkUgJHthYml9 KToke2Rpcn0vZ2VudG9vLW11bHRpbGliLyR7YWJpfSI7CiAgICAgICAgICAgICAgICBkb25lOwog ICAgICAgICAgICAgICAgY3JlYXRlX21sX2luY2x1ZGVzICIkQCI7CiAgICAgICAgICAgIGRvbmU7 CiAgICAgICAgZmk7CiAgICBmaQp9CnByZXNlcnZlX29sZF9saWIgKCkgCnsgCiAgICBpZiBbWyAk e0VCVUlMRF9QSEFTRX0gIT0gInByZWluc3QiIF1dOyB0aGVuCiAgICAgICAgZWVycm9yICJwcmVz ZXJ2ZV9vbGRfbGliKCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBwa2dfcHJlaW5zdCgpIG9ubHkiOwog ICAgICAgIGRpZSAiSW52YWxpZCBwcmVzZXJ2ZV9vbGRfbGliKCkgdXNhZ2UiOwogICAgZmk7CiAg ICBbWyAteiAkMSBdXSAmJiBkaWUgIlVzYWdlOiBwcmVzZXJ2ZV9vbGRfbGliIDxsaWJyYXJ5IHRv IHByZXNlcnZlPiBbbW9yZSBsaWJyYXJpZXMgdG8gcHJlc2VydmVdIjsKICAgIGhhcyBwcmVzZXJ2 ZS1saWJzICR7RkVBVFVSRVN9ICYmIHJldHVybiAwOwogICAgbG9jYWwgbGliIGRpcjsKICAgIGZv ciBsaWIgaW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUgJHtST09UfS8ke2xpYn0gXV0gfHwg Y29udGludWU7CiAgICAgICAgZGlyPSR7bGliJS8qfTsKICAgICAgICBkb2RpciAke2Rpcn0gfHwg ZGllICJkb2RpciAke2Rpcn0gZmFpbGVkIjsKICAgICAgICBjcCAiJHtST09UfSIvJHtsaWJ9ICIk e0R9Ii8ke2xpYn0gfHwgZGllICJjcCAke2xpYn0gZmFpbGVkIjsKICAgICAgICB0b3VjaCAiJHtE fSIvJHtsaWJ9OwogICAgZG9uZQp9CnByZXNlcnZlX29sZF9saWJfbm90aWZ5ICgpIAp7IAogICAg aWYgW1sgJHtFQlVJTERfUEhBU0V9ICE9ICJwb3N0aW5zdCIgXV07IHRoZW4KICAgICAgICBlZXJy b3IgInByZXNlcnZlX29sZF9saWJfbm90aWZ5KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBwa2dfcG9z dGluc3QoKSBvbmx5IjsKICAgICAgICBkaWUgIkludmFsaWQgcHJlc2VydmVfb2xkX2xpYl9ub3Rp ZnkoKSB1c2FnZSI7CiAgICBmaTsKICAgIGhhcyBwcmVzZXJ2ZS1saWJzICR7RkVBVFVSRVN9ICYm IHJldHVybiAwOwogICAgbG9jYWwgbGliIG5vdGljZT0wOwogICAgZm9yIGxpYiBpbiAiJEAiOwog ICAgZG8KICAgICAgICBbWyAtZSAke1JPT1R9LyR7bGlifSBdXSB8fCBjb250aW51ZTsKICAgICAg ICBpZiBbWyAke25vdGljZX0gLWVxIDAgXV07IHRoZW4KICAgICAgICAgICAgbm90aWNlPTE7CiAg ICAgICAgICAgIGV3YXJuICJPbGQgdmVyc2lvbnMgb2YgaW5zdGFsbGVkIGxpYnJhcmllcyB3ZXJl IGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtLiI7CiAgICAgICAgICAgIGV3YXJuICJJbiBvcmRlciB0 byBhdm9pZCBicmVha2luZyBwYWNrYWdlcyB0aGF0IGRlcGVuZCBvbiB0aGVzZSBvbGQgbGlicywi OwogICAgICAgICAgICBld2FybiAidGhlIGxpYnJhcmllcyBhcmUgbm90IGJlaW5nIHJlbW92ZWQu ICBZb3UgbmVlZCB0byBydW4gcmV2ZGVwLXJlYnVpbGQiOwogICAgICAgICAgICBld2FybiAiaW4g b3JkZXIgdG8gcmVtb3ZlIHRoZXNlIG9sZCBkZXBlbmRlbmNpZXMuICBJZiB5b3UgZG8gbm90IGhh dmUgdGhpcyI7CiAgICAgICAgICAgIGV3YXJuICJoZWxwZXIgcHJvZ3JhbSwgc2ltcGx5IGVtZXJn ZSB0aGUgJ2dlbnRvb2xraXQnIHBhY2thZ2UuIjsKICAgICAgICAgICAgZXdhcm47CiAgICAgICAg Zmk7CiAgICAgICAgZXdhcm4gIiAgIyByZXZkZXAtcmVidWlsZCAtLWxpYnJhcnkgJHtsaWIjIyov fSI7CiAgICBkb25lOwogICAgaWYgW1sgJHtub3RpY2V9IC1lcSAxIF1dOyB0aGVuCiAgICAgICAg ZXdhcm47CiAgICAgICAgZXdhcm4gIk9uY2UgeW91J3ZlIGZpbmlzaGVkIHJ1bm5pbmcgcmV2ZGVw LXJlYnVpbGQsIGl0IHNob3VsZCBiZSBzYWZlIHRvIjsKICAgICAgICBld2FybiAiZGVsZXRlIHRo ZSBvbGQgbGlicmFyaWVzLiAgSGVyZSBpcyBhIGNvcHkgJiBwYXN0ZSBmb3IgdGhlIGxhenk6IjsK ICAgICAgICBmb3IgbGliIGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgZXdhcm4gIiAg IyBybSAnJHtsaWJ9JyI7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KcWVlcnJvciAoKSAKeyAKICAg IHFvdXQgZWVycm9yICIke0B9Igp9CnFlaW5mbyAoKSAKeyAKICAgIHFvdXQgZWluZm8gIiR7QH0i Cn0KcW91dCAoKSAKeyAKICAgIGxvY2FsIG91dHB1dG1zZyB0eXBlOwogICAgdHlwZT0kezF9Owog ICAgc2hpZnQ7CiAgICBvdXRwdXRtc2c9IiR7QH0iOwogICAgY2FzZSAiJHtFQlVJTERfUEhBU0V9 IiBpbiAKICAgICAgICBkZXBlbmQpCiAgICAgICAgICAgIHVuc2V0IG91dHB1dG1zZwogICAgICAg IDs7CiAgICAgICAgY2xlYW4pCiAgICAgICAgICAgIHVuc2V0IG91dHB1dG1zZwogICAgICAgIDs7 CiAgICAgICAgcHJlaW5zdCkKICAgICAgICAgICAgdW5zZXQgb3V0cHV0bXNnCiAgICAgICAgOzsK ICAgIGVzYWM7CiAgICBbIC1uICIke291dHB1dG1zZ30iIF0gJiYgJHt0eXBlfSAiJHtvdXRwdXRt c2d9Igp9CnJhdy1sZGZsYWdzICgpIAp7IAogICAgbG9jYWwgeCBpbnB1dD0iJEAiOwogICAgW1sg LXogJHtpbnB1dH0gXV0gJiYgaW5wdXQ9JHtMREZMQUdTfTsKICAgIHNldCAtLTsKICAgIGZvciB4 IGluICR7aW5wdXR9OwogICAgZG8KICAgICAgICB4PSR7eCMtV2wsfTsKICAgICAgICBzZXQgLS0g IiRAIiAke3gvLywvIH07CiAgICBkb25lOwogICAgZWNobyAiJEAiCn0KcmVtb3ZlX21vZHVsZWRi ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBsb2Nh bCBNT0RVTEVEQl9ESVI9JHtST09UfS92YXIvbGliL21vZHVsZS1yZWJ1aWxkLzsKICAgIG1vdmVf b2xkX21vZHVsZWRiOwogICAgaWYgZ3JlcCAtcXMgJHtDQVRFR09SWX0vJHtQTn0tJHtQVlJ9ICR7 TU9EVUxFREJfRElSfS9tb2R1bGVkYjsgdGhlbgogICAgICAgIGVpbmZvICJSZW1vdmluZyAke0NB VEVHT1JZfS8ke1BOfS0ke1BWUn0gZnJvbSBtb2R1bGVkYi4iOwogICAgICAgIHNlZCAtaSAtZSAi Ly4qJHtDQVRFR09SWX1cLyR7UE59LSR7UFZSfS4qL2QiICR7TU9EVUxFREJfRElSfS9tb2R1bGVk YjsKICAgIGZpCn0KcmVwbGFjZS1jcHUtZmxhZ3MgKCkgCnsgCiAgICBsb2NhbCBuZXdjcHU9IiQj IjsKICAgIG5ld2NwdT0iJHshbmV3Y3B1fSI7CiAgICB3aGlsZSBbICQjIC1ndCAxIF07IGRvCiAg ICAgICAgcmVwbGFjZS1mbGFncyAiLW1hcmNoPSR7MX0iICItbWFyY2g9JHtuZXdjcHV9IjsKICAg ICAgICByZXBsYWNlLWZsYWdzICItbWNwdT0kezF9IiAiLW1jcHU9JHtuZXdjcHV9IjsKICAgICAg ICByZXBsYWNlLWZsYWdzICItbXR1bmU9JHsxfSIgIi1tdHVuZT0ke25ld2NwdX0iOwogICAgICAg IHNoaWZ0OwogICAgZG9uZTsKICAgIHJldHVybiAwCn0KcmVwbGFjZS1mbGFncyAoKSAKeyAKICAg IFtbICQjICE9IDIgXV0gJiYgZWNobyAmJiBlZXJyb3IgIlVzYWdlOiByZXBsYWNlLWZsYWdzIDxv bGQgZmxhZz4gPG5ldyBmbGFnPiIgJiYgZGllICJyZXBsYWNlLWZsYWdzIHRha2VzIDIgYXJndW1l bnRzLCBub3QgJCMiOwogICAgbG9jYWwgZiBmc2V0OwogICAgZGVjbGFyZSAtYSBuZXdfQ0ZMQUdT IG5ld19DWFhGTEFHUyBuZXdfRkZMQUdTIG5ld19GQ0ZMQUdTOwogICAgZm9yIGZzZXQgaW4gQ0ZM QUdTIENYWEZMQUdTIEZGTEFHUyBGQ0ZMQUdTOwogICAgZG8KICAgICAgICBmb3IgZiBpbiAkeyFm c2V0fTsKICAgICAgICBkbwogICAgICAgICAgICBbWyAke2Z9ID09ICR7MX0gXV0gJiYgZj0kezJ9 OwogICAgICAgICAgICBldmFsIG5ld18ke2ZzZXR9XFtcJHtcI25ld18ke2ZzZXR9XFtAXX1dPVwk e2Z9OwogICAgICAgIGRvbmU7CiAgICAgICAgZXZhbCBleHBvcnQgJHtmc2V0fT1cJHtuZXdfJHtm c2V0fVxbKl19OwogICAgZG9uZTsKICAgIHJldHVybiAwCn0KcmVwbGFjZS1zcGFyYzY0LWZsYWdz ICgpIAp7IAogICAgbG9jYWwgU1BBUkM2NF9DUFVTPSJ1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5 IjsKICAgIGlmIFsgIiR7Q0ZMQUdTL210dW5lfSIgIT0gIiR7Q0ZMQUdTfSIgXTsgdGhlbgogICAg ICAgIGZvciB4IGluICR7U1BBUkM2NF9DUFVTfTsKICAgICAgICBkbwogICAgICAgICAgICBDRkxB R1M9IiR7Q0ZMQUdTLy1tY3B1PSR7eH0vLW1jcHU9djh9IjsKICAgICAgICBkb25lOwogICAgZWxz ZQogICAgICAgIGZvciB4IGluICR7U1BBUkM2NF9DUFVTfTsKICAgICAgICBkbwogICAgICAgICAg ICBDRkxBR1M9IiR7Q0ZMQUdTLy1tY3B1PSR7eH0vLW1jcHU9djggLW10dW5lPSR7eH19IjsKICAg ICAgICBkb25lOwogICAgZmk7CiAgICBpZiBbICIke0NYWEZMQUdTL210dW5lfSIgIT0gIiR7Q1hY RkxBR1N9IiBdOyB0aGVuCiAgICAgICAgZm9yIHggaW4gJHtTUEFSQzY0X0NQVVN9OwogICAgICAg IGRvCiAgICAgICAgICAgIENYWEZMQUdTPSIke0NYWEZMQUdTLy1tY3B1PSR7eH0vLW1jcHU9djh9 IjsKICAgICAgICBkb25lOwogICAgZWxzZQogICAgICAgIGZvciB4IGluICR7U1BBUkM2NF9DUFVT fTsKICAgICAgICBkbwogICAgICAgICAgICBDWFhGTEFHUz0iJHtDWFhGTEFHUy8tbWNwdT0ke3h9 Ly1tY3B1PXY4IC1tdHVuZT0ke3h9fSI7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgZXhwb3J0 IENGTEFHUyBDWFhGTEFHUwp9CnJlcGxhY2VfYWxsX3ZlcnNpb25fc2VwYXJhdG9ycyAoKSAKeyAK ICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9uOwogICAgbG9jYWwgYzsKICAgIGM9KCQo Z2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7MjotJHtQVn19IiApKTsKICAgIGM9IiR7Y1tA XS8vWy0uX10vJDF9IjsKICAgIGVjaG8gJHtjLy8gfTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRf dG9nZ2xlIG9mZgp9CnJlcGxhY2VfdmVyc2lvbl9zZXBhcmF0b3IgKCkgCnsgCiAgICBfX3ZlcnNp b25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIHcgaSBjIGZvdW5kPTAgdj0iJHszOi0k e1BWfX0iOwogICAgdz0kezE6LTF9OwogICAgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50 cyAke3Z9ICkpOwogICAgaWYgW1sgIiR7dy8vW1s6ZGlnaXQ6XV0vfSIgPT0gIiR7d30iIF1dOyB0 aGVuCiAgICAgICAgZm9yICgoaSA9IDAgOyBpIDwgJHsjY1tAXX0gOyBpID0gJGkgKyAxICkpCiAg ICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgIiR7Y1ske2l9XX0iID09ICIke3d9IiBdXTsgdGhl bgogICAgICAgICAgICAgICAgY1ske2l9XT0iJHsyfSI7CiAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBmb3IgKChpID0g MCA7IGkgPCAkeyNjW0BdfSA7IGkgPSAkaSArIDEgKSkKICAgICAgICBkbwogICAgICAgICAgICBp ZiBbWyAtbiAiJHtjWyR7aX1dLy9bXi0uX119IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm91 bmQ9JCgoJGZvdW5kICsgMSkpOwogICAgICAgICAgICAgICAgaWYgW1sgIiRmb3VuZCIgPT0gIiR7 d30iIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgY1ske2l9XT0iJHsyfSI7CiAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAg ICAgICAgZG9uZTsKICAgIGZpOwogICAgYz0ke2NbQF19OwogICAgZWNobyAke2MvLyB9OwogICAg X192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmCn0KcmVxdWlyZV9jb25maWd1cmVkX2tlcm5l bCAoKSAKeyAKICAgIGlmICEgbGludXhfY29uZmlnX2V4aXN0czsgdGhlbgogICAgICAgIHFlZXJy b3IgIkNvdWxkIG5vdCBmaW5kIGEgdXNhYmxlIC5jb25maWcgaW4gdGhlIGtlcm5lbCBzb3VyY2Ug ZGlyZWN0b3J5LiI7CiAgICAgICAgcWVlcnJvciAiUGxlYXNlIGVuc3VyZSB0aGF0ICR7S0VSTkVM X0RJUn0gcG9pbnRzIHRvIGEgY29uZmlndXJlZCBzZXQgb2YgTGludXggc291cmNlcy4iOwogICAg ICAgIHFlZXJyb3IgIklmIHlvdSBhcmUgdXNpbmcgS0JVSUxEX09VVFBVVCwgcGxlYXNlIHNldCB0 aGUgZW52aXJvbm1lbnQgdmFyIHNvIHRoYXQiOwogICAgICAgIHFlZXJyb3IgIml0IHBvaW50cyB0 byB0aGUgbmVjZXNzYXJ5IG9iamVjdCBkaXJlY3Rvcnkgc28gdGhhdCBpdCBtaWdodCBmaW5kIC5j b25maWcuIjsKICAgICAgICBkaWUgIktlcm5lbCBub3QgY29uZmlndXJlZDsgbm8gLmNvbmZpZyBm b3VuZCBpbiAke0tWX09VVF9ESVJ9IjsKICAgIGZpCn0Kc2VxICgpIAp7IAogICAgbG9jYWwgcD0k KHR5cGUgLVAgc2VxKTsKICAgIGNhc2UgJCMgaW4gCiAgICAgICAgMSkKICAgICAgICAgICAgbWlu PTEgbWF4PSQxIHN0ZXA9MQogICAgICAgIDs7CiAgICAgICAgMikKICAgICAgICAgICAgbWluPSQx IG1heD0kMiBzdGVwPTEKICAgICAgICA7OwogICAgICAgIDMpCiAgICAgICAgICAgIG1pbj0kMSBt YXg9JDMgc3RlcD0kMgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZGllICJzZXEg Y2FsbGVkIHdpdGggd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyIKICAgICAgICA7OwogICAgZXNh YzsKICAgIGlmIFtbIC16ICR7cH0gXV07IHRoZW4KICAgICAgICBsb2NhbCByZXBzOwogICAgICAg IGlmIFtbICR7c3RlcH0gIT0gMCBdXTsgdGhlbgogICAgICAgICAgICByZXBzPSQoKCAoJG1heC0k bWluKSAvICRzdGVwICsxICkpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcmVwcz0wOwogICAg ICAgIGZpOwogICAgICAgIGpvdCAkcmVwcyAkbWluICRtYXggJHN0ZXA7CiAgICBlbHNlCiAgICAg ICAgIiR7cH0iICRtaW4gJHN0ZXAgJG1heDsKICAgIGZpCn0Kc2V0X2FyY2hfdG9fa2VybmVsICgp IAp7IAogICAgZXhwb3J0IEFSQ0g9JCh0Yy1hcmNoLWtlcm5lbCkKfQpzZXRfYXJjaF90b19wb3J0 YWdlICgpIAp7IAogICAgZXhwb3J0IEFSQ0g9JCh0Yy1hcmNoKQp9CnNldF9rdm9iaiAoKSAKeyAK ICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgaWYga2VybmVsX2lz IDIgNjsgdGhlbgogICAgICAgIEtWX09CSj0ia28iOwogICAgZWxzZQogICAgICAgIEtWX09CSj0i byI7CiAgICBmaQp9CnNldHVwLWFsbG93ZWQtZmxhZ3MgKCkgCnsgCiAgICBpZiBbWyAteiAke0FM TE9XRURfRkxBR1N9IF1dOyB0aGVuCiAgICAgICAgZXhwb3J0IEFMTE9XRURfRkxBR1M9Ii1waXBl IjsKICAgICAgICBleHBvcnQgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAtTyAtTzAg LU8xIC1PMiAtbWNwdSAtbWFyY2ggLW10dW5lIjsKICAgICAgICBleHBvcnQgQUxMT1dFRF9GTEFH Uz0iJHtBTExPV0VEX0ZMQUdTfSAtZnN0YWNrLXByb3RlY3RvciAtZnN0YWNrLXByb3RlY3Rvci1h bGwiOwogICAgICAgIGV4cG9ydCBBTExPV0VEX0ZMQUdTPSIke0FMTE9XRURfRkxBR1N9IC1mYm91 bmRzLWNoZWNraW5nIC1mbm8tc3RyaWN0LW92ZXJmbG93IjsKICAgICAgICBleHBvcnQgQUxMT1dF RF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAtZm5vLVBJRSAtZm5vLXBpZSAtZm5vLXVuaXQtYXQt YS10aW1lIjsKICAgICAgICBleHBvcnQgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAt ZyAtZ1swLTldIC1nZ2RiIC1nZ2RiWzAtOV0gLWdzdGFicyAtZ3N0YWJzKyI7CiAgICAgICAgZXhw b3J0IEFMTE9XRURfRkxBR1M9IiR7QUxMT1dFRF9GTEFHU30gLWZuby1pZGVudCI7CiAgICAgICAg ZXhwb3J0IEFMTE9XRURfRkxBR1M9IiR7QUxMT1dFRF9GTEFHU30gLVcqIC13IjsKICAgIGZpOwog ICAgQUxMT1dFRF9GTEFHUz0iJHtBTExPV0VEX0ZMQUdTfSAtZm5vLXN0YWNrLXByb3RlY3RvciAt Zm5vLXN0YWNrLXByb3RlY3Rvci1hbGwgCQktZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWJvdW5k cy1jaGVja2luZyAtZnN0cmljdC1vdmVyZmxvdyI7CiAgICBBTExPV0VEX0ZMQUdTPSIke0FMTE9X RURfRkxBR1N9IC1tcmVncGFybSAtbW5vLWFwcC1yZWdzIC1tYXBwLXJlZ3MgCQktbW5vLW1teCAt bW5vLXNzZSAtbW5vLXNzZTIgLW1uby1zc2UzIC1tbm8tM2Rub3cgCQktbWlwczEgLW1pcHMyIC1t aXBzMyAtbWlwczQgLW1pcHMzMiAtbWlwczY0IC1taXBzMTYgCQktbXNvZnQtZmxvYXQgLW1uby1z b2Z0LWZsb2F0IC1taGFyZC1mbG9hdCAtbW5vLWhhcmQtZmxvYXQgLW1mcHUgCQktbWllZWUgLW1p ZWVlLXdpdGgtaW5leGFjdCAtbXNjaGVkdWxlIAkJLW10bHMtZGlyZWN0LXNlZy1yZWZzIC1tbm8t dGxzLWRpcmVjdC1zZWctcmVmcyAJCS1tZmxhdCAtbW5vLWZsYXQgLW1uby1mYXN0ZXItc3RydWN0 cyAtbWZhc3Rlci1zdHJ1Y3RzIAkJLW0zMiAtbTY0IC1tYWJpIC1tbGl0dGxlLWVuZGlhbiAtbWJp Zy1lbmRpYW4gLUVMIC1FQiAtZlBJQyAJCS1tbGl2ZS1nMCAtbWNtb2RlbCAtbXN0YWNrLWJpYXMg LW1uby1zdGFjay1iaWFzIAkJLW1zZWN1cmUtcGx0IC1tKi10b2MgLUQqIC1VKiI7CiAgICBleHBv cnQgVU5TVEFCTEVfRkxBR1M9Ii1PcyAtTzMgLWZyZW9yZGVyLWJsb2NrcyI7CiAgICByZXR1cm4g MAp9CnNyY19jb21waWxlICgpIAp7IAogICAgbG9jYWwgbXlBQkk9JHtBQkk6LSR7REVGQVVMVF9B Qkl9fTsKICAgIGlzLWZsYWcgIi1tYWxpZ24tZG91YmxlIiAmJiBmaWx0ZXItZmxhZ3MgIi1mb21p dC1mcmFtZS1wb2ludGVyIjsKICAgIGFwcGVuZC1mbGFncyAiLUkke0tWX0RJUn0vYXJjaC8kKHRj LWFyY2gta2VybmVsKS9pbmNsdWRlIjsKICAgIGVjb25mICQodXNlX3dpdGggb3NzKSAkKHVzZV93 aXRoIG9zcyBwY20tb3NzLXBsdWdpbnMpICQodXNlX3dpdGggZGVidWcgZGVidWcgZnVsbCkgLS13 aXRoLWtlcm5lbD0iJHtLVl9ESVJ9IiAtLXdpdGgtYnVpbGQ9IiR7S1ZfT1VUX0RJUn0iIC0td2l0 aC1yZWRoYXQ9bm8gLS13aXRoLXN1c2U9bm8gLS13aXRoLWlzYXBucD1hdXRvICQodXNlX3dpdGgg bWlkaSBzZXF1ZW5jZXIpIC0td2l0aC1jYXJkcz0iJHtBTFNBX0NBUkRTfSAJCS0td2l0aC1jYXJk LW9wdGlvbnM9YWxsIiB8fCBkaWUgImVjb25mIGZhaWxlZCI7CiAgICBBUkNIPSQodGMtYXJjaC1r ZXJuZWwpOwogICAgQUJJPSR7S0VSTkVMX0FCSX07CiAgICBlbWFrZSBMREZMQUdTPSIkKHJhdy1s ZGZsYWdzKSIgSE9TVENDPSIkKHRjLWdldEJVSUxEX0NDKSIgQ0M9IiQodGMtZ2V0Q0MpIiB8fCBk aWUgIk1ha2UgRmFpbGVkIjsKICAgIEFSQ0g9JCh0Yy1hcmNoKTsKICAgIEFCST0ke215QUJJfQp9 CnNyY19pbnN0YWxsICgpIAp7IAogICAgZW1ha2UgREVTVERJUj0iJHtEfSIgaW5zdGFsbC1tb2R1 bGVzIHx8IGRpZSAibWFrZSBpbnN0YWxsIGZhaWxlZCI7CiAgICBkb2RvYyBDQVJEUy1TVEFUVVMg RkFRIFJFQURNRSBXQVJOSU5HIFRPRE8gU1VQUE9SVEVEX0tFUk5FTFM7CiAgICBpZiBrZXJuZWxf aXMgMiA2OyB0aGVuCiAgICAgICAgbXYgIiR7RH0vbGliL21vZHVsZXMvJHtLVl9GVUxMfS9rZXJu ZWwvc291bmQiICIke0R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0vJHtQTn0iOwogICAgICAgIHJt ZGlyICIke0R9L2xpYi9tb2R1bGVzLyR7S1ZfRlVMTH0va2VybmVsIiA+Ji9kZXYvbnVsbDsKICAg IGZpCn0Kc3JjX3Rlc3QgKCkgCnsgCiAgICBfZWFwaTBfc3JjX3Rlc3QgIiRAIgp9CnNyY191bnBh Y2sgKCkgCnsgCiAgICB1bnBhY2sgJHtBfTsKICAgIGNkICIke1N9IjsKICAgIGNvbnZlcnRfdG9f bSAiJHtTfS9NYWtlZmlsZSI7CiAgICBzZWQgLWkgLWUgJ3M6XCguKmRlcG1vZFwpOiNcMTonICIk e1N9L01ha2VmaWxlIjsKICAgIGVhdXRvY29uZgp9CnN0cmlwLWZsYWdzICgpIAp7IAogICAgbG9j YWwgeCB5IGZsYWcgTkVXX0NGTEFHUyBORVdfQ1hYRkxBR1MgTkVXX0ZGTEFHUyBORVdfRkNGTEFH UzsKICAgIHNldHVwLWFsbG93ZWQtZmxhZ3M7CiAgICBsb2NhbCBORVdfQ0ZMQUdTPSIiOwogICAg bG9jYWwgTkVXX0NYWEZMQUdTPSIiOwogICAgbG9jYWwgTkVXX0ZGTEFHUz0iIjsKICAgIGxvY2Fs IE5FV19GQ0ZMQUdTPSIiOwogICAgaWYgaGFzIH4kKHRjLWFyY2gpICR7QUNDRVBUX0tFWVdPUkRT fTsgdGhlbgogICAgICAgIEFMTE9XRURfRkxBR1M9IiR7QUxMT1dFRF9GTEFHU30gJHtVTlNUQUJM RV9GTEFHU30iOwogICAgZmk7CiAgICBzZXQgLWY7CiAgICBmb3IgeCBpbiAke0NGTEFHU307CiAg ICBkbwogICAgICAgIGZvciB5IGluICR7QUxMT1dFRF9GTEFHU307CiAgICAgICAgZG8KICAgICAg ICAgICAgZmxhZz0ke3glJT0qfTsKICAgICAgICAgICAgaWYgWyAiJHtmbGFnJSUke3l9fSIgPSAi IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBORVdfQ0ZMQUdTPSIke05FV19DRkxBR1N9ICR7eH0i OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAg ICBkb25lOwogICAgZm9yIHggaW4gJHtDWFhGTEFHU307CiAgICBkbwogICAgICAgIGZvciB5IGlu ICR7QUxMT1dFRF9GTEFHU307CiAgICAgICAgZG8KICAgICAgICAgICAgZmxhZz0ke3glJT0qfTsK ICAgICAgICAgICAgaWYgWyAiJHtmbGFnJSUke3l9fSIgPSAiIiBdOyB0aGVuCiAgICAgICAgICAg ICAgICBORVdfQ1hYRkxBR1M9IiR7TkVXX0NYWEZMQUdTfSAke3h9IjsKICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgZG9uZTsKICAgIGZvciB4 IGluICR7RkZMQUdTfTsKICAgIGRvCiAgICAgICAgZm9yIHkgaW4gJHtBTExPV0VEX0ZMQUdTfTsK ICAgICAgICBkbwogICAgICAgICAgICBmbGFnPSR7eCUlPSp9OwogICAgICAgICAgICBpZiBbICIk e2ZsYWclJSR7eX19IiA9ICIiIF07IHRoZW4KICAgICAgICAgICAgICAgIE5FV19GRkxBR1M9IiR7 TkVXX0ZGTEFHU30gJHt4fSI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZmk7 CiAgICAgICAgZG9uZTsKICAgIGRvbmU7CiAgICBmb3IgeCBpbiAke0ZDRkxBR1N9OwogICAgZG8K ICAgICAgICBmb3IgeSBpbiAke0FMTE9XRURfRkxBR1N9OwogICAgICAgIGRvCiAgICAgICAgICAg IGZsYWc9JHt4JSU9Kn07CiAgICAgICAgICAgIGlmIFsgIiR7ZmxhZyUlJHt5fX0iID0gIiIgXTsg dGhlbgogICAgICAgICAgICAgICAgTkVXX0ZDRkxBR1M9IiR7TkVXX0ZDRkxBR1N9ICR7eH0iOwog ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBk b25lOwogICAgaWYgWyAiJHtDRkxBR1MvLU99IiAhPSAiJHtDRkxBR1N9IiAtYSAiJHtORVdfQ0ZM QUdTLy1PfSIgPSAiJHtORVdfQ0ZMQUdTfSIgXTsgdGhlbgogICAgICAgIE5FV19DRkxBR1M9IiR7 TkVXX0NGTEFHU30gLU8yIjsKICAgIGZpOwogICAgaWYgWyAiJHtDWFhGTEFHUy8tT30iICE9ICIk e0NYWEZMQUdTfSIgLWEgIiR7TkVXX0NYWEZMQUdTLy1PfSIgPSAiJHtORVdfQ1hYRkxBR1N9IiBd OyB0aGVuCiAgICAgICAgTkVXX0NYWEZMQUdTPSIke05FV19DWFhGTEFHU30gLU8yIjsKICAgIGZp OwogICAgaWYgWyAiJHtGRkxBR1MvLU99IiAhPSAiJHtGRkxBR1N9IiAtYSAiJHtORVdfRkZMQUdT Ly1PfSIgPSAiJHtORVdfRkZMQUdTfSIgXTsgdGhlbgogICAgICAgIE5FV19GRkxBR1M9IiR7TkVX X0ZGTEFHU30gLU8yIjsKICAgIGZpOwogICAgaWYgWyAiJHtGQ0ZMQUdTLy1PfSIgIT0gIiR7RkNG TEFHU30iIC1hICIke05FV19GQ0ZMQUdTLy1PfSIgPSAiJHtORVdfRkNGTEFHU30iIF07IHRoZW4K ICAgICAgICBORVdfRkNGTEFHUz0iJHtORVdfRkNGTEFHU30gLU8yIjsKICAgIGZpOwogICAgc2V0 ICtmOwogICAgZXhwb3J0IENGTEFHUz0iJHtORVdfQ0ZMQUdTfSI7CiAgICBleHBvcnQgQ1hYRkxB R1M9IiR7TkVXX0NYWEZMQUdTfSI7CiAgICBleHBvcnQgRkZMQUdTPSIke05FV19GRkxBR1N9IjsK ICAgIGV4cG9ydCBGQ0ZMQUdTPSIke05FV19GQ0ZMQUdTfSI7CiAgICByZXR1cm4gMAp9CnN0cmlw LWxpbmd1YXMgKCkgCnsgCiAgICBsb2NhbCBscyBuZXdscyBub2xzOwogICAgaWYgW1sgJDEgPT0g Ii1pIiBdXSB8fCBbWyAkMSA9PSAiLXUiIF1dOyB0aGVuCiAgICAgICAgbG9jYWwgb3A9JDE7CiAg ICAgICAgc2hpZnQ7CiAgICAgICAgbHM9JChmaW5kICIkMSIgLW5hbWUgJyoucG8nIC1leGVjIGJh c2VuYW1lIHt9IC5wbyBcOyk7CiAgICAgICAgc2hpZnQ7CiAgICAgICAgbG9jYWwgZCBmOwogICAg ICAgIGZvciBkIGluICIkQCI7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sgJHtvcH0gPT0g Ii11IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgbmV3bHM9JHtsc307CiAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgIG5ld2xzPSIiOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAg Zm9yIGYgaW4gJChmaW5kICIkZCIgLW5hbWUgJyoucG8nIC1leGVjIGJhc2VuYW1lIHt9IC5wbyBc Oyk7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiBbWyAke29wfSA9PSAiLWkiIF1d OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaGFzcSAke2Z9ICR7bHN9ICYmIG5ld2xzPSIke25l d2xzfSAke2Z9IjsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBoYXNx ICR7Zn0gJHtsc30gfHwgbmV3bHM9IiR7bmV3bHN9ICR7Zn0iOwogICAgICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGxzPSR7bmV3bHN9OwogICAgICAgIGRvbmU7 CiAgICBlbHNlCiAgICAgICAgbHM9IiRAIjsKICAgIGZpOwogICAgbm9scz0iIjsKICAgIG5ld2xz PSIiOwogICAgZm9yIGYgaW4gJHtMSU5HVUFTfTsKICAgIGRvCiAgICAgICAgaWYgaGFzcSAke2Z9 ICR7bHN9OyB0aGVuCiAgICAgICAgICAgIG5ld2xzPSIke25ld2xzfSAke2Z9IjsKICAgICAgICBl bHNlCiAgICAgICAgICAgIG5vbHM9IiR7bm9sc30gJHtmfSI7CiAgICAgICAgZmk7CiAgICBkb25l OwogICAgW1sgLW4gJHtub2xzfSBdXSAmJiBld2FybiAiU29ycnksIGJ1dCAke1BOfSBkb2VzIG5v dCBzdXBwb3J0IHRoZSBMSU5HVUFzOiIgJHtub2xzfTsKICAgIGV4cG9ydCBMSU5HVUFTPSR7bmV3 bHM6MX0KfQpzdHJpcC11bnN1cHBvcnRlZC1mbGFncyAoKSAKeyAKICAgIGV4cG9ydCBDRkxBR1M9 JCh0ZXN0LWZsYWdzLUNDICR7Q0ZMQUdTfSk7CiAgICBleHBvcnQgQ1hYRkxBR1M9JCh0ZXN0LWZs YWdzLUNYWCAke0NYWEZMQUdTfSk7CiAgICBleHBvcnQgRkZMQUdTPSQodGVzdC1mbGFncy1GNzcg JHtGRkxBR1N9KTsKICAgIGV4cG9ydCBGQ0ZMQUdTPSQodGVzdC1mbGFncy1GQyAke0ZDRkxBR1N9 KQp9CnN0cmlwX21vZHVsZW5hbWVzICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtG VU5DTkFNRX0gJCo7CiAgICBsb2NhbCBpOwogICAgZm9yIGkgaW4gJHtNT0RVTEVfSUdOT1JFfTsK ICAgIGRvCiAgICAgICAgTU9EVUxFX05BTUVTPSR7TU9EVUxFX05BTUVTLy8ke2l9KCp9OwogICAg ZG9uZQp9CnRjLWFyY2ggKCkgCnsgCiAgICB0Yy1uaW5qYV9tYWdpY190b19hcmNoIHBvcnRhZ2Ug IiRAIgp9CnRjLWFyY2gta2VybmVsICgpIAp7IAogICAgdGMtbmluamFfbWFnaWNfdG9fYXJjaCBr ZXJuICIkQCIKfQp0Yy1lbmRpYW4gKCkgCnsgCiAgICBsb2NhbCBob3N0PSQxOwogICAgW1sgLXog JHtob3N0fSBdXSAmJiBob3N0PSR7Q1RBUkdFVDotJHtDSE9TVH19OwogICAgaG9zdD0ke2hvc3Ql JS0qfTsKICAgIGNhc2UgJHtob3N0fSBpbiAKICAgICAgICBhbHBoYSopCiAgICAgICAgICAgIGVj aG8gYmlnCiAgICAgICAgOzsKICAgICAgICBhcm0qYiopCiAgICAgICAgICAgIGVjaG8gYmlnCiAg ICAgICAgOzsKICAgICAgICBhcm0qKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7 CiAgICAgICAgY3JpcyopCiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAg ICBocHBhKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIGk/ODYqKQog ICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgaWE2NCopCiAgICAgICAg ICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBtNjgqKQogICAgICAgICAgICBlY2hv IGJpZwogICAgICAgIDs7CiAgICAgICAgbWlwcypsKikKICAgICAgICAgICAgZWNobyBsaXR0bGUK ICAgICAgICA7OwogICAgICAgIG1pcHMqKQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7 CiAgICAgICAgcG93ZXJwYyopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAg ICBzMzkwKikKICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIHNoKmIqKQog ICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgc2gqKQogICAgICAgICAgICBl Y2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgc3BhcmMqKQogICAgICAgICAgICBlY2hvIGJp ZwogICAgICAgIDs7CiAgICAgICAgeDg2XzY0KikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAg ICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGVjaG8gd3RmCiAgICAgICAgOzsKICAgIGVz YWMKfQp0Yy1leHBvcnQgKCkgCnsgCiAgICBsb2NhbCB2YXI7CiAgICBmb3IgdmFyIGluICIkQCI7 CiAgICBkbwogICAgICAgIFtbICQodHlwZSAtdCB0Yy1nZXQke3Zhcn0pICE9ICJmdW5jdGlvbiIg XV0gJiYgZGllICJ0Yy1leHBvcnQ6IGludmFsaWQgZXhwb3J0IHZhcmlhYmxlICcke3Zhcn0nIjsK ICAgICAgICBldmFsIHRjLWdldCR7dmFyfSA+IC9kZXYvbnVsbDsKICAgIGRvbmUKfQp0Yy1nZXRB UiAoKSAKeyAKICAgIHRjLWdldFBST0cgQVIgYXIgIiRAIgp9CnRjLWdldEFTICgpIAp7IAogICAg dGMtZ2V0UFJPRyBBUyBhcyAiJEAiCn0KdGMtZ2V0QlVJTERfQ0MgKCkgCnsgCiAgICBsb2NhbCB2 OwogICAgZm9yIHYgaW4gQ0NfRk9SX0JVSUxEIEJVSUxEX0NDIEhPU1RDQzsKICAgIGRvCiAgICAg ICAgaWYgW1sgLW4gJHshdn0gXV07IHRoZW4KICAgICAgICAgICAgZXhwb3J0IEJVSUxEX0NDPSR7 IXZ9OwogICAgICAgICAgICBlY2hvICIkeyF2fSI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAg ICAgIGZpOwogICAgZG9uZTsKICAgIGxvY2FsIHNlYXJjaD07CiAgICBpZiBbWyAtbiAke0NCVUlM RH0gXV07IHRoZW4KICAgICAgICBzZWFyY2g9JCh0eXBlIC1wICR7Q0JVSUxEfS1nY2MpOwogICAg ICAgIHNlYXJjaD0ke3NlYXJjaCMjKi99OwogICAgZmk7CiAgICBzZWFyY2g9JHtzZWFyY2g6LWdj Y307CiAgICBleHBvcnQgQlVJTERfQ0M9JHtzZWFyY2h9OwogICAgZWNobyAiJHtzZWFyY2h9Igp9 CnRjLWdldENDICgpIAp7IAogICAgdGMtZ2V0UFJPRyBDQyBnY2MgIiRAIgp9CnRjLWdldENQUCAo KSAKeyAKICAgIHRjLWdldFBST0cgQ1BQIGNwcCAiJEAiCn0KdGMtZ2V0Q1hYICgpIAp7IAogICAg dGMtZ2V0UFJPRyBDWFggZysrICIkQCIKfQp0Yy1nZXRGNzcgKCkgCnsgCiAgICB0Yy1nZXRQUk9H IEY3NyBmNzcgIiRAIgp9CnRjLWdldEZDICgpIAp7IAogICAgdGMtZ2V0UFJPRyBGQyBnZm9ydHJh biAiJEAiCn0KdGMtZ2V0R0NKICgpIAp7IAogICAgdGMtZ2V0UFJPRyBHQ0ogZ2NqICIkQCIKfQp0 Yy1nZXRMRCAoKSAKeyAKICAgIHRjLWdldFBST0cgTEQgbGQgIiRAIgp9CnRjLWdldE5NICgpIAp7 IAogICAgdGMtZ2V0UFJPRyBOTSBubSAiJEAiCn0KdGMtZ2V0UFJPRyAoKSAKeyAKICAgIGxvY2Fs IHZhcj0kMTsKICAgIGxvY2FsIHByb2c9JDI7CiAgICBpZiBbWyAtbiAkeyF2YXJ9IF1dOyB0aGVu CiAgICAgICAgZWNobyAiJHshdmFyfSI7CiAgICAgICAgcmV0dXJuIDA7CiAgICBmaTsKICAgIGxv Y2FsIHNlYXJjaD07CiAgICBbWyAtbiAkMyBdXSAmJiBzZWFyY2g9JCh0eXBlIC1wICIkMy0ke3By b2d9Iik7CiAgICBbWyAteiAke3NlYXJjaH0gJiYgLW4gJHtDSE9TVH0gXV0gJiYgc2VhcmNoPSQo dHlwZSAtcCAiJHtDSE9TVH0tJHtwcm9nfSIpOwogICAgW1sgLW4gJHtzZWFyY2h9IF1dICYmIHBy b2c9JHtzZWFyY2gjIyovfTsKICAgIGV4cG9ydCAke3Zhcn09JHtwcm9nfTsKICAgIGVjaG8gIiR7 IXZhcn0iCn0KdGMtZ2V0UkFOTElCICgpIAp7IAogICAgdGMtZ2V0UFJPRyBSQU5MSUIgcmFubGli ICIkQCIKfQp0Yy1nZXRTVFJJUCAoKSAKeyAKICAgIHRjLWdldFBST0cgU1RSSVAgc3RyaXAgIiRA Igp9CnRjLWlzLWNyb3NzLWNvbXBpbGVyICgpIAp7IAogICAgcmV0dXJuICQoW1sgJHtDQlVJTEQ6 LSR7Q0hPU1R9fSAhPSAke0NIT1NUfSBdXSkKfQp0Yy1pcy1zb2Z0ZmxvYXQgKCkgCnsgCiAgICBj YXNlICR7Q1RBUkdFVH0gaW4gCiAgICAgICAgYmZpbiogfCBoODMwMCopCiAgICAgICAgICAgIGVj aG8gIm9ubHkiCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBbWyAke0NUQVJHRVQv L18vLX0gPT0gKi1zb2Z0ZmxvYXQtKiBdXSAmJiBlY2hvICJ5ZXMiIHx8IGVjaG8gIm5vIgogICAg ICAgIDs7CiAgICBlc2FjCn0KdGMtbmluamFfbWFnaWNfdG9fYXJjaCAoKSAKeyAKICAgIGZ1bmN0 aW9uIG5pbmogKCkgCiAgICB7IAogICAgICAgIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dICYmIGVj aG8gJDEgfHwgZWNobyAkMgogICAgfTsKICAgIGxvY2FsIHR5cGU9JDE7CiAgICBsb2NhbCBob3N0 PSQyOwogICAgW1sgLXogJHtob3N0fSBdXSAmJiBob3N0PSR7Q1RBUkdFVDotJHtDSE9TVH19Owog ICAgY2FzZSAke2hvc3R9IGluIAogICAgICAgIGFscGhhKikKICAgICAgICAgICAgZWNobyBhbHBo YQogICAgICAgIDs7CiAgICAgICAgYXJtKikKICAgICAgICAgICAgZWNobyBhcm0KICAgICAgICA7 OwogICAgICAgIGF2ciopCiAgICAgICAgICAgIG5pbmogYXZyMzIgYXZyCiAgICAgICAgOzsKICAg ICAgICBiZmluKikKICAgICAgICAgICAgbmluaiBibGFja2ZpbiBiZmluCiAgICAgICAgOzsKICAg ICAgICBjcmlzKikKICAgICAgICAgICAgZWNobyBjcmlzCiAgICAgICAgOzsKICAgICAgICBocHBh KikKICAgICAgICAgICAgbmluaiBwYXJpc2MgaHBwYQogICAgICAgIDs7CiAgICAgICAgaT84Niop CiAgICAgICAgICAgIGlmIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dICYmIFtbICQoS1ZfdG9faW50 ICR7S1Z9KSAtbHQgJChLVl90b19pbnQgMi42LjI0KSB8fCAke2hvc3R9ID09ICpmcmVlYnNkKiBd XTsgdGhlbgogICAgICAgICAgICAgICAgZWNobyBpMzg2OwogICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICBlY2hvIHg4NjsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgIGlh NjQqKQogICAgICAgICAgICBlY2hvIGlhNjQKICAgICAgICA7OwogICAgICAgIG02OCopCiAgICAg ICAgICAgIGVjaG8gbTY4awogICAgICAgIDs7CiAgICAgICAgbWlwcyopCiAgICAgICAgICAgIGVj aG8gbWlwcwogICAgICAgIDs7CiAgICAgICAgbmlvczIqKQogICAgICAgICAgICBlY2hvIG5pb3My CiAgICAgICAgOzsKICAgICAgICBuaW9zKikKICAgICAgICAgICAgZWNobyBuaW9zCiAgICAgICAg OzsKICAgICAgICBwb3dlcnBjKikKICAgICAgICAgICAgaWYgW1sgJChLVl90b19pbnQgJHtLVn0p IC1nZSAkKEtWX3RvX2ludCAyLjYuMTYpIF1dICYmIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dOyB0 aGVuCiAgICAgICAgICAgICAgICBlY2hvIHBvd2VycGM7CiAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgIGlmIFtbICQoS1ZfdG9faW50ICR7S1Z9KSAtZXEgJChLVl90b19pbnQgMi42LjE1 KSBdXSAmJiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAg IGlmIFtbICR7aG9zdH0gPT0gcG93ZXJwYzY0KiBdXSB8fCBbWyAke1BST0ZJTEVfQVJDSH0gPT0g InBwYzY0IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBvd2VycGM7CiAg ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBwYzsK ICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICAgICBpZiBbWyAke2hvc3R9ID09IHBvd2VycGM2NCogXV07IHRoZW4KICAgICAgICAgICAg ICAgICAgICAgICAgZWNobyBwcGM2NDsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg ICAgICAgICAgICAgICAgIGlmIFtbICR7UFJPRklMRV9BUkNIfSA9PSAicHBjNjQiIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaW5qIHBwYzY0IHBwYzsKICAgICAgICAgICAg ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyBwcGM7CiAg ICAgICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAg ICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsKICAgICAgICBzMzkwKikKICAg ICAgICAgICAgZWNobyBzMzkwCiAgICAgICAgOzsKICAgICAgICBzaDY0KikKICAgICAgICAgICAg bmluaiBzaDY0IHNoCiAgICAgICAgOzsKICAgICAgICBzaCopCiAgICAgICAgICAgIGVjaG8gc2gK ICAgICAgICA7OwogICAgICAgIHNwYXJjNjQqKQogICAgICAgICAgICBuaW5qIHNwYXJjNjQgc3Bh cmMKICAgICAgICA7OwogICAgICAgIHNwYXJjKikKICAgICAgICAgICAgW1sgJHtQUk9GSUxFX0FS Q0h9ID09ICJzcGFyYzY0IiBdXSAmJiBuaW5qIHNwYXJjNjQgc3BhcmMgfHwgZWNobyBzcGFyYwog ICAgICAgIDs7CiAgICAgICAgdmF4KikKICAgICAgICAgICAgZWNobyB2YXgKICAgICAgICA7Owog ICAgICAgIHg4Nl82NCopCiAgICAgICAgICAgIGlmIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dICYm IFtbICQoS1ZfdG9faW50ICR7S1Z9KSAtZ2UgJChLVl90b19pbnQgMi42LjI0KSBdXTsgdGhlbgog ICAgICAgICAgICAgICAgZWNobyB4ODY7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg IG5pbmogeDg2XzY0IGFtZDY0OwogICAgICAgICAgICBmaQogICAgICAgIDs7CiAgICAgICAgKikK ICAgICAgICAgICAgZWNobyB1bmtub3duCiAgICAgICAgOzsKICAgIGVzYWMKfQp0ZXN0LWZsYWct Q0MgKCkgCnsgCiAgICB0ZXN0LWZsYWctUFJPRyAiQ0MiICIkMSIKfQp0ZXN0LWZsYWctQ1hYICgp IAp7IAogICAgdGVzdC1mbGFnLVBST0cgIkNYWCIgIiQxIgp9CnRlc3QtZmxhZy1GNzcgKCkgCnsg CiAgICB0ZXN0LWZsYWctUFJPRyAiRjc3IiAiJDEiCn0KdGVzdC1mbGFnLUZDICgpIAp7IAogICAg dGVzdC1mbGFnLVBST0cgIkZDIiAiJDEiCn0KdGVzdC1mbGFnLVBST0cgKCkgCnsgCiAgICBsb2Nh bCBjb21wPSQxOwogICAgbG9jYWwgZmxhZ3M9IiQyIjsKICAgIFtbIC16ICR7Y29tcH0gfHwgLXog JHtmbGFnc30gXV0gJiYgcmV0dXJuIDE7CiAgICBsb2NhbCBQUk9HPSQodGMtZ2V0JHtjb21wfSk7 CiAgICAke1BST0d9ICR7ZmxhZ3N9IC1TIC1vIC9kZXYvbnVsbCAteGMgL2Rldi9udWxsID4gL2Rl di9udWxsIDI+JjEKfQp0ZXN0LWZsYWdzICgpIAp7IAogICAgdGVzdC1mbGFncy1DQyAiJEAiCn0K dGVzdC1mbGFncy1DQyAoKSAKeyAKICAgIHRlc3QtZmxhZ3MtUFJPRyAiQ0MiICIkQCIKfQp0ZXN0 LWZsYWdzLUNYWCAoKSAKeyAKICAgIHRlc3QtZmxhZ3MtUFJPRyAiQ1hYIiAiJEAiCn0KdGVzdC1m bGFncy1GNzcgKCkgCnsgCiAgICB0ZXN0LWZsYWdzLVBST0cgIkY3NyIgIiRAIgp9CnRlc3QtZmxh Z3MtRkMgKCkgCnsgCiAgICB0ZXN0LWZsYWdzLVBST0cgIkZDIiAiJEAiCn0KdGVzdC1mbGFncy1Q Uk9HICgpIAp7IAogICAgbG9jYWwgY29tcD0kMTsKICAgIGxvY2FsIGZsYWdzOwogICAgbG9jYWwg eDsKICAgIHNoaWZ0OwogICAgW1sgLXogJHtjb21wfSBdXSAmJiByZXR1cm4gMTsKICAgIHg9IiI7 CiAgICBmb3IgeCBpbiAiJEAiOwogICAgZG8KICAgICAgICB0ZXN0LWZsYWctJHtjb21wfSAiJHt4 fSIgJiYgZmxhZ3M9IiR7ZmxhZ3N9JHtmbGFnczorIH0ke3h9IjsKICAgIGRvbmU7CiAgICBlY2hv ICIke2ZsYWdzfSI7CiAgICBbWyAtbiAke2ZsYWdzfSBdXQp9CnRlc3RfZmxhZyAoKSAKeyAKICAg IGV3YXJuICJ0ZXN0X2ZsYWc6IGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgdGVzdC1mbGFncygpISIg MT4mMjsKICAgIHRlc3QtZmxhZ3MtQ0MgIiRAIgp9CnRlc3RfdmVyc2lvbl9pbmZvICgpIAp7IAog ICAgaWYgW1sgJCgkKHRjLWdldENDKSAtLXZlcnNpb24gMj4mMSkgPT0gKiQxKiBdXTsgdGhlbgog ICAgICAgIHJldHVybiAwOwogICAgZWxzZQogICAgICAgIHJldHVybiAxOwogICAgZmkKfQp0cmVl Y29weSAoKSAKeyAKICAgIGRlc3Q9JHshI307CiAgICBmaWxlc19jb3VudD0kIzsKICAgIHdoaWxl ICgoICQjID4gMSApKTsgZG8KICAgICAgICBkaXJzdHJ1Y3Q9JChkaXJuYW1lICIkMSIpOwogICAg ICAgIG1rZGlyIC1wICIke2Rlc3R9LyR7ZGlyc3RydWN0fSI7CiAgICAgICAgY3AgLXBQUiAiJDEi ICIke2Rlc3R9LyR7ZGlyc3RydWN0fSI7CiAgICAgICAgc2hpZnQ7CiAgICBkb25lCn0KdWNsaWJj dG9vbGl6ZSAoKSAKeyAKICAgIGV3YXJuICJ1Y2xpYmN0b29saXplKCkgaXMgZGVwcmVjYXRlZCwg cGxlYXNlIGp1c3QgdXNlIGVsaWJ0b29saXplKCkhIjsKICAgIGVsaWJ0b29saXplCn0KdW5wYWNr X21ha2VzZWxmICgpIAp7IAogICAgbG9jYWwgc3JjX2lucHV0PSR7MTotJHtBfX07CiAgICBsb2Nh bCBzcmM9JChmaW5kX3VucGFja2FibGVfZmlsZSAiJHtzcmNfaW5wdXR9Iik7CiAgICBsb2NhbCBz a2lwPSQyOwogICAgbG9jYWwgZXhlPSQzOwogICAgW1sgLXogJHtzcmN9IF1dICYmIGRpZSAiQ291 bGQgbm90IGxvY2F0ZSBzb3VyY2UgZm9yICcke3NyY19pbnB1dH0nIjsKICAgIGxvY2FsIHNocnRz cmM9JChiYXNlbmFtZSAiJHtzcmN9Iik7CiAgICBlY2hvICI+Pj4gVW5wYWNraW5nICR7c2hydHNy Y30gdG8gJHtQV0R9IjsKICAgIGlmIFtbIC16ICR7c2tpcH0gXV07IHRoZW4KICAgICAgICBsb2Nh bCB2ZXI9JChncmVwIC1hICcjLipNYWtlc2VsZicgIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkTkZ9 Jyk7CiAgICAgICAgbG9jYWwgc2tpcD0wOwogICAgICAgIGV4ZT10YWlsOwogICAgICAgIGNhc2Ug JHt2ZXJ9IGluIAogICAgICAgICAgICAxLjUuKiB8IDEuNi4wLW52KQogICAgICAgICAgICAgICAg c2tpcD0kKGdyZXAgLWEgXnNraXA9ICIke3NyY30iIHwgY3V0IC1kPSAtZjIpCiAgICAgICAgICAg IDs7CiAgICAgICAgICAgIDIuMCB8IDIuMC4xKQogICAgICAgICAgICAgICAgc2tpcD0kKGdyZXAg LWEgXicJJ3RhaWwgIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkMn0nIHwgY3V0IC1iMi0pCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIDIuMS4xKQogICAgICAgICAgICAgICAgc2tpcD0kKGdyZXAg LWEgXm9mZnNldD0gIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkMn0nIHwgY3V0IC1iMi0pOwogICAg ICAgICAgICAgICAgbGV0IHNraXA9InNraXAgKyAxIgogICAgICAgICAgICA7OwogICAgICAgICAg ICAyLjEuMikKICAgICAgICAgICAgICAgIHNraXA9JChncmVwIC1hIF5vZmZzZXQ9ICIke3NyY30i IHwgYXdrICd7cHJpbnQgJDN9JyB8IGhlYWQgLW4gMSk7CiAgICAgICAgICAgICAgICBsZXQgc2tp cD0ic2tpcCArIDEiCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIDIuMS4zKQogICAgICAgICAg ICAgICAgc2tpcD1gZ3JlcCAtYSBeb2Zmc2V0PSAiJHtzcmN9IiB8IGF3ayAne3ByaW50ICQzfSdg OwogICAgICAgICAgICAgICAgbGV0IHNraXA9InNraXAgKyAxIgogICAgICAgICAgICA7OwogICAg ICAgICAgICAyLjEuNCB8IDIuMS41KQogICAgICAgICAgICAgICAgc2tpcD0kKGdyZXAgLWEgb2Zm c2V0PS4qaGVhZC4qd2MgIiR7c3JjfSIgfCBhd2sgJ3twcmludCAkM30nIHwgaGVhZCAtbiAxKTsK ICAgICAgICAgICAgICAgIHNraXA9JChoZWFkIC1uICR7c2tpcH0gIiR7c3JjfSIgfCB3YyAtYyk7 CiAgICAgICAgICAgICAgICBleGU9ImRkIgogICAgICAgICAgICA7OwogICAgICAgICAgICAqKQog ICAgICAgICAgICAgICAgZWVycm9yICJJJ20gc29ycnksIGJ1dCBJIHdhcyB1bmFibGUgdG8gc3Vw cG9ydCB0aGUgTWFrZXNlbGYgZmlsZS4iOwogICAgICAgICAgICAgICAgZWVycm9yICJUaGUgdmVy c2lvbiBJIGRldGVjdGVkIHdhcyAnJHt2ZXJ9Jy4iOwogICAgICAgICAgICAgICAgZWVycm9yICJQ bGVhc2UgZmlsZSBhIGJ1ZyBhYm91dCB0aGUgZmlsZSAke3NocnRzcmN9IGF0IjsKICAgICAgICAg ICAgICAgIGVlcnJvciAiaHR0cDovL2J1Z3MuZ2VudG9vLm9yZy8gc28gdGhhdCBzdXBwb3J0IGNh biBiZSBhZGRlZC4iOwogICAgICAgICAgICAgICAgZGllICJtYWtlc2VsZiB2ZXJzaW9uICcke3Zl cn0nIG5vdCBzdXBwb3J0ZWQiCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgICAgICBk ZWJ1Zy1wcmludCAiRGV0ZWN0ZWQgTWFrZXNlbGYgdmVyc2lvbiAke3Zlcn0gLi4uIHVzaW5nICR7 c2tpcH0gYXMgb2Zmc2V0IjsKICAgIGZpOwogICAgY2FzZSAke2V4ZX0gaW4gCiAgICAgICAgdGFp bCkKICAgICAgICAgICAgZXhlPSJ0YWlsIC1uICske3NraXB9ICcke3NyY30nIgogICAgICAgIDs7 CiAgICAgICAgZGQpCiAgICAgICAgICAgIGV4ZT0iZGQgaWJzPSR7c2tpcH0gc2tpcD0xIG9icz0x MDI0IGNvbnY9c3luYyBpZj0nJHtzcmN9JyIKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAg ICAgIGRpZSAibWFrZXNlbGYgY2FudCBoYW5kbGUgZXhlICcke2V4ZX0nIgogICAgICAgIDs7CiAg ICBlc2FjOwogICAgbG9jYWwgdG1wZmlsZT0kKGVta3RlbXApOwogICAgZXZhbCAke2V4ZX0gMj4g L2Rldi9udWxsIHwgaGVhZCAtYyA1MTIgPiAiJHt0bXBmaWxlfSI7CiAgICBsb2NhbCBmaWxldHlw ZT0kKGZpbGUgLWIgIiR7dG1wZmlsZX0iKTsKICAgIGNhc2UgJHtmaWxldHlwZX0gaW4gCiAgICAg ICAgKnRhclwgYXJjaGl2ZSopCiAgICAgICAgICAgIGV2YWwgJHtleGV9IHwgdGFyIC0tbm8tc2Ft ZS1vd25lciAteGYgLQogICAgICAgIDs7CiAgICAgICAgYnppcDIqKQogICAgICAgICAgICBldmFs ICR7ZXhlfSB8IGJ6aXAyIC1kYyB8IHRhciAtLW5vLXNhbWUtb3duZXIgLXhmIC0KICAgICAgICA7 OwogICAgICAgIGd6aXAqKQogICAgICAgICAgICBldmFsICR7ZXhlfSB8IHRhciAtLW5vLXNhbWUt b3duZXIgLXh6ZiAtCiAgICAgICAgOzsKICAgICAgICBjb21wcmVzcyopCiAgICAgICAgICAgIGV2 YWwgJHtleGV9IHwgZ3VuemlwIHwgdGFyIC0tbm8tc2FtZS1vd25lciAteGYgLQogICAgICAgIDs7 CiAgICAgICAgKikKICAgICAgICAgICAgZWVycm9yICJVbmtub3duIGZpbGV0eXBlIFwiJHtmaWxl dHlwZX1cIiA/IjsKICAgICAgICAgICAgZmFsc2UKICAgICAgICA7OwogICAgZXNhYzsKICAgIF9w aXBlc3RhdHVzPSIke1BJUEVTVEFUVVNbKl19IjsKICAgIFtbICIke19waXBlc3RhdHVzLy8gL30i IC1lcSAwIF1dIHx8IGRpZSAiZmFpbHVyZSB1bnBhY2tpbmcgKCR7ZmlsZXR5cGV9KSBtYWtlc2Vs ZiAke3NocnRzcmN9ICgnJHt2ZXJ9JyArJHtza2lwfSkiCn0KdW5wYWNrX3BkdiAoKSAKeyAKICAg IGxvY2FsIHNyYz0kKGZpbmRfdW5wYWNrYWJsZV9maWxlICIkMSIpOwogICAgbG9jYWwgc2l6ZW9m Zl90PSQyOwogICAgW1sgLXogJHtzcmN9IF1dICYmIGRpZSAiQ291bGQgbm90IGxvY2F0ZSBzb3Vy Y2UgZm9yICckMSciOwogICAgW1sgLXogJHtzaXplb2ZmX3R9IF1dICYmIGRpZSAiTm8gaWRlYSB3 aGF0IG9mZl90IHNpemUgd2FzIHVzZWQgZm9yIHRoaXMgcGR2IDooIjsKICAgIGxvY2FsIHNocnRz cmM9JChiYXNlbmFtZSAiJHtzcmN9Iik7CiAgICBlY2hvICI+Pj4gVW5wYWNraW5nICR7c2hydHNy Y30gdG8gJHtQV0R9IjsKICAgIGxvY2FsIG1ldGFza2lwPSQodGFpbCAtYyAke3NpemVvZmZfdH0g IiR7c3JjfSIgfCBoZXhkdW1wIC1lIFwiJWlcIik7CiAgICBsb2NhbCB0YWlsc2tpcD0kKHRhaWwg LWMgJCgoJHtzaXplb2ZmX3R9KjIpKSAiJHtzcmN9IiB8IGhlYWQgLWMgJHtzaXplb2ZmX3R9IHwg aGV4ZHVtcCAtZSBcIiVpXCIpOwogICAgbG9jYWwgbWV0YWZpbGU9JChlbWt0ZW1wKTsKICAgIHRh aWwgLWMgKyQoKCR7bWV0YXNraXB9KzEpKSAiJHtzcmN9IiA+ICIke21ldGFmaWxlfSI7CiAgICBs b2NhbCBkYXRhZmlsZT0kKHRhaWwgLWMgKyQoKCR7bWV0YXNraXB9KzEpKSAiJHtzcmN9IiB8IHN0 cmluZ3MgfCBoZWFkIC1uIDEpOwogICAgZGF0YWZpbGU9JChiYXNlbmFtZSAiJHtkYXRhZmlsZX0i KTsKICAgIGxvY2FsIHRtcGZpbGU9JChlbWt0ZW1wKTsKICAgIHRhaWwgLWMgKyQoKCR7dGFpbHNr aXB9KzEpKSAke3NyY30gMj4gL2Rldi9udWxsIHwgaGVhZCAtYyA1MTIgPiAke3RtcGZpbGV9Owog ICAgbG9jYWwgaXNjb21wcmVzc2VkPSQoZmlsZSAtYiAiJHt0bXBmaWxlfSIpOwogICAgaWYgW1sg JHtpc2NvbXByZXNzZWQ6MDo4fSA9PSAiY29tcHJlc3MiIF1dOyB0aGVuCiAgICAgICAgaXNjb21w cmVzc2VkPTE7CiAgICAgICAgbXYgJHt0bXBmaWxlfXssLlp9OwogICAgICAgIGd1bnppcCAke3Rt cGZpbGV9OwogICAgZWxzZQogICAgICAgIGlzY29tcHJlc3NlZD0wOwogICAgZmk7CiAgICBsb2Nh bCBpc3Rhcj0kKGZpbGUgLWIgIiR7dG1wZmlsZX0iKTsKICAgIGlmIFtbICR7aXN0YXI6MDo5fSA9 PSAiUE9TSVggdGFyIiBdXTsgdGhlbgogICAgICAgIGlzdGFyPTE7CiAgICBlbHNlCiAgICAgICAg aXN0YXI9MDsKICAgIGZpOwogICAgaWYgWyAke2lzY29tcHJlc3NlZH0gLWVxIDEgXTsgdGhlbgog ICAgICAgIGlmIFsgJHtpc3Rhcn0gLWVxIDEgXTsgdGhlbgogICAgICAgICAgICB0YWlsIC1jICsk KCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8IGhlYWQgLWMgJCgoJHttZXRh c2tpcH0tJHt0YWlsc2tpcH0pKSB8IHRhciAteHpmIC07CiAgICAgICAgZWxzZQogICAgICAgICAg ICB0YWlsIC1jICskKCgke3RhaWxza2lwfSsxKSkgJHtzcmN9IDI+IC9kZXYvbnVsbCB8IGhlYWQg LWMgJCgoJHttZXRhc2tpcH0tJHt0YWlsc2tpcH0pKSB8IGd6aXAgLWRjID4gJHtkYXRhZmlsZX07 CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgaWYgWyAke2lzdGFyfSAtZXEgMSBdOyB0aGVu CiAgICAgICAgICAgIHRhaWwgLWMgKyQoKCR7dGFpbHNraXB9KzEpKSAke3NyY30gMj4gL2Rldi9u dWxsIHwgaGVhZCAtYyAkKCgke21ldGFza2lwfS0ke3RhaWxza2lwfSkpIHwgdGFyIC0tbm8tc2Ft ZS1vd25lciAteGYgLTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHRhaWwgLWMgKyQoKCR7dGFp bHNraXB9KzEpKSAke3NyY30gMj4gL2Rldi9udWxsIHwgaGVhZCAtYyAkKCgke21ldGFza2lwfS0k e3RhaWxza2lwfSkpID4gJHtkYXRhZmlsZX07CiAgICAgICAgZmk7CiAgICBmaTsKICAgIHRydWUK fQp1cGRhdGVfZGVwbW9kICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFN RX0gJCo7CiAgICBnZXRfdmVyc2lvbjsKICAgIGViZWdpbiAiVXBkYXRpbmcgbW9kdWxlIGRlcGVu ZGVuY2llcyBmb3IgJHtLVl9GVUxMfSI7CiAgICBpZiBbIC1yICR7S1ZfT1VUX0RJUn0vU3lzdGVt Lm1hcCBdOyB0aGVuCiAgICAgICAgZGVwbW9kIC1hZSAtRiAke0tWX09VVF9ESVJ9L1N5c3RlbS5t YXAgLWIgJHtST09UfSAtciAke0tWX0ZVTEx9OwogICAgICAgIGVlbmQgJD87CiAgICBlbHNlCiAg ICAgICAgZXdhcm47CiAgICAgICAgZXdhcm4gIiR7S1ZfT1VUX0RJUn0vU3lzdGVtLm1hcCBub3Qg Zm91bmQuIjsKICAgICAgICBld2FybiAiWW91IG11c3QgbWFudWFsbHkgdXBkYXRlIHRoZSBrZXJu ZWwgbW9kdWxlIGRlcGVuZGVuY2llcyB1c2luZyBkZXBtb2QuIjsKICAgICAgICBlZW5kIDE7CiAg ICAgICAgZXdhcm47CiAgICBmaQp9CnVwZGF0ZV9tb2R1bGVkYiAoKSAKeyAKICAgIGRlYnVnLXBy aW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICQqOwogICAgbG9jYWwgTU9EVUxFREJfRElSPSR7Uk9P VH0vdmFyL2xpYi9tb2R1bGUtcmVidWlsZC87CiAgICBtb3ZlX29sZF9tb2R1bGVkYjsKICAgIGlm IFtbICEgLWYgJHtNT0RVTEVEQl9ESVJ9L21vZHVsZWRiIF1dOyB0aGVuCiAgICAgICAgW1sgISAt ZCAke01PRFVMRURCX0RJUn0gXV0gJiYgbWtkaXIgLXAgJHtNT0RVTEVEQl9ESVJ9OwogICAgICAg IHRvdWNoICR7TU9EVUxFREJfRElSfS9tb2R1bGVkYjsKICAgIGZpOwogICAgaWYgISBncmVwIC1x cyAke0NBVEVHT1JZfS8ke1BOfS0ke1BWUn0gJHtNT0RVTEVEQl9ESVJ9L21vZHVsZWRiOyB0aGVu CiAgICAgICAgZWluZm8gIkFkZGluZyBtb2R1bGUgdG8gbW9kdWxlZGIuIjsKICAgICAgICBlY2hv ICJhOjE6JHtDQVRFR09SWX0vJHtQTn0tJHtQVlJ9IiA+PiAke01PRFVMRURCX0RJUn0vbW9kdWxl ZGI7CiAgICBmaQp9CnVwZGF0ZV9tb2R1bGVzICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rp b24gJHtGVU5DTkFNRX0gJCo7CiAgICBpZiBbIC14IC9zYmluL3VwZGF0ZS1tb2R1bGVzIF0gJiYg Z3JlcCAtdiAtZSAiXiMiIC1lICJeJCIgJHtEfS9ldGMvbW9kdWxlcy5kLyogPiAvZGV2L251bGwg Mj4mMTsgdGhlbgogICAgICAgIGViZWdpbiAiVXBkYXRpbmcgbW9kdWxlcy5jb25mIjsKICAgICAg ICAvc2Jpbi91cGRhdGUtbW9kdWxlczsKICAgICAgICBlZW5kICQ/OwogICAgZWxzZQogICAgICAg IGlmIFsgLXggL3NiaW4vdXBkYXRlLW1vZHVsZXMgXSAmJiBncmVwIC12IC1lICJeIyIgLWUgIl4k IiAke0R9L2V0Yy9tb2R1bGVzLmQvKiA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgICAg IGViZWdpbiAiVXBkYXRpbmcgbW9kdWxlcy5jb25mIjsKICAgICAgICAgICAgL3NiaW4vdXBkYXRl LW1vZHVsZXM7CiAgICAgICAgICAgIGVlbmQgJD87CiAgICAgICAgZmk7CiAgICBmaQp9CnVzZV9t ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gJCo7CiAgICBnZXRf dmVyc2lvbjsKICAgIFsgJHtLVl9NQUpPUn0gLWVxIDIgLWEgJHtLVl9NSU5PUn0gLWd0IDUgLWEg JHtLVl9QQVRDSH0gLWd0IDUgXSAmJiByZXR1cm4gMCB8fCByZXR1cm4gMQp9CnZhbGlkYXRlX2Rl c2t0b3BfZW50cmllcyAoKSAKeyAKICAgIGlmIFtbIC14IC91c3IvYmluL2Rlc2t0b3AtZmlsZS12 YWxpZGF0ZSBdXTsgdGhlbgogICAgICAgIGVpbmZvICJDaGVja2luZyBkZXNrdG9wIGVudHJ5IHZh bGlkaXR5IjsKICAgICAgICBsb2NhbCBkaXJlY3Rvcmllcz0iIjsKICAgICAgICBmb3IgZCBpbiAv dXNyL3NoYXJlL2FwcGxpY2F0aW9ucyAkQDsKICAgICAgICBkbwogICAgICAgICAgICBbWyAtZCAk e0R9JHtkfSBdXSAmJiBkaXJlY3Rvcmllcz0iJHtkaXJlY3Rvcmllc30gJHtEfSR7ZH0iOwogICAg ICAgIGRvbmU7CiAgICAgICAgaWYgW1sgLW4gJHtkaXJlY3Rvcmllc30gXV07IHRoZW4KICAgICAg ICAgICAgZm9yIEZJTEUgaW4gJChmaW5kICR7ZGlyZWN0b3JpZXN9IC1uYW1lICIqXC5kZXNrdG9w IiAJCQkJCQkJLW5vdCAtcGF0aCAnKi5oaWRkZW4qJyB8IHNvcnQgLXUgMj4vZGV2L251bGwpOwog ICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgbG9jYWwgdGVtcD0kKGRlc2t0b3AtZmlsZS12 YWxpZGF0ZSAke0ZJTEV9IHwgZ3JlcCAtdiAid2FybmluZzoiIHwgCQkJCQkJCQlzZWQgLWUgInN8 ZXJyb3I6IHx8IiAtZSAic3wke0ZJTEV9OnwtLXxnIiApOwogICAgICAgICAgICAgICAgW1sgLW4g JHRlbXAgXV0gJiYgZWxvZyAke3RlbXAvLS0vJHtGSUxFLyR7RH0vfTp9OwogICAgICAgICAgICBk b25lOwogICAgICAgIGZpOwogICAgICAgIGVjaG8gIiI7CiAgICBlbHNlCiAgICAgICAgZWluZm8g IlBhc3NpbmcgZGVza3RvcCBlbnRyeSB2YWxpZGl0eSBjaGVjay4gSW5zdGFsbCBkZXYtdXRpbC9k ZXNrdG9wLWZpbGUtdXRpbHMsIGlmIHlvdSB3YW50IHRvIGhlbHAgdG8gaW1wcm92ZSBHZW50b28u IjsKICAgIGZpCn0KdmVyc2lvbl9jb21wYXJlICgpIAp7IAogICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb247CiAgICBsb2NhbCB2ZXJfYT0kezF9IHZlcl9iPSR7Mn0gcGFydHNfYSBwYXJ0 c19iIGN1cl9pZHhfYT0wIGN1cl9pZHhfYj0wOwogICAgcGFydHNfYT0oJChnZXRfYWxsX3ZlcnNp b25fY29tcG9uZW50cyAiJHt2ZXJfYX0iICkpOwogICAgcGFydHNfYj0oJChnZXRfYWxsX3ZlcnNp b25fY29tcG9uZW50cyAiJHt2ZXJfYn0iICkpOwogICAgbG9jYWwgaW5mX2xvb3A9MDsKICAgIHdo aWxlIHRydWU7IGRvCiAgICAgICAgaW5mX2xvb3A9JCgoICR7aW5mX2xvb3B9ICsgMSApKTsKICAg ICAgICBbWyAke2luZl9sb29wfSAtZ3QgMjAgXV0gJiYgZGllICJ2ZXJzaW9uYXRvciBjb21wYXJl IGJ1ZyBbbnVtYmVycywgJHt2ZXJfYX0sICR7dmVyX2J9XSI7CiAgICAgICAgbG9jYWwgY3VyX3Rv a19hPSR7cGFydHNfYVske2N1cl9pZHhfYX1dfTsKICAgICAgICBsb2NhbCBjdXJfdG9rX2I9JHtw YXJ0c19iWyR7Y3VyX2lkeF9ifV19OwogICAgICAgIGlmIFtbIC1uICR7Y3VyX3Rva19hfSBdXSAm JiBbWyAteiAke2N1cl90b2tfYS8vW1s6ZGlnaXQ6XV19IF1dOyB0aGVuCiAgICAgICAgICAgIGN1 cl9pZHhfYT0kKCggJHtjdXJfaWR4X2F9ICsgMSApKTsKICAgICAgICAgICAgW1sgJHtwYXJ0c19h WyR7Y3VyX2lkeF9hfV19ID09ICIuIiBdXSAmJiBjdXJfaWR4X2E9JCgoICR7Y3VyX2lkeF9hfSAr IDEgKSk7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9rX2E9IiI7CiAgICAgICAgZmk7 CiAgICAgICAgaWYgW1sgLW4gJHtjdXJfdG9rX2J9IF1dICYmIFtbIC16ICR7Y3VyX3Rva19iLy9b WzpkaWdpdDpdXX0gXV07IHRoZW4KICAgICAgICAgICAgY3VyX2lkeF9iPSQoKCAke2N1cl9pZHhf Yn0gKyAxICkpOwogICAgICAgICAgICBbWyAke3BhcnRzX2JbJHtjdXJfaWR4X2J9XX0gPT0gIi4i IF1dICYmIGN1cl9pZHhfYj0kKCggJHtjdXJfaWR4X2J9ICsgMSApKTsKICAgICAgICBlbHNlCiAg ICAgICAgICAgIGN1cl90b2tfYj0iIjsKICAgICAgICBmaTsKICAgICAgICBbWyAteiAke2N1cl90 b2tfYX0gXV0gJiYgW1sgLXogJHtjdXJfdG9rX2J9IF1dICYmIGJyZWFrOwogICAgICAgIGN1cl90 b2tfYT0ke2N1cl90b2tfYSMjKygwKX07CiAgICAgICAgY3VyX3Rva19iPSR7Y3VyX3Rva19iIyMr KDApfTsKICAgICAgICBbWyAteiAke2N1cl90b2tfYX0gXV0gJiYgY3VyX3Rva19hPTA7CiAgICAg ICAgW1sgLXogJHtjdXJfdG9rX2J9IF1dICYmIGN1cl90b2tfYj0wOwogICAgICAgIFtbICR7Y3Vy X3Rva19hfSAtbHQgJHtjdXJfdG9rX2J9IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xl IG9mZiAmJiByZXR1cm4gMTsKICAgICAgICBbWyAke2N1cl90b2tfYX0gLWd0ICR7Y3VyX3Rva19i fSBdXSAmJiBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYgJiYgcmV0dXJuIDM7CiAgICBk b25lOwogICAgbG9jYWwgbGV0dGVyX2E9OwogICAgbGV0dGVyX2E9JHtwYXJ0c19hWyR7Y3VyX2lk eF9hfV19OwogICAgaWYgW1sgJHsjbGV0dGVyX2F9IC1lcSAxIF1dICYmIFtbIC16ICR7bGV0dGVy X2EvW2Etel19IF1dOyB0aGVuCiAgICAgICAgY3VyX2lkeF9hPSQoKCAke2N1cl9pZHhfYX0gKyAx ICkpOwogICAgZWxzZQogICAgICAgIGxldHRlcl9hPSJAIjsKICAgIGZpOwogICAgbG9jYWwgbGV0 dGVyX2I9OwogICAgbGV0dGVyX2I9JHtwYXJ0c19iWyR7Y3VyX2lkeF9ifV19OwogICAgaWYgW1sg JHsjbGV0dGVyX2J9IC1lcSAxIF1dICYmIFtbIC16ICR7bGV0dGVyX2IvW2Etel19IF1dOyB0aGVu CiAgICAgICAgY3VyX2lkeF9iPSQoKCAke2N1cl9pZHhfYn0gKyAxICkpOwogICAgZWxzZQogICAg ICAgIGxldHRlcl9iPSJAIjsKICAgIGZpOwogICAgW1sgJHtsZXR0ZXJfYX0gPCAke2xldHRlcl9i fSBdXSAmJiBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYgJiYgcmV0dXJuIDE7CiAgICBb WyAke2xldHRlcl9hfSA+ICR7bGV0dGVyX2J9IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9n Z2xlIG9mZiAmJiByZXR1cm4gMzsKICAgIGxvY2FsIHN1ZmZpeCBydWxlIHBhcnQgcl9sdCByX2d0 OwogICAgZm9yIHJ1bGUgaW4gImFscGhhPTEiICJiZXRhPTEiICJwcmU9MSIgInJjPTEiICJwPTMi ICJyPTMiOwogICAgZG8KICAgICAgICBzdWZmaXg9JHtydWxlJSU9Kn07CiAgICAgICAgcl9sdD0k e3J1bGUjIyo9fTsKICAgICAgICBbWyAke3JfbHR9IC1lcSAxIF1dICYmIHJfZ3Q9MyB8fCByX2d0 PTE7CiAgICAgICAgbG9jYWwgc3VmZml4X2E9OwogICAgICAgIGZvciBwYXJ0IGluICR7cGFydHNf YVtAXX07CiAgICAgICAgZG8KICAgICAgICAgICAgW1sgJHtwYXJ0IyR7c3VmZml4fX0gIT0gJHtw YXJ0fSBdXSAmJiBbWyAteiAke3BhcnQjIyR7c3VmZml4fSooW1s6ZGlnaXQ6XV0pfSBdXSAmJiBz dWZmaXhfYT0ke3BhcnQjJHtzdWZmaXh9fTA7CiAgICAgICAgZG9uZTsKICAgICAgICBsb2NhbCBz dWZmaXhfYj07CiAgICAgICAgZm9yIHBhcnQgaW4gJHtwYXJ0c19iW0BdfTsKICAgICAgICBkbwog ICAgICAgICAgICBbWyAke3BhcnQjJHtzdWZmaXh9fSAhPSAke3BhcnR9IF1dICYmIFtbIC16ICR7 cGFydCMjJHtzdWZmaXh9KihbWzpkaWdpdDpdXSl9IF1dICYmIHN1ZmZpeF9iPSR7cGFydCMke3N1 ZmZpeH19MDsKICAgICAgICBkb25lOwogICAgICAgIFtbIC16ICR7c3VmZml4X2F9IF1dICYmIFtb IC16ICR7c3VmZml4X2J9IF1dICYmIGNvbnRpbnVlOwogICAgICAgIFtbIC16ICR7c3VmZml4X2F9 IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZiAmJiByZXR1cm4gJHtyX2d0fTsK ICAgICAgICBbWyAteiAke3N1ZmZpeF9ifSBdXSAmJiBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2ds ZSBvZmYgJiYgcmV0dXJuICR7cl9sdH07CiAgICAgICAgc3VmZml4X2E9JHtzdWZmaXhfYSMjKygw KX07CiAgICAgICAgc3VmZml4X2E9JHtzdWZmaXhfYTotMH07CiAgICAgICAgc3VmZml4X2I9JHtz dWZmaXhfYiMjKygwKX07CiAgICAgICAgc3VmZml4X2I9JHtzdWZmaXhfYjotMH07CiAgICAgICAg W1sgJHtzdWZmaXhfYX0gLWx0ICR7c3VmZml4X2J9IF1dICYmIF9fdmVyc2lvbmF0b3Jfc2hvcHRf dG9nZ2xlIG9mZiAmJiByZXR1cm4gMTsKICAgICAgICBbWyAke3N1ZmZpeF9hfSAtZ3QgJHtzdWZm aXhfYn0gXV0gJiYgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmICYmIHJldHVybiAzOwog ICAgZG9uZTsKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9nZ2xlIG9mZjsKICAgIHJldHVybiAy Cn0KdmVyc2lvbl9pc19hdF9sZWFzdCAoKSAKeyAKICAgIF9fdmVyc2lvbmF0b3Jfc2hvcHRfdG9n Z2xlIG9uOwogICAgbG9jYWwgd2FudF9zPSIkMSIgaGF2ZV9zPSIkezI6LSR7UFZSfX0iIHI7CiAg ICB2ZXJzaW9uX2NvbXBhcmUgIiR7d2FudF9zfSIgIiR7aGF2ZV9zfSI7CiAgICByPSQ/OwogICAg Y2FzZSAkciBpbiAKICAgICAgICAxIHwgMikKICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9zaG9w dF90b2dnbGUgb2ZmOwogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIDs7CiAgICAgICAgMykK ICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9zaG9wdF90b2dnbGUgb2ZmOwogICAgICAgICAgICBy ZXR1cm4gMQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgX192ZXJzaW9uYXRvcl9z aG9wdF90b2dnbGUgb2ZmOwogICAgICAgICAgICBkaWUgInZlcnNpb25hdG9yIGNvbXBhcmUgYnVn IFthdGxlYXN0LCAke3dhbnRfc30sICR7aGF2ZV9zfSwgJHtyfV0iCiAgICAgICAgOzsKICAgIGVz YWM7CiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvZmYKfQp2ZXJzaW9uX3NvcnQgKCkg CnsgCiAgICBfX3ZlcnNpb25hdG9yX3Nob3B0X3RvZ2dsZSBvbjsKICAgIGxvY2FsIGl0ZW1zPSBs ZWZ0PTA7CiAgICBpdGVtcz0oJEApOwogICAgd2hpbGUgW1sgJHtsZWZ0fSAtbHQgJHsjaXRlbXNb QF19IF1dOyBkbwogICAgICAgIGxvY2FsIGxvd2VzdF9pZHg9JHtsZWZ0fTsKICAgICAgICBsb2Nh bCBpZHg9JCgoICR7bG93ZXN0X2lkeH0gKyAxICkpOwogICAgICAgIHdoaWxlIFtbICR7aWR4fSAt bHQgJHsjaXRlbXNbQF19IF1dOyBkbwogICAgICAgICAgICB2ZXJzaW9uX2NvbXBhcmUgIiR7aXRl bXNbJHtsb3dlc3RfaWR4fV19IiAiJHtpdGVtc1ske2lkeH1dfSI7CiAgICAgICAgICAgIFtbICQ/ IC1lcSAzIF1dICYmIGxvd2VzdF9pZHg9JHtpZHh9OwogICAgICAgICAgICBpZHg9JCgoICR7aWR4 fSArIDEgKSk7CiAgICAgICAgZG9uZTsKICAgICAgICBsb2NhbCB0bXA9JHtpdGVtc1ske2xvd2Vz dF9pZHh9XX07CiAgICAgICAgaXRlbXNbJHtsb3dlc3RfaWR4fV09JHtpdGVtc1ske2xlZnR9XX07 CiAgICAgICAgaXRlbXNbJHtsZWZ0fV09JHt0bXB9OwogICAgICAgIGxlZnQ9JCgoICR7bGVmdH0g KyAxICkpOwogICAgZG9uZTsKICAgIGVjaG8gJHtpdGVtc1tAXX07CiAgICBfX3ZlcnNpb25hdG9y X3Nob3B0X3RvZ2dsZSBvZmYKfQpkZWNsYXJlIC14IEFMU0FfQ0FSRFM9IiBhbGk1NDUxIGFsczQw MDAgYXRpaXhwIGF0aWl4cC1tb2RlbSBidDg3eCBjYTAxMDYgY21pcGNpIGVtdTEwazEgZW11MTBr MXggZW5zMTM3MCBlbnMxMzcxIGVzMTkzOCBlczE5NjggZm04MDEgaGRhLWludGVsIGludGVsOHgw IGludGVsOHgwbSBtYWVzdHJvMyB0cmlkZW50IHVzYi1hdWRpbyB2aWE4Mnh4IHZpYTgyeHgtbW9k ZW0geW1mcGNpIgpkZWNsYXJlIC14IEFMU0FfUENNX1BMVUdJTlM9ImFkcGNtIGFsYXcgYXN5bSBj b3B5IGRtaXggZHNoYXJlIGRzbm9vcCBlbXB0eSBleHRwbHVnIGZpbGUgaG9va3MgaWVjOTU4IGlv cGx1ZyBsYWRzcGEgbGZsb2F0IGxpbmVhciBtZXRlciBtbWFwX2VtdWwgbXVsYXcgbXVsdGkgbnVs bCBwbHVnIHJhdGUgcm91dGUgc2hhcmUgc2htIHNvZnR2b2wiCmRlY2xhcmUgLXggQVBBQ0hFMl9N T0RVTEVTPSJhY3Rpb25zIGFsaWFzIGF1dGhfYmFzaWMgYXV0aG5fYWxpYXMgYXV0aG5fYW5vbiBh dXRobl9kYm0gYXV0aG5fZGVmYXVsdCBhdXRobl9maWxlIGF1dGh6X2RibSBhdXRoel9kZWZhdWx0 IGF1dGh6X2dyb3VwZmlsZSBhdXRoel9ob3N0IGF1dGh6X293bmVyIGF1dGh6X3VzZXIgYXV0b2lu ZGV4IGNhY2hlIGRhdiBkYXZfZnMgZGF2X2xvY2sgZGVmbGF0ZSBkaXIgZGlza19jYWNoZSBlbnYg ZXhwaXJlcyBleHRfZmlsdGVyIGZpbGVfY2FjaGUgZmlsdGVyIGhlYWRlcnMgaW5jbHVkZSBpbmZv IGxvZ19jb25maWcgbG9naW8gbWVtX2NhY2hlIG1pbWUgbWltZV9tYWdpYyBuZWdvdGlhdGlvbiBy ZXdyaXRlIHNldGVudmlmIHNwZWxpbmcgc3RhdHVzIHVuaXF1ZV9pZCB1c2VyZGlyIHVzZXJ0cmFj ayB2aG9zdF9hbGlhcyIKZGVjbGFyZSAteCBBUkNIPSJ4ODYiCmRlY2xhcmUgLXggQ0JVSUxEPSJp Njg2LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDREVGSU5FX2RlZmF1bHQ9Il9fdW5peF9fIgpk ZWNsYXJlIC14IENGTEFHUz0iLU8yIC1tYXJjaD1pNjg2IC1waXBlIgpkZWNsYXJlIC14IENGTEFH U19kZWZhdWx0PSIiCmRlY2xhcmUgLXggQ0hPU1Q9Imk2ODYtcGMtbGludXgtZ251IgpkZWNsYXJl IC14IENIT1NUX2RlZmF1bHQ9Imk2ODYtcGMtbGludXgtZ251IgpkZWNsYXJlIC14IENST1NTQ09N UElMRV9PUFRTPSIiCmRlY2xhcmUgLXggQ1RBUkdFVF9kZWZhdWx0PSJpNjg2LXBjLWxpbnV4LWdu dSIKZGVjbGFyZSAteCBDVlNfUlNIPSJzc2giCmRlY2xhcmUgLXggQ1hYRkxBR1M9Ii1PMiAtbWFy Y2g9aTY4NiAtcGlwZSIKZGVjbGFyZSAteCBERUZBVUxUX0FCST0iZGVmYXVsdCIKZGVjbGFyZSAt eCBERVNUVFJFRT0iL3VzciIKZGVjbGFyZSAteCBESVJPUFRJT05TPSItbTA3NTUiCmRlY2xhcmUg LXggRUFQST0iMCIKZGVjbGFyZSAteCBFTElCQz0iZ2xpYmMiCmRlY2xhcmUgLXggRVhFT1BUSU9O Uz0iLW0wNzU1IgpkZWNsYXJlIC14IEZFQVRVUkVTPSJkaXN0bG9ja3MgZml4cGFja2FnZXMgcGFy YWxsZWwtZmV0Y2ggcHJvdGVjdC1vd25lZCBzYW5kYm94IHNmcGVybXMgc3RyaWN0IHVubWVyZ2Ut b3JwaGFucyB1c2VyZmV0Y2giCmRlY2xhcmUgLXggR0NDX1NQRUNTPSIiCmRlY2xhcmUgLXggR0RL X1VTRV9YRlQ9IjEiCmRlY2xhcmUgLXggSU5IRVJJVEVEPSJ0b29sY2hhaW4tZnVuY3MgcG9ydGFi aWxpdHkgZmxhZy1vLW1hdGljIHZlcnNpb25hdG9yIG11bHRpbGliIGxpYnRvb2wgbGludXgtaW5m byBhdXRvdG9vbHMgbGludXgtbW9kIGV1dGlscyIKZGVjbGFyZSAteCBJTlBVVF9ERVZJQ0VTPSJr ZXlib2FyZCBtb3VzZSIKZGVjbGFyZSAteCBJTlNERVNUVFJFRT0iIgpkZWNsYXJlIC14IElOU09Q VElPTlM9Ii1tMDY0NCIKZGVjbGFyZSAteCBLRVJORUw9ImxpbnV4IgpkZWNsYXJlIC14IEtFUk5F TF9BQkk9ImRlZmF1bHQiCmRlY2xhcmUgLXggS0VZV09SRFM9In5hbHBoYSB+YW1kNjQgfm1pcHMg fnBwYyB+cHBjNjQgfng4NiIKZGVjbGFyZSAteCBLVj0iMi42LjI1LWdlbnRvby1yOCIKZGVjbGFy ZSAteCBMQ0RfREVWSUNFUz0iYmF5cmFkIGNmb250eiBjZm9udHo2MzMgZ2xrIGhkNDQ3ODAgbGIy MTYgbGNkbTAwMSBtdHhvcmIgbmN1cnNlcyB0ZXh0IgpkZWNsYXJlIC14IExERkxBR1M9Ii1XbCwt TzEiCmRlY2xhcmUgLXggTERGTEFHU19kZWZhdWx0PSIiCmRlY2xhcmUgLXggTElCRElSX2RlZmF1 bHQ9ImxpYiIKZGVjbGFyZSAteCBMSUJPUFRJT05TPSItbTA2NDQiCmRlY2xhcmUgLXggTElDRU5T RT0iR1BMLTIiCmRlY2xhcmUgLXggTUFLRU9QVFM9Ii1qMyIKZGVjbGFyZSAteCBNVUxUSUxJQl9B QklTPSJkZWZhdWx0IgpkZWNsYXJlIC14IE5FVEJFQU5TPSJhcGlzdXBwb3J0IGNuZCBncm9vdnkg Z3NmIGhhcm5lc3MgaWRlIGlkZW50aXR5IGoyZWUgamF2YSBtb2JpbGl0eSBuYiBwaHAgcHJvZmls ZXIgc29hIHZpc3VhbHdlYiB3ZWJjb21tb24gd2Vic3ZjY29tbW9uIHhtbCIKZGVjbGFyZSAteCBP UEVOR0xfUFJPRklMRT0ibnZpZGlhIgpkZWNsYXJlIC14IFBLR19DT05GSUdfUEFUSD0iL3Vzci9x dC8zL2xpYi9wa2djb25maWciCmRlY2xhcmUgLXggUE9SVEFHRV9DT01QUkVTU19FWENMVURFX1NV RkZJWEVTPSJjc3MgZ2lmIGh0bVtsXT8ganBbZV0/ZyBqcyBwZGYgcG5nIgpkZWNsYXJlIC14IFBS T0ZJTEVfT05MWV9WQVJJQUJMRVM9IkFSQ0ggRUxJQkMgS0VSTkVMIFVTRVJMQU5EIgpkZWNsYXJl IC14IFBST1BFUlRJRVM9IiIKZGVjbGFyZSAteCBQUk9WSURFPSJ2aXJ0dWFsL2Fsc2EiCmRlY2xh cmUgLXggUU1BS0VTUEVDPSJsaW51eC1nKysiCmRlY2xhcmUgLXggUVRESVI9Ii91c3IvcXQvMyIK ZGVjbGFyZSAteCBSRVNUUklDVD0iIgpkZWNsYXJlIC14IFM9Ii92YXIvdG1wL3BvcnRhZ2UvbWVk aWEtc291bmQvYWxzYS1kcml2ZXItMS4wLjE4YS93b3JrL2Fsc2EtZHJpdmVyLTEuMC4xOGEiCmRl Y2xhcmUgLXggU0FOREJPWF9ERU5ZPSIvZXRjL2xkLnNvLnByZWxvYWQiCmRlY2xhcmUgLXggU0FO REJPWF9QUkVESUNUPSI6L2Rldi9jb25zb2xlOi9kZXYvcmFuZG9tOi9wcm9jL3NlbGYvbWFwczov dXNyL2xpYi9weXRob24yLjAvOi91c3IvbGliL3B5dGhvbjIuMS86L3Vzci9saWIvcHl0aG9uMi4y LzovdXNyL2xpYi9weXRob24yLjMvOi91c3IvbGliL3B5dGhvbjIuNC86L3Vzci9saWIvcHl0aG9u Mi41LzovdXNyL2xpYi9weXRob24zLjAvOi92YXIvZGIvYWxpYXNlcy5kYjovdmFyL2RiL2V0aGVy cy5kYjovdmFyL2RiL2dyb3VwLmRiOi92YXIvZGIvaG9zdHMuZGI6L3Zhci9kYi9uZXRncm91cC5k YjovdmFyL2RiL25ldG1hc2tzLmRiOi92YXIvZGIvbmV0d29ya3MuZGI6L3Zhci9kYi9wYXNzd2Qu ZGI6L3Zhci9kYi9wcm90b2NvbHMuZGI6L3Zhci9kYi9ycGMuZGI6L3Zhci9kYi9zZXJ2aWNlcy5k YjovdmFyL3RtcC9wb3J0YWdlL21lZGlhLXNvdW5kL2Fsc2EtZHJpdmVyLTEuMC4xOGEvaG9tZWRp ci8uOiIKZGVjbGFyZSAteCBTQU5EQk9YX1JFQUQ9IjovOi9kZXYvc2htOi9kZXYvc3RkaW46L3Zh ci90bXA6IgpkZWNsYXJlIC14IFNBTkRCT1hfV1JJVEU9IjovZGV2L2NvbnNvbGU6L2Rldi9mZDov ZGV2L251bGw6L2Rldi9wdHMvOi9kZXYvcHR5Oi9kZXYvc2htOi9kZXYvc2htL25ncHQ6L2Rldi9z dGRlcnI6L2Rldi9zdGRvdXQ6L2Rldi90dHM6L2Rldi90dHk6L2Rldi92Yy86L2Rldi96ZXJvOi9w cm9jL3NlbGYvZmQ6L3RtcDovdG1wLzovdXNyL2xpYi9jZjovdXNyL2xpYi9jb25mdGVzdDovdXNy L2xpYjMyL2NmOi91c3IvbGliMzIvY29uZnRlc3Q6L3Vzci9saWI2NC9jZjovdXNyL2xpYjY0L2Nv bmZ0ZXN0Oi91c3IvdG1wL2NmOi91c3IvdG1wL2NvbmZ0ZXN0Oi92YXIvbG9nL3Njcm9sbGtlZXBl ci5sb2c6L3Zhci90bXA6L3Zhci90bXAvOi92YXIvdG1wL3BvcnRhZ2UvbWVkaWEtc291bmQvYWxz YS1kcml2ZXItMS4wLjE4YS9ob21lZGlyLy5iYXNoX2hpc3Rvcnk6L3Zhci90bXAvcG9ydGFnZS9t ZWRpYS1zb3VuZC9hbHNhLWRyaXZlci0xLjAuMThhL2hvbWVkaXIvLmdjb25mZC9sb2NrOiIKZGVj bGFyZSAteCBTR01MX0NBVEFMT0dfRklMRVM9Ii9ldGMvc2dtbC9zZ21sLWRvY2Jvb2suY2F0Oi9l dGMvc2dtbC9zZ21sLWRvY2Jvb2stMy4xLmNhdDovZXRjL3NnbWwvc2dtbC1lbnQuY2F0Oi9ldGMv c2dtbC9vcGVuamFkZS0xLjMuMi5jYXQ6L2V0Yy9zZ21sL2Rzc3NsLWRvY2Jvb2stc3R5bGVzaGVl dHMuY2F0Oi9ldGMvc2dtbC9zZ21sLWxpdGUuY2F0IgpkZWNsYXJlIC14IFNMT1Q9IjAiCmRlY2xh cmUgLXggVVNFPSJhbHNhX2NhcmRzX2FsaTU0NTEgYWxzYV9jYXJkc19hbHM0MDAwIGFsc2FfY2Fy ZHNfYXRpaXhwIGFsc2FfY2FyZHNfYXRpaXhwLW1vZGVtIGFsc2FfY2FyZHNfYnQ4N3ggYWxzYV9j YXJkc19jYTAxMDYgYWxzYV9jYXJkc19jbWlwY2kgYWxzYV9jYXJkc19lbXUxMGsxIGFsc2FfY2Fy ZHNfZW11MTBrMXggYWxzYV9jYXJkc19lbnMxMzcwIGFsc2FfY2FyZHNfZW5zMTM3MSBhbHNhX2Nh cmRzX2VzMTkzOCBhbHNhX2NhcmRzX2VzMTk2OCBhbHNhX2NhcmRzX2ZtODAxIGFsc2FfY2FyZHNf aGRhLWludGVsIGFsc2FfY2FyZHNfaW50ZWw4eDAgYWxzYV9jYXJkc19pbnRlbDh4MG0gYWxzYV9j YXJkc19tYWVzdHJvMyBhbHNhX2NhcmRzX3RyaWRlbnQgYWxzYV9jYXJkc191c2ItYXVkaW8gYWxz YV9jYXJkc192aWE4Mnh4IGFsc2FfY2FyZHNfdmlhODJ4eC1tb2RlbSBhbHNhX2NhcmRzX3ltZnBj aSBlbGliY19nbGliYyBrZXJuZWxfbGludXggbWlkaSB1c2VybGFuZF9HTlUgeDg2IgpkZWNsYXJl IC14IFVTRVJMQU5EPSJHTlUiCmRlY2xhcmUgLXggVklERU9fQ0FSRFM9IiIKZGVjbGFyZSAteCBX QU5UX0FVVE9DT05GPSIyLjUiCmRlY2xhcmUgLXggV0FOVF9BVVRPTUFLRT0iMS4xMCIKZGVjbGFy ZSAteCBfRV9ET0NERVNUVFJFRV89IiIKZGVjbGFyZSAteCBfRV9FWEVERVNUVFJFRV89IiIKZGVj bGFyZSAteCByZXBvc2l0b3J5PSJnZW50b28iCg== --000e0cd6a9c695a9ec046108a732--