From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 1C40F138A1C for ; Fri, 21 Nov 2014 18:10:00 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5DF6EE0973; Fri, 21 Nov 2014 18:09:58 +0000 (UTC) Received: from mail-wg0-f49.google.com (mail-wg0-f49.google.com [74.125.82.49]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 2055CE0831 for ; Fri, 21 Nov 2014 18:09:56 +0000 (UTC) Received: by mail-wg0-f49.google.com with SMTP id x12so7201076wgg.22 for ; Fri, 21 Nov 2014 10:09:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=t7iR8ziaQXQl4myzIrqBWJqK77vfFFn6RFZLIliJbow=; b=Qn2pnETISeUdQ4w5x7POFbJJq4PArEmi3OM1uq95p04ns5qnHamLnc2attkWo1Na0V wc+Pywr/FIHe1FVpFw73pvX2i6XlfqyPyyx7aYFOXvtUZNjyuByg23UyZ4ylKr5ZVqG3 MpVjNQSCwq+j49Mmmmu+W0ce/FghAu7KJQ47ofJpyZy5JRe54DeGdW/anNVgPzHJX3ki Om48BSilFVF4y7wp9F8Oe5PBTMQ6oy7ym1e1DO3XY/yaadU1btUe2W81EX84qced7q0u o3pVHdoaA8J5rvRVdkCFtGyIP/HtJd5dz+szV4dpgl2h4IJaRqGU8rY8aPtDTO/gA8ZI zooQ== X-Received: by 10.194.110.4 with SMTP id hw4mr10299612wjb.102.1416593388405; Fri, 21 Nov 2014 10:09:48 -0800 (PST) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-science@lists.gentoo.org Reply-to: gentoo-science@lists.gentoo.org MIME-Version: 1.0 Received: by 10.27.13.142 with HTTP; Fri, 21 Nov 2014 10:09:27 -0800 (PST) From: Jeramia Poland Date: Fri, 21 Nov 2014 23:39:27 +0530 Message-ID: Subject: [gentoo-science] Emerge Sage-doc-6.3 fails 3.16.5-sources gcc-4.8.3 with lto and graphite To: gentoo-science Content-Type: multipart/mixed; boundary=047d7b87451cb65053050862591a X-Archives-Salt: c51a0311-9001-4ddf-9016-4b3bc07ae7e9 X-Archives-Hash: 8ff3f0f8471858f8397fbf4971be3798 --047d7b87451cb65053050862591a Content-Type: multipart/alternative; boundary=047d7b87451cb6504e0508625918 --047d7b87451cb6504e0508625918 Content-Type: text/plain; charset=UTF-8 I've emerge sage-6.3 but the last package sage-doc is failing. I though sage might work without it but it crashes when I attempt to run it saying that pynac.so is an undefined symbol. It seems like sage-doc is complaining of a symbol issue which I assume is related to my "bizarre" gcc flag configuration. I've attempted to emerge with no graphite and no lto flags but it still is not working. I attempted changing to the 'vanilla' profile through gcc-config but that did not work either. What should I try next? Attached are: info output build log whatever -pqv outputs environment Thanks, Jeramia --047d7b87451cb6504e0508625918 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I've emerge sage-6.3 but the last package sage-doc is failing.=C2=A0 = I though sage might work without it but it crashes when I attempt to run it= saying that pynac.so is an undefined symbol.

It seems like sage-doc is complaining of a sy= mbol issue which I assume is related to my "bizarre" gcc flag con= figuration.=C2=A0 I've attempted to emerge with no graphite and no lto = flags but it still is not working. I attempted changing to the 'vanilla= ' profile through gcc-config but that did not work either.

What should I try next?
=

Attached are:

info output
build log
whatever -pqv outputs=C2= =A0
environ= ment

Thanks,
Jeramia
--047d7b87451cb6504e0508625918-- --047d7b87451cb65053050862591a Content-Type: text/plain; charset=US-ASCII; name="info.txt" Content-Disposition: attachment; filename="info.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2rv3j3s2 UG9ydGFnZSAyLjIuOC1yMiAoaGFyZGVuZWQvbGludXgvYW1kNjQsIGdjYy00LjguMywgZ2xpYmMt Mi4xOS1yMSwgMy4xNi41LWdlbnRvbyB4ODZfNjQpCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAg ICAgICAgICBTeXN0ZW0gU2V0dGluZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KU3lzdGVtIHVuYW1lOiBMaW51eC0zLjE2 LjUtZ2VudG9vLXg4Nl82NC1BTURfQTEwLTU3MDBfQVBVX3dpdGhfUmFkZW9uLXRtLV9IRF9HcmFw aGljcy13aXRoLWdlbnRvby0yLjIKS2lCIE1lbTogICAgMTU4NzM2MDggdG90YWwsICAgOTIzMTQy OCBmcmVlCktpQiBTd2FwOiAgICAgICAgICAwIHRvdGFsLCAgICAgICAgIDAgZnJlZQpUaW1lc3Rh bXAgb2YgdHJlZTogU3VuLCAwOSBOb3YgMjAxNCAwODowMDowMSArMDAwMApsZCBHTlUgZ29sZCAo R2VudG9vIDIuMjQgcDEuNCAyLjI0KSAxLjExCmNjYWNoZSB2ZXJzaW9uIDMuMS45IFtkaXNhYmxl ZF0KYXBwLXNoZWxscy9iYXNoOiAgICAgICAgICA0LjJfcDUzCmRldi1qYXZhL2phdmEtY29uZmln OiAgICAgMi4yLjAKZGV2LWxhbmcvcGVybDogICAgICAgICAgICA1LjE4LjItcjIKZGV2LWxhbmcv cHl0aG9uOiAgICAgICAgICAyLjcuNywgMy4zLjUtcjEsIDMuNC4xCmRldi11dGlsL2NjYWNoZTog ICAgICAgICAgMy4xLjktcjMKZGV2LXV0aWwvY21ha2U6ICAgICAgICAgICAyLjguMTIuMi1yMQpk ZXYtdXRpbC9wa2djb25maWc6ICAgICAgIDAuMjgtcjEKc3lzLWFwcHMvYmFzZWxheW91dDogICAg ICAyLjIKc3lzLWFwcHMvb3BlbnJjOiAgICAgICAgICAwLjEyLjQKc3lzLWFwcHMvc2FuZGJveDog ICAgICAgICAyLjYtcjEKc3lzLWRldmVsL2F1dG9jb25mOiAgICAgICAyLjEzLCAyLjY5CnN5cy1k ZXZlbC9hdXRvbWFrZTogICAgICAgMS4xMy40CnN5cy1kZXZlbC9iaW51dGlsczogICAgICAgMi4y NC1yMwpzeXMtZGV2ZWwvZ2NjOiAgICAgICAgICAgIDQuOC4zCnN5cy1kZXZlbC9nY2MtY29uZmln OiAgICAgMS43LjMKc3lzLWRldmVsL2xpYnRvb2w6ICAgICAgICAyLjQuMi1yMQpzeXMtZGV2ZWwv bWFrZTogICAgICAgICAgIDQuMC1yMQpzeXMta2VybmVsL2xpbnV4LWhlYWRlcnM6IDMuMTMgKHZp cnR1YWwvb3MtaGVhZGVycykKc3lzLWxpYnMvZ2xpYmM6ICAgICAgICAgICAyLjE5LXIxClJlcG9z aXRvcmllczogZ2VudG9vIENsb29nUGF0Y2ggc2NpZW5jZSBzYWdlLW9uLWdlbnRvbwpBQ0NFUFRf S0VZV09SRFM9ImFtZDY0IgpBQ0NFUFRfTElDRU5TRT0iKiAtQEVVTEEiCkNCVUlMRD0ieDg2XzY0 LXBjLWxpbnV4LWdudSIKQ0ZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00IC1m bG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlwLW1p bmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUiCkNIT1NUPSJ4ODZfNjQtcGMtbGludXgt Z251IgpDT05GSUdfUFJPVEVDVD0iL2V0YyAvdXNyL3NoYXJlL2dudXBnL3F1YWxpZmllZC50eHQi CkNPTkZJR19QUk9URUNUX01BU0s9Ii9ldGMvY2EtY2VydGlmaWNhdGVzLmNvbmYgL2V0Yy9lbnYu ZCAvZXRjL2djb25mIC9ldGMvZ2VudG9vLXJlbGVhc2UgL2V0Yy9yZXZkZXAtcmVidWlsZCAvZXRj L3NhbmRib3guZCAvZXRjL3Rlcm1pbmZvIgpDWFhGTEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBp cGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2UgLWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1m bG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAtZnRyZWUtdmVjdG9yaXplIgpESVNURElSPSIv dXNyL3BvcnRhZ2UvZGlzdGZpbGVzIgpGQ0ZMQUdTPSItTzIgLXBpcGUiCkZFQVRVUkVTPSJhc3N1 bWUtZGlnZXN0cyBiaW5wa2ctbG9ncyBjb25maWctcHJvdGVjdC1pZi1tb2RpZmllZCBkaXN0bG9j a3MgZWJ1aWxkLWxvY2tzIGZpeGxhZmlsZXMgbWVyZ2Utc3luYyBuZXdzIHBhcmFsbGVsLWZldGNo IHByZXNlcnZlLWxpYnMgcHJvdGVjdC1vd25lZCBzYW5kYm94IHNmcGVybXMgc3RyaWN0IHVua25v d24tZmVhdHVyZXMtd2FybiB1bm1lcmdlLWxvZ3MgdW5tZXJnZS1vcnBoYW5zIHVzZXJmZXRjaCB1 c2VycHJpdiB1c2Vyc2FuZGJveCB1c2Vyc3luYyB4YXR0ciIKRkZMQUdTPSItTzIgLXBpcGUiCkdF TlRPT19NSVJST1JTPSJodHRwOi8vZ2VudG9vLmFkaXRzdS5uZXQ6ODAwMC8gaHR0cDovL2dlbnRv by5tb2R1bGl4Lm5ldC9nZW50b28vIGh0dHA6Ly9nZW50b28uZ2czLm5ldC8iCkxBTkc9ImVuX1VT LnV0ZjgiCkxERkxBR1M9Ii1tYXJjaD1uYXRpdmUgLU8yIC1waXBlIC1mbHRvPTQgLWZsb29wLWlu dGVyY2hhbmdlIC1mdHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZmxvb3Atc3RyaXAtbWluZSAtZmxv b3AtYmxvY2sgLWZ0cmVlLXZlY3Rvcml6ZSAtZnVzZS1saW5rZXItcGx1Z2luIgpNQUtFT1BUUz0i LWo1IgpQS0dESVI9Ii91c3IvcG9ydGFnZS9wYWNrYWdlcyIKUE9SVEFHRV9DT05GSUdST09UPSIv IgpQT1JUQUdFX1JTWU5DX09QVFM9Ii0tcmVjdXJzaXZlIC0tbGlua3MgLS1zYWZlLWxpbmtzIC0t cGVybXMgLS10aW1lcyAtLW9taXQtZGlyLXRpbWVzIC0tY29tcHJlc3MgLS1mb3JjZSAtLXdob2xl LWZpbGUgLS1kZWxldGUgLS1zdGF0cyAtLWh1bWFuLXJlYWRhYmxlIC0tdGltZW91dD0xODAgLS1l eGNsdWRlPS9kaXN0ZmlsZXMgLS1leGNsdWRlPS9sb2NhbCAtLWV4Y2x1ZGU9L3BhY2thZ2VzIgpQ T1JUQUdFX1RNUERJUj0iL3Zhci90bXAiClBPUlRESVI9Ii91c3IvcG9ydGFnZSIKUE9SVERJUl9P VkVSTEFZPSIvdXNyL2xvY2FsL3BvcnRhZ2UgL3Zhci9saWIvbGF5bWFuL3NjaWVuY2UgL3Zhci9s aWIvbGF5bWFuL3NhZ2Utb24tZ2VudG9vIgpVU0U9ImFjbCBhbWQ2NCBiYXNoLWNvbXBsZXRpb24g YmNtYXRoIGJlcmtkYiBiaW5kaXN0IGJsYXMgYnppcDIgY2xpIGNyYWNrbGliIGNyeXB0IGN4eCBk cmkgZW1hY3MgZmZ0dyBnZGJtIGdyYXBoaXRlIGhhcmRlbmVkIGljb252IGlwdjYganVzdGlmeSBs YXBhY2sgbG1fc2Vuc29ycyBsdG8gbHptYSBsem8gbW14IG1vZHVsZXMgbXVsdGlsaWIgbmN1cnNl cyBubHMgbnB0bCBvcGVubXAgcGFtIHBheF9rZXJuZWwgcGNyZSBweXRob24gcmVhZGxpbmUgc2Vz c2lvbiBzbXAgc3NlIHNzZTIgc3NlMyBzc2U0XzEgc3NsIHN5bWxpbmsgc3lzbG9nIHRjcGQgdGhy ZWFkcyB0cnVldHlwZSB1ZGV2IHVuaWNvZGUgdXJhbmRvbSB1c2IgeGF0dHIgeHRwYXggemxpYiIg QUJJX1g4Nj0iNjQiIEFMU0FfQ0FSRFM9ImFsaTU0NTEgYWxzNDAwMCBhdGlpeHAgYXRpaXhwLW1v ZGVtIGJ0ODd4IGNhMDEwNiBjbWlwY2kgZW11MTBrMXggZW5zMTM3MCBlbnMxMzcxIGVzMTkzOCBl czE5NjggZm04MDEgaGRhLWludGVsIGludGVsOHgwIGludGVsOHgwbSBtYWVzdHJvMyB0cmlkZW50 IHVzYi1hdWRpbyB2aWE4Mnh4IHZpYTgyeHgtbW9kZW0geW1mcGNpIiBBUEFDSEUyX01PRFVMRVM9 ImF1dGhuX2NvcmUgYXV0aHpfY29yZSBzb2NhY2hlX3NobWNiIHVuaXhkIGFjdGlvbnMgYWxpYXMg YXV0aF9iYXNpYyBhdXRobl9hbGlhcyBhdXRobl9hbm9uIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0 IGF1dGhuX2ZpbGUgYXV0aHpfZGJtIGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6 X2hvc3QgYXV0aHpfb3duZXIgYXV0aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgY2dpIGNnaWQgZGF2 IGRhdl9mcyBkYXZfbG9jayBkZWZsYXRlIGRpciBkaXNrX2NhY2hlIGVudiBleHBpcmVzIGV4dF9m aWx0ZXIgZmlsZV9jYWNoZSBmaWx0ZXIgaGVhZGVycyBpbmNsdWRlIGluZm8gbG9nX2NvbmZpZyBs b2dpbyBtZW1fY2FjaGUgbWltZSBtaW1lX21hZ2ljIG5lZ290aWF0aW9uIHJld3JpdGUgc2V0ZW52 aWYgc3BlbGluZyBzdGF0dXMgdW5pcXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFz IiBDQUxMSUdSQV9GRUFUVVJFUz0ia2V4aSB3b3JkcyBmbG93IHBsYW4gc2hlZXRzIHN0YWdlIHRh YmxlcyBrcml0YSBrYXJib24gYnJhaW5kdW1wIGF1dGhvciIgQ0FNRVJBUz0icHRwMiIgQ09MTEVD VERfUExVR0lOUz0iZGYgaW50ZXJmYWNlIGlycSBsb2FkIG1lbW9yeSBycmR0b29sIHN3YXAgc3lz bG9nIiBFTElCQz0iZ2xpYmMiIEdQU0RfUFJPVE9DT0xTPSJhc2h0ZWNoIGFpdmRtIGVhcnRobWF0 ZSBldmVybW9yZSBmdjE4IGdhcm1pbiBnYXJtaW50eHQgZ3BzY2xvY2sgaXRyYXggbXRrMzMwMSBu bWVhIG50cmlwIG5hdmNvbSBvY2VhbnNlcnZlciBvbGRzdHlsZSBvbmNvcmUgcnRjbTEwNHYyIHJ0 Y20xMDR2MyBzaXJmIHN1cGVyc3RhcjIgdGltaW5nIHRzaXAgdHJpcG1hdGUgdG50IHVibG94IHVi eCIgSU5QVVRfREVWSUNFUz0iZXZkZXYiIEtFUk5FTD0ibGludXgiIExDRF9ERVZJQ0VTPSJiYXly YWQgY2ZvbnR6IGNmb250ejYzMyBnbGsgaGQ0NDc4MCBsYjIxNiBsY2RtMDAxIG10eG9yYiBuY3Vy c2VzIHRleHQiIExJQlJFT0ZGSUNFX0VYVEVOU0lPTlM9InByZXNlbnRlci1jb25zb2xlIHByZXNl bnRlci1taW5pbWl6ZXIiIE9GRklDRV9JTVBMRU1FTlRBVElPTj0ibGlicmVvZmZpY2UiIFBIUF9U QVJHRVRTPSJwaHA1LTUiIFBZVEhPTl9TSU5HTEVfVEFSR0VUPSJweXRob24yXzciIFBZVEhPTl9U QVJHRVRTPSJweXRob24yXzcgcHl0aG9uM18zIiBSVUJZX1RBUkdFVFM9InJ1YnkxOSBydWJ5MjAi IFVTRVJMQU5EPSJHTlUiIFZJREVPX0NBUkRTPSJmZ2xyeCIgWFRBQkxFU19BRERPTlM9InF1b3Rh MiBwc2QgcGtub2NrIGxzY2FuIGxlbmd0aDIgaXB2NG9wdGlvbnMgaXBzZXQgaXBwMnAgaWZhY2Ug Z2VvaXAgZnV6enkgY29uZGl0aW9uIHRlZSB0YXJwaXQgc3lzcnEgc3RlYWwgcmF3bmF0IGxvZ21h cmsgaXBtYXJrIGRoY3BtYWMgZGVsdWRlIGNoYW9zIGFjY291bnQiClVuc2V0OiAgQ1BQRkxBR1Ms IENUQVJHRVQsIEVNRVJHRV9ERUZBVUxUX09QVFMsIElOU1RBTExfTUFTSywgTENfQUxMLCBQT1JU QUdFX0JVTlpJUDJfQ09NTUFORCwgUE9SVEFHRV9DT01QUkVTUywgUE9SVEFHRV9DT01QUkVTU19G TEFHUywgUE9SVEFHRV9SU1lOQ19FWFRSQV9PUFRTLCBTWU5DLCBVU0VfUFlUSE9OCgpQb3J0YWdl IDIuMi44LXIyIChoYXJkZW5lZC9saW51eC9hbWQ2NCwgZ2NjLTQuOC4zLCBnbGliYy0yLjE5LXIx LCAzLjE2LjUtZ2VudG9vIHg4Nl82NCkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICAgICAgICAg IFN5c3RlbSBTZXR0aW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpTeXN0ZW0gdW5hbWU6IExpbnV4LTMuMTYuNS1nZW50 b28teDg2XzY0LUFNRF9BMTAtNTcwMF9BUFVfd2l0aF9SYWRlb24tdG0tX0hEX0dyYXBoaWNzLXdp dGgtZ2VudG9vLTIuMgpLaUIgTWVtOiAgICAxNTg3MzYwOCB0b3RhbCwgICA1NzI3MDQ0IGZyZWUK S2lCIFN3YXA6ICAgICAgICAgIDAgdG90YWwsICAgICAgICAgMCBmcmVlClRpbWVzdGFtcCBvZiB0 cmVlOiBNb24sIDE3IE5vdiAyMDE0IDExOjAwOjAxICswMDAwCmxkIEdOVSBnb2xkIChHZW50b28g Mi4yNCBwMS40IDIuMjQpIDEuMTEKY2NhY2hlIHZlcnNpb24gMy4xLjkgW2Rpc2FibGVkXQphcHAt c2hlbGxzL2Jhc2g6ICAgICAgICAgIDQuMl9wNTMKZGV2LWphdmEvamF2YS1jb25maWc6ICAgICAy LjIuMApkZXYtbGFuZy9wZXJsOiAgICAgICAgICAgIDUuMTguMi1yMgpkZXYtbGFuZy9weXRob246 ICAgICAgICAgIDIuNy43LCAzLjMuNS1yMSwgMy40LjEKZGV2LXV0aWwvY2NhY2hlOiAgICAgICAg ICAzLjEuOS1yMwpkZXYtdXRpbC9jbWFrZTogICAgICAgICAgIDIuOC4xMi4yLXIxCmRldi11dGls L3BrZ2NvbmZpZzogICAgICAgMC4yOC1yMQpzeXMtYXBwcy9iYXNlbGF5b3V0OiAgICAgIDIuMgpz eXMtYXBwcy9vcGVucmM6ICAgICAgICAgIDAuMTIuNApzeXMtYXBwcy9zYW5kYm94OiAgICAgICAg IDIuNi1yMQpzeXMtZGV2ZWwvYXV0b2NvbmY6ICAgICAgIDIuMTMsIDIuNjkKc3lzLWRldmVsL2F1 dG9tYWtlOiAgICAgICAxLjEzLjQKc3lzLWRldmVsL2JpbnV0aWxzOiAgICAgICAyLjI0LXIzCnN5 cy1kZXZlbC9nY2M6ICAgICAgICAgICAgNC44LjMKc3lzLWRldmVsL2djYy1jb25maWc6ICAgICAx LjcuMwpzeXMtZGV2ZWwvbGlidG9vbDogICAgICAgIDIuNC4yLXIxCnN5cy1kZXZlbC9tYWtlOiAg ICAgICAgICAgNC4wLXIxCnN5cy1rZXJuZWwvbGludXgtaGVhZGVyczogMy4xMyAodmlydHVhbC9v cy1oZWFkZXJzKQpzeXMtbGlicy9nbGliYzogICAgICAgICAgIDIuMTktcjEKUmVwb3NpdG9yaWVz OiBnZW50b28gQ2xvb2dQYXRjaCBzY2llbmNlIHNhZ2Utb24tZ2VudG9vCkFDQ0VQVF9LRVlXT1JE Uz0iYW1kNjQiCkFDQ0VQVF9MSUNFTlNFPSIqIC1ARVVMQSIKQ0JVSUxEPSJ4ODZfNjQtcGMtbGlu dXgtZ251IgpDRkxBR1M9Ii1tYXJjaD1uYXRpdmUgLU8yIC1waXBlIC1mbHRvPTQgLWZsb29wLWlu dGVyY2hhbmdlIC1mdHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZmxvb3Atc3RyaXAtbWluZSAtZmxv b3AtYmxvY2sgLWZ0cmVlLXZlY3Rvcml6ZSIKQ0hPU1Q9Ing4Nl82NC1wYy1saW51eC1nbnUiCkNP TkZJR19QUk9URUNUPSIvZXRjIC91c3Ivc2hhcmUvZ251cGcvcXVhbGlmaWVkLnR4dCIKQ09ORklH X1BST1RFQ1RfTUFTSz0iL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMuY29uZiAvZXRjL2Vudi5kIC9ldGMv Zm9udHMvZm9udHMuY29uZiAvZXRjL2djb25mIC9ldGMvZ2VudG9vLXJlbGVhc2UgL2V0Yy9yZXZk ZXAtcmVidWlsZCAvZXRjL3NhbmRib3guZCAvZXRjL3Rlcm1pbmZvIC9ldGMvdGV4bWYvbGFuZ3Vh Z2UuZGF0LmQgL2V0Yy90ZXhtZi9sYW5ndWFnZS5kZWYuZCAvZXRjL3RleG1mL3VwZG1hcC5kIC9l dGMvdGV4bWYvd2ViMmMiCkNYWEZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00 IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlw LW1pbmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUiCkRJU1RESVI9Ii91c3IvcG9ydGFn ZS9kaXN0ZmlsZXMiCkZDRkxBR1M9Ii1PMiAtcGlwZSIKRkVBVFVSRVM9ImFzc3VtZS1kaWdlc3Rz IGJpbnBrZy1sb2dzIGNvbmZpZy1wcm90ZWN0LWlmLW1vZGlmaWVkIGRpc3Rsb2NrcyBlYnVpbGQt bG9ja3MgZml4bGFmaWxlcyBtZXJnZS1zeW5jIG5ld3MgcGFyYWxsZWwtZmV0Y2ggcHJlc2VydmUt bGlicyBwcm90ZWN0LW93bmVkIHNhbmRib3ggc2ZwZXJtcyBzdHJpY3QgdW5rbm93bi1mZWF0dXJl cy13YXJuIHVubWVyZ2UtbG9ncyB1bm1lcmdlLW9ycGhhbnMgdXNlcmZldGNoIHVzZXJwcml2IHVz ZXJzYW5kYm94IHVzZXJzeW5jIHhhdHRyIgpGRkxBR1M9Ii1PMiAtcGlwZSIKR0VOVE9PX01JUlJP UlM9Imh0dHA6Ly9nZW50b28uYWRpdHN1Lm5ldDo4MDAwLyBodHRwOi8vZ2VudG9vLm1vZHVsaXgu bmV0L2dlbnRvby8gaHR0cDovL2dlbnRvby5nZzMubmV0LyIKTEFORz0iZW5fVVMudXRmOCIKTERG TEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2Ug LWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAt ZnRyZWUtdmVjdG9yaXplIC1mdXNlLWxpbmtlci1wbHVnaW4iCk1BS0VPUFRTPSItajUiClBLR0RJ Uj0iL3Vzci9wb3J0YWdlL3BhY2thZ2VzIgpQT1JUQUdFX0NPTkZJR1JPT1Q9Ii8iClBPUlRBR0Vf UlNZTkNfT1BUUz0iLS1yZWN1cnNpdmUgLS1saW5rcyAtLXNhZmUtbGlua3MgLS1wZXJtcyAtLXRp bWVzIC0tb21pdC1kaXItdGltZXMgLS1jb21wcmVzcyAtLWZvcmNlIC0td2hvbGUtZmlsZSAtLWRl bGV0ZSAtLXN0YXRzIC0taHVtYW4tcmVhZGFibGUgLS10aW1lb3V0PTE4MCAtLWV4Y2x1ZGU9L2Rp c3RmaWxlcyAtLWV4Y2x1ZGU9L2xvY2FsIC0tZXhjbHVkZT0vcGFja2FnZXMiClBPUlRBR0VfVE1Q RElSPSIvdmFyL3RtcCIKUE9SVERJUj0iL3Vzci9wb3J0YWdlIgpQT1JURElSX09WRVJMQVk9Ii91 c3IvbG9jYWwvcG9ydGFnZSAvdmFyL2xpYi9sYXltYW4vc2NpZW5jZSAvdmFyL2xpYi9sYXltYW4v c2FnZS1vbi1nZW50b28iClVTRT0iYWNsIGFtZDY0IGJhc2gtY29tcGxldGlvbiBiY21hdGggYmVy a2RiIGJpbmRpc3QgYmxhcyBiemlwMiBjbGkgY3JhY2tsaWIgY3J5cHQgY3h4IGRyaSBlbWFjcyBm ZnR3IGdkYm0gZ3JhcGhpdGUgaGFyZGVuZWQgaWNvbnYgaXB2NiBqdXN0aWZ5IGxhcGFjayBsbV9z ZW5zb3JzIGx0byBsem1hIGx6byBtbXggbW9kdWxlcyBtdWx0aWxpYiBuY3Vyc2VzIG5scyBucHRs IG9wZW5tcCBwYW0gcGF4X2tlcm5lbCBwY3JlIHB5dGhvbiByZWFkbGluZSBzZXNzaW9uIHNtcCBz c2Ugc3NlMiBzc2UzIHNzZTRfMSBzc2wgc3ltbGluayBzeXNsb2cgdGNwZCB0aHJlYWRzIHRydWV0 eXBlIHVkZXYgdW5pY29kZSB1cmFuZG9tIHVzYiB4YXR0ciB4dHBheCB6bGliIiBBQklfWDg2PSI2 NCIgQUxTQV9DQVJEUz0iYWxpNTQ1MSBhbHM0MDAwIGF0aWl4cCBhdGlpeHAtbW9kZW0gYnQ4N3gg Y2EwMTA2IGNtaXBjaSBlbXUxMGsxeCBlbnMxMzcwIGVuczEzNzEgZXMxOTM4IGVzMTk2OCBmbTgw MSBoZGEtaW50ZWwgaW50ZWw4eDAgaW50ZWw4eDBtIG1hZXN0cm8zIHRyaWRlbnQgdXNiLWF1ZGlv IHZpYTgyeHggdmlhODJ4eC1tb2RlbSB5bWZwY2kiIEFQQUNIRTJfTU9EVUxFUz0iYXV0aG5fY29y ZSBhdXRoel9jb3JlIHNvY2FjaGVfc2htY2IgdW5peGQgYWN0aW9ucyBhbGlhcyBhdXRoX2Jhc2lj IGF1dGhuX2FsaWFzIGF1dGhuX2Fub24gYXV0aG5fZGJtIGF1dGhuX2RlZmF1bHQgYXV0aG5fZmls ZSBhdXRoel9kYm0gYXV0aHpfZGVmYXVsdCBhdXRoel9ncm91cGZpbGUgYXV0aHpfaG9zdCBhdXRo el9vd25lciBhdXRoel91c2VyIGF1dG9pbmRleCBjYWNoZSBjZ2kgY2dpZCBkYXYgZGF2X2ZzIGRh dl9sb2NrIGRlZmxhdGUgZGlyIGRpc2tfY2FjaGUgZW52IGV4cGlyZXMgZXh0X2ZpbHRlciBmaWxl X2NhY2hlIGZpbHRlciBoZWFkZXJzIGluY2x1ZGUgaW5mbyBsb2dfY29uZmlnIGxvZ2lvIG1lbV9j YWNoZSBtaW1lIG1pbWVfbWFnaWMgbmVnb3RpYXRpb24gcmV3cml0ZSBzZXRlbnZpZiBzcGVsaW5n IHN0YXR1cyB1bmlxdWVfaWQgdXNlcmRpciB1c2VydHJhY2sgdmhvc3RfYWxpYXMiIENBTExJR1JB X0ZFQVRVUkVTPSJrZXhpIHdvcmRzIGZsb3cgcGxhbiBzaGVldHMgc3RhZ2UgdGFibGVzIGtyaXRh IGthcmJvbiBicmFpbmR1bXAgYXV0aG9yIiBDQU1FUkFTPSJwdHAyIiBDT0xMRUNURF9QTFVHSU5T PSJkZiBpbnRlcmZhY2UgaXJxIGxvYWQgbWVtb3J5IHJyZHRvb2wgc3dhcCBzeXNsb2ciIEVMSUJD PSJnbGliYyIgR1BTRF9QUk9UT0NPTFM9ImFzaHRlY2ggYWl2ZG0gZWFydGhtYXRlIGV2ZXJtb3Jl IGZ2MTggZ2FybWluIGdhcm1pbnR4dCBncHNjbG9jayBpdHJheCBtdGszMzAxIG5tZWEgbnRyaXAg bmF2Y29tIG9jZWFuc2VydmVyIG9sZHN0eWxlIG9uY29yZSBydGNtMTA0djIgcnRjbTEwNHYzIHNp cmYgc3VwZXJzdGFyMiB0aW1pbmcgdHNpcCB0cmlwbWF0ZSB0bnQgdWJsb3ggdWJ4IiBJTlBVVF9E RVZJQ0VTPSJldmRldiIgS0VSTkVMPSJsaW51eCIgTENEX0RFVklDRVM9ImJheXJhZCBjZm9udHog Y2ZvbnR6NjMzIGdsayBoZDQ0NzgwIGxiMjE2IGxjZG0wMDEgbXR4b3JiIG5jdXJzZXMgdGV4dCIg TElCUkVPRkZJQ0VfRVhURU5TSU9OUz0icHJlc2VudGVyLWNvbnNvbGUgcHJlc2VudGVyLW1pbmlt aXplciIgT0ZGSUNFX0lNUExFTUVOVEFUSU9OPSJsaWJyZW9mZmljZSIgUEhQX1RBUkdFVFM9InBo cDUtNSIgUFlUSE9OX1NJTkdMRV9UQVJHRVQ9InB5dGhvbjJfNyIgUFlUSE9OX1RBUkdFVFM9InB5 dGhvbjJfNyBweXRob24zXzMiIFJVQllfVEFSR0VUUz0icnVieTE5IHJ1YnkyMCIgVVNFUkxBTkQ9 IkdOVSIgVklERU9fQ0FSRFM9ImZnbHJ4IiBYVEFCTEVTX0FERE9OUz0icXVvdGEyIHBzZCBwa25v Y2sgbHNjYW4gbGVuZ3RoMiBpcHY0b3B0aW9ucyBpcHNldCBpcHAycCBpZmFjZSBnZW9pcCBmdXp6 eSBjb25kaXRpb24gdGVlIHRhcnBpdCBzeXNycSBzdGVhbCByYXduYXQgbG9nbWFyayBpcG1hcmsg ZGhjcG1hYyBkZWx1ZGUgY2hhb3MgYWNjb3VudCIKVW5zZXQ6ICBDUFBGTEFHUywgQ1RBUkdFVCwg RU1FUkdFX0RFRkFVTFRfT1BUUywgSU5TVEFMTF9NQVNLLCBMQ19BTEwsIFBPUlRBR0VfQlVOWklQ Ml9DT01NQU5ELCBQT1JUQUdFX0NPTVBSRVNTLCBQT1JUQUdFX0NPTVBSRVNTX0ZMQUdTLCBQT1JU QUdFX1JTWU5DX0VYVFJBX09QVFMsIFNZTkMsIFVTRV9QWVRIT04KClBvcnRhZ2UgMi4yLjgtcjIg KGhhcmRlbmVkL2xpbnV4L2FtZDY0LCBnY2MtNC44LjMsIGdsaWJjLTIuMTktcjEsIDMuMTYuNS1n ZW50b28geDg2XzY0KQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtIFNl dHRpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClN5c3RlbSB1bmFtZTogTGludXgtMy4xNi41LWdlbnRvby14ODZfNjQt QU1EX0ExMC01NzAwX0FQVV93aXRoX1JhZGVvbi10bS1fSERfR3JhcGhpY3Mtd2l0aC1nZW50b28t Mi4yCktpQiBNZW06ICAgIDE1ODcwOTI4IHRvdGFsLCAgMTMwNzQ3MDggZnJlZQpLaUIgU3dhcDog ICAgICAgICAgMCB0b3RhbCwgICAgICAgICAwIGZyZWUKVGltZXN0YW1wIG9mIHRyZWU6IEZyaSwg MjEgTm92IDIwMTQgMTE6MzA6MDEgKzAwMDAKbGQgR05VIGdvbGQgKEdlbnRvbyAyLjI0IHAxLjQg Mi4yNCkgMS4xMQpjY2FjaGUgdmVyc2lvbiAzLjEuOSBbZGlzYWJsZWRdCmFwcC1zaGVsbHMvYmFz aDogICAgICAgICAgNC4yX3A1MwpkZXYtamF2YS9qYXZhLWNvbmZpZzogICAgIDIuMi4wCmRldi1s YW5nL3Blcmw6ICAgICAgICAgICAgNS4xOC4yLXIyCmRldi1sYW5nL3B5dGhvbjogICAgICAgICAg Mi43LjcsIDMuMy41LXIxLCAzLjQuMQpkZXYtdXRpbC9jY2FjaGU6ICAgICAgICAgIDMuMS45LXIz CmRldi11dGlsL2NtYWtlOiAgICAgICAgICAgMi44LjEyLjItcjEKZGV2LXV0aWwvcGtnY29uZmln OiAgICAgICAwLjI4LXIxCnN5cy1hcHBzL2Jhc2VsYXlvdXQ6ICAgICAgMi4yCnN5cy1hcHBzL29w ZW5yYzogICAgICAgICAgMC4xMi40CnN5cy1hcHBzL3NhbmRib3g6ICAgICAgICAgMi42LXIxCnN5 cy1kZXZlbC9hdXRvY29uZjogICAgICAgMi4xMywgMi42OQpzeXMtZGV2ZWwvYXV0b21ha2U6ICAg ICAgIDEuMTMuNApzeXMtZGV2ZWwvYmludXRpbHM6ICAgICAgIDIuMjQtcjMKc3lzLWRldmVsL2dj YzogICAgICAgICAgICA0LjguMwpzeXMtZGV2ZWwvZ2NjLWNvbmZpZzogICAgIDEuNy4zCnN5cy1k ZXZlbC9saWJ0b29sOiAgICAgICAgMi40LjItcjEKc3lzLWRldmVsL21ha2U6ICAgICAgICAgICA0 LjAtcjEKc3lzLWtlcm5lbC9saW51eC1oZWFkZXJzOiAzLjE2ICh2aXJ0dWFsL29zLWhlYWRlcnMp CnN5cy1saWJzL2dsaWJjOiAgICAgICAgICAgMi4xOS1yMQpSZXBvc2l0b3JpZXM6IGdlbnRvbyBD bG9vZ1BhdGNoIHNjaWVuY2Ugc2FnZS1vbi1nZW50b28KQUNDRVBUX0tFWVdPUkRTPSJhbWQ2NCIK QUNDRVBUX0xJQ0VOU0U9IiogLUBFVUxBIgpDQlVJTEQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCkNG TEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2Ug LWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAt ZnRyZWUtdmVjdG9yaXplIgpDSE9TVD0ieDg2XzY0LXBjLWxpbnV4LWdudSIKQ09ORklHX1BST1RF Q1Q9Ii9ldGMgL3Vzci9zaGFyZS9nbnVwZy9xdWFsaWZpZWQudHh0IC92YXIvbGliL2hzcWxkYiIK Q09ORklHX1BST1RFQ1RfTUFTSz0iL2V0Yy9jYS1jZXJ0aWZpY2F0ZXMuY29uZiAvZXRjL2Vudi5k IC9ldGMvZm9udHMvZm9udHMuY29uZiAvZXRjL2djb25mIC9ldGMvZ2VudG9vLXJlbGVhc2UgL2V0 Yy9yZXZkZXAtcmVidWlsZCAvZXRjL3NhbmRib3guZCAvZXRjL3Rlcm1pbmZvIC9ldGMvdGV4bWYv bGFuZ3VhZ2UuZGF0LmQgL2V0Yy90ZXhtZi9sYW5ndWFnZS5kZWYuZCAvZXRjL3RleG1mL3VwZG1h cC5kIC9ldGMvdGV4bWYvd2ViMmMiCkNYWEZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAt Zmx0bz00IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29w LXN0cmlwLW1pbmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUiCkRJU1RESVI9Ii91c3Iv cG9ydGFnZS9kaXN0ZmlsZXMiCkZDRkxBR1M9Ii1PMiAtcGlwZSIKRkVBVFVSRVM9ImFzc3VtZS1k aWdlc3RzIGJpbnBrZy1sb2dzIGNvbmZpZy1wcm90ZWN0LWlmLW1vZGlmaWVkIGRpc3Rsb2NrcyBl YnVpbGQtbG9ja3MgZml4bGFmaWxlcyBtZXJnZS1zeW5jIG5ld3MgcGFyYWxsZWwtZmV0Y2ggcHJl c2VydmUtbGlicyBwcm90ZWN0LW93bmVkIHNhbmRib3ggc2ZwZXJtcyBzdHJpY3QgdW5rbm93bi1m ZWF0dXJlcy13YXJuIHVubWVyZ2UtbG9ncyB1bm1lcmdlLW9ycGhhbnMgdXNlcmZldGNoIHVzZXJw cml2IHVzZXJzYW5kYm94IHVzZXJzeW5jIHhhdHRyIgpGRkxBR1M9Ii1PMiAtcGlwZSIKR0VOVE9P X01JUlJPUlM9Imh0dHA6Ly9nZW50b28uYWRpdHN1Lm5ldDo4MDAwLyBodHRwOi8vZ2VudG9vLm1v ZHVsaXgubmV0L2dlbnRvby8gaHR0cDovL2dlbnRvby5nZzMubmV0LyIKTEFORz0iZW5fVVMudXRm OCIKTERGTEFHUz0iLW1hcmNoPW5hdGl2ZSAtTzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJj aGFuZ2UgLWZ0cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1i bG9jayAtZnRyZWUtdmVjdG9yaXplIC1mdXNlLWxpbmtlci1wbHVnaW4iCk1BS0VPUFRTPSItajEi ClBLR0RJUj0iL3Vzci9wb3J0YWdlL3BhY2thZ2VzIgpQT1JUQUdFX0NPTkZJR1JPT1Q9Ii8iClBP UlRBR0VfUlNZTkNfT1BUUz0iLS1yZWN1cnNpdmUgLS1saW5rcyAtLXNhZmUtbGlua3MgLS1wZXJt cyAtLXRpbWVzIC0tb21pdC1kaXItdGltZXMgLS1jb21wcmVzcyAtLWZvcmNlIC0td2hvbGUtZmls ZSAtLWRlbGV0ZSAtLXN0YXRzIC0taHVtYW4tcmVhZGFibGUgLS10aW1lb3V0PTE4MCAtLWV4Y2x1 ZGU9L2Rpc3RmaWxlcyAtLWV4Y2x1ZGU9L2xvY2FsIC0tZXhjbHVkZT0vcGFja2FnZXMiClBPUlRB R0VfVE1QRElSPSIvdmFyL3RtcCIKUE9SVERJUj0iL3Vzci9wb3J0YWdlIgpQT1JURElSX09WRVJM QVk9Ii91c3IvbG9jYWwvcG9ydGFnZSAvdmFyL2xpYi9sYXltYW4vc2NpZW5jZSAvdmFyL2xpYi9s YXltYW4vc2FnZS1vbi1nZW50b28iClVTRT0iYWNsIGFtZDY0IGJhc2gtY29tcGxldGlvbiBiY21h dGggYmVya2RiIGJpbmRpc3QgYmxhcyBiemlwMiBjbGkgY3JhY2tsaWIgY3J5cHQgY3h4IGRyaSBl bWFjcyBmZnR3IGdkYm0gZ3JhcGhpdGUgaGFyZGVuZWQgaWNvbnYgaXB2NiBqdXN0aWZ5IGxhcGFj ayBsbV9zZW5zb3JzIGx0byBsem1hIGx6byBtbXggbW9kdWxlcyBtdWx0aWxpYiBuY3Vyc2VzIG5s cyBucHRsIG9wZW5tcCBwYW0gcGF4X2tlcm5lbCBwY3JlIHB5dGhvbiByZWFkbGluZSBzZXNzaW9u IHNtcCBzc2Ugc3NlMiBzc2UzIHNzZTRfMSBzc2wgc3ltbGluayBzeXNsb2cgdGNwZCB0aHJlYWRz IHRydWV0eXBlIHVkZXYgdW5pY29kZSB1cmFuZG9tIHVzYiB4YXR0ciB4dHBheCB6bGliIiBBQklf WDg2PSI2NCIgQUxTQV9DQVJEUz0iYWxpNTQ1MSBhbHM0MDAwIGF0aWl4cCBhdGlpeHAtbW9kZW0g YnQ4N3ggY2EwMTA2IGNtaXBjaSBlbXUxMGsxeCBlbnMxMzcwIGVuczEzNzEgZXMxOTM4IGVzMTk2 OCBmbTgwMSBoZGEtaW50ZWwgaW50ZWw4eDAgaW50ZWw4eDBtIG1hZXN0cm8zIHRyaWRlbnQgdXNi LWF1ZGlvIHZpYTgyeHggdmlhODJ4eC1tb2RlbSB5bWZwY2kiIEFQQUNIRTJfTU9EVUxFUz0iYXV0 aG5fY29yZSBhdXRoel9jb3JlIHNvY2FjaGVfc2htY2IgdW5peGQgYWN0aW9ucyBhbGlhcyBhdXRo X2Jhc2ljIGF1dGhuX2FsaWFzIGF1dGhuX2Fub24gYXV0aG5fZGJtIGF1dGhuX2RlZmF1bHQgYXV0 aG5fZmlsZSBhdXRoel9kYm0gYXV0aHpfZGVmYXVsdCBhdXRoel9ncm91cGZpbGUgYXV0aHpfaG9z dCBhdXRoel9vd25lciBhdXRoel91c2VyIGF1dG9pbmRleCBjYWNoZSBjZ2kgY2dpZCBkYXYgZGF2 X2ZzIGRhdl9sb2NrIGRlZmxhdGUgZGlyIGRpc2tfY2FjaGUgZW52IGV4cGlyZXMgZXh0X2ZpbHRl ciBmaWxlX2NhY2hlIGZpbHRlciBoZWFkZXJzIGluY2x1ZGUgaW5mbyBsb2dfY29uZmlnIGxvZ2lv IG1lbV9jYWNoZSBtaW1lIG1pbWVfbWFnaWMgbmVnb3RpYXRpb24gcmV3cml0ZSBzZXRlbnZpZiBz cGVsaW5nIHN0YXR1cyB1bmlxdWVfaWQgdXNlcmRpciB1c2VydHJhY2sgdmhvc3RfYWxpYXMiIENB TExJR1JBX0ZFQVRVUkVTPSJrZXhpIHdvcmRzIGZsb3cgcGxhbiBzaGVldHMgc3RhZ2UgdGFibGVz IGtyaXRhIGthcmJvbiBicmFpbmR1bXAgYXV0aG9yIiBDQU1FUkFTPSJwdHAyIiBDT0xMRUNURF9Q TFVHSU5TPSJkZiBpbnRlcmZhY2UgaXJxIGxvYWQgbWVtb3J5IHJyZHRvb2wgc3dhcCBzeXNsb2ci IEVMSUJDPSJnbGliYyIgR1BTRF9QUk9UT0NPTFM9ImFzaHRlY2ggYWl2ZG0gZWFydGhtYXRlIGV2 ZXJtb3JlIGZ2MTggZ2FybWluIGdhcm1pbnR4dCBncHNjbG9jayBpdHJheCBtdGszMzAxIG5tZWEg bnRyaXAgbmF2Y29tIG9jZWFuc2VydmVyIG9sZHN0eWxlIG9uY29yZSBydGNtMTA0djIgcnRjbTEw NHYzIHNpcmYgc3VwZXJzdGFyMiB0aW1pbmcgdHNpcCB0cmlwbWF0ZSB0bnQgdWJsb3ggdWJ4IiBJ TlBVVF9ERVZJQ0VTPSJldmRldiIgS0VSTkVMPSJsaW51eCIgTENEX0RFVklDRVM9ImJheXJhZCBj Zm9udHogY2ZvbnR6NjMzIGdsayBoZDQ0NzgwIGxiMjE2IGxjZG0wMDEgbXR4b3JiIG5jdXJzZXMg dGV4dCIgTElCUkVPRkZJQ0VfRVhURU5TSU9OUz0icHJlc2VudGVyLWNvbnNvbGUgcHJlc2VudGVy LW1pbmltaXplciIgT0ZGSUNFX0lNUExFTUVOVEFUSU9OPSJsaWJyZW9mZmljZSIgUEhQX1RBUkdF VFM9InBocDUtNSIgUFlUSE9OX1NJTkdMRV9UQVJHRVQ9InB5dGhvbjJfNyIgUFlUSE9OX1RBUkdF VFM9InB5dGhvbjJfNyBweXRob24zXzMiIFJVQllfVEFSR0VUUz0icnVieTE5IHJ1YnkyMCIgVVNF UkxBTkQ9IkdOVSIgVklERU9fQ0FSRFM9InJhZGVvbiIgWFRBQkxFU19BRERPTlM9InF1b3RhMiBw c2QgcGtub2NrIGxzY2FuIGxlbmd0aDIgaXB2NG9wdGlvbnMgaXBzZXQgaXBwMnAgaWZhY2UgZ2Vv aXAgZnV6enkgY29uZGl0aW9uIHRlZSB0YXJwaXQgc3lzcnEgc3RlYWwgcmF3bmF0IGxvZ21hcmsg aXBtYXJrIGRoY3BtYWMgZGVsdWRlIGNoYW9zIGFjY291bnQiClVuc2V0OiAgQ1BQRkxBR1MsIENU QVJHRVQsIEVNRVJHRV9ERUZBVUxUX09QVFMsIElOU1RBTExfTUFTSywgTENfQUxMLCBQT1JUQUdF X0JVTlpJUDJfQ09NTUFORCwgUE9SVEFHRV9DT01QUkVTUywgUE9SVEFHRV9DT01QUkVTU19GTEFH UywgUE9SVEFHRV9SU1lOQ19FWFRSQV9PUFRTLCBTWU5DLCBVU0VfUFlUSE9OCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQog ICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlIFNldHRpbmdzCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpzY2ktbWF0 aGVtYXRpY3Mvc2FnZS1kb2MtNi4zIHdhcyBidWlsdCB3aXRoIHRoZSBmb2xsb3dpbmc6ClVTRT0i LWh0bWwiIEFCSV9YODY9IjY0IiBQWVRIT05fVEFSR0VUUz0icHl0aG9uMl83IgoK --047d7b87451cb65053050862591a Content-Type: text/x-log; charset=US-ASCII; name="build.log" Content-Disposition: attachment; filename="build.log" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2rv3j2x0 G1szMjswMW0gKiAbWzM5OzQ5OzAwbVBhY2thZ2U6ICAgIHNjaS1tYXRoZW1hdGljcy9zYWdlLWRv Yy02LjMKG1szMjswMW0gKiAbWzM5OzQ5OzAwbVJlcG9zaXRvcnk6IHNhZ2Utb24tZ2VudG9vChtb MzI7MDFtICogG1szOTs0OTswMG1NYWludGFpbmVyOiBzY2lAZ2VudG9vLm9yZwobWzMyOzAxbSAq IBtbMzk7NDk7MDBtVVNFOiAgICAgICAgYWJpX3g4Nl82NCBhbWQ2NCBlbGliY19nbGliYyBodG1s IGtlcm5lbF9saW51eCBweXRob25fdGFyZ2V0c19weXRob24yXzcgdXNlcmxhbmRfR05VChtbMzI7 MDFtICogG1szOTs0OTswMG1GRUFUVVJFUzogICBwcmVzZXJ2ZS1saWJzIHNhbmRib3ggdXNlcnBy aXYgdXNlcnNhbmRib3gKPj4+IFVucGFja2luZyBzb3VyY2UuLi4KPj4+IFVucGFja2luZyBzYWdl LTYuMy50YXIuZ3ogdG8gL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1kb2Mt Ni4zL3dvcmsKPj4+IFVucGFja2luZyBTaW5ndWxhci0zLTEtNi1zaGFyZS50YXIuZ3ogdG8gL3Zh ci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1kb2MtNi4zL3dvcmsKPj4+IFNvdXJj ZSB1bnBhY2tlZCBpbiAvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02 LjMvd29yawo+Pj4gUHJlcGFyaW5nIHNvdXJjZSBpbiAvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRo ZW1hdGljcy9zYWdlLWRvYy02LjMvd29yay9zYWdlLTYuMy9zcmMgLi4uCiAbWzMyOzAxbSobWzBt IEFwcGx5aW5nIHNhZ2UtZG9jLTYuMC1taXNjLnBhdGNoIC4uLgobW0EbWzcyQyAbWzM0OzAxbVsg G1szMjswMW1vaxtbMzQ7MDFtIF0bWzBtCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5nIHNhZ2UtZG9j LWRldi5wYXRjaCAuLi4KG1tBG1s3MkMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1sw bQogG1szMjswMW0qG1swbSBBcHBseWluZyBzYWdlLWRvYy02LjItc2VlYWxzby5wYXRjaCAuLi4K G1tBG1s3MkMgG1szNDswMW1bIBtbMzI7MDFtb2sbWzM0OzAxbSBdG1swbQogG1szMjswMW0qG1sw bSBBcHBseWluZyBzYWdlLWRvYy02LjItc3BoaW54LnBhdGNoIC4uLgobW0EbWzcyQyAbWzM0OzAx bVsgG1szMjswMW1vaxtbMzQ7MDFtIF0bWzBtCiAbWzMyOzAxbSobWzBtIEFwcGx5aW5nIHNhZ2Ut ZG9jLTYuMi1mYXZpY29uLnBhdGNoIC4uLgobW0EbWzcyQyAbWzM0OzAxbVsgG1szMjswMW1vaxtb MzQ7MDFtIF0bWzBtCj4+PiBTb3VyY2UgcHJlcGFyZWQuCj4+PiBDb25maWd1cmluZyBzb3VyY2Ug aW4gL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1kb2MtNi4zL3dvcmsvc2Fn ZS02LjMvc3JjIC4uLgo+Pj4gU291cmNlIGNvbmZpZ3VyZWQuCj4+PiBDb21waWxpbmcgc291cmNl IGluIC92YXIvdG1wL3BvcnRhZ2Uvc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jLTYuMy93b3JrL3Nh Z2UtNi4zL3NyYyAuLi4KIBtbMzI7MDFtKhtbMG0gcHl0aG9uMl83OiBydW5uaW5nIGRpc3R1dGls cy1yMV9ydW5fcGhhc2UgcHl0aG9uX2NvbXBpbGUKU2V0dGluZyBwZXJtaXNzaW9ucyBvZiBET1Rf U0FHRSBkaXJlY3Rvcnkgc28gb25seSB5b3UgY2FuIHJlYWQgYW5kIHdyaXRlIGl0LgpEZWxldGlu ZyBlbXB0eSBkaXJlY3RvcnkgL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1k b2MtNi4zL3dvcmsvc2FnZS02LjMvc3JjL2RvYy9vdXRwdXQvZG9jdHJlZXMvZW4vdHV0b3JpYWwK RGVsZXRpbmcgZW1wdHkgZGlyZWN0b3J5IC92YXIvdG1wL3BvcnRhZ2Uvc2NpLW1hdGhlbWF0aWNz L3NhZ2UtZG9jLTYuMy93b3JrL3NhZ2UtNi4zL3NyYy9kb2MvZW4vcmVmZXJlbmNlL3RlbXBsYXRl cwpEZWxldGluZyBlbXB0eSBkaXJlY3RvcnkgL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRp Y3Mvc2FnZS1kb2MtNi4zL3dvcmsvc2FnZS02LjMvc3JjL2RvYy9lbi9yZWZlcmVuY2Uvc3RhdGlj CkRlbGV0aW5nIGVtcHR5IGRpcmVjdG9yeSAvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRoZW1hdGlj cy9zYWdlLWRvYy02LjMvd29yay9zYWdlLTYuMy9zcmMvZG9jL2VuL3R1dG9yaWFsL3RlbXBsYXRl cwpEZWxldGluZyBlbXB0eSBkaXJlY3RvcnkgL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRp Y3Mvc2FnZS1kb2MtNi4zL3dvcmsvc2FnZS02LjMvc3JjL2RvYy9lbi90dXRvcmlhbC9zdGF0aWMK VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgImRvYy9jb21tb24vYnVp bGRlci5weSIsIGxpbmUgMTQ4MywgaW4gPG1vZHVsZT4KICAgIGltcG9ydCBzYWdlLmFsbAogIEZp bGUgIi91c3IvbGliNjQvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvc2FnZS9hbGwucHkiLCBsaW5l IDEwMywgaW4gPG1vZHVsZT4KICAgIGltcG9ydCBzYWdlLnN5bWJvbGljLnB5bmFjCkltcG9ydEVy cm9yOiAvdXNyL2xpYjY0L3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3NhZ2Uvc3ltYm9saWMvcHlu YWMuc286IHVuZGVmaW5lZCBzeW1ib2w6IF9aVFZONUdpTmFDOWNvbnRhaW5lcklTdDZ2ZWN0b3JF RQogG1szMTswMW0qG1swbSBFUlJPUjogc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jLTYuMzo6c2Fn ZS1vbi1nZW50b28gZmFpbGVkIChjb21waWxlIHBoYXNlKToKIBtbMzE7MDFtKhtbMG0gICBmYWls ZWQgdG8gcHJvZHVjZSBodG1sIGRvYwogG1szMTswMW0qG1swbSAKIBtbMzE7MDFtKhtbMG0gQ2Fs bCBzdGFjazoKIBtbMzE7MDFtKhtbMG0gICAgIGVidWlsZC5zaCwgbGluZSAgIDkzOiAgQ2FsbGVk IHNyY19jb21waWxlCiAbWzMxOzAxbSobWzBtICAgZW52aXJvbm1lbnQsIGxpbmUgMzY0MDogIENh bGxlZCBkaXN0dXRpbHMtcjFfc3JjX2NvbXBpbGUKIBtbMzE7MDFtKhtbMG0gICBlbnZpcm9ubWVu dCwgbGluZSAxMDEwOiAgQ2FsbGVkIF9kaXN0dXRpbHMtcjFfcnVuX2ZvcmVhY2hfaW1wbCAncHl0 aG9uX2NvbXBpbGUnCiAbWzMxOzAxbSobWzBtICAgZW52aXJvbm1lbnQsIGxpbmUgIDI1MzogIENh bGxlZCBweXRob25fZm9yZWFjaF9pbXBsICdkaXN0dXRpbHMtcjFfcnVuX3BoYXNlJyAncHl0aG9u X2NvbXBpbGUnCiAbWzMxOzAxbSobWzBtICAgZW52aXJvbm1lbnQsIGxpbmUgMzI0NDogIENhbGxl ZCBtdWx0aWJ1aWxkX2ZvcmVhY2hfdmFyaWFudCAnX3B5dGhvbl9tdWx0aWJ1aWxkX3dyYXBwZXIn ICdkaXN0dXRpbHMtcjFfcnVuX3BoYXNlJyAncHl0aG9uX2NvbXBpbGUnCiAbWzMxOzAxbSobWzBt ICAgZW52aXJvbm1lbnQsIGxpbmUgMjM2NTogIENhbGxlZCBfbXVsdGlidWlsZF9ydW4gJ19weXRo b25fbXVsdGlidWlsZF93cmFwcGVyJyAnZGlzdHV0aWxzLXIxX3J1bl9waGFzZScgJ3B5dGhvbl9j b21waWxlJwogG1szMTswMW0qG1swbSAgIGVudmlyb25tZW50LCBsaW5lIDIzNjM6ICBDYWxsZWQg X3B5dGhvbl9tdWx0aWJ1aWxkX3dyYXBwZXIgJ2Rpc3R1dGlscy1yMV9ydW5fcGhhc2UnICdweXRo b25fY29tcGlsZScKIBtbMzE7MDFtKhtbMG0gICBlbnZpcm9ubWVudCwgbGluZSAgNjc1OiAgQ2Fs bGVkIGRpc3R1dGlscy1yMV9ydW5fcGhhc2UgJ3B5dGhvbl9jb21waWxlJwogG1szMTswMW0qG1sw bSAgIGVudmlyb25tZW50LCBsaW5lIDEwMDE6ICBDYWxsZWQgcHl0aG9uX2NvbXBpbGUKIBtbMzE7 MDFtKhtbMG0gICBlbnZpcm9ubWVudCwgbGluZSAyODcxOiAgQ2FsbGVkIGRpZQogG1szMTswMW0q G1swbSBUaGUgc3BlY2lmaWMgc25pcHBldCBvZiBjb2RlOgogG1szMTswMW0qG1swbSAgICAgICAg ICAgJHtQWVRIT059IGRvYy9jb21tb24vYnVpbGRlci5weSAtLW5vLXBkZi1saW5rcyBhbGwgaHRt bCB8fCBkaWUgImZhaWxlZCB0byBwcm9kdWNlIGh0bWwgZG9jIjsKIBtbMzE7MDFtKhtbMG0gCiAb WzMxOzAxbSobWzBtIElmIHlvdSBuZWVkIHN1cHBvcnQsIHBvc3QgdGhlIG91dHB1dCBvZiBgZW1l cmdlIC0taW5mbyAnPXNjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02LjM6OnNhZ2Utb24tZ2VudG9v J2AsCiAbWzMxOzAxbSobWzBtIHRoZSBjb21wbGV0ZSBidWlsZCBsb2cgYW5kIHRoZSBvdXRwdXQg b2YgYGVtZXJnZSAtcHF2ICc9c2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jLTYuMzo6c2FnZS1vbi1n ZW50b28nYC4KIBtbMzE7MDFtKhtbMG0gVGhlIGNvbXBsZXRlIGJ1aWxkIGxvZyBpcyBsb2NhdGVk IGF0ICcvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02LjMvdGVtcC9i dWlsZC5sb2cnLgogG1szMTswMW0qG1swbSBUaGUgZWJ1aWxkIGVudmlyb25tZW50IGZpbGUgaXMg bG9jYXRlZCBhdCAnL3Zhci90bXAvcG9ydGFnZS9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1kb2MtNi4z L3RlbXAvZW52aXJvbm1lbnQnLgogG1szMTswMW0qG1swbSBXb3JraW5nIGRpcmVjdG9yeTogJy92 YXIvdG1wL3BvcnRhZ2Uvc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jLTYuMy93b3JrL3NhZ2UtNi4z L3NyYycKIBtbMzE7MDFtKhtbMG0gUzogJy92YXIvdG1wL3BvcnRhZ2Uvc2NpLW1hdGhlbWF0aWNz L3NhZ2UtZG9jLTYuMy93b3JrL3NhZ2UtNi4zL3NyYycK --047d7b87451cb65053050862591a Content-Type: application/octet-stream; name=environment Content-Disposition: attachment; filename=environment Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2rv3j3m1 ZGVjbGFyZSAteCBBQkk9ImFtZDY0IgpkZWNsYXJlIC14IEFCSV9YODY9IjY0IgpkZWNsYXJlIC14 IEFMU0FfQ0FSRFM9ImFsaTU0NTEgYWxzNDAwMCBhdGlpeHAgYXRpaXhwLW1vZGVtIGJ0ODd4IGNh MDEwNiBjbWlwY2kgZW11MTBrMXggZW5zMTM3MCBlbnMxMzcxIGVzMTkzOCBlczE5NjggZm04MDEg aGRhLWludGVsIGludGVsOHgwIGludGVsOHgwbSBtYWVzdHJvMyB0cmlkZW50IHVzYi1hdWRpbyB2 aWE4Mnh4IHZpYTgyeHgtbW9kZW0geW1mcGNpIgpkZWNsYXJlIC14IEFOVF9IT01FPSIvdXNyL3No YXJlL2FudCIKZGVjbGFyZSAteCBBUEFDSEUyX01PRFVMRVM9ImF1dGhuX2NvcmUgYXV0aHpfY29y ZSBzb2NhY2hlX3NobWNiIHVuaXhkIGFjdGlvbnMgYWxpYXMgYXV0aF9iYXNpYyBhdXRobl9hbGlh cyBhdXRobl9hbm9uIGF1dGhuX2RibSBhdXRobl9kZWZhdWx0IGF1dGhuX2ZpbGUgYXV0aHpfZGJt IGF1dGh6X2RlZmF1bHQgYXV0aHpfZ3JvdXBmaWxlIGF1dGh6X2hvc3QgYXV0aHpfb3duZXIgYXV0 aHpfdXNlciBhdXRvaW5kZXggY2FjaGUgY2dpIGNnaWQgZGF2IGRhdl9mcyBkYXZfbG9jayBkZWZs YXRlIGRpciBkaXNrX2NhY2hlIGVudiBleHBpcmVzIGV4dF9maWx0ZXIgZmlsZV9jYWNoZSBmaWx0 ZXIgaGVhZGVycyBpbmNsdWRlIGluZm8gbG9nX2NvbmZpZyBsb2dpbyBtZW1fY2FjaGUgbWltZSBt aW1lX21hZ2ljIG5lZ290aWF0aW9uIHJld3JpdGUgc2V0ZW52aWYgc3BlbGluZyBzdGF0dXMgdW5p cXVlX2lkIHVzZXJkaXIgdXNlcnRyYWNrIHZob3N0X2FsaWFzIgpkZWNsYXJlIC14IEFSQ0g9ImFt ZDY0IgpkZWNsYXJlIC14IEJPT1RTVFJBUF9VU0U9ImN4eCB1bmljb2RlIGludGVybmFsLWdsaWIg cHl0aG9uX3RhcmdldHNfcHl0aG9uM18zIHB5dGhvbl90YXJnZXRzX3B5dGhvbjJfNyBtdWx0aWxp YiBoYXJkZW5lZCBwYXhfa2VybmVsIHBpYyB4dHBheCAtaml0IC1vcmMiCmRlY2xhcmUgLXggQ0FM TElHUkFfRkVBVFVSRVM9ImtleGkgd29yZHMgZmxvdyBwbGFuIHNoZWV0cyBzdGFnZSB0YWJsZXMg a3JpdGEga2FyYm9uIGJyYWluZHVtcCBhdXRob3IiCmRlY2xhcmUgLXggQ0FNRVJBUz0icHRwMiIK ZGVjbGFyZSAteCBDQlVJTEQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0ZMQUdT PSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0bz00IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRy ZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlwLW1pbmUgLWZsb29wLWJsb2NrIC1mdHJl ZS12ZWN0b3JpemUgLWZuby1sdG8gLWZuby11c2UtbGlua2VyLXBsdWdpbiAtZm5vLWxvb3AtaW50 ZXJjaGFuZ2UgLWZuby10cmVlLWxvb3AtZGlzdHJpYnV0aW9uIC1mbm8tbG9vcC1zdHJpcC1taW5l IC1mbm8tbG9vcC1ibG9jayIKZGVjbGFyZSAteCBDRkxBR1NfYW1kNjQ9Ii1tNjQiCmRlY2xhcmUg LXggQ0ZMQUdTX2RlZmF1bHQKZGVjbGFyZSAteCBDRkxBR1NfeDMyPSItbXgzMiIKZGVjbGFyZSAt eCBDRkxBR1NfeDg2PSItbTMyIgpkZWNsYXJlIC14IENIT1NUPSJ4ODZfNjQtcGMtbGludXgtZ251 IgpkZWNsYXJlIC14IENIT1NUX2FtZDY0PSJ4ODZfNjQtcGMtbGludXgtZ251IgpkZWNsYXJlIC14 IENIT1NUX2RlZmF1bHQ9Ing4Nl82NC1wYy1saW51eC1nbnUiCmRlY2xhcmUgLXggQ0hPU1RfeDMy PSJ4ODZfNjQtcGMtbGludXgtZ251eDMyIgpkZWNsYXJlIC14IENIT1NUX3g4Nj0iaTY4Ni1wYy1s aW51eC1nbnUiCmRlY2xhcmUgLXggQ09MTEVDVERfUExVR0lOUz0iZGYgaW50ZXJmYWNlIGlycSBs b2FkIG1lbW9yeSBycmR0b29sIHN3YXAgc3lzbG9nIgpkZWNsYXJlIC14IENUQVJHRVRfZGVmYXVs dD0ieDg2XzY0LXBjLWxpbnV4LWdudSIKZGVjbGFyZSAteCBDWFhGTEFHUz0iLW1hcmNoPW5hdGl2 ZSAtTzIgLXBpcGUgLWZsdG89NCAtZmxvb3AtaW50ZXJjaGFuZ2UgLWZ0cmVlLWxvb3AtZGlzdHJp YnV0aW9uIC1mbG9vcC1zdHJpcC1taW5lIC1mbG9vcC1ibG9jayAtZnRyZWUtdmVjdG9yaXplIC1m bm8tbHRvIC1mbm8tdXNlLWxpbmtlci1wbHVnaW4gLWZuby1sb29wLWludGVyY2hhbmdlIC1mbm8t dHJlZS1sb29wLWRpc3RyaWJ1dGlvbiAtZm5vLWxvb3Atc3RyaXAtbWluZSAtZm5vLWxvb3AtYmxv Y2siCmRlY2xhcmUgLXggREVGQVVMVF9BQkk9ImFtZDY0IgpkZWNsYXJlIC14IERFRklORURfUEhB U0VTPSIgY29tcGlsZSBjb25maWd1cmUgaW5zdGFsbCBwb3N0aW5zdCBwcmVwYXJlIHRlc3QiCmRl Y2xhcmUgREVQRU5EPSJ8fCAoIDxkZXYtcHl0aG9uL2RvY3V0aWxzLTAuMTBbcHl0aG9uX3Rhcmdl dHNfcHl0aG9uMl83KC0pPywtcHl0aG9uX3NpbmdsZV90YXJnZXRfcHl0aG9uMl83KC0pXSA+ZGV2 LXB5dGhvbi9kb2N1dGlscy0wLjEwW3B5dGhvbl90YXJnZXRzX3B5dGhvbjJfNygtKT8sLXB5dGhv bl9zaW5nbGVfdGFyZ2V0X3B5dGhvbjJfNygtKV0gKQoJc2NpLW1hdGhlbWF0aWNzL3NhZ2UgcHl0 aG9uX3RhcmdldHNfcHl0aG9uMl83PyAoID49ZGV2LWxhbmcvcHl0aG9uLTIuNy41LXIyOjIuNyAp IGRldi1sYW5nL3B5dGhvbi1leGVjOj1bcHl0aG9uX3RhcmdldHNfcHl0aG9uMl83KC0pPywtcHl0 aG9uX3NpbmdsZV90YXJnZXRfcHl0aG9uMl83KC0pXSIKZGVjbGFyZSBERVNDUklQVElPTj0iRG9j dW1lbnRhdGlvbiwgdHV0b3JpYWxzIGFuZCBoZWxwIGZpbGVzIGZvciBTYWdlIgpkZWNsYXJlIC14 IERFU1RUUkVFPSIvdXNyIgpkZWNsYXJlIC14IERJUk9QVElPTlM9Ii1tMDc1NSIKZGVjbGFyZSAt LSBESVNUVVRJTFNfTk9fUEFSQUxMRUxfQlVJTEQ9IjEiCmRlY2xhcmUgLXggRUFQST0iNSIKZGVj bGFyZSAteCBFTElCQz0iZ2xpYmMiCmRlY2xhcmUgLS0gRVBBVENIX0NPTU1PTl9PUFRTPSItZzAg LUUgLS1uby1iYWNrdXAtaWYtbWlzbWF0Y2giCmRlY2xhcmUgLS0gRVBBVENIX0VYQ0xVREU9IiIK ZGVjbGFyZSAtLSBFUEFUQ0hfRk9SQ0U9Im5vIgpkZWNsYXJlIC0tIEVQQVRDSF9NVUxUSV9NU0c9 IkFwcGx5aW5nIHZhcmlvdXMgcGF0Y2hlcyAoYnVnZml4ZXMvdXBkYXRlcykgLi4uIgpkZWNsYXJl IC0tIEVQQVRDSF9PUFRTPSIiCmRlY2xhcmUgLS0gRVBBVENIX1NJTkdMRV9NU0c9IiIKZGVjbGFy ZSAtLSBFUEFUQ0hfU09VUkNFPSIvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRoZW1hdGljcy9zYWdl LWRvYy02LjMvd29yay9wYXRjaCIKZGVjbGFyZSAtLSBFUEFUQ0hfU1VGRklYPSJwYXRjaC5iejIi CmRlY2xhcmUgLXggRVhFT1BUSU9OUz0iLW0wNzU1IgpkZWNsYXJlIC14IEZDRkxBR1M9Ii1PMiAt cGlwZSIKZGVjbGFyZSAteCBGRVRDSENPTU1BTkRfU1NIPSJiYXNoIC1jIFwieD1cXFwkezIjc3No Oi8vfSA7IGhvc3Q9XFxcJHt4JSUvKn0gOyBwb3J0PVxcXCR7aG9zdCMjKjp9IDsgaG9zdD1cXFwk e2hvc3QlOip9IDsgW1sgXFxcJHtob3N0fSA9IFxcXCR7cG9ydH0gXV0gJiYgcG9ydD0yMiA7IGV4 ZWMgcnN5bmMgLS1yc2g9XFxcInNzaCAtcFxcXCR7cG9ydH0gXFxcJHszfVxcXCIgLWF2UCBcXFwi XFxcJHtob3N0fTovXFxcJHt4IyovfVxcXCIgXFxcIlxcXCQxXFxcIlwiIHJzeW5jIFwiXCR7RElT VERJUn0vXCR7RklMRX1cIiBcIlwke1VSSX1cIiBcIlwke1BPUlRBR0VfU1NIX09QVFN9XCIiCmRl Y2xhcmUgLXggRkZMQUdTPSItTzIgLXBpcGUiCmRlY2xhcmUgLXggR0NDX1NQRUNTPSIiCmRlY2xh cmUgLXggR0VOVE9PX1BZVEhPTl9QUk9DRVNTX05BTUU9ImVtZXJnZSIKZGVjbGFyZSAteCBHUFNE X1BST1RPQ09MUz0iYXNodGVjaCBhaXZkbSBlYXJ0aG1hdGUgZXZlcm1vcmUgZnYxOCBnYXJtaW4g Z2FybWludHh0IGdwc2Nsb2NrIGl0cmF4IG10azMzMDEgbm1lYSBudHJpcCBuYXZjb20gb2NlYW5z ZXJ2ZXIgb2xkc3R5bGUgb25jb3JlIHJ0Y20xMDR2MiBydGNtMTA0djMgc2lyZiBzdXBlcnN0YXIy IHRpbWluZyB0c2lwIHRyaXBtYXRlIHRudCB1YmxveCB1YngiCmRlY2xhcmUgLXggR1JBUEhJVEU9 Ii1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0cmlw LW1pbmUgLWZsb29wLWJsb2NrIgpkZWNsYXJlIC14IEdSVUJfUExBVEZPUk1TPSIiCmRlY2xhcmUg SERFUEVORD0iIgpkZWNsYXJlIEhPTUVQQUdFPSJodHRwOi8vd3d3LnNhZ2VtYXRoLm9yZy8iCmRl Y2xhcmUgLXggSU5IRVJJVEVEPSIgbXVsdGlsaWIgdG9vbGNoYWluLWZ1bmNzIGV1dGlscyBtdWx0 aXByb2Nlc3NpbmcgbXVsdGlidWlsZCBweXRob24tdXRpbHMtcjEgcHl0aG9uLXIxIGRpc3R1dGls cy1yMSB2ZXJzaW9uYXRvciIKZGVjbGFyZSAteCBJTlBVVF9ERVZJQ0VTPSJldmRldiIKZGVjbGFy ZSAteCBJTlNERVNUVFJFRT0iIgpkZWNsYXJlIC14IElOU09QVElPTlM9Ii1tMDY0NCIKZGVjbGFy ZSBJVVNFPSJodG1sIHB5dGhvbl90YXJnZXRzX3B5dGhvbjJfNyIKZGVjbGFyZSAteCBJVVNFX0VG RkVDVElWRT0iYWJpX3g4Nl82NCBhbHBoYSBhbWQ2NCBhbWQ2NC1mYnNkIGFtZDY0LWxpbnV4IGFy bSBhcm0tbGludXggYXJtNjQgZWxpYmNfQUlYIGVsaWJjX0N5Z3dpbiBlbGliY19EYXJ3aW4gZWxp YmNfRHJhZ29uRmx5IGVsaWJjX0ZyZWVCU0QgZWxpYmNfSFBVWCBlbGliY19JbnRlcml4IGVsaWJj X05ldEJTRCBlbGliY19PcGVuQlNEIGVsaWJjX1N1bk9TIGVsaWJjX1dpbm50IGVsaWJjX2dsaWJj IGVsaWJjX21pbnRsaWIgZWxpYmNfbXVzbCBlbGliY191Y2xpYmMgaHBwYSBocHBhLWhwdXggaHRt bCBpYTY0IGlhNjQtaHB1eCBpYTY0LWxpbnV4IGtlcm5lbF9BSVgga2VybmVsX0N5Z3dpbiBrZXJu ZWxfRGFyd2luIGtlcm5lbF9GcmVlQlNEIGtlcm5lbF9IUFVYIGtlcm5lbF9JbnRlcml4IGtlcm5l bF9OZXRCU0Qga2VybmVsX09wZW5CU0Qga2VybmVsX1N1bk9TIGtlcm5lbF9XaW5udCBrZXJuZWxf ZnJlZW1pbnQga2VybmVsX2xpbnV4IG02OGsgbTY4ay1taW50IG1pcHMgcHBjIHBwYy1haXggcHBj LW1hY29zIHBwYy1vcGVuYnNkIHBwYzY0IHBwYzY0LWxpbnV4IHByZWZpeCBweXRob25fdGFyZ2V0 c19weXRob24yXzcgczM5MCBzaCBzcGFyYyBzcGFyYy1mYnNkIHNwYXJjLXNvbGFyaXMgc3BhcmM2 NC1mcmVlYnNkIHNwYXJjNjQtc29sYXJpcyB1c2VybGFuZF9CU0QgdXNlcmxhbmRfR05VIHg2NC1m cmVlYnNkIHg2NC1tYWNvcyB4NjQtb3BlbmJzZCB4NjQtc29sYXJpcyB4ODYgeDg2LWN5Z3dpbiB4 ODYtZmJzZCB4ODYtZnJlZWJzZCB4ODYtaW50ZXJpeCB4ODYtbGludXggeDg2LW1hY29zIHg4Ni1u ZXRic2QgeDg2LW9wZW5ic2QgeDg2LXNvbGFyaXMgeDg2LXdpbm50IgpkZWNsYXJlIC14IElVU0Vf SU1QTElDSVQ9ImFiaV94ODZfNjQgcHJlZml4IgpkZWNsYXJlIC14IEtFUk5FTD0ibGludXgiCmRl Y2xhcmUgLXggS0VSTkVMX0FCST0iYW1kNjQiCmRlY2xhcmUgLXggS0VZV09SRFM9In5hbWQ2NCB+ eDg2IH5hbWQ2NC1saW51eCB+eDg2LWxpbnV4IgpkZWNsYXJlIC14IExBTkc9ImVuX1VTLnV0Zjgi CmRlY2xhcmUgLXggTENEX0RFVklDRVM9ImJheXJhZCBjZm9udHogY2ZvbnR6NjMzIGdsayBoZDQ0 NzgwIGxiMjE2IGxjZG0wMDEgbXR4b3JiIG5jdXJzZXMgdGV4dCIKZGVjbGFyZSAteCBMQ19NRVNT QUdFUz0iQyIKZGVjbGFyZSAteCBMREZMQUdTPSItbWFyY2g9bmF0aXZlIC1PMiAtcGlwZSAtZmx0 bz00IC1mbG9vcC1pbnRlcmNoYW5nZSAtZnRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZsb29wLXN0 cmlwLW1pbmUgLWZsb29wLWJsb2NrIC1mdHJlZS12ZWN0b3JpemUgLWZ1c2UtbGlua2VyLXBsdWdp biAtZm5vLWx0byAtZm5vLXVzZS1saW5rZXItcGx1Z2luIC1mbm8tbG9vcC1pbnRlcmNoYW5nZSAt Zm5vLXRyZWUtbG9vcC1kaXN0cmlidXRpb24gLWZuby1sb29wLXN0cmlwLW1pbmUgLWZuby1sb29w LWJsb2NrIgpkZWNsYXJlIC14IExERkxBR1NfYW1kNjQ9Ii1tIGVsZl94ODZfNjQiCmRlY2xhcmUg LXggTERGTEFHU19kZWZhdWx0CmRlY2xhcmUgLXggTERGTEFHU194MzI9Ii1tIGVsZjMyX3g4Nl82 NCIKZGVjbGFyZSAteCBMREZMQUdTX3g4Nj0iLW0gZWxmX2kzODYiCmRlY2xhcmUgLXggTElCRElS X2FtZDY0PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfYW1kNjRfZmJzZD0ibGliNjQiCmRlY2xh cmUgLXggTElCRElSX2FybT0ibGliIgpkZWNsYXJlIC14IExJQkRJUl9hcm02ND0ibGliNjQiCmRl Y2xhcmUgLXggTElCRElSX2RlZmF1bHQ9ImxpYiIKZGVjbGFyZSAteCBMSUJESVJfbjMyPSJsaWIz MiIKZGVjbGFyZSAteCBMSUJESVJfbjY0PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfbzMyPSJs aWIiCmRlY2xhcmUgLXggTElCRElSX3BwYz0ibGliMzIiCmRlY2xhcmUgLXggTElCRElSX3BwYzY0 PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfczM5MD0ibGliMzIiCmRlY2xhcmUgLXggTElCRElS X3MzOTB4PSJsaWI2NCIKZGVjbGFyZSAteCBMSUJESVJfc3BhcmMzMj0ibGliMzIiCmRlY2xhcmUg LXggTElCRElSX3NwYXJjNjQ9ImxpYjY0IgpkZWNsYXJlIC14IExJQkRJUl94MzI9ImxpYngzMiIK ZGVjbGFyZSAteCBMSUJESVJfeDg2PSJsaWIzMiIKZGVjbGFyZSAteCBMSUJESVJfeDg2X2Zic2Q9 ImxpYjMyIgpkZWNsYXJlIC14IExJQk9QVElPTlM9Ii1tMDY0NCIKZGVjbGFyZSAteCBMSUJSRU9G RklDRV9FWFRFTlNJT05TPSJwcmVzZW50ZXItY29uc29sZSBwcmVzZW50ZXItbWluaW1pemVyIgpk ZWNsYXJlIC14IExJQ0VOU0U9IkdQTC0yIgpkZWNsYXJlIC14IE1BSUw9Ii92YXIvbWFpbC9yb290 IgpkZWNsYXJlIC14IE1BS0VPUFRTPSItajEiCmRlY2xhcmUgLXggTVVMVElMSUJfQUJJUz0iYW1k NjQgeDg2IgpkZWNsYXJlIC14IE1VTFRJTElCX1NUUklDVF9ERU5ZPSI2NC1iaXQuKnNoYXJlZCBv YmplY3QiCmRlY2xhcmUgLXggTVVMVElMSUJfU1RSSUNUX0RJUlM9Ii9saWIzMiAvbGliIC91c3Iv bGliMzIgL3Vzci9saWIgL3Vzci9rZGUvKi9saWIzMiAvdXNyL2tkZS8qL2xpYiAvdXNyL3F0Lyov bGliMzIgL3Vzci9xdC8qL2xpYiAvdXNyL1gxMVI2L2xpYjMyIC91c3IvWDExUjYvbGliIgpkZWNs YXJlIC14IE1VTFRJTElCX1NUUklDVF9FWEVNUFQ9IihwZXJsNXxnY2N8Z2NjLWxpYnxiaW51dGls c3xlY2xpcHNlLTN8ZGVidWd8cG9ydGFnZXx1ZGV2fHN5c3RlbWR8Y2xhbmd8cHl0aG9uLWV4ZWMp IgpkZWNsYXJlIC14IE1VTFRJT1NESVJTPSIuLi9saWI2NDouLi9saWIzMiIKZGVjbGFyZSAteCBO RVRCRUFOUz0iYXBpc3VwcG9ydCBjbmQgZ3Jvb3Z5IGdzZiBoYXJuZXNzIGlkZSBpZGVudGl0eSBq MmVlIGphdmEgbW9iaWxpdHkgbmIgcGhwIHByb2ZpbGVyIHNvYSB2aXN1YWx3ZWIgd2ViY29tbW9u IHdlYnN2Y2NvbW1vbiB4bWwiCmRlY2xhcmUgLXggT0ZGSUNFX0lNUExFTUVOVEFUSU9OPSJsaWJy ZW9mZmljZSIKZGVjbGFyZSAteCBPUEVOR0xfUFJPRklMRT0ieG9yZy14MTEiCmRlY2xhcmUgLWEg UEFUQ0hFUz0nKFswXT0iL3Zhci9saWIvbGF5bWFuL3NhZ2Utb24tZ2VudG9vL3NjaS1tYXRoZW1h dGljcy9zYWdlLWRvYy9maWxlcy9zYWdlLWRvYy02LjAtbWlzYy5wYXRjaCIgWzFdPSIvdmFyL2xp Yi9sYXltYW4vc2FnZS1vbi1nZW50b28vc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jL2ZpbGVzL3Nh Z2UtZG9jLWRldi5wYXRjaCIgWzJdPSIvdmFyL2xpYi9sYXltYW4vc2FnZS1vbi1nZW50b28vc2Np LW1hdGhlbWF0aWNzL3NhZ2UtZG9jL2ZpbGVzL3NhZ2UtZG9jLTYuMi1zZWVhbHNvLnBhdGNoIiBb M109Ii92YXIvbGliL2xheW1hbi9zYWdlLW9uLWdlbnRvby9zY2ktbWF0aGVtYXRpY3Mvc2FnZS1k b2MvZmlsZXMvc2FnZS1kb2MtNi4yLXNwaGlueC5wYXRjaCIgWzRdPSIvdmFyL2xpYi9sYXltYW4v c2FnZS1vbi1nZW50b28vc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jL2ZpbGVzL3NhZ2UtZG9jLTYu Mi1mYXZpY29uLnBhdGNoIiknCmRlY2xhcmUgLXggUEFUSD0iL3Vzci9saWI2NC9wb3J0YWdlL2Jp bi9lYnVpbGQtaGVscGVycy94YXR0cjovdXNyL2xpYjY0L3BvcnRhZ2UvYmluL2VidWlsZC1oZWxw ZXJzOi91c3IvbG9jYWwvc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3Ni aW46L2Jpbjovb3B0L2JpbjovdXNyL3g4Nl82NC1wYy1saW51eC1nbnUvZ2NjLWJpbi80LjguMyIK ZGVjbGFyZSBQREVQRU5EPSIiCmRlY2xhcmUgLXggUEhQX1RBUkdFVFM9InBocDUtNSIKZGVjbGFy ZSAteCBQS0dfQ09ORklHX1BBVEg9Ii91c3IvbGliNjQvcGtnY29uZmlnIgpkZWNsYXJlIC1hIFBP UlRBR0VfRE9DT01QUkVTUz0nKFswXT0iL3Vzci9zaGFyZS9kb2MiIFsxXT0iL3Vzci9zaGFyZS9p bmZvIiBbMl09Ii91c3Ivc2hhcmUvbWFuIiknCmRlY2xhcmUgLXggUE9SVEFHRV9ET0NPTVBSRVNT X1NJWkVfTElNSVQ9IjEyOCIKZGVjbGFyZSAtYSBQT1JUQUdFX0RPQ09NUFJFU1NfU0tJUD0nKFsw XT0iL3Vzci9zaGFyZS9kb2Mvc2FnZS1kb2MtNi4zL2h0bWwiKScKZGVjbGFyZSAteCBQUk9GSUxF X0lTX0hBUkRFTkVEPSIxIgpkZWNsYXJlIC14IFBST0ZJTEVfT05MWV9WQVJJQUJMRVM9IkFSQ0gg RUxJQkMgSVVTRV9JTVBMSUNJVCBLRVJORUwgVVNFUkxBTkQgVVNFX0VYUEFORF9JTVBMSUNJVCBV U0VfRVhQQU5EX1VOUFJFRklYRUQgVVNFX0VYUEFORF9WQUxVRVNfQVJDSCBVU0VfRVhQQU5EX1ZB TFVFU19FTElCQyBVU0VfRVhQQU5EX1ZBTFVFU19LRVJORUwgVVNFX0VYUEFORF9WQUxVRVNfVVNF UkxBTkQiCmRlY2xhcmUgLXggUFJPUEVSVElFUz0iIgpkZWNsYXJlIC14IFBST1ZJREU9IiIKZGVj bGFyZSAteCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0iMSIKZGVjbGFyZSAtYSBQWVRIT05fQ09N UEFUPScoWzBdPSJweXRob24yXzciKScKZGVjbGFyZSAtLSBQWVRIT05fREVQUz0icHl0aG9uX3Rh cmdldHNfcHl0aG9uMl83PyAoID49ZGV2LWxhbmcvcHl0aG9uLTIuNy41LXIyOjIuNyApIGRldi1s YW5nL3B5dGhvbi1leGVjOj1bcHl0aG9uX3RhcmdldHNfcHl0aG9uMl83KC0pPywtcHl0aG9uX3Np bmdsZV90YXJnZXRfcHl0aG9uMl83KC0pXSIKZGVjbGFyZSAtLSBQWVRIT05fUkVRVUlSRURfVVNF PSJ8fCAoIHB5dGhvbl90YXJnZXRzX3B5dGhvbjJfNyApIgpkZWNsYXJlIC14IFBZVEhPTl9TSU5H TEVfVEFSR0VUPSJweXRob24yXzciCmRlY2xhcmUgLXggUFlUSE9OX1RBUkdFVFM9InB5dGhvbjJf NyIKZGVjbGFyZSAtLSBQWVRIT05fVVNFREVQPSJweXRob25fdGFyZ2V0c19weXRob24yXzcoLSk/ LC1weXRob25fc2luZ2xlX3RhcmdldF9weXRob24yXzcoLSkiCmRlY2xhcmUgUkRFUEVORD0ifHwg KCA8ZGV2LXB5dGhvbi9kb2N1dGlscy0wLjEwW3B5dGhvbl90YXJnZXRzX3B5dGhvbjJfNygtKT8s LXB5dGhvbl9zaW5nbGVfdGFyZ2V0X3B5dGhvbjJfNygtKV0gPmRldi1weXRob24vZG9jdXRpbHMt MC4xMFtweXRob25fdGFyZ2V0c19weXRob24yXzcoLSk/LC1weXRob25fc2luZ2xlX3RhcmdldF9w eXRob24yXzcoLSldICkKCXNjaS1tYXRoZW1hdGljcy9zYWdlCgl+ZGV2LXB5dGhvbi9zcGhpbngt MS4xLjNbcHl0aG9uX3RhcmdldHNfcHl0aG9uMl83KC0pPywtcHl0aG9uX3NpbmdsZV90YXJnZXRf cHl0aG9uMl83KC0pXSBweXRob25fdGFyZ2V0c19weXRob24yXzc/ICggPj1kZXYtbGFuZy9weXRo b24tMi43LjUtcjI6Mi43ICkgZGV2LWxhbmcvcHl0aG9uLWV4ZWM6PVtweXRob25fdGFyZ2V0c19w eXRob24yXzcoLSk/LC1weXRob25fc2luZ2xlX3RhcmdldF9weXRob24yXzcoLSldIgpkZWNsYXJl IFJFUE9TSVRPUlkKZGVjbGFyZSBSRVFVSVJFRF9VU0U9Inx8ICggcHl0aG9uX3RhcmdldHNfcHl0 aG9uMl83ICkiCmRlY2xhcmUgLXggUkVTVFJJQ1Q9Im1pcnJvciIKZGVjbGFyZSAteCBSRVNVTUVD T01NQU5EX1NTSD0iYmFzaCAtYyBcIng9XFxcJHsyI3NzaDovL30gOyBob3N0PVxcXCR7eCUlLyp9 IDsgcG9ydD1cXFwke2hvc3QjIyo6fSA7IGhvc3Q9XFxcJHtob3N0JToqfSA7IFtbIFxcXCR7aG9z dH0gPSBcXFwke3BvcnR9IF1dICYmIHBvcnQ9MjIgOyBleGVjIHJzeW5jIC0tcnNoPVxcXCJzc2gg LXBcXFwke3BvcnR9IFxcXCR7M31cXFwiIC1hdlAgXFxcIlxcXCR7aG9zdH06L1xcXCR7eCMqL31c XFwiIFxcXCJcXFwkMVxcXCJcIiByc3luYyBcIlwke0RJU1RESVJ9L1wke0ZJTEV9XCIgXCJcJHtV Ukl9XCIgXCJcJHtQT1JUQUdFX1NTSF9PUFRTfVwiIgpkZWNsYXJlIC14IFJVQllfVEFSR0VUUz0i cnVieTE5IHJ1YnkyMCIKZGVjbGFyZSAteCBSX0hPTUU9Ii91c3IvbGliNjQvUiIKZGVjbGFyZSAt eCBTPSIvdmFyL3RtcC9wb3J0YWdlL3NjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02LjMvd29yay9z YWdlLTYuMy9zcmMiCmRlY2xhcmUgLXggU0FOREJPWF9ERUJVRz0iMCIKZGVjbGFyZSAteCBTQU5E Qk9YX0RFTlk9IiIKZGVjbGFyZSAteCBTQU5EQk9YX1BJRD0iMTcyNiIKZGVjbGFyZSAteCBTQU5E Qk9YX1BSRURJQ1Q9Ii92YXIvdG1wL3BvcnRhZ2Uvc2NpLW1hdGhlbWF0aWNzL3NhZ2UtZG9jLTYu My9ob21lZGlyOi9kZXYvY3J5cHRvOi9wcm9jL3NlbGYvY29yZWR1bXBfZmlsdGVyOi92YXIvY2Fj aGUvZm9udGNvbmZpZyIKZGVjbGFyZSAteCBTQU5EQk9YX1JFQUQ9Ii86L3Zhci90bXAiCmRlY2xh cmUgLXggU0FOREJPWF9WRVJCT1NFPSIxIgpkZWNsYXJlIC14IFNBTkRCT1hfV1JJVEU9IjovZGV2 L2NvbnNvbGU6L2Rldi9mZDovZGV2L2Z1bGw6L2Rldi9udWxsOi9kZXYvcHRzLzovZGV2L3B0eTov ZGV2L3NobTovZGV2L3R0czovZGV2L3R0eTovZGV2L3ZjLzovZGV2L3plcm86L3Byb2Mvc2VsZi9m ZDovdG1wLzovdXNyL2xpYjMyL2NmOi91c3IvbGliMzIvY29uZnRlc3Q6L3Vzci9saWI2NC9jZjov dXNyL2xpYjY0L2NvbmZ0ZXN0Oi91c3IvbGliL2NmOi91c3IvbGliL2NvbmZ0ZXN0Oi91c3IvdG1w L2NmOi91c3IvdG1wL2NvbmZ0ZXN0Oi92YXIvdG1wOi92YXIvdG1wLzovdmFyL3RtcC9wb3J0YWdl L3NjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02LjMvaG9tZWRpci8uYmFzaF9oaXN0b3J5IgpkZWNs YXJlIC14IFNIRUxMPSIvYmluL2Jhc2giCmRlY2xhcmUgLXggU0xPVD0iMCIKZGVjbGFyZSBTUkNf VVJJPSJtaXJyb3I6Ly9zYWdlbWF0aC82LjMudGFyLmd6IC0+IHNhZ2UtNi4zLnRhci5negoJaHR0 cDovL3d3dy5tYXRoZW1hdGlrLnVuaS1rbC5kZS9mdHAvcHViL01hdGgvU2luZ3VsYXIvU09VUkNF Uy8zLTEtNi9TaW5ndWxhci0zLTEtNi1zaGFyZS50YXIuZ3oiCmRlY2xhcmUgLXggU1VET19DT01N QU5EPSIvdXNyL2Jpbi9lbWVyZ2UgLS1yZXN1bWUiCmRlY2xhcmUgLXggU1VET19HSUQ9IjEwMDAi CmRlY2xhcmUgLXggU1VET19VSUQ9IjEwMDAiCmRlY2xhcmUgLXggU1VET19VU0VSPSJqZXJhbWlh IgpkZWNsYXJlIC14IFNZTUxJTktfTElCPSJ5ZXMiCmRlY2xhcmUgLXggVVNFPSJhYmlfeDg2XzY0 IGFtZDY0IGVsaWJjX2dsaWJjIGh0bWwga2VybmVsX2xpbnV4IHB5dGhvbl90YXJnZXRzX3B5dGhv bjJfNyB1c2VybGFuZF9HTlUiCmRlY2xhcmUgLXggVVNFUkxBTkQ9IkdOVSIKZGVjbGFyZSAteCBV U0VSTkFNRT0icm9vdCIKZGVjbGFyZSAteCBVU0VfRVhQQU5EX0lNUExJQ0lUPSJBUkNIIEVMSUJD IEtFUk5FTCBVU0VSTEFORCIKZGVjbGFyZSAteCBVU0VfRVhQQU5EX1VOUFJFRklYRUQ9IkFSQ0gi CmRlY2xhcmUgLXggVVNFX0VYUEFORF9WQUxVRVNfQVJDSD0iYWxwaGEgYW1kNjQgYW1kNjQtZmJz ZCBhbWQ2NC1saW51eCBhcm0gYXJtLWxpbnV4IGFybTY0IGhwcGEgaHBwYS1ocHV4IGlhNjQgaWE2 NC1ocHV4IGlhNjQtbGludXggbTY4ayBtNjhrLW1pbnQgbWlwcyBwcGMgcHBjNjQgcHBjNjQtbGlu dXggcHBjLWFpeCBwcGMtbWFjb3MgcHBjLW9wZW5ic2QgczM5MCBzaCBzcGFyYyBzcGFyYzY0LWZy ZWVic2Qgc3BhcmM2NC1zb2xhcmlzIHNwYXJjLWZic2Qgc3BhcmMtc29sYXJpcyB4NjQtZnJlZWJz ZCB4NjQtbWFjb3MgeDY0LW9wZW5ic2QgeDY0LXNvbGFyaXMgeDg2IHg4Ni1jeWd3aW4geDg2LWZi c2QgeDg2LWZyZWVic2QgeDg2LWludGVyaXggeDg2LWxpbnV4IHg4Ni1tYWNvcyB4ODYtbmV0YnNk IHg4Ni1vcGVuYnNkIHg4Ni1zb2xhcmlzIHg4Ni13aW5udCIKZGVjbGFyZSAteCBVU0VfRVhQQU5E X1ZBTFVFU19FTElCQz0iQUlYIEN5Z3dpbiBEYXJ3aW4gRHJhZ29uRmx5IEZyZWVCU0QgZ2xpYmMg SFBVWCBJbnRlcml4IG1pbnRsaWIgbXVzbCBOZXRCU0QgT3BlbkJTRCBTdW5PUyB1Y2xpYmMgV2lu bnQiCmRlY2xhcmUgLXggVVNFX0VYUEFORF9WQUxVRVNfS0VSTkVMPSJBSVggQ3lnd2luIERhcndp biBGcmVlQlNEIGZyZWVtaW50IEhQVVggSW50ZXJpeCBsaW51eCBOZXRCU0QgT3BlbkJTRCBTdW5P UyBXaW5udCIKZGVjbGFyZSAteCBVU0VfRVhQQU5EX1ZBTFVFU19VU0VSTEFORD0iQlNEIEdOVSIK ZGVjbGFyZSAteCBWSURFT19DQVJEUz0icmFkZW9uIgpkZWNsYXJlIC14IFhUQUJMRVNfQURET05T PSJxdW90YTIgcHNkIHBrbm9jayBsc2NhbiBsZW5ndGgyIGlwdjRvcHRpb25zIGlwc2V0IGlwcDJw IGlmYWNlIGdlb2lwIGZ1enp5IGNvbmRpdGlvbiB0ZWUgdGFycGl0IHN5c3JxIHN0ZWFsIHJhd25h dCBsb2dtYXJrIGlwbWFyayBkaGNwbWFjIGRlbHVkZSBjaGFvcyBhY2NvdW50IgpkZWNsYXJlIC0t IF9ESVNUVVRJTFNfUjE9IjEiCmRlY2xhcmUgLS0gX0VVVElMU19FQ0xBU1M9IjEiCmRlY2xhcmUg LXggX0VfRE9DREVTVFRSRUVfPSIiCmRlY2xhcmUgLXggX0VfRVhFREVTVFRSRUVfPSIiCmRlY2xh cmUgLS0gX01VTFRJQlVJTEQ9IjEiCmRlY2xhcmUgLS0gX01VTFRJTElCX0VDTEFTUz0iMSIKZGVj bGFyZSAtLSBfTVVMVElQUk9DRVNTSU5HX0VDTEFTUz0iMSIKZGVjbGFyZSAtYSBfUFlUSE9OX0FM TF9JTVBMUz0nKFswXT0ianl0aG9uMl81IiBbMV09Imp5dGhvbjJfNyIgWzJdPSJweXB5IiBbM109 InB5cHkzIiBbNF09InB5dGhvbjNfMiIgWzVdPSJweXRob24zXzMiIFs2XT0icHl0aG9uM180IiBb N109InB5dGhvbjJfNyIpJwpkZWNsYXJlIC0tIF9QWVRIT05fUjE9IjEiCmRlY2xhcmUgLS0gX1BZ VEhPTl9VVElMU19SMT0iMSIKZGVjbGFyZSAtLSBfVE9PTENIQUlOX0ZVTkNTX0VDTEFTUz0iMSIK ZGVjbGFyZSAtLSBfVkVSU0lPTkFUT1JfRUNMQVNTPSIxIgpkZWNsYXJlIC0tIHBoYXNlX2Z1bmMK X19iYXNocGlkICgpIAp7IAogICAgc2ggLWMgJ2VjaG8gJHtQUElEfScKfQpfZGlzdHV0aWxzLXIx X2NvcHlfZWdnX2luZm8gKCkgCnsgCiAgICBta2RpciAtcCAiJHtCVUlMRF9ESVJ9IiB8fCBkaWU7 CiAgICBmaW5kIC1uYW1lICcqLmVnZy1pbmZvJyAtdHlwZSBkIC1leGVjIGNwIC1wciB7fSAiJHtC VUlMRF9ESVJ9Ii8gJzsnIHx8IGRpZQp9Cl9kaXN0dXRpbHMtcjFfY3JlYXRlX3NldHVwX2NmZyAo KSAKeyAKICAgIGNhdCA+ICIke0hPTUV9Ii8ucHlkaXN0dXRpbHMuY2ZnICA8PC1fRU9GXyB8fCAK W2J1aWxkXQpidWlsZC1iYXNlID0gJHtCVUlMRF9ESVJ9CgojIHVzaW5nIGEgc2luZ2xlIGRpcmVj dG9yeSBmb3IgdGhlbSBoZWxwcyB1cyBleHBvcnQKIyAke1BZVEhPTlBBVEh9IGFuZCBlYnVpbGRz IGZpbmQgdGhlIHNvdXJjZXMgaW5kZXBlbmRlbnRseQojIG9mIHdoZXRoZXIgdGhlIHBhY2thZ2Ug aW5zdGFsbHMgZXh0ZW5zaW9ucyBvciBub3QKIwojIG5vdGU6IGR1ZSB0byBzb21lIHBhY2thZ2Vz ICh3eHB5dGhvbikgcmVseWluZyBvbiBzZXBhcmF0ZQojIHBsYXRsaWIgJiBwdXJlbGliIGRpcnMs IHdlIGRvIG5vdCBzZXQgLS1idWlsZC1saWIgKHdoaWNoCiMgY2FuIG5vdCBiZSBvdmVycmlkZW4g d2l0aCAtLWJ1aWxkLSpsaWIpCmJ1aWxkLXBsYXRsaWIgPSAlKGJ1aWxkLWJhc2Upcy9saWIKYnVp bGQtcHVyZWxpYiA9ICUoYnVpbGQtYmFzZSlzL2xpYgoKIyBtYWtlIHRoZSBlYnVpbGQgd3JpdGVy IGxpdmVzIGVhc2llcgpidWlsZC1zY3JpcHRzID0gJShidWlsZC1iYXNlKXMvc2NyaXB0cwoKW2Vn Z19pbmZvXQplZ2ctYmFzZSA9ICR7QlVJTERfRElSfQoKIyB0aGlzIGlzIG5lZWRlZCBieSBkaXN0 dXRpbHNfaW5zdGFsbF9mb3JfdGVzdGluZyBzaW5jZQojIHNldHVwdG9vbHMgbGlrZSB0byBjcmVh dGUgLmVnZyBmaWxlcyBmb3IgaW5zdGFsbCAtLWhvbWUuCltiZGlzdF9lZ2ddCmRpc3QtZGlyID0g JHtCVUlMRF9ESVJ9L2Rpc3QKX0VPRl8KIGRpZQogICAgaWYgW1sgJHtFQlVJTERfUEhBU0V9ID09 IGluc3RhbGwgXV07IHRoZW4KICAgICAgICBjYXQgPj4gIiR7SE9NRX0iLy5weWRpc3R1dGlscy5j ZmcgIDw8LV9FT0ZfIHx8IAoKIyBpbnN0YWxsYXRpb24gcGF0aHMgLS0gYWxsb3cgY2FsbGluZyBl eHRyYSBpbnN0YWxsIHRhcmdldHMKIyB3aXRob3V0IHRoZSBkZWZhdWx0ICdpbnN0YWxsJwpbaW5z dGFsbF0KY29tcGlsZSA9IFRydWUKb3B0aW1pemUgPSAyCnJvb3QgPSAke0R9Cl9FT0ZfCiBkaWUK ICAgICAgICBpZiBbWyAhIC1uICR7RElTVFVUSUxTX1NJTkdMRV9JTVBMfSBdXSAmJiBfcHl0aG9u X3dhbnRfcHl0aG9uX2V4ZWMyOyB0aGVuCiAgICAgICAgICAgIGNhdCA+PiAiJHtIT01FfSIvLnB5 ZGlzdHV0aWxzLmNmZyAgPDwtX0VPRl8gfHwgCmluc3RhbGwtc2NyaXB0cyA9ICQocHl0aG9uX2dl dF9zY3JpcHRkaXIpCl9FT0ZfCiBkaWU7CiAgICAgICAgZmk7CiAgICBmaQp9Cl9kaXN0dXRpbHMt cjFfZGlzYWJsZV9lel9zZXR1cCAoKSAKeyAKICAgIGxvY2FsIHN0dWI9ImRlZiB1c2Vfc2V0dXB0 b29scygqYXJncywgKiprd2FyZ3MpOiBwYXNzIjsKICAgIGlmIFtbIC1mIGV6X3NldHVwLnB5IF1d OyB0aGVuCiAgICAgICAgZWNobyAiJHtzdHVifSIgPiBlel9zZXR1cC5weSB8fCBkaWU7CiAgICBm aTsKICAgIGlmIFtbIC1mIGRpc3RyaWJ1dGVfc2V0dXAucHkgXV07IHRoZW4KICAgICAgICBlY2hv ICIke3N0dWJ9IiA+IGRpc3RyaWJ1dGVfc2V0dXAucHkgfHwgZGllOwogICAgZmkKfQpfZGlzdHV0 aWxzLXIxX3J1bl9jb21tb25fcGhhc2UgKCkgCnsgCiAgICBsb2NhbCBESVNUVVRJTFNfT1JJR19C VUlMRF9ESVI9JHtCVUlMRF9ESVJ9OwogICAgaWYgW1sgISAtbiAke0RJU1RVVElMU19TSU5HTEVf SU1QTH0gXV07IHRoZW4KICAgICAgICBsb2NhbCBNVUxUSUJVSUxEX1ZBUklBTlRTOwogICAgICAg IF9weXRob25fb2J0YWluX2ltcGxzOwogICAgICAgIG11bHRpYnVpbGRfZm9yX2Jlc3RfdmFyaWFu dCBfcHl0aG9uX211bHRpYnVpbGRfd3JhcHBlciBkaXN0dXRpbHMtcjFfcnVuX3BoYXNlICIke0B9 IjsKICAgIGVsc2UKICAgICAgICBfZGlzdHV0aWxzLXIxX3J1bl9mb3JlYWNoX2ltcGwgIiR7QH0i OwogICAgZmkKfQpfZGlzdHV0aWxzLXIxX3J1bl9mb3JlYWNoX2ltcGwgKCkgCnsgCiAgICBkZWJ1 Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBzZXQgLS0gZGlzdHV0aWxz LXIxX3J1bl9waGFzZSAiJHtAfSI7CiAgICBpZiBbWyAhIC1uICR7RElTVFVUSUxTX1NJTkdMRV9J TVBMfSBdXTsgdGhlbgogICAgICAgIGlmIFtbIC1uICR7RElTVFVUSUxTX05PX1BBUkFMTEVMX0JV SUxEfSB8fCAtbiAke0RJU1RVVElMU19TSU5HTEVfSU1QTH0gXV07IHRoZW4KICAgICAgICAgICAg cHl0aG9uX2ZvcmVhY2hfaW1wbCAiJHtAfSI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBweXRo b25fcGFyYWxsZWxfZm9yZWFjaF9pbXBsICIke0B9IjsKICAgICAgICBmaTsKICAgIGVsc2UKICAg ICAgICBpZiBbWyAhIC1uICR7RVBZVEhPTn0gXV07IHRoZW4KICAgICAgICAgICAgZGllICJFUFlU SE9OIHVuc2V0LCBweXRob24tc2luZ2xlLXIxX3BrZ19zZXR1cCBub3QgY2FsbGVkPyEiOwogICAg ICAgIGZpOwogICAgICAgIGxvY2FsIEJVSUxEX0RJUj0ke0JVSUxEX0RJUjotJHtTfX07CiAgICAg ICAgQlVJTERfRElSPSR7QlVJTERfRElSJSUvfV8ke0VQWVRIT059OwogICAgICAgICIke0B9IjsK ICAgIGZpCn0KX2Rpc3R1dGlscy1yMV93cmFwX3NjcmlwdHMgKCkgCnsgCiAgICBkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBbWyAkeyN9IC1lcSAyIF1dIHx8IGRp ZSAidXNhZ2U6ICR7RlVOQ05BTUV9IDxwYXRoPiA8YmluZGlyPiI7CiAgICBsb2NhbCBwYXRoPSR7 MX07CiAgICBsb2NhbCBiaW5kaXI9JHsyfTsKICAgIGxvY2FsIFBZVEhPTl9TQ1JJUFRESVI7CiAg ICBpZiBfcHl0aG9uX3dhbnRfcHl0aG9uX2V4ZWMyOyB0aGVuCiAgICAgICAgcHl0aG9uX2V4cG9y dCBQWVRIT05fU0NSSVBURElSOwogICAgZWxzZQogICAgICAgIFBZVEhPTl9TQ1JJUFRESVI9JHti aW5kaXJ9OwogICAgZmk7CiAgICBsb2NhbCBmIHB5dGhvbl9maWxlcz0oKSBub25fcHl0aG9uX2Zp bGVzPSgpOwogICAgaWYgW1sgLWQgJHtwYXRofSR7UFlUSE9OX1NDUklQVERJUn0gXV07IHRoZW4K ICAgICAgICBmb3IgZiBpbiAiJHtwYXRofSR7UFlUSE9OX1NDUklQVERJUn0iLyo7CiAgICAgICAg ZG8KICAgICAgICAgICAgW1sgLWQgJHtmfSBdXSAmJiBkaWUgIlVuZXhwZWN0ZWQgZGlyZWN0b3J5 OiAke2Z9IjsKICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBmb3VuZCBleGVj dXRhYmxlIGF0ICR7ZiMke3BhdGh9L30iOwogICAgICAgICAgICBsb2NhbCBzaGViYW5nOwogICAg ICAgICAgICByZWFkIC1yIHNoZWJhbmcgPCAiJHtmfSI7CiAgICAgICAgICAgIGlmIFtbICR7c2hl YmFuZ30gPT0gJyMhJyoke0VQWVRIT059KiBdXTsgdGhlbgogICAgICAgICAgICAgICAgZGVidWct cHJpbnQgIiR7RlVOQ05BTUV9OiBtYXRjaGluZyBzaGViYW5nOiAke3NoZWJhbmd9IjsKICAgICAg ICAgICAgICAgIHB5dGhvbl9maWxlcys9KCIke2Z9Iik7CiAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgIGlmIF9weXRob25fd2FudF9weXRob25fZXhlYzI7IHRoZW4KICAgICAgICAgICAg ICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IG5vbi1tYXRjaGluZyBzaGViYW5nOiAk e3NoZWJhbmd9IjsKICAgICAgICAgICAgICAgICAgICBub25fcHl0aG9uX2ZpbGVzKz0oIiR7Zn0i KTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgbWtkaXIg LXAgIiR7cGF0aH0ke2JpbmRpcn0iIHx8IGRpZTsKICAgICAgICBkb25lOwogICAgICAgIGZvciBm IGluICIke3B5dGhvbl9maWxlc1tAXX0iOwogICAgICAgIGRvCiAgICAgICAgICAgIGxvY2FsIGJh c2VuYW1lPSR7ZiMjKi99OwogICAgICAgICAgICBpZiAhIF9weXRob25fd2FudF9weXRob25fZXhl YzI7IHRoZW4KICAgICAgICAgICAgICAgIGxvY2FsIG5ld2Y9JHtmJS8qfS8ke2Jhc2VuYW1lfS0k e0VQWVRIT059OwogICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiByZW5h bWluZyAke2YjJHtwYXRofS99IHRvICR7bmV3ZiMke3BhdGh9L30iOwogICAgICAgICAgICAgICAg bXYgIiR7Zn0iICIke25ld2Z9IiB8fCBkaWU7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBk ZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IGluc3RhbGxpbmcgd3JhcHBlciBhdCAke2JpbmRpcn0v JHtiYXNlbmFtZX0iOwogICAgICAgICAgICBfcHl0aG9uX2xuX3JlbCAiJHtwYXRofSR7RVBSRUZJ WH0iJChfcHl0aG9uX2dldF93cmFwcGVyX3BhdGgpICIke3BhdGh9JHtiaW5kaXJ9LyR7YmFzZW5h bWV9IiB8fCBkaWU7CiAgICAgICAgZG9uZTsKICAgICAgICBmb3IgZiBpbiAiJHtub25fcHl0aG9u X2ZpbGVzW0BdfSI7CiAgICAgICAgZG8KICAgICAgICAgICAgbG9jYWwgYmFzZW5hbWU9JHtmIyMq L307CiAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogbW92aW5nICR7ZiMke3Bh dGh9L30gdG8gJHtiaW5kaXJ9LyR7YmFzZW5hbWV9IjsKICAgICAgICAgICAgbXYgIiR7Zn0iICIk e3BhdGh9JHtiaW5kaXJ9LyR7YmFzZW5hbWV9IiB8fCBkaWU7CiAgICAgICAgZG9uZTsKICAgIGZp Cn0KX2VwYXRjaF9kcmF3X2xpbmUgKCkgCnsgCiAgICBbWyAteiAkMSBdXSAmJiBzZXQgIiQocHJp bnRmICIlNjVzIiAnJykiOwogICAgZWNobyAiJHsxLy8/Lz19Igp9Cl9ldXRpbHNfZXByZWZpeF9p bml0ICgpIAp7IAogICAgaGFzICIke0VBUEk6LTB9IiAwIDEgMiAmJiA6ICR7RUQ6PSR7RH19ICR7 RVBSRUZJWDo9fSAke0VST09UOj0ke1JPT1R9fQp9Cl9nY2MtaW5zdGFsbC1kaXIgKCkgCnsgCiAg ICBlY2hvICIkKExDX0FMTD1DICQodGMtZ2V0Q0MpIC1wcmludC1zZWFyY2gtZGlycyAyPiAvZGV2 L251bGwgfAkJYXdrICckMT09Imluc3RhbGw6IiB7cHJpbnQgJDJ9JykiCn0KX2djYy1zcGVjcy1k aXJlY3RpdmVfcmF3ICgpIAp7IAogICAgbG9jYWwgY2M9JCh0Yy1nZXRDQyk7CiAgICBsb2NhbCBz cGVjZmlsZXM9JChMQ19BTEw9QyAke2NjfSAtdiAyPiYxIHwgYXdrICckMT09IlJlYWRpbmciIHtw cmludCAkTkZ9Jyk7CiAgICAke2NjfSAtZHVtcHNwZWNzIDI+IC9kZXYvbnVsbCB8IGNhdCAtICR7 c3BlY2ZpbGVzfSB8IGF3ayAtdiBkaXJlY3RpdmU9JDEgJ0JFR0lOCXsgcHNwZWM9IiI7IHNwZWM9 IiI7IG91dHNpZGU9MSB9CiQxPT0iKiJkaXJlY3RpdmUiOiIgIHsgcHNwZWM9c3BlYzsgc3BlYz0i Ijsgb3V0c2lkZT0wOyBuZXh0IH0KCW91dHNpZGUgfHwgTkY9PTAgfHwgKCBzdWJzdHIoJDEsMSwx KT09IioiICYmIHN1YnN0cigkMSxsZW5ndGgoJDEpLDEpPT0iOiIgKSB7IG91dHNpZGU9MTsgbmV4 dCB9CglzcGVjPT0iIiAmJiBzdWJzdHIoJDAsMSwxKT09IisiIHsgc3BlYz1wc3BlYyAiICIgc3Vi c3RyKCQwLDIpOyBuZXh0IH0KCXsgc3BlYz1zcGVjICQwIH0KRU5ECXsgcHJpbnQgc3BlYyB9JzsK ICAgIHJldHVybiAwCn0KX2djYy1zcGVjcy1leGlzdHMgKCkgCnsgCiAgICBbWyAtZiAkKF9nY2Mt aW5zdGFsbC1kaXIpLyQxIF1dCn0KX2djY19mdWxsdmVyc2lvbiAoKSAKeyAKICAgIGxvY2FsIHZl cj0iJDEiOwogICAgc2hpZnQ7CiAgICBzZXQgLS0gYCQodGMtZ2V0Q1BQICIkQCIpIC1FIC1QIC0g PDw8Il9fR05VQ19fIF9fR05VQ19NSU5PUl9fIF9fR05VQ19QQVRDSExFVkVMX18iYDsKICAgIGV2 YWwgZWNobyAiJHZlciIKfQpfaWNvbmlucyAoKSAKeyAKICAgICggbG9jYWwgZnVuY25hbWU9JDE7 CiAgICBzaGlmdDsKICAgIGxvY2FsIHNpemUgZGlyOwogICAgbG9jYWwgY29udGV4dD1hcHBzOwog ICAgbG9jYWwgdGhlbWU9aGljb2xvcjsKICAgIHdoaWxlIFtbICQjIC1ndCAwIF1dOyBkbwogICAg ICAgIGNhc2UgJDEgaW4gCiAgICAgICAgICAgIC1zIHwgLS1zaXplKQogICAgICAgICAgICAgICAg aWYgW1sgJHsyJSV4Kn14JHsyJSV4Kn0gPT0gIiQyIiBdXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgIHNpemU9JHsyJSV4Kn07CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg ICAgc2l6ZT0kezJ9OwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBjYXNlICR7 c2l6ZX0gaW4gCiAgICAgICAgICAgICAgICAgICAgMTYgfCAyMiB8IDI0IHwgMzIgfCAzNiB8IDQ4 IHwgNjQgfCA3MiB8IDk2IHwgMTI4IHwgMTkyIHwgMjU2KQogICAgICAgICAgICAgICAgICAgICAg ICBzaXplPSR7c2l6ZX14JHtzaXplfQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAg ICAgICAgICAgc2NhbGFibGUpCgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgZWVycm9yICIke3NpemV9IGlzIGFuIHVu c3VwcG9ydGVkIGljb24gc2l6ZSEiOwogICAgICAgICAgICAgICAgICAgICAgICBleGl0IDEKICAg ICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAg IHNoaWZ0IDIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgLXQgfCAtLXRoZW1lKQogICAgICAg ICAgICAgICAgdGhlbWU9JHsyfTsKICAgICAgICAgICAgICAgIHNoaWZ0IDIKICAgICAgICAgICAg OzsKICAgICAgICAgICAgLWMgfCAtLWNvbnRleHQpCiAgICAgICAgICAgICAgICBjb250ZXh0PSR7 Mn07CiAgICAgICAgICAgICAgICBzaGlmdCAyCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICop CiAgICAgICAgICAgICAgICBpZiBbWyAteiAke3NpemV9IF1dOyB0aGVuCiAgICAgICAgICAgICAg ICAgICAgaW5zaW50byAvdXNyL3NoYXJlL3BpeG1hcHM7CiAgICAgICAgICAgICAgICBlbHNlCiAg ICAgICAgICAgICAgICAgICAgaW5zaW50byAvdXNyL3NoYXJlL2ljb25zLyR7dGhlbWV9LyR7c2l6 ZX0vJHtjb250ZXh0fTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgaWYgW1sg JHtmdW5jbmFtZX0gPT0gZG9pY29uIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaWYgW1sg LWYgJDEgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgZG9pbnMgIiR7MX0iOwogICAg ICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgLWQgJDEg XV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3B0IC1zIG51bGxnbG9iOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9pbnMgIiR7MX0iLyoue3BuZyxzdmd9OwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2hvcHQgLXUgbnVsbGdsb2I7CiAgICAgICAgICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVlcnJvciAiJHsxfSBp cyBub3QgYSB2YWxpZCBmaWxlL2RpcmVjdG9yeSEiOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXhpdCAxOwogICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgICAg ICBmaTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg ICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgc2hpZnQgMQogICAgICAgICAgICA7Owog ICAgICAgIGVzYWM7CiAgICBkb25lOwogICAgaWYgW1sgJHtmdW5jbmFtZX0gPT0gbmV3aWNvbiBd XTsgdGhlbgogICAgICAgIG5ld2lucyAiJEAiOwogICAgZmkgKSB8fCBkaWUKfQpfbXVsdGlqb2Jf Zm9yayAoKSAKeyAKICAgIFtbICQjIC1lcSAxIF1dIHx8IGRpZSAiaW5jb3JyZWN0IG51bWJlciBv ZiBhcmd1bWVudHMiOwogICAgbG9jYWwgcmV0PTA7CiAgICBbWyAkMSA9PSAicG9zdCIgXV0gJiYg OiAkKCggKyttal9udW1fam9icyApKTsKICAgIGlmIFtbICR7bWpfbnVtX2pvYnN9IC1nZSAke21q X21heF9qb2JzfSBdXTsgdGhlbgogICAgICAgIG11bHRpam9iX2ZpbmlzaF9vbmU7CiAgICAgICAg cmV0PSQ/OwogICAgZmk7CiAgICBbWyAkMSA9PSAicHJlIiBdXSAmJiA6ICQoKCArK21qX251bV9q b2JzICkpOwogICAgcmV0dXJuICR7cmV0fQp9Cl9weXRob25fY2hlY2tfVVNFX1BZVEhPTiAoKSAK eyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGlmIFtb ICEgLW4gJHtfUFlUSE9OX1VTRV9QWVRIT05fQ0hFQ0tFRH0gXV07IHRoZW4KICAgICAgICBfUFlU SE9OX1VTRV9QWVRIT05fQ0hFQ0tFRD0xOwogICAgICAgIGlmIFtbICR7Q0FURUdPUll9LyR7UE59 ID09IGRldi1sYW5nL3B5dGhvbi1leGVjIF1dOyB0aGVuCiAgICAgICAgICAgIHJldHVybjsKICAg ICAgICBmaTsKICAgICAgICBmdW5jdGlvbiBfdHJ5X2VzZWxlY3QgKCkgCiAgICAgICAgeyAKICAg ICAgICAgICAgbG9jYWwgaW1wbCBweTIgcHkzIGRpc19weTIgZGlzX3B5MzsKICAgICAgICAgICAg Zm9yIGltcGwgaW4gIiR7UFlUSE9OX0NPTVBBVFtAXX0iOwogICAgICAgICAgICBkbwogICAgICAg ICAgICAgICAgX3B5dGhvbl9pbXBsX3N1cHBvcnRlZCAiJHtpbXBsfSIgfHwgY29udGludWU7CiAg ICAgICAgICAgICAgICBpZiB1c2UgInB5dGhvbl90YXJnZXRzXyR7aW1wbH0iOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgY2FzZSAiJHtpbXBsfSIgaW4gCiAgICAgICAgICAgICAgICAgICAgICAg IHB5dGhvbjJfKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbIC1uICR7cHkyKzF9 IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7 RlVOQ05BTUV9OiAtPiBtb3JlIHRoYW4gb25lIHB5MjogJHtweTJ9ICR7aW1wbH0iOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBweTI9JHtpbXBsL18vLn0KICAg ICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uM180 KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBw eXRob24zLjQgZm91bmQsIG5vdCB1c2luZyBlc2VsZWN0IjsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgICAgIHB5dGhvbjNfKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbIC1u ICR7cHkzKzF9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVidWct cHJpbnQgIiR7RlVOQ05BTUV9OiAtPiBtb3JlIHRoYW4gb25lIHB5MzogJHtweTN9ICR7aW1wbH0i OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBweTM9JHtpbXBs L18vLn0KICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAg KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIGVsc2UK ICAgICAgICAgICAgICAgICAgICBjYXNlICIke2ltcGx9IiBpbiAKICAgICAgICAgICAgICAgICAg ICAgICAgcHl0aG9uMl8qKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzX3B5Mj0xCiAg ICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbjNf KikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc19weTM9MQogICAgICAgICAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICBmaTsK ICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAgaWYgW1sgISAtbiAke3B5MisxfSAmJiAtbiAk e2Rpc19weTJ9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFN RX06IC0+IGFsbCBweTIgdmVyc2lvbnMgZGlzYWJsZWQiOwogICAgICAgICAgICAgICAgaWYgISBo YXMgcHl0aG9uMl83ICIke1BZVEhPTl9DT01QQVRbQF19IjsgdGhlbgogICAgICAgICAgICAgICAg ICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogLS0tPiBwYWNrYWdlIGRvZXMgbm90IHN1cHBv cnQgMi43IjsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgIGZp OwogICAgICAgICAgICAgICAgaWYgaGFzX3ZlcnNpb24gJz1kZXYtbGFuZy9weXRob24tMionOyB0 aGVuCiAgICAgICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiAtLS0+IGJ1 dCA9cHl0aG9uLTIqIGluc3RhbGxlZCEiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiBbWyAhIC1u ICR7cHkzKzF9ICYmIC1uICR7ZGlzX3B5M30gXV07IHRoZW4KICAgICAgICAgICAgICAgIGRlYnVn LXByaW50ICIke0ZVTkNOQU1FfTogLT4gYWxsIHB5MyB2ZXJzaW9ucyBkaXNhYmxlZCI7CiAgICAg ICAgICAgICAgICBpZiAhIGhhcyBweXRob24zXzIgIiR7UFlUSE9OX0NPTVBBVFtAXX0iOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiAtLS0+IHBhY2th Z2UgZG9lcyBub3Qgc3VwcG9ydCAzLjIiOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwog ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBpZiBoYXNfdmVyc2lvbiAnPWRldi1s YW5nL3B5dGhvbi0zKic7IHRoZW4KICAgICAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtG VU5DTkFNRX06IC0tLT4gYnV0ID1weXRob24tMyogaW5zdGFsbGVkISI7CiAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAg ICAgICAgIGxvY2FsIHdhcm5lZDsKICAgICAgICAgICAgaWYgW1sgLW4gJHtweTIrMX0gXV07IHRo ZW4KICAgICAgICAgICAgICAgIGxvY2FsIHNlbF9weTI9JChlc2VsZWN0IHB5dGhvbiBzaG93IC0t cHl0aG9uMik7CiAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IC0+IHB5 MiBidWlsdDogJHtweTJ9LCBhY3RpdmU6ICR7c2VsX3B5Mn0iOwogICAgICAgICAgICAgICAgaWYg W1sgJHtweTJ9ICE9ICR7c2VsX3B5Mn0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBld2Fy biAiQnVpbGRpbmcgcGFja2FnZSBmb3IgJHtweTJ9IG9ubHkgd2hpbGUgJHtzZWxfcHkyfSBpcyBh Y3RpdmUuIjsKICAgICAgICAgICAgICAgICAgICBld2FybiAiUGxlYXNlIGNvbnNpZGVyIHN3aXRj aGluZyB0aGUgYWN0aXZlIFB5dGhvbiAyIGludGVycHJldGVyOiI7CiAgICAgICAgICAgICAgICAg ICAgZXdhcm47CiAgICAgICAgICAgICAgICAgICAgZXdhcm4gIgllc2VsZWN0IHB5dGhvbiBzZXQg LS1weXRob24yICR7cHkyfSI7CiAgICAgICAgICAgICAgICAgICAgd2FybmVkPTE7CiAgICAgICAg ICAgICAgICBmaTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtbIC1uICR7cHkzKzF9 IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBsb2NhbCBzZWxfcHkzPSQoZXNlbGVjdCBweXRob24g c2hvdyAtLXB5dGhvbjMpOwogICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9 OiAtPiBweTMgYnVpbHQ6ICR7cHkzfSwgYWN0aXZlOiAke3NlbF9weTN9IjsKICAgICAgICAgICAg ICAgIGlmIFtbICR7cHkzfSAhPSAke3NlbF9weTN9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAg ICAgW1sgLW4gJHt3YXJuZWR9IF1dICYmIGV3YXJuOwogICAgICAgICAgICAgICAgICAgIGV3YXJu ICJCdWlsZGluZyBwYWNrYWdlIGZvciAke3B5M30gb25seSB3aGlsZSAke3NlbF9weTN9IGlzIGFj dGl2ZS4iOwogICAgICAgICAgICAgICAgICAgIGV3YXJuICJQbGVhc2UgY29uc2lkZXIgc3dpdGNo aW5nIHRoZSBhY3RpdmUgUHl0aG9uIDMgaW50ZXJwcmV0ZXI6IjsKICAgICAgICAgICAgICAgICAg ICBld2FybjsKICAgICAgICAgICAgICAgICAgICBld2FybiAiCWVzZWxlY3QgcHl0aG9uIHNldCAt LXB5dGhvbjMgJHtweTN9IjsKICAgICAgICAgICAgICAgICAgICB3YXJuZWQ9MTsKICAgICAgICAg ICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgaWYgW1sgLW4gJHt3YXJuZWR9 IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBld2FybjsKICAgICAgICAgICAgICAgIGV3YXJuICJQ bGVhc2Ugbm90ZSB0aGF0IGFmdGVyIHN3aXRjaGluZyB0aGUgYWN0aXZlIFB5dGhvbiBpbnRlcnBy ZXRlciwiOwogICAgICAgICAgICAgICAgZXdhcm4gInlvdSBtYXkgbmVlZCB0byBydW4gJ3B5dGhv bi11cGRhdGVyJyB0byByZWJ1aWxkIGFmZmVjdGVkIHBhY2thZ2VzLiI7CiAgICAgICAgICAgICAg ICBld2FybjsKICAgICAgICAgICAgICAgIGV3YXJuICJGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBQ WVRIT05fVEFSR0VUUyBhbmQgcHl0aG9uLmVjbGFzcyI7CiAgICAgICAgICAgICAgICBld2FybiAi Y29tcGF0aWJpbGl0eSwgcGxlYXNlIHNlZSB0aGUgcmVsZXZhbnQgV2lraSBhcnRpY2xlIFsxXS4i OwogICAgICAgICAgICAgICAgZXdhcm47CiAgICAgICAgICAgICAgICBld2FybiAiWzFdIGh0dHBz Oi8vd2lraS5nZW50b28ub3JnL3dpa2kvUHJvamVjdDpQeXRob24vUFlUSE9OX1RBUkdFVFMiOwog ICAgICAgICAgICBmaQogICAgICAgIH07CiAgICAgICAgaWYgW1sgISAtbiAke1VTRV9QWVRIT059 IF1dOyB0aGVuCiAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogdHJ5aW5nIGVz ZWxlY3Qgc29sdXRpb24gLi4uIjsKICAgICAgICAgICAgX3RyeV9lc2VsZWN0ICYmIHJldHVybjsK ICAgICAgICBmaTsKICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IHRyeWluZyBVU0Vf UFlUSE9OIHNvbHV0aW9uIC4uLiI7CiAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiAt PiBVU0VfUFlUSE9OPSR7VVNFX1BZVEhPTn0iOwogICAgICAgIGxvY2FsIGltcGwgb2xkPSR7VVNF X1BZVEhPTn0gbmV3PSgpIHJlbW92ZWQ9KCk7CiAgICAgICAgZm9yIGltcGwgaW4gIiR7UFlUSE9O X0NPTVBBVFtAXX0iOwogICAgICAgIGRvCiAgICAgICAgICAgIF9weXRob25faW1wbF9zdXBwb3J0 ZWQgIiR7aW1wbH0iIHx8IGNvbnRpbnVlOwogICAgICAgICAgICBsb2NhbCBhYmk7CiAgICAgICAg ICAgIGNhc2UgIiR7aW1wbH0iIGluIAogICAgICAgICAgICAgICAgcHlweSB8IHB5cHkzIHwgcHl0 aG9uM180KQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICA7Owog ICAgICAgICAgICAgICAgcHl0aG9uKikKICAgICAgICAgICAgICAgICAgICBhYmk9JHtpbXBsI3B5 dGhvbn0KICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBqeXRob24qKQogICAgICAg ICAgICAgICAgICAgIGFiaT0ke2ltcGwjanl0aG9ufS1qeXRob24KICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgICAgIGRpZSAiVW5leHBlY3RlZCBQ eXRob24gaW1wbGVtZW50YXRpb246ICR7aW1wbH0iCiAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICBlc2FjOwogICAgICAgICAgICBhYmk9JHthYmkvXy8ufTsKICAgICAgICAgICAgaGFzICIk e2FiaX0iICR7VVNFX1BZVEhPTn07CiAgICAgICAgICAgIGxvY2FsIGhhc19hYmk9JHs/fTsKICAg ICAgICAgICAgdXNlICJweXRob25fdGFyZ2V0c18ke2ltcGx9IjsKICAgICAgICAgICAgbG9jYWwg aGFzX2ltcGw9JHs/fTsKICAgICAgICAgICAgaWYgW1sgJHtoYXNfYWJpfSA9PSAwICYmICR7aGFz X2ltcGx9ID09IDEgXV07IHRoZW4KICAgICAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNO QU1FfTogLS0tPiByZW1vdmUgJHthYml9IjsKICAgICAgICAgICAgICAgIG9sZD0ke29sZC8ke2Fi aX0vfTsKICAgICAgICAgICAgICAgIHJlbW92ZWQrPSgke2FiaX0pOwogICAgICAgICAgICBlbHNl CiAgICAgICAgICAgICAgICBpZiBbWyAke2hhc19hYml9ID09IDEgJiYgJHtoYXNfaW1wbH0gPT0g MCBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTog LS0tPiBhZGQgJHthYml9IjsKICAgICAgICAgICAgICAgICAgICBuZXcrPSgke2FiaX0pOwogICAg ICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICAgICAgaWYg W1sgLW4gJHtyZW1vdmVkW0BdfSB8fCAtbiAke25ld1tAXX0gXV07IHRoZW4KICAgICAgICAgICAg b2xkPSgke29sZH0pOwogICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IC0+IG9s ZDogJHtvbGRbQF19IjsKICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiAtPiBu ZXc6ICR7bmV3W0BdfSI7CiAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogLT4g cmVtb3ZlZDogJHtyZW1vdmVkW0BdfSI7CiAgICAgICAgICAgIGlmIFtbIC1uICR7VVNFX1BZVEhP Tn0gXV07IHRoZW4KICAgICAgICAgICAgICAgIGV3YXJuICJJdCBzZWVtcyB0aGF0IHlvdXIgVVNF X1BZVEhPTiBzZXR0aW5nIGxpc3RzIGRpZmZlcmVudCBQeXRob24iOwogICAgICAgICAgICAgICAg ZXdhcm4gImltcGxlbWVudGF0aW9ucyB0aGFuIHlvdXIgUFlUSE9OX1RBUkdFVFMgdmFyaWFibGUu IFBsZWFzZSBjb25zaWRlciI7CiAgICAgICAgICAgICAgICBld2FybiAidXNpbmcgdGhlIGZvbGxv d2luZyB2YWx1ZSBpbnN0ZWFkOiI7CiAgICAgICAgICAgICAgICBld2FybjsKICAgICAgICAgICAg ICAgIGV3YXJuICIJVVNFX1BZVEhPTj0nXDAzM1szNW0ke29sZFtAXX0ke25ld1tAXSsgXDAzM1sx bSR7bmV3W0BdfX1cMDMzWzBtJyI7CiAgICAgICAgICAgICAgICBpZiBbWyAtbiAke3JlbW92ZWRb QF19IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgZXdhcm47CiAgICAgICAgICAgICAgICAg ICAgZXdhcm4gIihyZW1vdmVkIFwwMzNbMzFtJHtyZW1vdmVkW0BdfVwwMzNbMG0pIjsKICAgICAg ICAgICAgICAgIGZpOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBld2FybiAiSXQg c2VlbXMgdGhhdCB5b3UgbmVlZCB0byBzZXQgVVNFX1BZVEhPTiB0byBtYWtlIHN1cmUgdGhhdCBs ZWdhY3kiOwogICAgICAgICAgICAgICAgZXdhcm4gInBhY2thZ2VzIHdpbGwgYmUgYnVpbHQgd2l0 aCByZXNwZWN0IHRvIFBZVEhPTl9UQVJHRVRTIGNvcnJlY3RseToiOwogICAgICAgICAgICAgICAg ZXdhcm47CiAgICAgICAgICAgICAgICBld2FybiAiCVVTRV9QWVRIT049J1wwMzNbMzU7MW0ke25l d1tAXX1cMDMzWzBtJyI7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBld2FybjsKICAgICAg ICAgICAgZXdhcm4gIlBsZWFzZSBub3RlIHRoYXQgYWZ0ZXIgY2hhbmdpbmcgdGhlIFVTRV9QWVRI T04gdmFyaWFibGUsIHlvdSBtYXkgbmVlZCI7CiAgICAgICAgICAgIGV3YXJuICJ0byBydW4gJ3B5 dGhvbi11cGRhdGVyJyB0byByZWJ1aWxkIGFmZmVjdGVkIHBhY2thZ2VzLiI7CiAgICAgICAgICAg IGV3YXJuOwogICAgICAgICAgICBld2FybiAiRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gUFlUSE9O X1RBUkdFVFMgYW5kIHB5dGhvbi5lY2xhc3MiOwogICAgICAgICAgICBld2FybiAiY29tcGF0aWJp bGl0eSwgcGxlYXNlIHNlZSB0aGUgcmVsZXZhbnQgV2lraSBhcnRpY2xlIFsxXS4iOwogICAgICAg ICAgICBld2FybjsKICAgICAgICAgICAgZXdhcm4gIlsxXSBodHRwczovL3dpa2kuZ2VudG9vLm9y Zy93aWtpL1Byb2plY3Q6UHl0aG9uL1BZVEhPTl9UQVJHRVRTIjsKICAgICAgICBmaTsKICAgIGZp Cn0KX3B5dGhvbl9nZXRfd3JhcHBlcl9wYXRoICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rp b24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgaWYgX3B5dGhvbl93YW50X3B5dGhvbl9leGVjMjsg dGhlbgogICAgICAgIGVjaG8gL3Vzci9saWIvcHl0aG9uLWV4ZWMvcHl0aG9uLWV4ZWMyOwogICAg ZWxzZQogICAgICAgIGVjaG8gL3Vzci9iaW4vcHl0aG9uLWV4ZWM7CiAgICBmaQp9Cl9weXRob25f aW1wbF9zdXBwb3J0ZWQgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1F fSAiJHtAfSI7CiAgICBbWyAkeyN9IC1lcSAxIF1dIHx8IGRpZSAiJHtGVU5DTkFNRX06IHRha2Vz IGV4YWN0bHkgMSBhcmd1bWVudCAoaW1wbCkuIjsKICAgIGxvY2FsIGltcGw9JHsxfTsKICAgIGNh c2UgIiR7aW1wbH0iIGluIAogICAgICAgIHB5dGhvbjJfNyB8IHB5dGhvbjNfWzIzNF0gfCBqeXRo b24yX1s1N10pCiAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgOzsKICAgICAgICBweXB5MV9b ODldIHwgcHlweTJfMCB8IHB5dGhvbjJfWzU2XSB8IHB5dGhvbjNfMSkKICAgICAgICAgICAgcmV0 dXJuIDEKICAgICAgICA7OwogICAgICAgIHB5cHkgfCBweXB5MykKICAgICAgICAgICAgaWYgW1sg JHtFQVBJOi0wfSA9PSBbMDEyMzRdIF1dOyB0aGVuCiAgICAgICAgICAgICAgICBkaWUgIlB5UHkg aXMgc3VwcG9ydGVkIGluIEVBUEkgNSBhbmQgbmV3ZXIgb25seS4iOwogICAgICAgICAgICBmaQog ICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZGllICJJbnZhbGlkIGltcGxlbWVudGF0 aW9uIGluIFBZVEhPTl9DT01QQVQ6ICR7aW1wbH0iCiAgICAgICAgOzsKICAgIGVzYWMKfQpfcHl0 aG9uX2xuX3JlbCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk e0B9IjsKICAgIGxvY2FsIHRhcmdldD0kezF9OwogICAgbG9jYWwgc3ltbmFtZT0kezJ9OwogICAg bG9jYWwgdGdwYXRoPSR7dGFyZ2V0JS8qfS87CiAgICBsb2NhbCBzeW1wYXRoPSR7c3ltbmFtZSUv Kn0vOwogICAgbG9jYWwgcmVsX3RhcmdldD07CiAgICB3aGlsZSBbWyAtbiAke3N5bXBhdGh9IF1d OyBkbwogICAgICAgIGxvY2FsIHRnc2VnPSBzeW1zZWc9OwogICAgICAgIHdoaWxlIFtbICEgLW4g JHt0Z3NlZ30gJiYgLW4gJHt0Z3BhdGh9IF1dOyBkbwogICAgICAgICAgICB0Z3NlZz0ke3RncGF0 aCUlLyp9OwogICAgICAgICAgICB0Z3BhdGg9JHt0Z3BhdGgjJHt0Z3NlZ30vfTsKICAgICAgICBk b25lOwogICAgICAgIHdoaWxlIFtbICEgLW4gJHtzeW1zZWd9ICYmIC1uICR7c3ltcGF0aH0gXV07 IGRvCiAgICAgICAgICAgIHN5bXNlZz0ke3N5bXBhdGglJS8qfTsKICAgICAgICAgICAgc3ltcGF0 aD0ke3N5bXBhdGgjJHtzeW1zZWd9L307CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAke3Rn c2VnfSAhPSAke3N5bXNlZ30gXV07IHRoZW4KICAgICAgICAgICAgcmVsX3RhcmdldD0uLi8ke3Jl bF90YXJnZXR9JHt0Z3NlZzorJHt0Z3NlZ30vfTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBy ZWxfdGFyZ2V0Kz0ke3RncGF0aH0ke3RhcmdldCMjKi99OwogICAgZGVidWctcHJpbnQgIiR7RlVO Q05BTUV9OiAke3N5bW5hbWV9IC0+ICR7dGFyZ2V0fSI7CiAgICBkZWJ1Zy1wcmludCAiJHtGVU5D TkFNRX06IHJlbF90YXJnZXQgPSAke3JlbF90YXJnZXR9IjsKICAgIGxuIC1mcyAiJHtyZWxfdGFy Z2V0fSIgIiR7c3ltbmFtZX0iCn0KX3B5dGhvbl9tdWx0aWJ1aWxkX3dyYXBwZXIgKCkgCnsgCiAg ICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCAteCBF UFlUSE9OIFBZVEhPTjsKICAgIGxvY2FsIC14IFBBVEg9JHtQQVRIfSBQS0dfQ09ORklHX1BBVEg9 JHtQS0dfQ09ORklHX1BBVEh9OwogICAgcHl0aG9uX2V4cG9ydCAiJHtNVUxUSUJVSUxEX1ZBUklB TlR9IiBFUFlUSE9OIFBZVEhPTjsKICAgIHB5dGhvbl93cmFwcGVyX3NldHVwOwogICAgIiR7QH0i Cn0KX3B5dGhvbl9vYnRhaW5faW1wbHMgKCkgCnsgCiAgICBpZiBbWyAtbiAke1BZVEhPTl9DT01Q QVRfT1ZFUlJJREV9IF1dOyB0aGVuCiAgICAgICAgaWYgW1sgISAtbiAke19QWVRIT05fQ09NUEFU X09WRVJSSURFX1dBUk5FRH0gXV07IHRoZW4KICAgICAgICAgICAgZXdhcm4gIldBUk5JTkc6IFBZ VEhPTl9DT01QQVRfT1ZFUlJJREUgaW4gZWZmZWN0LiBUaGUgZm9sbG93aW5nIFB5dGhvbiI7CiAg ICAgICAgICAgIGV3YXJuICJpbXBsZW1lbnRhdGlvbnMgd2lsbCBiZSBlbmFibGVkOiI7CiAgICAg ICAgICAgIGV3YXJuOwogICAgICAgICAgICBld2FybiAiCSR7UFlUSE9OX0NPTVBBVF9PVkVSUklE RX0iOwogICAgICAgICAgICBld2FybjsKICAgICAgICAgICAgZXdhcm4gIkRlcGVuZGVuY2llcyB3 b24ndCBiZSBzYXRpc2ZpZWQsIGFuZCBQWVRIT05fVEFSR0VUUyB3aWxsIGJlIGlnbm9yZWQuIjsK ICAgICAgICAgICAgX1BZVEhPTl9DT01QQVRfT1ZFUlJJREVfV0FSTkVEPTE7CiAgICAgICAgZmk7 CiAgICAgICAgTVVMVElCVUlMRF9WQVJJQU5UUz0oJHtQWVRIT05fQ09NUEFUX09WRVJSSURFfSk7 CiAgICAgICAgcmV0dXJuOwogICAgZmk7CiAgICBfcHl0aG9uX3ZhbGlkYXRlX3VzZWZsYWdzOwog ICAgX3B5dGhvbl9jaGVja19VU0VfUFlUSE9OOwogICAgTVVMVElCVUlMRF9WQVJJQU5UUz0oKTsK ICAgIGZvciBpbXBsIGluICIke19QWVRIT05fQUxMX0lNUExTW0BdfSI7CiAgICBkbwogICAgICAg IGlmIGhhcyAiJHtpbXBsfSIgIiR7UFlUSE9OX0NPTVBBVFtAXX0iICYmIHVzZSAicHl0aG9uX3Rh cmdldHNfJHtpbXBsfSI7IHRoZW4KICAgICAgICAgICAgTVVMVElCVUlMRF9WQVJJQU5UUys9KCIk e2ltcGx9Iik7CiAgICAgICAgZmk7CiAgICBkb25lCn0KX3B5dGhvbl9zZXRfZ2xvYmFscyAoKSAK eyAKICAgIGxvY2FsIGltcGxzPSgpOwogICAgUFlUSE9OX0RFUFM9OwogICAgbG9jYWwgaSBQWVRI T05fUEtHX0RFUDsKICAgIGZvciBpIGluICIke1BZVEhPTl9DT01QQVRbQF19IjsKICAgIGRvCiAg ICAgICAgX3B5dGhvbl9pbXBsX3N1cHBvcnRlZCAiJHtpfSIgfHwgY29udGludWU7CiAgICAgICAg cHl0aG9uX2V4cG9ydCAiJHtpfSIgUFlUSE9OX1BLR19ERVA7CiAgICAgICAgUFlUSE9OX0RFUFMr PSJweXRob25fdGFyZ2V0c18ke2l9PyAoICR7UFlUSE9OX1BLR19ERVB9ICkgIjsKICAgICAgICBp bXBscys9KCIke2l9Iik7CiAgICBkb25lOwogICAgaWYgW1sgJHsjaW1wbHNbQF19IC1lcSAwIF1d OyB0aGVuCiAgICAgICAgZGllICJObyBzdXBwb3J0ZWQgaW1wbGVtZW50YXRpb24gaW4gUFlUSE9O X0NPTVBBVC4iOwogICAgZmk7CiAgICBsb2NhbCBmbGFncz0oIiR7aW1wbHNbQF0vIy9weXRob25f dGFyZ2V0c199Iik7CiAgICBsb2NhbCBvcHRmbGFncz0ke2ZsYWdzW0BdLyUvKC0pP307CiAgICBs b2NhbCBmbGFnc19zdD0oIiR7aW1wbHNbQF0vIy8tcHl0aG9uX3NpbmdsZV90YXJnZXRffSIpOwog ICAgb3B0ZmxhZ3MrPSwke2ZsYWdzX3N0W0BdLyUvKC0pfTsKICAgIElVU0U9JHtmbGFnc1sqXX07 CiAgICBQWVRIT05fUkVRVUlSRURfVVNFPSJ8fCAoICR7ZmxhZ3NbKl19ICkiOwogICAgUFlUSE9O X1VTRURFUD0ke29wdGZsYWdzLy8gLyx9OwogICAgaWYgW1sgJHtfUFlUSE9OX1dBTlRfUFlUSE9O X0VYRUMyfSA9PSAwIF1dOyB0aGVuCiAgICAgICAgUFlUSE9OX0RFUFMrPSJkZXYtbGFuZy9weXRo b24tZXhlYzowWyR7UFlUSE9OX1VTRURFUH1dIjsKICAgIGVsc2UKICAgICAgICBpZiBbWyAke0VB UEl9ICE9IDQgXV07IHRoZW4KICAgICAgICAgICAgUFlUSE9OX0RFUFMrPSJkZXYtbGFuZy9weXRo b24tZXhlYzo9WyR7UFlUSE9OX1VTRURFUH1dIjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIFBZ VEhPTl9ERVBTKz0iZGV2LWxhbmcvcHl0aG9uLWV4ZWM6Mlske1BZVEhPTl9VU0VERVB9XSI7CiAg ICAgICAgZmk7CiAgICBmaQp9Cl9weXRob25fdmFsaWRhdGVfdXNlZmxhZ3MgKCkgCnsgCiAgICBk ZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCBpOwogICAg Zm9yIGkgaW4gIiR7UFlUSE9OX0NPTVBBVFtAXX0iOwogICAgZG8KICAgICAgICBfcHl0aG9uX2lt cGxfc3VwcG9ydGVkICIke2l9IiB8fCBjb250aW51ZTsKICAgICAgICB1c2UgInB5dGhvbl90YXJn ZXRzXyR7aX0iICYmIHJldHVybiAwOwogICAgZG9uZTsKICAgIGVlcnJvciAiTm8gUHl0aG9uIGlt cGxlbWVudGF0aW9uIHNlbGVjdGVkIGZvciB0aGUgYnVpbGQuIFBsZWFzZSBhZGQgb25lIjsKICAg IGVlcnJvciAib2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMgdG8geW91ciBQWVRIT05fVEFSR0VUUyAo aW4gbWFrZS5jb25mKToiOwogICAgZWVycm9yOwogICAgZWVycm9yICIke1BZVEhPTl9DT01QQVRb QF19IjsKICAgIGVjaG87CiAgICBkaWUgIk5vIHN1cHBvcnRlZCBQeXRob24gaW1wbGVtZW50YXRp b24gaW4gUFlUSE9OX1RBUkdFVFMuIgp9Cl9weXRob25fd2FudF9weXRob25fZXhlYzIgKCkgCnsg CiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBbWyAke0VB UEl9ID09IDQgXV0gJiYgcmV0dXJuIDA7CiAgICBpZiBbWyAhIC1uICR7X1BZVEhPTl9XQU5UX1BZ VEhPTl9FWEVDMisxfSBdXTsgdGhlbgogICAgICAgIGhhc192ZXJzaW9uICdkZXYtbGFuZy9weXRo b24tZXhlYzoyJzsKICAgICAgICBfUFlUSE9OX1dBTlRfUFlUSE9OX0VYRUMyPSQoKCAhICR7P30g KSk7CiAgICBmaTsKICAgIFtbICR7X1BZVEhPTl9XQU5UX1BZVEhPTl9FWEVDMn0gIT0gMCBdXQp9 Cl90Yy1nZXRQUk9HICgpIAp7IAogICAgbG9jYWwgdHVwbGU9JDE7CiAgICBsb2NhbCB2IHZhciB2 YXJzPSQyOwogICAgbG9jYWwgcHJvZz0kMzsKICAgIHZhcj0ke3ZhcnMlJSAqfTsKICAgIGZvciB2 IGluICR7dmFyc307CiAgICBkbwogICAgICAgIGlmIFtbIC1uICR7IXZ9IF1dOyB0aGVuCiAgICAg ICAgICAgIGV4cG9ydCAke3Zhcn09IiR7IXZ9IjsKICAgICAgICAgICAgZWNobyAiJHshdn0iOwog ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBsb2NhbCBzZWFy Y2g9OwogICAgW1sgLW4gJDQgXV0gJiYgc2VhcmNoPSQodHlwZSAtcCAiJDQtJHtwcm9nfSIpOwog ICAgW1sgLXogJHtzZWFyY2h9ICYmIC1uICR7IXR1cGxlfSBdXSAmJiBzZWFyY2g9JCh0eXBlIC1w ICIkeyF0dXBsZX0tJHtwcm9nfSIpOwogICAgW1sgLW4gJHtzZWFyY2h9IF1dICYmIHByb2c9JHtz ZWFyY2gjIyovfTsKICAgIGV4cG9ydCAke3Zhcn09JHtwcm9nfTsKICAgIGVjaG8gIiR7IXZhcn0i Cn0KYmFzaHBpZCAoKSAKeyAKICAgIHNoIC1jICdlY2hvICR7UFBJRH0nCn0KYnVpbHRfd2l0aF91 c2UgKCkgCnsgCiAgICBfZXV0aWxzX2VwcmVmaXhfaW5pdDsKICAgIGxvY2FsIGhpZGRlbj0ibm8i OwogICAgaWYgW1sgJDEgPT0gIi0taGlkZGVuIiBdXTsgdGhlbgogICAgICAgIGhpZGRlbj0ieWVz IjsKICAgICAgICBzaGlmdDsKICAgIGZpOwogICAgbG9jYWwgbWlzc2luZ19hY3Rpb249ImRpZSI7 CiAgICBpZiBbWyAkMSA9PSAiLS1taXNzaW5nIiBdXTsgdGhlbgogICAgICAgIG1pc3NpbmdfYWN0 aW9uPSQyOwogICAgICAgIHNoaWZ0OwogICAgICAgIHNoaWZ0OwogICAgICAgIGNhc2UgJHttaXNz aW5nX2FjdGlvbn0gaW4gCiAgICAgICAgICAgIHRydWUgfCBmYWxzZSB8IGRpZSkKCiAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBkaWUgInVua25vd24gYWN0aW9u ICcke21pc3NpbmdfYWN0aW9ufSciCiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZp OwogICAgbG9jYWwgb3B0PSQxOwogICAgW1sgJHtvcHQ6MDoxfSA9ICItIiBdXSAmJiBzaGlmdCB8 fCBvcHQ9Ii1hIjsKICAgIGxvY2FsIFBLRz0kKGJlc3RfdmVyc2lvbiAkMSk7CiAgICBbWyAteiAk e1BLR30gXV0gJiYgZGllICJVbmFibGUgdG8gcmVzb2x2ZSAkMSB0byBhbiBpbnN0YWxsZWQgcGFj a2FnZSI7CiAgICBzaGlmdDsKICAgIGxvY2FsIFVTRUZJTEU9JHtFUk9PVH0vdmFyL2RiL3BrZy8k e1BLR30vVVNFOwogICAgbG9jYWwgSVVTRUZJTEU9JHtFUk9PVH0vdmFyL2RiL3BrZy8ke1BLR30v SVVTRTsKICAgIGlmIFtbICEgLWUgJHtVU0VGSUxFfSBdXSB8fCBbWyAhIC1lICR7SVVTRUZJTEV9 ICYmICR7aGlkZGVufSA9PSAibm8iIF1dOyB0aGVuCiAgICAgICAgY2FzZSAke21pc3NpbmdfYWN0 aW9ufSBpbiAKICAgICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAgICAgIHJldHVybiAwCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIGZhbHNlKQogICAgICAgICAgICAgICAgcmV0dXJuIDEKICAg ICAgICAgICAgOzsKICAgICAgICAgICAgZGllKQogICAgICAgICAgICAgICAgZGllICJVbmFibGUg dG8gZGV0ZXJtaW5lIHdoYXQgVVNFIGZsYWdzICRQS0cgd2FzIGJ1aWx0IHdpdGgiCiAgICAgICAg ICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgaWYgW1sgJHtoaWRkZW59ID09ICJubyIg XV07IHRoZW4KICAgICAgICBsb2NhbCBJVVNFX0JVSUxUPSgkKDwiJHtJVVNFRklMRX0iKSk7CiAg ICAgICAgbG9jYWwgZXhwYW5kOwogICAgICAgIGZvciBleHBhbmQgaW4gJChlY2hvICR7VVNFX0VY UEFORH0gfCB0ciAnWzp1cHBlcjpdJyAnWzpsb3dlcjpdJyk7CiAgICAgICAgZG8KICAgICAgICAg ICAgaWYgW1sgJDEgPT0gJHtleHBhbmR9XyogXV07IHRoZW4KICAgICAgICAgICAgICAgIGV4cGFu ZD0iIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25l OwogICAgICAgIGlmIFtbIC1uICR7ZXhwYW5kfSBdXTsgdGhlbgogICAgICAgICAgICBpZiAhIGhh cyAkMSAke0lVU0VfQlVJTFRbQF0jWy0rXX07IHRoZW4KICAgICAgICAgICAgICAgIGNhc2UgJHtt aXNzaW5nX2FjdGlvbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgdHJ1ZSkKICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAg ICAgICAgIGZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQogICAgICAgICAg ICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZGllKQogICAgICAgICAgICAgICAgICAg ICAgICBkaWUgIiRQS0cgZG9lcyBub3QgYWN0dWFsbHkgc3VwcG9ydCB0aGUgJDEgVVNFIGZsYWch IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAg ICBmaTsKICAgICAgICBmaTsKICAgIGZpOwogICAgbG9jYWwgVVNFX0JVSUxUPSQoPCR7VVNFRklM RX0pOwogICAgd2hpbGUgW1sgJCMgLWd0IDAgXV07IGRvCiAgICAgICAgaWYgW1sgJHtvcHR9ID0g Ii1vIiBdXTsgdGhlbgogICAgICAgICAgICBoYXMgJDEgJHtVU0VfQlVJTFR9ICYmIHJldHVybiAw OwogICAgICAgIGVsc2UKICAgICAgICAgICAgaGFzICQxICR7VVNFX0JVSUxUfSB8fCByZXR1cm4g MTsKICAgICAgICBmaTsKICAgICAgICBzaGlmdDsKICAgIGRvbmU7CiAgICBbWyAke29wdH0gPSAi LWEiIF1dCn0KY2hlY2tfbGljZW5zZSAoKSAKeyAKICAgIGRpZSAieW91IG5vIGxvbmdlciBuZWVk IHRoaXMgYXMgcG9ydGFnZSBzdXBwb3J0cyBBQ0NFUFRfTElDRU5TRSBpdHNlbGYiCn0KZGVsZXRl X2FsbF92ZXJzaW9uX3NlcGFyYXRvcnMgKCkgCnsgCiAgICByZXBsYWNlX2FsbF92ZXJzaW9uX3Nl cGFyYXRvcnMgIiIgIiR7MX0iCn0KZGVsZXRlX3ZlcnNpb25fc2VwYXJhdG9yICgpIAp7IAogICAg cmVwbGFjZV92ZXJzaW9uX3NlcGFyYXRvciAiJHsxfSIgIiIgIiR7Mn0iCn0KZGlzdHV0aWxzLXIx X3B5dGhvbl9jb21waWxlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFN RX0gIiR7QH0iOwogICAgX2Rpc3R1dGlscy1yMV9jcmVhdGVfc2V0dXBfY2ZnOwogICAgX2Rpc3R1 dGlscy1yMV9jb3B5X2VnZ19pbmZvOwogICAgZXNldHVwLnB5IGJ1aWxkICIke0B9Igp9CmRpc3R1 dGlscy1yMV9weXRob25fY29uZmlndXJlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24g JHtGVU5DTkFNRX0gIiR7QH0iOwogICAgOgp9CmRpc3R1dGlscy1yMV9weXRob25faW5zdGFsbCAo KSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxv Y2FsIGFyZ3M9KCIke0B9Iik7CiAgICBsb2NhbCAteCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT07 CiAgICBfZGlzdHV0aWxzLXIxX2NyZWF0ZV9zZXR1cF9jZmc7CiAgICBhZGRwcmVkaWN0ICIkKHB5 dGhvbl9nZXRfc2l0ZWRpcikiOwogICAgYWRkcHJlZGljdCAvdXNyL2xpYi9wb3J0YWdlL3B5bTsK ICAgIGFkZHByZWRpY3QgL3Vzci9sb2NhbDsKICAgIGlmIFtbICEgLW4gJHtESVNUVVRJTFNfU0lO R0xFX0lNUEx9IF1dOyB0aGVuCiAgICAgICAgbG9jYWwgbXlkaXN0dXRpbHNhcmdzPSgiJHtteWRp c3R1dGlsc2FyZ3NbQF19Iik7CiAgICAgICAgbG9jYWwgc2NyaXB0ZGlyPSR7RVBSRUZJWH0vdXNy L2JpbjsKICAgICAgICBsb2NhbCBhcmcgYXJnX3ZhcnM7CiAgICAgICAgW1sgLW4gJHtteWRpc3R1 dGlsc2FyZ3NbQF19IF1dICYmIGV2YWwgYXJnX3ZhcnMrPSgnbXlkaXN0dXRpbHNhcmdzWyd7MC4u JCgoICR7I215ZGlzdHV0aWxzYXJnc1tAXX0gLSAxICkpfSddJyk7CiAgICAgICAgW1sgLW4gJHth cmdzW0BdfSBdXSAmJiBldmFsIGFyZ192YXJzKz0oJ2FyZ3NbJ3swLi4kKCggJHsjYXJnc1tAXX0g LSAxICkpfSddJyk7CiAgICAgICAgc2V0IC0tICIke2FyZ192YXJzW0BdfSI7CiAgICAgICAgd2hp bGUgW1sgLW4gJHtAfSBdXTsgZG8KICAgICAgICAgICAgbG9jYWwgYXJnX3Zhcj0kezF9OwogICAg ICAgICAgICBzaGlmdDsKICAgICAgICAgICAgbG9jYWwgYT0keyFhcmdfdmFyfTsKICAgICAgICAg ICAgY2FzZSAiJHthfSIgaW4gCiAgICAgICAgICAgICAgICAtLWluc3RhbGwtc2NyaXB0cz0qKQog ICAgICAgICAgICAgICAgICAgIHNjcmlwdGRpcj0ke2EjLS1pbnN0YWxsLXNjcmlwdHM9fTsKICAg ICAgICAgICAgICAgICAgICBpZiBfcHl0aG9uX3dhbnRfcHl0aG9uX2V4ZWMyOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgICAgIHVuc2V0ICIke2FyZ192YXJ9IjsKICAgICAgICAgICAgICAgICAg ICBmaQogICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIC0taW5zdGFsbC1zY3JpcHRz KQogICAgICAgICAgICAgICAgICAgIHNjcmlwdGRpcj0keyExfTsKICAgICAgICAgICAgICAgICAg ICBpZiBfcHl0aG9uX3dhbnRfcHl0aG9uX2V4ZWMyOyB0aGVuCiAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2V0ICIke2FyZ192YXJ9IiAiJHsxfSI7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAg ICAgICAgICAgICAgICAgICAgc2hpZnQKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgIGVz YWM7CiAgICAgICAgZG9uZTsKICAgIGZpOwogICAgbG9jYWwgcm9vdD0ke0R9L18ke0VQWVRIT059 OwogICAgW1sgLW4gJHtESVNUVVRJTFNfU0lOR0xFX0lNUEx9IF1dICYmIHJvb3Q9JHtEfTsKICAg IGVzZXR1cC5weSBpbnN0YWxsIC0tcm9vdD0iJHtyb290fSIgIiR7YXJnc1tAXX0iOwogICAgaWYg W1sgLWQgJHtyb290fSQocHl0aG9uX2dldF9zaXRlZGlyKS90ZXN0cyBdXTsgdGhlbgogICAgICAg IGRpZSAiUGFja2FnZSBpbnN0YWxscyAndGVzdHMnIHBhY2thZ2UsIGZpbGUgY29sbGlzaW9ucyBs aWtlbHkuIjsKICAgIGZpOwogICAgaWYgW1sgLWQgJHtyb290fS91c3IvJChnZXRfbGliZGlyKS9w eXB5L3NoYXJlIF1dOyB0aGVuCiAgICAgICAgZGllICJQYWNrYWdlIGluc3RhbGxzICdzaGFyZScg aW4gUHlQeSBwcmVmaXgsIHNlZSBidWcgIzQ2NTU0Ni4iOwogICAgZmk7CiAgICBpZiBbWyAhIC1u ICR7RElTVFVUSUxTX1NJTkdMRV9JTVBMfSBdXTsgdGhlbgogICAgICAgIF9kaXN0dXRpbHMtcjFf d3JhcF9zY3JpcHRzICIke3Jvb3R9IiAiJHtzY3JpcHRkaXJ9IjsKICAgICAgICBtdWx0aWJ1aWxk X21lcmdlX3Jvb3QgIiR7cm9vdH0iICIke0R9IjsKICAgIGZpCn0KZGlzdHV0aWxzLXIxX3B5dGhv bl9pbnN0YWxsX2FsbCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIke0B9IjsKICAgIGVpbnN0YWxsZG9jczsKICAgIGlmIGRlY2xhcmUgLXAgRVhBTVBMRVMgJj4v ZGV2L251bGw7IHRoZW4KICAgICAgICBsb2NhbCBJTlNERVNUVFJFRT0vdXNyL3NoYXJlL2RvYy8k e1BGfS9leGFtcGxlczsKICAgICAgICBkb2lucyAtciAiJHtFWEFNUExFU1tAXX0iOwogICAgICAg IGRvY29tcHJlc3MgLXggIiR7SU5TREVTVFRSRUV9IjsKICAgIGZpOwogICAgX0RJU1RVVElMU19E RUZBVUxUX0NBTExFRD0xCn0KZGlzdHV0aWxzLXIxX3B5dGhvbl9wcmVwYXJlICgpIAp7IAogICAg ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgOgp9CmRpc3R1dGls cy1yMV9weXRob25fcHJlcGFyZV9hbGwgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAk e0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBbWyAtbiAke1BBVENIRVN9IF1dICYmIGVwYXRjaCAiJHtQ QVRDSEVTW0BdfSI7CiAgICBlcGF0Y2hfdXNlcjsKICAgIGlmIFtbICEgLW4gJHtESVNUVVRJTFNf SU5fU09VUkNFX0JVSUxEKzF9IF1dOyB0aGVuCiAgICAgICAgaWYgZGVjbGFyZSAtZiBweXRob25f cHJlcGFyZSA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICBESVNUVVRJTFNfSU5fU09VUkNF X0JVSUxEPTE7CiAgICAgICAgZmk7CiAgICBmaTsKICAgIF9kaXN0dXRpbHMtcjFfZGlzYWJsZV9l el9zZXR1cDsKICAgIGlmIFtbIC1uICR7RElTVFVUSUxTX0lOX1NPVVJDRV9CVUlMRH0gJiYgISAt biAke0RJU1RVVElMU19TSU5HTEVfSU1QTH0gXV07IHRoZW4KICAgICAgICBweXRob25fY29weV9z b3VyY2VzOwogICAgZmk7CiAgICBfRElTVFVUSUxTX0RFRkFVTFRfQ0FMTEVEPTEKfQpkaXN0dXRp bHMtcjFfcnVuX3BoYXNlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFN RX0gIiR7QH0iOwogICAgaWYgW1sgLW4gJHtESVNUVVRJTFNfSU5fU09VUkNFX0JVSUxEfSBdXTsg dGhlbgogICAgICAgIGlmIFtbICEgLW4gJHtESVNUVVRJTFNfU0lOR0xFX0lNUEx9IF1dOyB0aGVu CiAgICAgICAgICAgIHB1c2hkICIke0JVSUxEX0RJUn0iID4gL2Rldi9udWxsIHx8IGRpZTsKICAg ICAgICBmaTsKICAgICAgICBsb2NhbCBCVUlMRF9ESVI9JHtCVUlMRF9ESVJ9L2J1aWxkOwogICAg Zmk7CiAgICBsb2NhbCAteCBQWVRIT05QQVRIPSIke0JVSUxEX0RJUn0vbGliOiR7UFlUSE9OUEFU SH0iOwogICAgaWYgW1sgISAtbiAke0RJU1RVVElMU19TSU5HTEVfSU1QTH0gXV07IHRoZW4KICAg ICAgICBsb2NhbCAteCBUTVBESVI9JHtUfS8ke0VQWVRIT059OwogICAgICAgIGxvY2FsIC14IEhP TUU9JHtUTVBESVJ9L2hvbWU7CiAgICAgICAgbWtkaXIgLXAgIiR7VE1QRElSfSIgIiR7SE9NRX0i IHx8IGRpZTsKICAgIGZpOwogICAgbG9jYWwgLXggQVI9JHtBUn0gQ0M9JHtDQ30gQ1BQPSR7Q1BQ fSBDWFg9JHtDWFh9OwogICAgdGMtZXhwb3J0IEFSIENDIENQUCBDWFg7CiAgICBsb2NhbCBsZG9w dHM7CiAgICBjYXNlICIke0NIT1NUfSIgaW4gCiAgICAgICAgKi1haXgqKQogICAgICAgICAgICBs ZG9wdHM9Jy1zaGFyZWQgLVdsLC1iZXJvaycKICAgICAgICA7OwogICAgICAgICotZGFyd2luKikK ICAgICAgICAgICAgbGRvcHRzPSctYnVuZGxlIC11bmRlZmluZWQgZHluYW1pY19sb29rdXAnCiAg ICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBsZG9wdHM9Jy1zaGFyZWQnCiAgICAgICAg OzsKICAgIGVzYWM7CiAgICBsb2NhbCAteCBMRFNIQVJFRD0iJHtDQ30gJHtsZG9wdHN9IiBMRENY WFNIQVJFRD0iJHtDWFh9ICR7bGRvcHRzfSI7CiAgICAiJHtAfSI7CiAgICBpZiBbWyAtbiAke0RJ U1RVVElMU19JTl9TT1VSQ0VfQlVJTER9ICYmICEgLW4gJHtESVNUVVRJTFNfU0lOR0xFX0lNUEx9 IF1dOyB0aGVuCiAgICAgICAgcG9wZCA+IC9kZXYvbnVsbCB8fCBkaWU7CiAgICBmaQp9CmRpc3R1 dGlscy1yMV9zcmNfY29tcGlsZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVO Q05BTUV9ICIke0B9IjsKICAgIGlmIGRlY2xhcmUgLWYgcHl0aG9uX2NvbXBpbGUgPiAvZGV2L251 bGw7IHRoZW4KICAgICAgICBfZGlzdHV0aWxzLXIxX3J1bl9mb3JlYWNoX2ltcGwgcHl0aG9uX2Nv bXBpbGU7CiAgICBlbHNlCiAgICAgICAgX2Rpc3R1dGlscy1yMV9ydW5fZm9yZWFjaF9pbXBsIGRp c3R1dGlscy1yMV9weXRob25fY29tcGlsZTsKICAgIGZpOwogICAgaWYgZGVjbGFyZSAtZiBweXRo b25fY29tcGlsZV9hbGwgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBfZGlzdHV0aWxzLXIxX3J1 bl9jb21tb25fcGhhc2UgcHl0aG9uX2NvbXBpbGVfYWxsOwogICAgZmkKfQpkaXN0dXRpbHMtcjFf c3JjX2NvbmZpZ3VyZSAoKSAKeyAKICAgIHB5dGhvbl9leHBvcnRfdXRmOF9sb2NhbGU7CiAgICBp ZiBkZWNsYXJlIC1mIHB5dGhvbl9jb25maWd1cmUgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBf ZGlzdHV0aWxzLXIxX3J1bl9mb3JlYWNoX2ltcGwgcHl0aG9uX2NvbmZpZ3VyZTsKICAgIGZpOwog ICAgaWYgZGVjbGFyZSAtZiBweXRob25fY29uZmlndXJlX2FsbCA+IC9kZXYvbnVsbDsgdGhlbgog ICAgICAgIF9kaXN0dXRpbHMtcjFfcnVuX2NvbW1vbl9waGFzZSBweXRob25fY29uZmlndXJlX2Fs bDsKICAgIGZpCn0KZGlzdHV0aWxzLXIxX3NyY19pbnN0YWxsICgpIAp7IAogICAgZGVidWctcHJp bnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgaWYgZGVjbGFyZSAtZiBweXRob25f aW5zdGFsbCA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgIF9kaXN0dXRpbHMtcjFfcnVuX2ZvcmVh Y2hfaW1wbCBweXRob25faW5zdGFsbDsKICAgIGVsc2UKICAgICAgICBfZGlzdHV0aWxzLXIxX3J1 bl9mb3JlYWNoX2ltcGwgZGlzdHV0aWxzLXIxX3B5dGhvbl9pbnN0YWxsOwogICAgZmk7CiAgICBs b2NhbCBfRElTVFVUSUxTX0RFRkFVTFRfQ0FMTEVEOwogICAgaWYgZGVjbGFyZSAtZiBweXRob25f aW5zdGFsbF9hbGwgPiAvZGV2L251bGw7IHRoZW4KICAgICAgICBfZGlzdHV0aWxzLXIxX3J1bl9j b21tb25fcGhhc2UgcHl0aG9uX2luc3RhbGxfYWxsOwogICAgZWxzZQogICAgICAgIF9kaXN0dXRp bHMtcjFfcnVuX2NvbW1vbl9waGFzZSBkaXN0dXRpbHMtcjFfcHl0aG9uX2luc3RhbGxfYWxsOwog ICAgZmk7CiAgICBpZiBbWyAhIC1uICR7X0RJU1RVVElMU19ERUZBVUxUX0NBTExFRH0gXV07IHRo ZW4KICAgICAgICBlcWF3YXJuICJRQSB3YXJuaW5nOiBweXRob25faW5zdGFsbF9hbGwoKSBkaWRu J3QgY2FsbCBkaXN0dXRpbHMtcjFfcHl0aG9uX2luc3RhbGxfYWxsIjsKICAgIGZpCn0KZGlzdHV0 aWxzLXIxX3NyY19wcmVwYXJlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5D TkFNRX0gIiR7QH0iOwogICAgbG9jYWwgX0RJU1RVVElMU19ERUZBVUxUX0NBTExFRDsKICAgIGlm IGRlY2xhcmUgLWYgcHl0aG9uX3ByZXBhcmVfYWxsID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAg cHl0aG9uX3ByZXBhcmVfYWxsOwogICAgZWxzZQogICAgICAgIGRpc3R1dGlscy1yMV9weXRob25f cHJlcGFyZV9hbGw7CiAgICBmaTsKICAgIGlmIFtbICEgLW4gJHtfRElTVFVUSUxTX0RFRkFVTFRf Q0FMTEVEfSBdXTsgdGhlbgogICAgICAgIGVxYXdhcm4gIlFBIHdhcm5pbmc6IHB5dGhvbl9wcmVw YXJlX2FsbCgpIGRpZG4ndCBjYWxsIGRpc3R1dGlscy1yMV9weXRob25fcHJlcGFyZV9hbGwiOwog ICAgZmk7CiAgICBpZiBkZWNsYXJlIC1mIHB5dGhvbl9wcmVwYXJlID4gL2Rldi9udWxsOyB0aGVu CiAgICAgICAgX2Rpc3R1dGlscy1yMV9ydW5fZm9yZWFjaF9pbXBsIHB5dGhvbl9wcmVwYXJlOwog ICAgZmkKfQpkaXN0dXRpbHMtcjFfc3JjX3Rlc3QgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5j dGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBpZiBkZWNsYXJlIC1mIHB5dGhvbl90ZXN0ID4g L2Rldi9udWxsOyB0aGVuCiAgICAgICAgX2Rpc3R1dGlscy1yMV9ydW5fZm9yZWFjaF9pbXBsIHB5 dGhvbl90ZXN0OwogICAgZmk7CiAgICBpZiBkZWNsYXJlIC1mIHB5dGhvbl90ZXN0X2FsbCA+IC9k ZXYvbnVsbDsgdGhlbgogICAgICAgIF9kaXN0dXRpbHMtcjFfcnVuX2NvbW1vbl9waGFzZSBweXRo b25fdGVzdF9hbGw7CiAgICBmaQp9CmRpc3R1dGlsc19pbnN0YWxsX2Zvcl90ZXN0aW5nICgpIAp7 IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgVEVTVF9E SVI9JHtCVUlMRF9ESVJ9L3Rlc3Q7CiAgICBsb2NhbCBiaW5kaXI9JHtURVNUX0RJUn0vc2NyaXB0 czsKICAgIGxvY2FsIGxpYmRpcj0ke1RFU1RfRElSfS9saWI7CiAgICBQWVRIT05QQVRIPSR7bGli ZGlyfToke1BZVEhPTlBBVEh9OwogICAgbG9jYWwgYWRkX2FyZ3M9KGluc3RhbGwgLS1ob21lPSIk e1RFU1RfRElSfSIgLS1pbnN0YWxsLWxpYj0iJHtsaWJkaXJ9IiAtLWluc3RhbGwtc2NyaXB0cz0i JHtiaW5kaXJ9Iik7CiAgICBta2RpciAtcCAiJHtsaWJkaXJ9IiB8fCBkaWU7CiAgICBlc2V0dXAu cHkgIiR7YWRkX2FyZ3NbQF19IiAiJHtAfSIKfQpkb2ljb24gKCkgCnsgCiAgICBfaWNvbmlucyAk e0ZVTkNOQU1FfSAiJEAiCn0KZG9tZW51ICgpIAp7IAogICAgKCBsb2NhbCBpIGogcmV0PTA7CiAg ICBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgZm9yIGkgaW4gIiRAIjsKICAg IGRvCiAgICAgICAgaWYgW1sgLWYgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICBkb2lucyAiJHtp fSI7CiAgICAgICAgICAgICgocmV0Kz0kPykpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYg W1sgLWQgJHtpfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZm9yIGogaW4gIiR7aX0iLyouZGVz a3RvcDsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgZG9pbnMgIiR7an0i OwogICAgICAgICAgICAgICAgICAgICgocmV0Kz0kPykpOwogICAgICAgICAgICAgICAgZG9uZTsK ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKCgrK3JldCkpOwogICAgICAgICAgICBm aTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBleGl0ICR7cmV0fSApCn0KZWJlZXAgKCkgCnsg CiAgICBld2FybiAiUUEgTm90aWNlOiBlYmVlcCBpcyBub3QgZGVmaW5lZCBpbiBFQVBJPSR7RUFQ SX0sIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGh0dHA6Ly9idWdzLmdlbnRvby5vcmciCn0KZWNvbmZf YnVpbGQgKCkgCnsgCiAgICB0Yy1lbnZfYnVpbGQgZWNvbmYgLS1idWlsZD0ke0NCVUlMRDotJHtD SE9TVH19ICIkQCIKfQplY3ZzX2NsZWFuICgpIAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0t IC47CiAgICBmaW5kICIkQCIgLXR5cGUgZCAtbmFtZSAnQ1ZTJyAtcHJ1bmUgLXByaW50MCB8IHhh cmdzIC0wIHJtIC1yZjsKICAgIGZpbmQgIiRAIiAtdHlwZSBmIC1uYW1lICcuY3ZzKicgLXByaW50 MCB8IHhhcmdzIC0wIHJtIC1yZgp9CmVkb3MydW5peCAoKSAKeyAKICAgIFtbICQjIC1lcSAwIF1d ICYmIHJldHVybiAwOwogICAgc2VkIC1pICdzL1xyJC8vJyAtLSAiJEAiIHx8IGRpZQp9CmVpbnN0 YWxsZG9jcyAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9 IjsKICAgIGxvY2FsIGRvZG9jX29wdHM9LXI7CiAgICBoYXMgJHtFQVBJfSAwIDEgMiAzICYmIGRv ZG9jX29wdHM9OwogICAgaWYgISBkZWNsYXJlIC1wIERPQ1MgJj4vZGV2L251bGw7IHRoZW4KICAg ICAgICBsb2NhbCBkOwogICAgICAgIGZvciBkIGluIFJFQURNRSogQ2hhbmdlTG9nIEFVVEhPUlMg TkVXUyBUT0RPIENIQU5HRVMgVEhBTktTIEJVR1MgRkFRIENSRURJVFMgQ0hBTkdFTE9HOwogICAg ICAgIGRvCiAgICAgICAgICAgIGlmIFtbIC1zICR7ZH0gXV07IHRoZW4KICAgICAgICAgICAgICAg IGRvZG9jICIke2R9IiB8fCBkaWU7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmU7CiAgICBl bHNlCiAgICAgICAgaWYgW1sgJChkZWNsYXJlIC1wIERPQ1MpID09ICJkZWNsYXJlIC1hIiogXV07 IHRoZW4KICAgICAgICAgICAgaWYgW1sgLW4gJHtET0NTW0BdfSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgZG9kb2MgJHtkb2RvY19vcHRzfSAiJHtET0NTW0BdfSIgfHwgZGllOwogICAgICAgICAg ICBmaTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGlmIFtbIC1uICR7RE9DU30gXV07IHRoZW4K ICAgICAgICAgICAgICAgIGRvZG9jICR7ZG9kb2Nfb3B0c30gJHtET0NTfSB8fCBkaWU7CiAgICAg ICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBpZiBbWyAkKGRlY2xhcmUgLXAgSFRN TF9ET0NTIDI+L2Rldi9udWxsKSA9PSAiZGVjbGFyZSAtYSIqIF1dOyB0aGVuCiAgICAgICAgaWYg W1sgLW4gJHtIVE1MX0RPQ1NbQF19IF1dOyB0aGVuCiAgICAgICAgICAgIGRvaHRtbCAtciAiJHtI VE1MX0RPQ1NbQF19IiB8fCBkaWU7CiAgICAgICAgZmk7CiAgICBlbHNlCiAgICAgICAgaWYgW1sg LW4gJHtIVE1MX0RPQ1N9IF1dOyB0aGVuCiAgICAgICAgICAgIGRvaHRtbCAtciAke0hUTUxfRE9D U30gfHwgZGllOwogICAgICAgIGZpOwogICAgZmk7CiAgICByZXR1cm4gMAp9CmVta3RlbXAgKCkg CnsgCiAgICBsb2NhbCBleGU9InRvdWNoIjsKICAgIFtbICQxID09IC1kIF1dICYmIGV4ZT0ibWtk aXIiICYmIHNoaWZ0OwogICAgbG9jYWwgdG9wZGlyPSQxOwogICAgaWYgW1sgLXogJHt0b3BkaXJ9 IF1dOyB0aGVuCiAgICAgICAgW1sgLXogJHtUfSBdXSAmJiB0b3BkaXI9Ii90bXAiIHx8IHRvcGRp cj0ke1R9OwogICAgZmk7CiAgICBpZiAhIHR5cGUgLVAgbWt0ZW1wID4gL2Rldi9udWxsOyB0aGVu CiAgICAgICAgbG9jYWwgdG1wPS87CiAgICAgICAgd2hpbGUgW1sgLWUgJHt0bXB9IF1dOyBkbwog ICAgICAgICAgICB0bXA9JHt0b3BkaXJ9L3RtcC4ke1JBTkRPTX0uJHtSQU5ET019LiR7UkFORE9N fTsKICAgICAgICBkb25lOwogICAgICAgICR7ZXhlfSAiJHt0bXB9IiB8fCAke2V4ZX0gLXAgIiR7 dG1wfSI7CiAgICAgICAgZWNobyAiJHt0bXB9IjsKICAgIGVsc2UKICAgICAgICBpZiBbWyAke2V4 ZX0gPT0gInRvdWNoIiBdXTsgdGhlbgogICAgICAgICAgICBUTVBESVI9IiR7dG9wZGlyfSIgbWt0 ZW1wIC10IHRtcC5YWFhYWFhYWFhYOwogICAgICAgIGVsc2UKICAgICAgICAgICAgVE1QRElSPSIk e3RvcGRpcn0iIG1rdGVtcCAtZHQgdG1wLlhYWFhYWFhYWFg7CiAgICAgICAgZmk7CiAgICBmaQp9 CmVwYXRjaCAoKSAKeyAKICAgIGZ1bmN0aW9uIF9lcGF0Y2hfZHJhd19saW5lICgpIAogICAgeyAK ICAgICAgICBbWyAteiAkMSBdXSAmJiBzZXQgIiQocHJpbnRmICIlNjVzIiAnJykiOwogICAgICAg IGVjaG8gIiR7MS8vPy89fSIKICAgIH07CiAgICB1bnNldCBQNENPTkZJRyBQNFBPUlQgUDRVU0VS OwogICAgbG9jYWwgRVBBVENIX09QVFM9KCR7RVBBVENIX09QVFNbKl19KTsKICAgIHdoaWxlIFtb ICQjIC1ndCAwIF1dOyBkbwogICAgICAgIGNhc2UgJDEgaW4gCiAgICAgICAgICAgIC0qKQogICAg ICAgICAgICAgICAgRVBBVENIX09QVFMrPSgiJDEiKQogICAgICAgICAgICA7OwogICAgICAgICAg ICAqKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwog ICAgICAgIHNoaWZ0OwogICAgZG9uZTsKICAgIGlmIFtbICQjIC1ndCAxIF1dOyB0aGVuCiAgICAg ICAgbG9jYWwgbTsKICAgICAgICBmb3IgbSBpbiAiJEAiOwogICAgICAgIGRvCiAgICAgICAgICAg IGVwYXRjaCAiJHttfSI7CiAgICAgICAgZG9uZTsKICAgICAgICByZXR1cm4gMDsKICAgIGZpOwog ICAgbG9jYWwgU0lOR0xFX1BBVENIPSJubyI7CiAgICBbWyAkIyAtZXEgMCBdXSAmJiBzZXQgLS0g IiR7RVBBVENIX1NPVVJDRX0iOwogICAgaWYgW1sgLWYgJDEgXV07IHRoZW4KICAgICAgICBTSU5H TEVfUEFUQ0g9InllcyI7CiAgICAgICAgc2V0IC0tICIkMSI7CiAgICAgICAgbG9jYWwgRVBBVENI X1NVRkZJWD0kMTsKICAgIGVsc2UKICAgICAgICBpZiBbWyAtZCAkMSBdXTsgdGhlbgogICAgICAg ICAgICBldmFyX3B1c2hfc2V0IExDX0NPTExBVEUgQzsKICAgICAgICAgICAgc2V0IC0tICIkMSIv KiR7RVBBVENIX1NVRkZJWDorLiIke0VQQVRDSF9TVUZGSVh9In07CiAgICAgICAgICAgIGV2YXJf cG9wOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLWYgJHtFUEFUQ0hfU09VUkNFfS8k MSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZXBhdGNoICIke0VQQVRDSF9TT1VSQ0V9LyQxIjsK ICAgICAgICAgICAgICAgIHJldHVybiAkPzsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg ICAgW1sgJCMgLW5lIDAgXV0gJiYgRVBBVENIX1NPVVJDRT0kMTsKICAgICAgICAgICAgICAgIGVj aG87CiAgICAgICAgICAgICAgICBlZXJyb3IgIkNhbm5vdCBmaW5kIFwkRVBBVENIX1NPVVJDRSEg IFZhbHVlIGZvciBcJEVQQVRDSF9TT1VSQ0UgaXM6IjsKICAgICAgICAgICAgICAgIGVlcnJvcjsK ICAgICAgICAgICAgICAgIGVlcnJvciAiICAke0VQQVRDSF9TT1VSQ0V9IjsKICAgICAgICAgICAg ICAgIGVlcnJvciAiICAoICR7RVBBVENIX1NPVVJDRSMjKi99ICkiOwogICAgICAgICAgICAgICAg ZWNobzsKICAgICAgICAgICAgICAgIGRpZSAiQ2Fubm90IGZpbmQgXCRFUEFUQ0hfU09VUkNFISI7 CiAgICAgICAgICAgIGZpOwogICAgICAgIGZpOwogICAgZmk7CiAgICBFUEFUQ0hfT1BUUz0iJHtF UEFUQ0hfQ09NTU9OX09QVFN9ICR7RVBBVENIX09QVFNbKl19IjsKICAgIGxvY2FsIFBJUEVfQ01E OwogICAgY2FzZSAke0VQQVRDSF9TVUZGSVgjIypcLn0gaW4gCiAgICAgICAgeHopCiAgICAgICAg ICAgIFBJUEVfQ01EPSJ4eiAtZGMiCiAgICAgICAgOzsKICAgICAgICBsem1hKQogICAgICAgICAg ICBQSVBFX0NNRD0ibHptYSAtZGMiCiAgICAgICAgOzsKICAgICAgICBiejIpCiAgICAgICAgICAg IFBJUEVfQ01EPSJiemlwMiAtZGMiCiAgICAgICAgOzsKICAgICAgICBneiB8IFogfCB6KQogICAg ICAgICAgICBQSVBFX0NNRD0iZ3ppcCAtZGMiCiAgICAgICAgOzsKICAgICAgICBaSVAgfCB6aXAp CiAgICAgICAgICAgIFBJUEVfQ01EPSJ1bnppcCAtcCIKICAgICAgICA7OwogICAgICAgICopCgog ICAgICAgIDs7CiAgICBlc2FjOwogICAgW1sgJHtTSU5HTEVfUEFUQ0h9ID09ICJubyIgXV0gJiYg ZWluZm8gIiR7RVBBVENIX01VTFRJX01TR30iOwogICAgbG9jYWwgeDsKICAgIGZvciB4IGluICIk QCI7CiAgICBkbwogICAgICAgIFtbICEgLWYgJHt4fSBdXSAmJiBjb250aW51ZTsKICAgICAgICBs b2NhbCBwYXRjaG5hbWU9JHt4IyMqL307CiAgICAgICAgbG9jYWwgYT0ke3BhdGNobmFtZSMqX307 CiAgICAgICAgYT0ke2ElJV8qfTsKICAgICAgICBpZiAhIFtbICR7U0lOR0xFX1BBVENIfSA9PSAi eWVzIiB8fCAke0VQQVRDSF9GT1JDRX0gPT0gInllcyIgfHwgJHthfSA9PSBhbGwgfHwgJHthfSA9 PSAke0FSQ0h9IF1dOyB0aGVuCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIGZpOwogICAg ICAgIGlmIFtbIC1uICR7RVBBVENIX0VYQ0xVREV9JHtFUEFUQ0hfVVNFUl9FWENMVURFfSBdXTsg dGhlbgogICAgICAgICAgICBlc2hvcHRzX3B1c2ggLW8gbm9nbG9iOwogICAgICAgICAgICBsb2Nh bCBleDsKICAgICAgICAgICAgZm9yIGV4IGluICR7RVBBVENIX0VYQ0xVREV9OwogICAgICAgICAg ICBkbwogICAgICAgICAgICAgICAgaWYgW1sgJHtwYXRjaG5hbWV9ID09ICR7ZXh9IF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgZWluZm8gIiAgU2tpcHBpbmcgJHtwYXRjaG5hbWV9IGR1ZSB0 byBFUEFUQ0hfRVhDTFVERSAuLi4iOwogICAgICAgICAgICAgICAgICAgIGVzaG9wdHNfcG9wOwog ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAg ICAgICAgZG9uZTsKICAgICAgICAgICAgZm9yIGV4IGluICR7RVBBVENIX1VTRVJfRVhDTFVERX07 CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiBbWyAke3BhdGNobmFtZX0gPT0gJHtl eH0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBlaW5mbyAiICBTa2lwcGluZyAke3BhdGNo bmFtZX0gZHVlIHRvIEVQQVRDSF9VU0VSX0VYQ0xVREUgLi4uIjsKICAgICAgICAgICAgICAgICAg ICBlc2hvcHRzX3BvcDsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAg ICAgICAgZmk7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGVzaG9wdHNfcG9wOwogICAg ICAgIGZpOwogICAgICAgIGlmIFtbICR7U0lOR0xFX1BBVENIfSA9PSAieWVzIiBdXTsgdGhlbgog ICAgICAgICAgICBpZiBbWyAtbiAke0VQQVRDSF9TSU5HTEVfTVNHfSBdXTsgdGhlbgogICAgICAg ICAgICAgICAgZWluZm8gIiR7RVBBVENIX1NJTkdMRV9NU0d9IjsKICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgZWluZm8gIkFwcGx5aW5nICR7cGF0Y2huYW1lfSAuLi4iOwogICAgICAg ICAgICBmaTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGVpbmZvICIgICR7cGF0Y2huYW1lfSAu Li4iOwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIFNUREVSUl9UQVJHRVQ9IiR7VH0vJHtwYXRj aG5hbWV9Lm91dCI7CiAgICAgICAgaWYgW1sgLWUgJHtTVERFUlJfVEFSR0VUfSBdXTsgdGhlbgog ICAgICAgICAgICBTVERFUlJfVEFSR0VUPSIke1R9LyR7cGF0Y2huYW1lfS0kJC5vdXQiOwogICAg ICAgIGZpOwogICAgICAgIHByaW50ZiAiKioqKiogJXMgKioqKipcblBXRDogJXNcblxuIiAiJHtw YXRjaG5hbWV9IiAiJHtQV0R9IiA+ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBsb2NhbCBj b3VudD0wOwogICAgICAgIGxvY2FsIFBBVENIX1RBUkdFVDsKICAgICAgICBpZiBbWyAtbiAke1BJ UEVfQ01EfSBdXTsgdGhlbgogICAgICAgICAgICBQQVRDSF9UQVJHRVQ9IiR7VH0vJCQucGF0Y2gi OwogICAgICAgICAgICBlY2hvICJQSVBFX0NPTU1BTkQ6ICAke1BJUEVfQ01EfSAke3h9ID4gJHtQ QVRDSF9UQVJHRVR9IiA+PiAiJHtTVERFUlJfVEFSR0VUfSI7CiAgICAgICAgICAgIGlmICEgKCAk e1BJUEVfQ01EfSAiJHt4fSIgPiAiJHtQQVRDSF9UQVJHRVR9IiApID4+ICIke1NUREVSUl9UQVJH RVR9IiAyPiYxOyB0aGVuCiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgZWVy cm9yICJDb3VsZCBub3QgZXh0cmFjdCBwYXRjaCEiOwogICAgICAgICAgICAgICAgY291bnQ9NTsK ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBlbHNlCiAgICAg ICAgICAgIFBBVENIX1RBUkdFVD0ke3h9OwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIGFic19w YXRocz0kKGVncmVwIC1uICdeWy0rXXszfSAvJyAiJHtQQVRDSF9UQVJHRVR9IiB8IGF3ayAnJDIg IT0gIi9kZXYvbnVsbCIgeyBwcmludCB9Jyk7CiAgICAgICAgaWYgW1sgLW4gJHthYnNfcGF0aHN9 IF1dOyB0aGVuCiAgICAgICAgICAgIGNvdW50PTE7CiAgICAgICAgICAgIHByaW50ZiAiTk9URTog c2tpcHBpbmcgLXAwIGR1ZSB0byBhYnNvbHV0ZSBwYXRocyBpbiBwYXRjaDpcbiVzXG4iICIke2Fi c19wYXRoc30iID4+ICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBmaTsKICAgICAgICBsb2Nh bCByZWxfcGF0aHM9JChlZ3JlcCAtbiAnXlstK117M30gW14JXSpbLl1bLl0vJyAiJHtQQVRDSF9U QVJHRVR9Iik7CiAgICAgICAgaWYgW1sgLW4gJHtyZWxfcGF0aHN9IF1dOyB0aGVuCiAgICAgICAg ICAgIGVjaG87CiAgICAgICAgICAgIGVlcnJvciAiUmVqZWN0ZWQgUGF0Y2g6ICR7cGF0Y2huYW1l fSAhIjsKICAgICAgICAgICAgZWVycm9yICIgKCAke1BBVENIX1RBUkdFVH0gKSI7CiAgICAgICAg ICAgIGVlcnJvcjsKICAgICAgICAgICAgZWVycm9yICJZb3VyIHBhdGNoIHVzZXMgcmVsYXRpdmUg cGF0aHMgJy4uLyc6IjsKICAgICAgICAgICAgZWVycm9yICIke3JlbF9wYXRoc30iOwogICAgICAg ICAgICBlY2hvOwogICAgICAgICAgICBkaWUgInlvdSBuZWVkIHRvIGZpeCB0aGUgcmVsYXRpdmUg cGF0aHMgaW4gcGF0Y2giOwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIHBhdGNoX2NtZDsKICAg ICAgICBsb2NhbCBwYXRjaD0icGF0Y2giOwogICAgICAgIGV2YWwgJChhbGlhcyBwYXRjaCAyPi9k ZXYvbnVsbCB8IHNlZCAnczpeYWxpYXMgOjonKTsKICAgICAgICB3aGlsZSBbWyAke2NvdW50fSAt bHQgNSBdXTsgZG8KICAgICAgICAgICAgcGF0Y2hfY21kPSIke3BhdGNofSAtcCR7Y291bnR9ICR7 RVBBVENIX09QVFN9IjsKICAgICAgICAgICAgKCBfZXBhdGNoX2RyYXdfbGluZSAiKioqKiogJHtw YXRjaG5hbWV9ICoqKioqIjsKICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWNobyAiUEFU Q0ggQ09NTUFORDogICR7cGF0Y2hfY21kfSA8ICcke1BBVENIX1RBUkdFVH0nIjsKICAgICAgICAg ICAgZWNobzsKICAgICAgICAgICAgX2VwYXRjaF9kcmF3X2xpbmUgIioqKioqICR7cGF0Y2huYW1l fSAqKioqKiI7CiAgICAgICAgICAgICR7cGF0Y2hfY21kfSAtLWRyeS1ydW4gLWYgPCAiJHtQQVRD SF9UQVJHRVR9IiAyPiYxOwogICAgICAgICAgICByZXQ9JD87CiAgICAgICAgICAgIGVjaG87CiAg ICAgICAgICAgIGVjaG8gInBhdGNoIHByb2dyYW0gZXhpdGVkIHdpdGggc3RhdHVzICR7cmV0fSI7 CiAgICAgICAgICAgIGV4aXQgJHtyZXR9ICkgPj4gIiR7U1RERVJSX1RBUkdFVH0iOwogICAgICAg ICAgICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KICAgICAgICAgICAgICAgICggX2VwYXRjaF9kcmF3 X2xpbmUgIioqKioqICR7cGF0Y2huYW1lfSAqKioqKiI7CiAgICAgICAgICAgICAgICBlY2hvOwog ICAgICAgICAgICAgICAgZWNobyAiQUNUVUFMTFkgQVBQTFlJTkcgJHtwYXRjaG5hbWV9IC4uLiI7 CiAgICAgICAgICAgICAgICBlY2hvOwogICAgICAgICAgICAgICAgX2VwYXRjaF9kcmF3X2xpbmUg IioqKioqICR7cGF0Y2huYW1lfSAqKioqKiI7CiAgICAgICAgICAgICAgICAke3BhdGNoX2NtZH0g PCAiJHtQQVRDSF9UQVJHRVR9IiAyPiYxOwogICAgICAgICAgICAgICAgcmV0PSQ/OwogICAgICAg ICAgICAgICAgZWNobzsKICAgICAgICAgICAgICAgIGVjaG8gInBhdGNoIHByb2dyYW0gZXhpdGVk IHdpdGggc3RhdHVzICR7cmV0fSI7CiAgICAgICAgICAgICAgICBleGl0ICR7cmV0fSApID4+ICIk e1NUREVSUl9UQVJHRVR9IjsKICAgICAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgog ICAgICAgICAgICAgICAgICAgIGVjaG87CiAgICAgICAgICAgICAgICAgICAgZWVycm9yICJBIGRy eS1ydW4gb2YgcGF0Y2ggY29tbWFuZCBzdWNjZWVkZWQsIGJ1dCBhY3R1YWxseSI7CiAgICAgICAg ICAgICAgICAgICAgZWVycm9yICJhcHBseWluZyB0aGUgcGF0Y2ggZmFpbGVkISI7CiAgICAgICAg ICAgICAgICAgICAgY291bnQ9NTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICA6ICQoKCBjb3VudCsrICkpOwogICAg ICAgIGRvbmU7CiAgICAgICAgaWYgW1sgLW4gJHtQSVBFX0NNRH0gXV07IHRoZW4KICAgICAgICAg ICAgcm0gLWYgIiR7UEFUQ0hfVEFSR0VUfSI7CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtj b3VudH0gLWdlIDUgXV07IHRoZW4KICAgICAgICAgICAgZWNobzsKICAgICAgICAgICAgZWVycm9y ICJGYWlsZWQgUGF0Y2g6ICR7cGF0Y2huYW1lfSAhIjsKICAgICAgICAgICAgZWVycm9yICIgKCAk e1BBVENIX1RBUkdFVH0gKSI7CiAgICAgICAgICAgIGVlcnJvcjsKICAgICAgICAgICAgZWVycm9y ICJJbmNsdWRlIGluIHlvdXIgYnVncmVwb3J0IHRoZSBjb250ZW50cyBvZjoiOwogICAgICAgICAg ICBlZXJyb3I7CiAgICAgICAgICAgIGVlcnJvciAiICAke1NUREVSUl9UQVJHRVR9IjsKICAgICAg ICAgICAgZWNobzsKICAgICAgICAgICAgZGllICJGYWlsZWQgUGF0Y2g6ICR7cGF0Y2huYW1lfSEi OwogICAgICAgIGZpOwogICAgICAgIHJtIC1mICIke1NUREVSUl9UQVJHRVR9IjsKICAgICAgICBj YXQgPj4gIiR7VH0vZXBhdGNoLmxvZyIgIDw8LUVPRgpQQVRDSDogJHt4fQpDTUQ6ICR7cGF0Y2hf Y21kfQpQV0Q6ICR7UFdEfQoKRU9GCgogICAgICAgIGVlbmQgMDsKICAgIGRvbmU7CiAgICBbWyAk e1NJTkdMRV9QQVRDSH0gPT0gIm5vIiBdXSAmJiBlaW5mbyAiRG9uZSB3aXRoIHBhdGNoaW5nIjsK ICAgIDoKfQplcGF0Y2hfdXNlciAoKSAKeyAKICAgIFtbICQjIC1uZSAwIF1dICYmIGRpZSAiZXBh dGNoX3VzZXIgdGFrZXMgbm8gb3B0aW9ucyI7CiAgICBsb2NhbCBhcHBsaWVkPSIke1R9L2VwYXRj aF91c2VyLmxvZyI7CiAgICBbWyAtZSAke2FwcGxpZWR9IF1dICYmIHJldHVybiAyOwogICAgbG9j YWwgRVBBVENIX1NPVVJDRSBjaGVjayBiYXNlPSR7UE9SVEFHRV9DT05GSUdST09UJS99L2V0Yy9w b3J0YWdlL3BhdGNoZXM7CiAgICBmb3IgY2hlY2sgaW4gJHtDQVRFR09SWX0veyR7UH0tJHtQUn0s JHtQfSwke1BOfX17LDoke1NMT1R9fTsKICAgIGRvCiAgICAgICAgRVBBVENIX1NPVVJDRT0ke2Jh c2V9LyR7Q1RBUkdFVH0vJHtjaGVja307CiAgICAgICAgW1sgLXIgJHtFUEFUQ0hfU09VUkNFfSBd XSB8fCBFUEFUQ0hfU09VUkNFPSR7YmFzZX0vJHtDSE9TVH0vJHtjaGVja307CiAgICAgICAgW1sg LXIgJHtFUEFUQ0hfU09VUkNFfSBdXSB8fCBFUEFUQ0hfU09VUkNFPSR7YmFzZX0vJHtjaGVja307 CiAgICAgICAgaWYgW1sgLWQgJHtFUEFUQ0hfU09VUkNFfSBdXTsgdGhlbgogICAgICAgICAgICBF UEFUQ0hfU09VUkNFPSR7RVBBVENIX1NPVVJDRX0gRVBBVENIX1NVRkZJWD0icGF0Y2giIEVQQVRD SF9GT1JDRT0ieWVzIiBFUEFUQ0hfTVVMVElfTVNHPSJBcHBseWluZyB1c2VyIHBhdGNoZXMgZnJv bSAke0VQQVRDSF9TT1VSQ0V9IC4uLiIgZXBhdGNoOwogICAgICAgICAgICBlY2hvICIke0VQQVRD SF9TT1VSQ0V9IiA+ICIke2FwcGxpZWR9IjsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAg Zmk7CiAgICBkb25lOwogICAgZWNobyAibm9uZSIgPiAiJHthcHBsaWVkfSI7CiAgICByZXR1cm4g MQp9CmVwYXVzZSAoKSAKeyAKICAgIGV3YXJuICJRQSBOb3RpY2U6IGVwYXVzZSBpcyBub3QgZGVm aW5lZCBpbiBFQVBJPSR7RUFQSX0sIHBsZWFzZSBmaWxlIGEgYnVnIGF0IGh0dHA6Ly9idWdzLmdl bnRvby5vcmciCn0KZXB1bnRfY3h4ICgpIAp7IAogICAgbG9jYWwgZGlyPSQxOwogICAgW1sgLXog JHtkaXJ9IF1dICYmIGRpcj0ke1N9OwogICAgZWJlZ2luICJSZW1vdmluZyB1c2VsZXNzIEMrKyBj aGVja3MiOwogICAgbG9jYWwgZiBwIGFueV9mb3VuZDsKICAgIHdoaWxlIElGUz0gcmVhZCAtciAt ZCAnJyBmOyBkbwogICAgICAgIGZvciBwIGluICIke1BPUlRESVJ9Ii9lY2xhc3MvRUxULXBhdGNo ZXMvbm9jeHgvKi5wYXRjaDsKICAgICAgICBkbwogICAgICAgICAgICBpZiBwYXRjaCAtLW5vLWJh Y2t1cC1pZi1taXNtYXRjaCAtcDEgIiR7Zn0iICIke3B9IiA+IC9kZXYvbnVsbDsgdGhlbgogICAg ICAgICAgICAgICAgYW55X2ZvdW5kPTE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg ICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGRvbmUgPCA8KGZpbmQgIiR7ZGlyfSIgLW5hbWUgY29u ZmlndXJlIC1wcmludDApOwogICAgaWYgW1sgLXogJHthbnlfZm91bmR9IF1dOyB0aGVuCiAgICAg ICAgZXFhd2FybiAiZXB1bnRfY3h4IGNhbGxlZCB1bm5lY2Vzc2FyaWx5IChubyBDKysgY2hlY2tz IHRvIHB1bnQpLiI7CiAgICBmaTsKICAgIGVlbmQgMAp9CmVzZXR1cC5weSAoKSAKeyAKICAgIGRl YnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIHNldCAtLSAiJHtQWVRI T046LXB5dGhvbn0iIHNldHVwLnB5ICIke215ZGlzdHV0aWxzYXJnc1tAXX0iICIke0B9IjsKICAg IGVjaG8gIiR7QH0iIDE+JjI7CiAgICAiJHtAfSIgfHwgZGllCn0KZXNob3B0c19wb3AgKCkgCnsg CiAgICBsb2NhbCBzOwogICAgZXN0YWNrX3BvcCBlc2hvcHRzIHMgfHwgZGllICIke0ZVTkNOQU1F fTogdW5iYWxhbmNlZCBwdXNoIjsKICAgIGlmIFtbICR7c30gPT0gInNob3B0IC0iKiBdXTsgdGhl bgogICAgICAgIGV2YWwgIiR7c30iIHx8IGRpZSAiJHtGVU5DTkFNRX06IHNhbml0eTogaW52YWxp ZCBzaG9wdCBvcHRpb25zOiAke3N9IjsKICAgIGVsc2UKICAgICAgICBzZXQgKyQtIHx8IGRpZSAi JHtGVU5DTkFNRX06IHNhbml0eTogaW52YWxpZCBzaGVsbCBzZXR0aW5nczogJC0iOwogICAgICAg IHNldCAtJHtzfSB8fCBkaWUgIiR7RlVOQ05BTUV9OiBzYW5pdHk6IHVuYWJsZSB0byByZXN0b3Jl IHNhdmVkIHNoZWxsIHNldHRpbmdzOiAke3N9IjsKICAgIGZpCn0KZXNob3B0c19wdXNoICgpIAp7 IAogICAgaWYgW1sgJDEgPT0gLVtzdV0gXV07IHRoZW4KICAgICAgICBlc3RhY2tfcHVzaCBlc2hv cHRzICIkKHNob3B0IC1wKSI7CiAgICAgICAgW1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAg ICAgICAgc2hvcHQgIiRAIiB8fCBkaWUgIiR7RlVOQ05BTUV9OiBiYWQgb3B0aW9ucyB0byBzaG9w dDogJCoiOwogICAgZWxzZQogICAgICAgIGVzdGFja19wdXNoIGVzaG9wdHMgJC07CiAgICAgICAg W1sgJCMgLWVxIDAgXV0gJiYgcmV0dXJuIDA7CiAgICAgICAgc2V0ICIkQCIgfHwgZGllICIke0ZV TkNOQU1FfTogYmFkIG9wdGlvbnMgdG8gc2V0OiAkKiI7CiAgICBmaQp9CmVzdGFja19wb3AgKCkg CnsgCiAgICBbWyAkIyAtZXEgMCB8fCAkIyAtZ3QgMiBdXSAmJiBkaWUgImVzdGFja19wb3A6IGlu Y29ycmVjdCAjIG9mIGFyZ3VtZW50cyI7CiAgICBsb2NhbCBfZXN0YWNrX25hbWU9Il9FU1RBQ0tf JDFfIjsKICAgIHNoaWZ0OwogICAgbG9jYWwgX2VzdGFja19yZXR2YXI9JDE7CiAgICBzaGlmdDsK ICAgIGV2YWwgbG9jYWwgX2VzdGFja19pPVwkeyMke19lc3RhY2tfbmFtZX1cW0BcXX07CiAgICBb WyAkKCggLS1fZXN0YWNrX2kgKSkgLWVxIC0xIF1dICYmIHJldHVybiAxOwogICAgaWYgW1sgLW4g JHtfZXN0YWNrX3JldHZhcn0gXV07IHRoZW4KICAgICAgICBldmFsICR7X2VzdGFja19yZXR2YXJ9 PVwiXCR7JHtfZXN0YWNrX25hbWV9XFske19lc3RhY2tfaX1cXX1cIjsKICAgIGZpOwogICAgZXZh bCB1bnNldCAke19lc3RhY2tfbmFtZX1cWyR7X2VzdGFja19pfVxdCn0KZXN0YWNrX3B1c2ggKCkg CnsgCiAgICBbWyAkIyAtZXEgMCBdXSAmJiBkaWUgImVzdGFja19wdXNoOiBpbmNvcnJlY3QgIyBv ZiBhcmd1bWVudHMiOwogICAgbG9jYWwgc3RhY2tfbmFtZT0iX0VTVEFDS18kMV8iOwogICAgc2hp ZnQ7CiAgICBldmFsICR7c3RhY2tfbmFtZX0rPVwoIFwiXCRAXCIgXCkKfQplc3ZuX2NsZWFuICgp IAp7IAogICAgW1sgLXogJCogXV0gJiYgc2V0IC0tIC47CiAgICBmaW5kICIkQCIgLXR5cGUgZCAt bmFtZSAnLnN2bicgLXBydW5lIC1wcmludDAgfCB4YXJncyAtMCBybSAtcmYKfQpldW1hc2tfcG9w ICgpIAp7IAogICAgW1sgJCMgLWVxIDAgXV0gfHwgZGllICIke0ZVTkNOQU1FfTogd2UgdGFrZSBu byBvcHRpb25zIjsKICAgIGxvY2FsIHM7CiAgICBlc3RhY2tfcG9wIGV1bWFzayBzIHx8IGRpZSAi JHtGVU5DTkFNRX06IHVuYmFsYW5jZWQgcHVzaCI7CiAgICB1bWFzayAke3N9IHx8IGRpZSAiJHtG VU5DTkFNRX06IHNhbml0eTogY291bGQgbm90IHJlc3RvcmUgdW1hc2s6ICR7c30iCn0KZXVtYXNr X3B1c2ggKCkgCnsgCiAgICBlc3RhY2tfcHVzaCBldW1hc2sgIiQodW1hc2spIjsKICAgIHVtYXNr ICIkQCIgfHwgZGllICIke0ZVTkNOQU1FfTogYmFkIG9wdGlvbnMgdG8gdW1hc2s6ICQqIgp9CmV2 YXJfcG9wICgpIAp7IAogICAgbG9jYWwgY250PSR7MTotYmFkfTsKICAgIGNhc2UgJCMgaW4gCiAg ICAgICAgMCkKICAgICAgICAgICAgY250PTEKICAgICAgICA7OwogICAgICAgIDEpCiAgICAgICAg ICAgIGlzZGlnaXQgIiR7Y250fSIgfHwgZGllICIke0ZVTkNOQU1FfTogZmlyc3QgYXJnIG11c3Qg YmUgYSBudW1iZXI6ICQqIgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZGllICIk e0ZVTkNOQU1FfTogb25seSBhY2NlcHRzIG9uZSBhcmc6ICQqIgogICAgICAgIDs7CiAgICBlc2Fj OwogICAgbG9jYWwgdmFyIHZhbDsKICAgIHdoaWxlICgoIGNudC0tICkpOyBkbwogICAgICAgIGVz dGFja19wb3AgZXZhciB2YWwgfHwgZGllICIke0ZVTkNOQU1FfTogdW5iYWxhbmNlZCBwdXNoIjsK ICAgICAgICBlc3RhY2tfcG9wIGV2YXIgdmFyIHx8IGRpZSAiJHtGVU5DTkFNRX06IHVuYmFsYW5j ZWQgcHVzaCI7CiAgICAgICAgW1sgJHt2YWx9ID09ICJ1bnNldF83NmZjM2M0NjIwNjViYjRjYTk1 OWY5MzllNjc5M2Y5NCIgXV0gJiYgdW5zZXQgJHt2YXJ9IHx8IHByaW50ZiAtdiAiJHt2YXJ9IiAn JXMnICIke3ZhbH0iOwogICAgZG9uZQp9CmV2YXJfcHVzaCAoKSAKeyAKICAgIGxvY2FsIHZhciB2 YWw7CiAgICBmb3IgdmFyIGluICIkQCI7CiAgICBkbwogICAgICAgIFtbICR7IXZhcitzZXR9ID09 ICJzZXQiIF1dICYmIHZhbD0keyF2YXJ9IHx8IHZhbD0idW5zZXRfNzZmYzNjNDYyMDY1YmI0Y2E5 NTlmOTM5ZTY3OTNmOTQiOwogICAgICAgIGVzdGFja19wdXNoIGV2YXIgIiR7dmFyfSIgIiR7dmFs fSI7CiAgICBkb25lCn0KZXZhcl9wdXNoX3NldCAoKSAKeyAKICAgIGxvY2FsIHZhcj0kMTsKICAg IGV2YXJfcHVzaCAke3Zhcn07CiAgICBjYXNlICQjIGluIAogICAgICAgIDEpCiAgICAgICAgICAg IHVuc2V0ICR7dmFyfQogICAgICAgIDs7CiAgICAgICAgMikKICAgICAgICAgICAgcHJpbnRmIC12 ICIke3Zhcn0iICclcycgIiQyIgogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZGll ICIke0ZVTkNOQU1FfTogaW5jb3JyZWN0ICMgb2YgYXJnczogJCoiCiAgICAgICAgOzsKICAgIGVz YWMKfQpnY2MtZnVsbHZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9uICckMS4kMi4k MycgIiRAIgp9CmdjYy1tYWpvci12ZXJzaW9uICgpIAp7IAogICAgX2djY19mdWxsdmVyc2lvbiAn JDEnICIkQCIKfQpnY2MtbWljcm8tdmVyc2lvbiAoKSAKeyAKICAgIF9nY2NfZnVsbHZlcnNpb24g JyQzJyAiJEAiCn0KZ2NjLW1pbm9yLXZlcnNpb24gKCkgCnsgCiAgICBfZ2NjX2Z1bGx2ZXJzaW9u ICckMicgIiRAIgp9CmdjYy1zcGVjcy1kaXJlY3RpdmUgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3Rp dmUgc3ViZG5hbWUgc3ViZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSIkKF9nY2Mtc3BlY3MtZGly ZWN0aXZlX3JhdyAkMSkiOwogICAgd2hpbGUgW1sgJHtkaXJlY3RpdmV9ID09IColXCgqXCkqIF1d OyBkbwogICAgICAgIHN1YmRuYW1lPSR7ZGlyZWN0aXZlLyolXCh9OwogICAgICAgIHN1YmRuYW1l PSR7c3ViZG5hbWUvXCkqfTsKICAgICAgICBzdWJkaXJlY3RpdmU9IiQoX2djYy1zcGVjcy1kaXJl Y3RpdmVfcmF3ICR7c3ViZG5hbWV9KSI7CiAgICAgICAgZGlyZWN0aXZlPSIke2RpcmVjdGl2ZS8v XCUoJHtzdWJkbmFtZX0pLyR7c3ViZGlyZWN0aXZlfX0iOwogICAgZG9uZTsKICAgIGVjaG8gIiR7 ZGlyZWN0aXZlfSI7CiAgICByZXR1cm4gMAp9CmdjYy1zcGVjcy1ub3N0cmljdCAoKSAKeyAKICAg IGxvY2FsIGRpcmVjdGl2ZTsKICAgIGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgY2Mx KTsKICAgIFtbICIke2RpcmVjdGl2ZS9ceyFmc3RyaWN0LW92ZXJmbG93On0iICE9ICIke2RpcmVj dGl2ZX0iIF1dCn0KZ2NjLXNwZWNzLW5vdyAoKSAKeyAKICAgIGxvY2FsIGRpcmVjdGl2ZTsKICAg IGRpcmVjdGl2ZT0kKGdjYy1zcGVjcy1kaXJlY3RpdmUgbGlua19jb21tYW5kKTsKICAgIFtbICIk e2RpcmVjdGl2ZS9ceyFub25vdzp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXQp9CmdjYy1zcGVjcy1w aWUgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3Mt ZGlyZWN0aXZlIGNjMSk7CiAgICBbWyAiJHtkaXJlY3RpdmUvXHshbm9waWU6fSIgIT0gIiR7ZGly ZWN0aXZlfSIgXV0KfQpnY2Mtc3BlY3MtcmVscm8gKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7 CiAgICBkaXJlY3RpdmU9JChnY2Mtc3BlY3MtZGlyZWN0aXZlIGxpbmtfY29tbWFuZCk7CiAgICBb WyAiJHtkaXJlY3RpdmUvXHshbm9yZWxybzp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXQp9CmdjYy1z cGVjcy1zc3AgKCkgCnsgCiAgICBsb2NhbCBkaXJlY3RpdmU7CiAgICBkaXJlY3RpdmU9JChnY2Mt c3BlY3MtZGlyZWN0aXZlIGNjMSk7CiAgICBbWyAiJHtkaXJlY3RpdmUvXHshZm5vLXN0YWNrLXBy b3RlY3Rvcjp9IiAhPSAiJHtkaXJlY3RpdmV9IiBdXQp9CmdjYy1zcGVjcy1zc3AtdG8tYWxsICgp IAp7IAogICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2NjLXNwZWNzLWRpcmVj dGl2ZSBjYzEpOwogICAgW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1zdGFjay1wcm90ZWN0b3ItYWxs On0iICE9ICIke2RpcmVjdGl2ZX0iIF1dCn0KZ2NjLXNwZWNzLXN0YWNrLWNoZWNrICgpIAp7IAog ICAgbG9jYWwgZGlyZWN0aXZlOwogICAgZGlyZWN0aXZlPSQoZ2NjLXNwZWNzLWRpcmVjdGl2ZSBj YzEpOwogICAgW1sgIiR7ZGlyZWN0aXZlL1x7IWZuby1zdGFjay1jaGVjazp9IiAhPSAiJHtkaXJl Y3RpdmV9IiBdXQp9CmdjYy12ZXJzaW9uICgpIAp7IAogICAgX2djY19mdWxsdmVyc2lvbiAnJDEu JDInICIkQCIKfQpnZW5fdXNyX2xkc2NyaXB0ICgpIAp7IAogICAgbG9jYWwgbGliIGxpYmRpcj0k KGdldF9saWJkaXIpIG91dHB1dF9mb3JtYXQ9IiIgYXV0bz1mYWxzZSBzdWZmaXg9JChnZXRfbGli bmFtZSk7CiAgICBbWyAteiAke0VEK3NldH0gXV0gJiYgbG9jYWwgRUQ9JHtEJS99JHtFUFJFRklY fS87CiAgICB0Yy1pcy1zdGF0aWMtb25seSAmJiByZXR1cm47CiAgICBjYXNlICR7Q1RBUkdFVDot JHtDSE9TVH19IGluIAogICAgICAgICotZGFyd2luKikKCiAgICAgICAgOzsKICAgICAgICAqbGlu dXgqIHwgKi1mcmVlYnNkKiB8ICotb3BlbmJzZCogfCAqLW5ldGJzZCopCiAgICAgICAgICAgIHVz ZSBwcmVmaXggJiYgcmV0dXJuIDAKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIHJl dHVybiAwCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBkb2RpciAvdXNyLyR7bGliZGlyfTsKICAg IGlmIFtbICQxID09ICItYSIgXV07IHRoZW4KICAgICAgICBhdXRvPXRydWU7CiAgICAgICAgc2hp ZnQ7CiAgICAgICAgZG9kaXIgLyR7bGliZGlyfTsKICAgIGZpOwogICAgbG9jYWwgZmxhZ3M9KCR7 Q0ZMQUdTfSAke0xERkxBR1N9IC1XbCwtLXZlcmJvc2UpOwogICAgaWYgJCh0Yy1nZXRMRCkgLS12 ZXJzaW9uIHwgZ3JlcCAtcSAnR05VIGdvbGQnOyB0aGVuCiAgICAgICAgbG9jYWwgZD0iJHtUfS9i ZmQtbGlua2VyIjsKICAgICAgICBta2RpciAtcCAiJHtkfSI7CiAgICAgICAgbG4gLXNmICQod2hp Y2ggJHtDSE9TVH0tbGQuYmZkKSAiJHtkfSIvbGQ7CiAgICAgICAgZmxhZ3MrPSgtQiIke2R9Iik7 CiAgICBmaTsKICAgIG91dHB1dF9mb3JtYXQ9JCgkKHRjLWdldENDKSAiJHtmbGFnc1tAXX0iIDI+ JjEgfCBzZWQgLW4gJ3MvXk9VVFBVVF9GT1JNQVQoIlwoW14iXSpcKSIsLiovXDEvcCcpOwogICAg W1sgLW4gJHtvdXRwdXRfZm9ybWF0fSBdXSAmJiBvdXRwdXRfZm9ybWF0PSJPVVRQVVRfRk9STUFU ICggJHtvdXRwdXRfZm9ybWF0fSApIjsKICAgIGZvciBsaWIgaW4gIiRAIjsKICAgIGRvCiAgICAg ICAgbG9jYWwgdGxpYjsKICAgICAgICBpZiAke2F1dG99OyB0aGVuCiAgICAgICAgICAgIGxpYj0i bGliJHtsaWJ9JHtzdWZmaXh9IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIFtbIC1yICR7RUR9 LyR7bGliZGlyfS8ke2xpYn0gXV0gfHwgY29udGludWU7CiAgICAgICAgZmk7CiAgICAgICAgY2Fz ZSAke0NUQVJHRVQ6LSR7Q0hPU1R9fSBpbiAKICAgICAgICAgICAgKi1kYXJ3aW4qKQogICAgICAg ICAgICAgICAgaWYgJHthdXRvfTsgdGhlbgogICAgICAgICAgICAgICAgICAgIHRsaWI9JChzY2Fu bWFjaG8gLXFGJyVTI0YnICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke2xpYn0pOwogICAgICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHRsaWI9JChzY2FubWFjaG8gLXFGJyVTI0Yn ICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifSk7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAg ICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgZGllICJ1bmFibGUgdG8gcmVhZCBpbnN0YWxsX25h bWUgZnJvbSAke2xpYn0iOwogICAgICAgICAgICAgICAgdGxpYj0ke3RsaWIjIyovfTsKICAgICAg ICAgICAgICAgIGlmICR7YXV0b307IHRoZW4KICAgICAgICAgICAgICAgICAgICBtdiAiJHtFRH0i L3Vzci8ke2xpYmRpcn0vJHtsaWIlJHtzdWZmaXh9fS4qJHtzdWZmaXgjLn0gIiR7RUR9Ii8ke2xp YmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAgICBpZiBbWyAke3RsaWJ9ICE9ICR7bGli JSR7c3VmZml4fX0uKiR7c3VmZml4Iy59IF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAg IG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke3RsaWIlJHtzdWZmaXh9fS4qJHtzdWZmaXgjLn0g IiR7RUR9Ii8ke2xpYmRpcn0vIHx8IGRpZTsKICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAg ICAgICAgICAgICAgICBybSAtZiAiJHtFRH0iLyR7bGliZGlyfS8ke2xpYn07CiAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgICAgIGlmIFtbICEgLXcgIiR7RUR9LyR7bGliZGlyfS8ke3Rs aWJ9IiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGNobW9kIHUrdyAiJHtFRH0ke2xpYmRp cn0vJHt0bGlifSI7CiAgICAgICAgICAgICAgICAgICAgbG9jYWwgbm93cml0ZT15ZXM7CiAgICAg ICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGluc3RhbGxfbmFtZV90b29sIC1pZCAiJHtF UFJFRklYfSIvJHtsaWJkaXJ9LyR7dGxpYn0gIiR7RUR9Ii8ke2xpYmRpcn0vJHt0bGlifSB8fCBk aWUgImluc3RhbGxfbmFtZV90b29sIGZhaWxlZCI7CiAgICAgICAgICAgICAgICBbWyAtbiAke25v d3JpdGV9IF1dICYmIGNobW9kIHUtdyAiJHtFRH0ke2xpYmRpcn0vJHt0bGlifSI7CiAgICAgICAg ICAgICAgICBwdXNoZCAiJHtFRH0vdXNyLyR7bGliZGlyfSIgPiAvZGV2L251bGw7CiAgICAgICAg ICAgICAgICBsbiAtc25mICIuLi8uLi8ke2xpYmRpcn0vJHt0bGlifSIgIiR7bGlifSI7CiAgICAg ICAgICAgICAgICBwb3BkID4gL2Rldi9udWxsCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICop CiAgICAgICAgICAgICAgICBpZiAke2F1dG99OyB0aGVuCiAgICAgICAgICAgICAgICAgICAgdGxp Yj0kKHNjYW5lbGYgLXFGJyVTI0YnICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke2xpYn0pOwogICAg ICAgICAgICAgICAgICAgIFtbIC16ICR7dGxpYn0gXV0gJiYgZGllICJ1bmFibGUgdG8gcmVhZCBT T05BTUUgZnJvbSAke2xpYn0iOwogICAgICAgICAgICAgICAgICAgIG12ICIke0VEfSIvdXNyLyR7 bGliZGlyfS8ke2xpYn0qICIke0VEfSIvJHtsaWJkaXJ9LyB8fCBkaWU7CiAgICAgICAgICAgICAg ICAgICAgaWYgW1sgJHt0bGlifSAhPSAke2xpYn0qIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAg ICAgICAgIG12ICIke0VEfSIvdXNyLyR7bGliZGlyfS8ke3RsaWJ9KiAiJHtFRH0iLyR7bGliZGly fS8gfHwgZGllOwogICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgIHJt IC1mICIke0VEfSIvJHtsaWJkaXJ9LyR7bGlifTsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICAgICB0bGliPSR7bGlifTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAg ICAgICAgY2F0ID4gIiR7RUR9L3Vzci8ke2xpYmRpcn0vJHtsaWJ9IiAgPDwtRU5EX0xEU0NSSVBU Ci8qIEdOVSBsZCBzY3JpcHQKICAgU2luY2UgR2VudG9vIGhhcyBjcml0aWNhbCBkeW5hbWljIGxp YnJhcmllcyBpbiAvbGliLCBhbmQgdGhlIHN0YXRpYyB2ZXJzaW9ucwogICBpbiAvdXNyL2xpYiwg d2UgbmVlZCB0byBoYXZlIGEgImZha2UiIGR5bmFtaWMgbGliIGluIC91c3IvbGliLCBvdGhlcndp c2Ugd2UKICAgcnVuIGludG8gbGlua2luZyBwcm9ibGVtcy4gIFRoaXMgImZha2UiIGR5bmFtaWMg bGliIGlzIGEgbGlua2VyIHNjcmlwdCB0aGF0CiAgIHJlZGlyZWN0cyB0aGUgbGlua2VyIHRvIHRo ZSByZWFsIGxpYi4gIEFuZCB5ZXMsIHRoaXMgd29ya3MgaW4gdGhlIGNyb3NzLQogICBjb21waWxp bmcgc2NlbmFyaW8gYXMgdGhlIHN5c3Jvb3QtZWQgbGlua2VyIHdpbGwgcHJlcGVuZCB0aGUgcmVh bCBwYXRoLgoKICAgU2VlIGJ1ZyBodHRwOi8vYnVncy5nZW50b28ub3JnLzQ0MTEgZm9yIG1vcmUg aW5mby4KICovCiR7b3V0cHV0X2Zvcm1hdH0KR1JPVVAgKCAke0VQUkVGSVh9LyR7bGliZGlyfS8k e3RsaWJ9ICkKRU5EX0xEU0NSSVBUCgogICAgICAgICAgICA7OwogICAgICAgIGVzYWMKICAgICAg ICBmcGVybXMgYSt4ICIvdXNyLyR7bGliZGlyfS8ke2xpYn0iIHx8IGRpZSAiY291bGQgbm90IGNo YW5nZSBwZXJtcyBvbiAke2xpYn0iOwogICAgZG9uZQp9CmdldF9hYmlfQ0ZMQUdTICgpIAp7IAog ICAgZ2V0X2FiaV92YXIgQ0ZMQUdTICIkQCIKfQpnZXRfYWJpX0NIT1NUICgpIAp7IAogICAgZ2V0 X2FiaV92YXIgQ0hPU1QgIiRAIgp9CmdldF9hYmlfQ1RBUkdFVCAoKSAKeyAKICAgIGdldF9hYmlf dmFyIENUQVJHRVQgIiRAIgp9CmdldF9hYmlfRkFLRV9UQVJHRVRTICgpIAp7IAogICAgZ2V0X2Fi aV92YXIgRkFLRV9UQVJHRVRTICIkQCIKfQpnZXRfYWJpX0xERkxBR1MgKCkgCnsgCiAgICBnZXRf YWJpX3ZhciBMREZMQUdTICIkQCIKfQpnZXRfYWJpX0xJQkRJUiAoKSAKeyAKICAgIGdldF9hYmlf dmFyIExJQkRJUiAiJEAiCn0KZ2V0X2FiaV92YXIgKCkgCnsgCiAgICBsb2NhbCBmbGFnPSQxOwog ICAgbG9jYWwgYWJpPSR7MjotJHtBQkk6LSR7REVGQVVMVF9BQkk6LWRlZmF1bHR9fX07CiAgICBs b2NhbCB2YXI9IiR7ZmxhZ31fJHthYml9IjsKICAgIGVjaG8gJHshdmFyfQp9CmdldF9hZnRlcl9t YWpvcl92ZXJzaW9uICgpIAp7IAogICAgZWNobyAkKGdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5n ZSAyLSAiJHsxOi0ke1BWfX0iKQp9CmdldF9hbGxfYWJpcyAoKSAKeyAKICAgIGxvY2FsIHggb3Jk ZXI9IiIgbXZhciBkdmFyOwogICAgbXZhcj0iTVVMVElMSUJfQUJJUyI7CiAgICBkdmFyPSJERUZB VUxUX0FCSSI7CiAgICBpZiBbWyAtbiAkMSBdXTsgdGhlbgogICAgICAgIG12YXI9IiQxXyR7bXZh cn0iOwogICAgICAgIGR2YXI9IiQxXyR7ZHZhcn0iOwogICAgZmk7CiAgICBpZiBbWyAteiAkeyFt dmFyfSBdXTsgdGhlbgogICAgICAgIGVjaG8gImRlZmF1bHQiOwogICAgICAgIHJldHVybiAwOwog ICAgZmk7CiAgICBmb3IgeCBpbiAkeyFtdmFyfTsKICAgIGRvCiAgICAgICAgaWYgW1sgJHt4fSAh PSAkeyFkdmFyfSBdXTsgdGhlbgogICAgICAgICAgICBvcmRlcj0iJHtvcmRlcjorJHtvcmRlcn0g fSR7eH0iOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIG9yZGVyPSIke29yZGVyOiske29yZGVy fSB9JHshZHZhcn0iOwogICAgZWNobyAke29yZGVyfTsKICAgIHJldHVybiAwCn0KZ2V0X2FsbF9s aWJkaXJzICgpIAp7IAogICAgbG9jYWwgbGliZGlycyBhYmk7CiAgICBmb3IgYWJpIGluICR7TVVM VElMSUJfQUJJU307CiAgICBkbwogICAgICAgIGxpYmRpcnMrPSIgJChnZXRfYWJpX0xJQkRJUiAk e2FiaX0pIjsKICAgIGRvbmU7CiAgICBbWyAiICR7bGliZGlyc30gIiAhPSAqIiBsaWIgIiogXV0g JiYgbGliZGlycys9IiBsaWIiOwogICAgZWNobyAiJHtsaWJkaXJzfSIKfQpnZXRfYWxsX3ZlcnNp b25fY29tcG9uZW50cyAoKSAKeyAKICAgIGVzaG9wdHNfcHVzaCAtcyBleHRnbG9iOwogICAgbG9j YWwgdmVyX3N0cj0kezE6LSR7UFZ9fSByZXN1bHQ7CiAgICByZXN1bHQ9KCk7CiAgICBpZiBbWyAk e1ZFUlNJT05BVE9SX0NBQ0hFX1ZFUl9TVFJ9ID09ICR7dmVyX3N0cn0gXV07IHRoZW4KICAgICAg ICBlY2hvICR7VkVSU0lPTkFUT1JfQ0FDSEVfUkVTVUxUfTsKICAgICAgICBlc2hvcHRzX3BvcDsK ICAgICAgICByZXR1cm47CiAgICBmaTsKICAgIGV4cG9ydCBWRVJTSU9OQVRPUl9DQUNIRV9WRVJf U1RSPSR7dmVyX3N0cn07CiAgICB3aGlsZSBbWyAtbiAkdmVyX3N0ciBdXTsgZG8KICAgICAgICBj YXNlICIke3Zlcl9zdHI6OjF9IiBpbiAKICAgICAgICAgICAgW1s6ZGlnaXQ6XV0pCiAgICAgICAg ICAgICAgICByZXN1bHQrPSgiJHt2ZXJfc3RyJSVbXls6ZGlnaXQ6XV0qfSIpOwogICAgICAgICAg ICAgICAgdmVyX3N0cj0ke3Zlcl9zdHIjIysoW1s6ZGlnaXQ6XV0pfQogICAgICAgICAgICA7Owog ICAgICAgICAgICBbLV8uXSkKICAgICAgICAgICAgICAgIHJlc3VsdCs9KCIke3Zlcl9zdHI6OjF9 Iik7CiAgICAgICAgICAgICAgICB2ZXJfc3RyPSR7dmVyX3N0cjoxfQogICAgICAgICAgICA7Owog ICAgICAgICAgICBbWzphbHBoYTpdXSkKICAgICAgICAgICAgICAgIGxvY2FsIG5vdF9tYXRjaD0k e3Zlcl9zdHIjIysoW1s6YWxwaGE6XV0pKihbWzpkaWdpdDpdXSl9OwogICAgICAgICAgICAgICAg cmVzdWx0Kz0oIiR7dmVyX3N0cjo6JHsjdmVyX3N0cn0gLSAkeyNub3RfbWF0Y2h9fSIpOwogICAg ICAgICAgICAgICAgdmVyX3N0cj0ke25vdF9tYXRjaH0KICAgICAgICAgICAgOzsKICAgICAgICAg ICAgKikKICAgICAgICAgICAgICAgIHJlc3VsdCs9KCIke3Zlcl9zdHI6OjF9Iik7CiAgICAgICAg ICAgICAgICB2ZXJfc3RyPSR7dmVyX3N0cjoxfQogICAgICAgICAgICA7OwogICAgICAgIGVzYWM7 CiAgICBkb25lOwogICAgZXhwb3J0IFZFUlNJT05BVE9SX0NBQ0hFX1JFU1VMVD0ke3Jlc3VsdFsq XX07CiAgICBlY2hvICR7cmVzdWx0W0BdfTsKICAgIGVzaG9wdHNfcG9wCn0KZ2V0X2luc3RhbGxf YWJpcyAoKSAKeyAKICAgIGxvY2FsIHggb3JkZXI9IiI7CiAgICBpZiBbWyAteiAke01VTFRJTElC X0FCSVN9IF1dOyB0aGVuCiAgICAgICAgZWNobyAiZGVmYXVsdCI7CiAgICAgICAgcmV0dXJuIDA7 CiAgICBmaTsKICAgIGlmIFtbICR7RU1VTFRJTElCX1BLR30gPT0gInRydWUiIF1dOyB0aGVuCiAg ICAgICAgZm9yIHggaW4gJHtNVUxUSUxJQl9BQklTfTsKICAgICAgICBkbwogICAgICAgICAgICBp ZiBbWyAke3h9ICE9ICIke0RFRkFVTFRfQUJJfSIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGhh cyAke3h9ICR7QUJJX0RFTll9IHx8IG9yZGVyPSIke29yZGVyfSAke3h9IjsKICAgICAgICAgICAg Zmk7CiAgICAgICAgZG9uZTsKICAgICAgICBoYXMgJHtERUZBVUxUX0FCSX0gJHtBQklfREVOWX0g fHwgb3JkZXI9IiR7b3JkZXJ9ICR7REVGQVVMVF9BQkl9IjsKICAgICAgICBpZiBbWyAtbiAke0FC SV9BTExPV30gXV07IHRoZW4KICAgICAgICAgICAgbG9jYWwgb3JkZXJhPSIiOwogICAgICAgICAg ICBmb3IgeCBpbiAke29yZGVyfTsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmIGhh cyAke3h9ICR7QUJJX0FMTE9XfTsgdGhlbgogICAgICAgICAgICAgICAgICAgIG9yZGVyYT0iJHtv cmRlcmF9ICR7eH0iOwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGRvbmU7CiAgICAg ICAgICAgIG9yZGVyPSR7b3JkZXJhfTsKICAgICAgICBmaTsKICAgIGVsc2UKICAgICAgICBvcmRl cj0ke0RFRkFVTFRfQUJJfTsKICAgIGZpOwogICAgaWYgW1sgLXogJHtvcmRlcn0gXV07IHRoZW4K ICAgICAgICBkaWUgIlRoZSBBQkkgbGlzdCBpcyBlbXB0eS4gIEFyZSB5b3UgdXNpbmcgYSBwcm9w ZXIgbXVsdGlsaWIgcHJvZmlsZT8gIFBlcmhhcHMgeW91ciBVU0UgZmxhZ3Mgb3IgTVVMVElMSUJf QUJJUyBhcmUgdG9vIHJlc3RyaWN0aXZlIGZvciB0aGlzIHBhY2thZ2UuIjsKICAgIGZpOwogICAg ZWNobyAke29yZGVyfTsKICAgIHJldHVybiAwCn0KZ2V0X2xhc3RfdmVyc2lvbl9jb21wb25lbnRf aW5kZXggKCkgCnsgCiAgICBlY2hvICQoKCQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X2NvdW50ICIk ezE6LSR7UFZ9fSIgKSAtIDEpKQp9CmdldF9saWJkaXIgKCkgCnsgCiAgICBsb2NhbCBDT05GX0xJ QkRJUjsKICAgIGlmIFsgLW4gIiR7Q09ORl9MSUJESVJfT1ZFUlJJREV9IiBdOyB0aGVuCiAgICAg ICAgZWNobyAke0NPTkZfTElCRElSX09WRVJSSURFfTsKICAgIGVsc2UKICAgICAgICBnZXRfYWJp X0xJQkRJUjsKICAgIGZpCn0KZ2V0X2xpYm5hbWUgKCkgCnsgCiAgICBsb2NhbCBsaWJuYW1lOwog ICAgbG9jYWwgdmVyPSQxOwogICAgY2FzZSAke0NIT1NUfSBpbiAKICAgICAgICAqLWN5Z3dpbiB8 IG1pbmd3KiB8ICotbWluZ3cqKQogICAgICAgICAgICBsaWJuYW1lPSJkbGwiCiAgICAgICAgOzsK ICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAgIGxpYm5hbWU9ImR5bGliIgogICAgICAgIDs7 CiAgICAgICAgKi1taW50KikKICAgICAgICAgICAgbGlibmFtZT0iaXJyZWxldmFudCIKICAgICAg ICA7OwogICAgICAgIGhwcGEqLWhwdXgqKQogICAgICAgICAgICBsaWJuYW1lPSJzbCIKICAgICAg ICA7OwogICAgICAgICopCiAgICAgICAgICAgIGxpYm5hbWU9InNvIgogICAgICAgIDs7CiAgICBl c2FjOwogICAgaWYgW1sgLXogJCogXV07IHRoZW4KICAgICAgICBlY2hvICIuJHtsaWJuYW1lfSI7 CiAgICBlbHNlCiAgICAgICAgZm9yIHZlciBpbiAiJEAiOwogICAgICAgIGRvCiAgICAgICAgICAg IGNhc2UgJHtDSE9TVH0gaW4gCiAgICAgICAgICAgICAgICAqLWRhcndpbiopCiAgICAgICAgICAg ICAgICAgICAgZWNobyAiLiR7dmVyfS4ke2xpYm5hbWV9IgogICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICotbWludCopCiAgICAgICAgICAgICAgICAgICAgZWNobyAiLiR7bGlibmFt ZX0iCiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAg ICAgICBlY2hvICIuJHtsaWJuYW1lfS4ke3Zlcn0iCiAgICAgICAgICAgICAgICA7OwogICAgICAg ICAgICBlc2FjOwogICAgICAgIGRvbmU7CiAgICBmaQp9CmdldF9tYWpvcl92ZXJzaW9uICgpIAp7 IAogICAgbG9jYWwgYz0oJChnZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHsxOi0ke1BWfX0i KSk7CiAgICBlY2hvICR7Y1swXX0KfQpnZXRfbW9kbmFtZSAoKSAKeyAKICAgIGxvY2FsIG1vZG5h bWU7CiAgICBsb2NhbCB2ZXI9JDE7CiAgICBjYXNlICR7Q0hPU1R9IGluIAogICAgICAgICotZGFy d2luKikKICAgICAgICAgICAgbW9kbmFtZT0iYnVuZGxlIgogICAgICAgIDs7CiAgICAgICAgKikK ICAgICAgICAgICAgbW9kbmFtZT0ic28iCiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBlY2hvICIu JHttb2RuYW1lfSIKfQpnZXRfdmVyc2lvbl9jb21wb25lbnRfY291bnQgKCkgCnsgCiAgICBsb2Nh bCBhPSgkKGdldF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7MTotJHtQVn19IikpOwogICAgZWNobyAk eyNhW0BdfQp9CmdldF92ZXJzaW9uX2NvbXBvbmVudF9yYW5nZSAoKSAKeyAKICAgIGVzaG9wdHNf cHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwgYyB2PSIkezI6LSR7UFZ9fSIgcmFuZ2U9IiR7MX0i IHJhbmdlX3N0YXJ0IHJhbmdlX2VuZDsKICAgIGxvY2FsIC1pIGk9LTEgaj0wOwogICAgYz0oJChn ZXRfYWxsX3ZlcnNpb25fY29tcG9uZW50cyAiJHt2fSIpKTsKICAgIHJhbmdlX3N0YXJ0PSR7cmFu Z2UlLSp9OwogICAgcmFuZ2Vfc3RhcnQ9JHtyYW5nZV9zdGFydDotMX07CiAgICByYW5nZV9lbmQ9 JHtyYW5nZSMqLX07CiAgICByYW5nZV9lbmQ9JHtyYW5nZV9lbmQ6LSR7I2NbQF19fTsKICAgIHdo aWxlICgoaiA8IHJhbmdlX3N0YXJ0KSk7IGRvCiAgICAgICAgaSs9MTsKICAgICAgICAoKGkgPiAk eyNjW0BdfSkpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ld Ly9bLS5fXX0iIF1dICYmIGorPTE7CiAgICBkb25lOwogICAgd2hpbGUgKChqIDw9IHJhbmdlX2Vu ZCkpOyBkbwogICAgICAgIGVjaG8gLW4gJHtjW2ldfTsKICAgICAgICAoKGkgPiAkeyNjW0BdfSkp ICYmIGVzaG9wdHNfcG9wICYmIHJldHVybjsKICAgICAgICBbWyAtbiAiJHtjW2ldLy9bLS5fXX0i IF1dICYmIGorPTE7CiAgICAgICAgaSs9MTsKICAgIGRvbmU7CiAgICBlc2hvcHRzX3BvcAp9Cmdl dF92ZXJzaW9uX2NvbXBvbmVudHMgKCkgCnsgCiAgICBsb2NhbCBjPSQoZ2V0X2FsbF92ZXJzaW9u X2NvbXBvbmVudHMgIiR7MTotJHtQVn19Iik7CiAgICBlY2hvICR7Yy8vWy0uX10vIH0KfQpoYXNf bXVsdGlsaWJfcHJvZmlsZSAoKSAKeyAKICAgIFsgLW4gIiR7TVVMVElMSUJfQUJJU30iIC1hICIk e01VTFRJTElCX0FCSVN9IiAhPSAiJHtNVUxUSUxJQl9BQklTLyAvfSIgXQp9CmluX2l1c2UgKCkg CnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBbWyAk eyN9IC1lcSAxIF1dIHx8IGRpZSAiSW52YWxpZCBhcmdzIHRvICR7RlVOQ05BTUV9KCkiOwogICAg bG9jYWwgZmxhZz0kezF9OwogICAgbG9jYWwgbGl1c2U9KCR7SVVTRX0pOwogICAgaGFzICIke2Zs YWd9IiAiJHtsaXVzZVtAXSNbKy1dfSIKfQppc19maW5hbF9hYmkgKCkgCnsgCiAgICBoYXNfbXVs dGlsaWJfcHJvZmlsZSB8fCByZXR1cm4gMDsKICAgIHNldCAtLSAkKGdldF9pbnN0YWxsX2FiaXMp OwogICAgbG9jYWwgTEFTVF9BQkk9JCM7CiAgICBbWyAkeyFMQVNUX0FCSX0gPT0gJHtBQkl9IF1d Cn0KaXNkaWdpdCAoKSAKeyAKICAgIGxvY2FsIGQ7CiAgICBmb3IgZCBpbiAiJEAiOwogICAgZG8K ICAgICAgICBbWyAke2Q6LWJhZH0gPT0gKlshMC05XSogXV0gJiYgcmV0dXJuIDE7CiAgICBkb25l OwogICAgcmV0dXJuIDAKfQptYWtlX2Rlc2t0b3BfZW50cnkgKCkgCnsgCiAgICBbWyAteiAkMSBd XSAmJiBkaWUgIm1ha2VfZGVza3RvcF9lbnRyeTogWW91IG11c3Qgc3BlY2lmeSB0aGUgZXhlY3V0 YWJsZSI7CiAgICBsb2NhbCBleGVjPSR7MX07CiAgICBsb2NhbCBuYW1lPSR7MjotJHtQTn19Owog ICAgbG9jYWwgaWNvbj0kezM6LSR7UE59fTsKICAgIGxvY2FsIHR5cGU9JHs0fTsKICAgIGxvY2Fs IGZpZWxkcz0kezV9OwogICAgaWYgW1sgLXogJHt0eXBlfSBdXTsgdGhlbgogICAgICAgIGxvY2Fs IGNhdG1haj0ke0NBVEVHT1JZJSUtKn07CiAgICAgICAgbG9jYWwgY2F0bWluPSR7Q0FURUdPUlkj IyotfTsKICAgICAgICBjYXNlICR7Y2F0bWFqfSBpbiAKICAgICAgICAgICAgYXBwKQogICAgICAg ICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgYWNjZXNzaWJp bGl0eSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iVXRpbGl0eTtBY2Nlc3NpYmlsaXR5 IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYWRtaW4pCiAgICAg ICAgICAgICAgICAgICAgICAgIHR5cGU9U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICAgICBhbnRpdmlydXMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 U3lzdGVtCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBhcmNoKQog ICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJVdGlsaXR5O0FyY2hpdmluZyIKICAgICAgICAg ICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJhY2t1cCkKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT0iVXRpbGl0eTtBcmNoaXZpbmciCiAgICAgICAgICAgICAgICAgICAgOzsK ICAgICAgICAgICAgICAgICAgICBjZHIpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9IkF1 ZGlvVmlkZW87RGlzY0J1cm5pbmciCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAg ICAgICAgICBkaWN0cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iT2ZmaWNlO0RpY3Rp b25hcnkiCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBkb2MpCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9RG9jdW1lbnRhdGlvbgogICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZWRpdG9ycykKICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZT0iVXRpbGl0eTtUZXh0RWRpdG9yIgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgZW1hY3MpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9IkRldmVs b3BtZW50O1RleHRFZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICBlbXVsYXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9IlN5c3RlbTtFbXVs YXRvciIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGxhcHRvcCkK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iU2V0dGluZ3M7SGFyZHdhcmVTZXR0aW5ncyIK ICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIG9mZmljZSkKICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZT1PZmZpY2UKICAgICAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICAgICAgICAgIHBkYSkKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0iT2ZmaWNl O1BEQSIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZpbSkKICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQ7VGV4dEVkaXRvciIKICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHhlbWFjcykKICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT0iRGV2ZWxvcG1lbnQ7VGV4dEVkaXRvciIKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICA7OwogICAgICAgICAgICBk ZXYpCiAgICAgICAgICAgICAgICB0eXBlPSJEZXZlbG9wbWVudCIKICAgICAgICAgICAgOzsKICAg ICAgICAgICAgZ2FtZXMpCiAgICAgICAgICAgICAgICBjYXNlICR7Y2F0bWlufSBpbiAKICAgICAg ICAgICAgICAgICAgICBhY3Rpb24gfCBmcHMpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 QWN0aW9uR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgYXJj YWRlKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUFyY2FkZUdhbWUKICAgICAgICAgICAg ICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJvYXJkKQogICAgICAgICAgICAgICAgICAg ICAgICB0eXBlPUJvYXJkR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgZW11bGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUVtdWxhdG9yCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBraWRzKQogICAgICAgICAg ICAgICAgICAgICAgICB0eXBlPUtpZHNHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAg ICAgICAgICAgICAgICBwdXp6bGUpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9TG9naWNH YW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICByb2d1ZWxpa2Up CiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Um9sZVBsYXlpbmcKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgICAgIHJwZykKICAgICAgICAgICAgICAgICAgICAgICAg dHlwZT1Sb2xlUGxheWluZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgc2ltdWxhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1TaW11bGF0aW9uCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBzcG9ydHMpCiAgICAgICAg ICAgICAgICAgICAgICAgIHR5cGU9U3BvcnRzR2FtZQogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgc3RyYXRlZ3kpCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 U3RyYXRlZ3lHYW1lCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7 CiAgICAgICAgICAgICAgICB0eXBlPSJHYW1lOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAg ICAgICAgIGdub21lKQogICAgICAgICAgICAgICAgdHlwZT0iR25vbWU7R1RLIgogICAgICAgICAg ICA7OwogICAgICAgICAgICBrZGUpCiAgICAgICAgICAgICAgICB0eXBlPSJLREU7UXQiCiAgICAg ICAgICAgIDs7CiAgICAgICAgICAgIG1haWwpCiAgICAgICAgICAgICAgICB0eXBlPSJOZXR3b3Jr O0VtYWlsIgogICAgICAgICAgICA7OwogICAgICAgICAgICBtZWRpYSkKICAgICAgICAgICAgICAg IGNhc2UgJHtjYXRtaW59IGluIAogICAgICAgICAgICAgICAgICAgIGdmeCkKICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZT1HcmFwaGljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4g CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWRpbykKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0eXBlPVR1bmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAg ICAgICAgICAgICAgICAgICAgICAgICAgc291bmQpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdHlwZT1BdWRpbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHR2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGU9VFYKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2aWRlbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVZpZGVv CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICAgICBl c2FjOwogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSJBdWRpb1ZpZGVvOyR7dHlwZX0iCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVzYWMKICAgICAgICAgICAgOzsK ICAgICAgICAgICAgbmV0KQogICAgICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAg ICAgICAgICAgICAgICAgZGlhbHVwKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPURpYWx1 cAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgZnRwKQogICAgICAg ICAgICAgICAgICAgICAgICB0eXBlPUZpbGVUcmFuc2ZlcgogICAgICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAgICAgaW0pCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9SW5z dGFudE1lc3NhZ2luZwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAg aXJjKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPUlSQ0NsaWVudAogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgbWFpbCkKICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZT1FbWFpbAogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAg bmV3cykKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1OZXdzCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgICAgICBubnRwKQogICAgICAgICAgICAgICAgICAgICAgICB0 eXBlPU5ld3MKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHAycCkK ICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1GaWxlVHJhbnNmZXIKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZvaXApCiAgICAgICAgICAgICAgICAgICAgICAg IHR5cGU9VGVsZXBob255CiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgIGVz YWM7CiAgICAgICAgICAgICAgICB0eXBlPSJOZXR3b3JrOyR7dHlwZX0iCiAgICAgICAgICAgIDs7 CiAgICAgICAgICAgIHNjaSkKICAgICAgICAgICAgICAgIGNhc2UgJHtjYXRtaW59IGluIAogICAg ICAgICAgICAgICAgICAgIGFzdHJvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1Bc3Ry b25vbXkKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIGJpbyopCiAg ICAgICAgICAgICAgICAgICAgICAgIHR5cGU9QmlvbG9neQogICAgICAgICAgICAgICAgICAgIDs7 CiAgICAgICAgICAgICAgICAgICAgY2FsYyopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9 Q2FsY3VsYXRvcgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgY2hl bSopCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9Q2hlbWlzdHJ5CiAgICAgICAgICAgICAg ICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBlbGVjKikKICAgICAgICAgICAgICAgICAgICAg ICAgdHlwZT1FbGVjdHJvbmljcwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAg ICAgICAgZ2VvKikKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1HZW9sb2d5CiAgICAgICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBtYXRoKikKICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZT1NYXRoCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICBwaHlzaWNzKQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVBoeXNpY3MKICAgICAg ICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgIHZpc3VhbCopCiAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGU9RGF0YVZpc3VhbGl6YXRpb24KICAgICAgICAgICAgICAgICAgICA7 OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9IkVkdWNhdGlvbjtT Y2llbmNlOyR7dHlwZX0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIHN5cykKICAgICAgICAg ICAgICAgIHR5cGU9IlN5c3RlbSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgd3d3KQogICAg ICAgICAgICAgICAgY2FzZSAke2NhdG1pbn0gaW4gCiAgICAgICAgICAgICAgICAgICAgY2xpZW50 KQogICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVdlYkJyb3dzZXIKICAgICAgICAgICAgICAg ICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIHR5cGU9Ik5ldHdv cms7JHt0eXBlfSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAgICAg IHR5cGU9CiAgICAgICAgICAgIDs7CiAgICAgICAgZXNhYzsKICAgIGZpOwogICAgbG9jYWwgc2xv dD0ke1NMT1QlLyp9OwogICAgaWYgW1sgJHtzbG90fSA9PSAiMCIgXV07IHRoZW4KICAgICAgICBs b2NhbCBkZXNrdG9wX25hbWU9IiR7UE59IjsKICAgIGVsc2UKICAgICAgICBsb2NhbCBkZXNrdG9w X25hbWU9IiR7UE59LSR7c2xvdH0iOwogICAgZmk7CiAgICBsb2NhbCBkZXNrdG9wPSIke1R9LyQo ZWNobyAke2V4ZWN9IHwgc2VkICdzOltbOnNwYWNlOl0vOl06XzpnJyktJHtkZXNrdG9wX25hbWV9 LmRlc2t0b3AiOwogICAgdHlwZT0ke3R5cGUlO30ke3R5cGU6Kzt9OwogICAgZXNob3B0c19wdXNo IC1zIGV4dGdsb2I7CiAgICBpZiBbWyAtbiAke2ljb259ICYmICR7aWNvbn0gIT0gLyogXV0gJiYg W1sgJHtpY29ufSA9PSAqLnhwbSB8fCAke2ljb259ID09ICoucG5nIHx8ICR7aWNvbn0gPT0gKi5z dmcgXV07IHRoZW4KICAgICAgICBld2FybiAiQXMgZGVzY3JpYmVkIGluIHRoZSBJY29uIFRoZW1l IFNwZWNpZmljYXRpb24sIGljb24gZmlsZSBleHRlbnNpb25zIGFyZSBub3QiOwogICAgICAgIGV3 YXJuICJhbGxvd2VkIGluIC5kZXNrdG9wIGZpbGVzIGlmIHRoZSB2YWx1ZSBpcyBub3QgYW4gYWJz b2x1dGUgcGF0aC4iOwogICAgICAgIGljb249JHtpY29uJS5AKHhwbXxwbmd8c3ZnKX07CiAgICBm aTsKICAgIGVzaG9wdHNfcG9wOwogICAgY2F0ID4gIiR7ZGVza3RvcH0iICA8PC1FT0YKW0Rlc2t0 b3AgRW50cnldCk5hbWU9JHtuYW1lfQpUeXBlPUFwcGxpY2F0aW9uCkNvbW1lbnQ9JHtERVNDUklQ VElPTn0KRXhlYz0ke2V4ZWN9ClRyeUV4ZWM9JHtleGVjJSUgKn0KSWNvbj0ke2ljb259CkNhdGVn b3JpZXM9JHt0eXBlfQpFT0YKCiAgICBpZiBbWyAke2ZpZWxkczotPX0gIT0gKj0qIF1dOyB0aGVu CiAgICAgICAgZXdhcm4gIm1ha2VfZGVza3RvcF9lbnRyeTogdXBkYXRlIHlvdXIgNXRoIGFyZyB0 byByZWFkIFBhdGg9JHtmaWVsZHN9IjsKICAgICAgICBmaWVsZHM9IlBhdGg9JHtmaWVsZHN9IjsK ICAgIGZpOwogICAgW1sgLW4gJHtmaWVsZHN9IF1dICYmIHByaW50ZiAnJWJcbicgIiR7ZmllbGRz fSIgPj4gIiR7ZGVza3RvcH0iOwogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25z OwogICAgZG9pbnMgIiR7ZGVza3RvcH0iICkgfHwgZGllICJpbnN0YWxsaW5nIGRlc2t0b3AgZmls ZSBmYWlsZWQiCn0KbWFrZV9zZXNzaW9uX2Rlc2t0b3AgKCkgCnsgCiAgICBbWyAteiAkMSBdXSAm JiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSB0aXRsZSIgJiYgcmV0dXJuIDE7CiAg ICBbWyAteiAkMiBdXSAmJiBlZXJyb3IgIiQwOiBZb3UgbXVzdCBzcGVjaWZ5IHRoZSBjb21tYW5k IiAmJiByZXR1cm4gMTsKICAgIGxvY2FsIHRpdGxlPSQxOwogICAgbG9jYWwgY29tbWFuZD0kMjsK ICAgIGxvY2FsIGRlc2t0b3A9JHtUfS8ke3dtOi0ke1BOfX0uZGVza3RvcDsKICAgIHNoaWZ0IDI7 CiAgICBjYXQgPiAiJHtkZXNrdG9wfSIgIDw8LUVPRgpbRGVza3RvcCBFbnRyeV0KTmFtZT0ke3Rp dGxlfQpDb21tZW50PVRoaXMgc2Vzc2lvbiBsb2dzIHlvdSBpbnRvICR7dGl0bGV9CkV4ZWM9JHtj b21tYW5kfSAkKgpUcnlFeGVjPSR7Y29tbWFuZH0KVHlwZT1YU2Vzc2lvbgpFT0YKCiAgICAoIGlu c2ludG8gL3Vzci9zaGFyZS94c2Vzc2lvbnM7CiAgICBkb2lucyAiJHtkZXNrdG9wfSIgKQp9Cm1h a2Vfd3JhcHBlciAoKSAKeyAKICAgIF9ldXRpbHNfZXByZWZpeF9pbml0OwogICAgbG9jYWwgd3Jh cHBlcj0kMSBiaW49JDIgY2hkaXI9JDMgbGliZGlyPSQ0IHBhdGg9JDU7CiAgICBsb2NhbCB0bXB3 cmFwcGVyPSQoZW1rdGVtcCk7CiAgICAoIGVjaG8gJyMhL2Jpbi9zaCc7CiAgICBbWyAtbiAke2No ZGlyfSBdXSAmJiBwcmludGYgJ2NkICIlcyJcbicgIiR7RVBSRUZJWH0ke2NoZGlyfSI7CiAgICBp ZiBbWyAtbiAke2xpYmRpcn0gXV07IHRoZW4KICAgICAgICBsb2NhbCB2YXI7CiAgICAgICAgaWYg W1sgJHtDSE9TVH0gPT0gKi1kYXJ3aW4qIF1dOyB0aGVuCiAgICAgICAgICAgIHZhcj1EWUxEX0xJ QlJBUllfUEFUSDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHZhcj1MRF9MSUJSQVJZX1BBVEg7 CiAgICAgICAgZmk7CiAgICAgICAgY2F0ICA8PC1FT0YKaWYgWyAiXCR7JHt2YXJ9K3NldH0iID0g InNldCIgXSA7IHRoZW4KZXhwb3J0ICR7dmFyfT0iXCR7JHt2YXJ9fToke0VQUkVGSVh9JHtsaWJk aXJ9IgplbHNlCmV4cG9ydCAke3Zhcn09IiR7RVBSRUZJWH0ke2xpYmRpcn0iCmZpCkVPRgoKICAg IGZpCiAgICBwcmludGYgJ2V4ZWMgJXMgIiRAIlxuJyAiJHtiaW4vI1wvLyR7RVBSRUZJWH0vfSIg KSA+ICIke3RtcHdyYXBwZXJ9IjsKICAgIGNobW9kIGdvK3J4ICIke3RtcHdyYXBwZXJ9IjsKICAg IGlmIFtbIC1uICR7cGF0aH0gXV07IHRoZW4KICAgICAgICAoIGV4ZWludG8gIiR7cGF0aH0iOwog ICAgICAgIG5ld2V4ZSAiJHt0bXB3cmFwcGVyfSIgIiR7d3JhcHBlcn0iICkgfHwgZGllOwogICAg ZWxzZQogICAgICAgIG5ld2JpbiAiJHt0bXB3cmFwcGVyfSIgIiR7d3JhcHBlcn0iIHx8IGRpZTsK ICAgIGZpCn0KbWFrZW9wdHNfam9icyAoKSAKeyAKICAgIFtbICQjIC1lcSAwIF1dICYmIHNldCAt LSAke01BS0VPUFRTfTsKICAgIGxvY2FsIGpvYnM9JChlY2hvICIgJCogIiB8IHNlZCAtciAtbiAJ CS1lICdzOi4qW1s6c3BhY2U6XV0oLWp8LS1qb2JzWz1bOnNwYWNlOl1dKVtbOnNwYWNlOl1dKihb MC05XSspLio6XDI6cCcgCQktZSAnczouKltbOnNwYWNlOl1dKC1qfC0tam9icylbWzpzcGFjZTpd XS4qOjk5OTpwJyk7CiAgICBlY2hvICR7am9iczotMX0KfQptYWtlb3B0c19sb2FkYXZnICgpIAp7 IAogICAgW1sgJCMgLWVxIDAgXV0gJiYgc2V0IC0tICR7TUFLRU9QVFN9OwogICAgbG9jYWwgbGF2 Zz0kKGVjaG8gIiAkKiAiIHwgc2VkIC1yIC1uIAkJLWUgJ3M6LipbWzpzcGFjZTpdXSgtbHwtLWxv YWQtYXZlcmFnZVs9WzpzcGFjZTpdXSlbWzpzcGFjZTpdXSooWzAtOV0rfFswLTldK1wuWzAtOV0r KVteMC05Ll0qOlwyOnAnIAkJLWUgJ3M6LipbWzpzcGFjZTpdXSgtbHwtLWxvYWQtYXZlcmFnZSlb WzpzcGFjZTpdXS4qOjk5OTpwJyk7CiAgICBlY2hvICR7bGF2ZzotMX0KfQptdWx0aWJ1aWxkX2Nv cHlfc291cmNlcyAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk e0B9IjsKICAgIGxvY2FsIF9NVUxUSUJVSUxEX0lOSVRJQUxfQlVJTERfRElSPSR7QlVJTERfRElS Oi0ke1N9fTsKICAgIGVpbmZvICJXaWxsIGNvcHkgc291cmNlcyBmcm9tICR7X01VTFRJQlVJTERf SU5JVElBTF9CVUlMRF9ESVJ9IjsKICAgIGxvY2FsIGNwX2FyZ3M9KCk7CiAgICBpZiBjcCAtLXJl Zmxpbms9YXV0byAtLXZlcnNpb24gJj4vZGV2L251bGw7IHRoZW4KICAgICAgICBjcF9hcmdzKz0o LS1yZWZsaW5rPWF1dG8pOwogICAgZmk7CiAgICBmdW5jdGlvbiBfbXVsdGlidWlsZF9jcmVhdGVf c291cmNlX2NvcHkgKCkgCiAgICB7IAogICAgICAgIGVpbmZvICIke01VTFRJQlVJTERfVkFSSUFO VH06IGNvcHlpbmcgdG8gJHtCVUlMRF9ESVJ9IjsKICAgICAgICBjcCAtcHIgIiR7Y3BfYXJnc1tA XX0iICIke19NVUxUSUJVSUxEX0lOSVRJQUxfQlVJTERfRElSfSIgIiR7QlVJTERfRElSfSIgfHwg ZGllCiAgICB9OwogICAgbXVsdGlidWlsZF9mb3JlYWNoX3ZhcmlhbnQgX211bHRpYnVpbGRfY3Jl YXRlX3NvdXJjZV9jb3B5Cn0KbXVsdGlidWlsZF9mb3JfYmVzdF92YXJpYW50ICgpIAp7IAogICAg ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgW1sgLW4gJHtNVUxU SUJVSUxEX1ZBUklBTlRTfSBdXSB8fCBkaWUgIk1VTFRJQlVJTERfVkFSSUFOVFMgbmVlZCB0byBi ZSBzZXQiOwogICAgbG9jYWwgTVVMVElCVUlMRF9WQVJJQU5UUz0oIiR7TVVMVElCVUlMRF9WQVJJ QU5UU1skKCggJHsjTVVMVElCVUlMRF9WQVJJQU5UU1tAXX0gLSAxICkpXX0iKTsKICAgIG11bHRp YnVpbGRfZm9yZWFjaF92YXJpYW50ICIke0B9Igp9Cm11bHRpYnVpbGRfZm9yZWFjaF92YXJpYW50 ICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAg W1sgLW4gJHtNVUxUSUJVSUxEX1ZBUklBTlRTfSBdXSB8fCBkaWUgIk1VTFRJQlVJTERfVkFSSUFO VFMgbmVlZCB0byBiZSBzZXQiOwogICAgbG9jYWwgYmRpcj0ke0JVSUxEX0RJUjotJHtTfX07CiAg ICBbWyAke2JkaXIlJS99ID09ICR7V09SS0RJUiUlL30gXV0gJiYgYmRpcj0ke1dPUktESVJ9L2J1 aWxkOwogICAgbG9jYWwgcHJldl9pZD0ke01VTFRJQlVJTERfSUQ6KyR7TVVMVElCVUlMRF9JRH0t fTsKICAgIGxvY2FsIHJldD0wIGxyZXQ9MCB2OwogICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9 OiBpbml0aWFsIGJ1aWxkX2RpciA9ICR7YmRpcn0iOwogICAgZm9yIHYgaW4gIiR7TVVMVElCVUlM RF9WQVJJQU5UU1tAXX0iOwogICAgZG8KICAgICAgICBsb2NhbCBNVUxUSUJVSUxEX1ZBUklBTlQ9 JHt2fTsKICAgICAgICBsb2NhbCBNVUxUSUJVSUxEX0lEPSR7cHJldl9pZH0ke3Z9OwogICAgICAg IGxvY2FsIEJVSUxEX0RJUj0ke2JkaXIlJS99LSR7dn07CiAgICAgICAgZnVuY3Rpb24gX211bHRp YnVpbGRfcnVuICgpIAogICAgICAgIHsgCiAgICAgICAgICAgIGxvY2FsIGk9MTsKICAgICAgICAg ICAgd2hpbGUgW1sgJHshaX0gPT0gXyogXV07IGRvCiAgICAgICAgICAgICAgICAoKCBpICs9IDEg KSk7CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIFtbICR7aX0gLWxlICR7I30gXV0gJiYg ZWluZm8gIiR7dn06IHJ1bm5pbmcgJHtAOiR7aX19IjsKICAgICAgICAgICAgIiR7QH0iCiAgICAg ICAgfTsKICAgICAgICBfbXVsdGlidWlsZF9ydW4gIiR7QH0iID4gPihleGVjIHRlZSAtYSAiJHtU fS9idWlsZC0ke01VTFRJQlVJTERfSUR9LmxvZyIpIDI+JjE7CiAgICAgICAgbHJldD0kez99Owog ICAgZG9uZTsKICAgIFtbICR7cmV0fSAtZXEgMCAmJiAke2xyZXR9IC1uZSAwIF1dICYmIHJldD0k e2xyZXR9OwogICAgcmV0dXJuICR7cmV0fQp9Cm11bHRpYnVpbGRfbWVyZ2Vfcm9vdCAoKSAKeyAK ICAgIGxvY2FsIHNyYz0kezF9OwogICAgbG9jYWwgZGVzdD0kezJ9OwogICAgbG9jYWwgbG9ja2Zp bGU9JHtUfS8ubXVsdGlidWlsZF9tZXJnZV9sb2NrOwogICAgbG9jYWwgbG9ja2ZpbGVfbD0ke2xv Y2tmaWxlfS4ke0JBU0hQSUR9OwogICAgbG9jYWwgcmV0OwogICAgdG91Y2ggIiR7bG9ja2ZpbGVf bH0iIHx8IGRpZTsKICAgIHVudGlsIGxuICIke2xvY2tmaWxlX2x9IiAiJHtsb2NrZmlsZX0iICY+ L2Rldi9udWxsOyBkbwogICAgICAgIHNsZWVwIDE7CiAgICBkb25lOwogICAgcm0gIiR7bG9ja2Zp bGVfbH0iIHx8IGRpZTsKICAgIGlmIHVzZSB1c2VybGFuZF9CU0Q7IHRoZW4KICAgICAgICB0YXIg LUMgIiR7c3JjfSIgLWYgLSAtYyAuIHwgdGFyIC14IC1mIC0gLUMgIiR7ZGVzdH0iOwogICAgICAg IFtbICR7UElQRVNUQVRVU1sqXX0gPT0gJzAgMCcgXV07CiAgICAgICAgcmV0PSR7P307CiAgICBl bHNlCiAgICAgICAgbG9jYWwgY3BfYXJncz0oKTsKICAgICAgICBpZiBjcCAtYSAtLXZlcnNpb24g Jj4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgY3BfYXJncys9KC1hKTsKICAgICAgICBlbHNl CiAgICAgICAgICAgIGNwX2FyZ3MrPSgtUCAtUiAtcCk7CiAgICAgICAgZmk7CiAgICAgICAgaWYg Y3AgLS1yZWZsaW5rPWF1dG8gLS12ZXJzaW9uICY+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICAg IGNwX2FyZ3MrPSgtLXJlZmxpbms9YXV0byk7CiAgICAgICAgZmk7CiAgICAgICAgY3AgIiR7Y3Bf YXJnc1tAXX0iICIke3NyY30iLy4gIiR7ZGVzdH0iLzsKICAgICAgICByZXQ9JHs/fTsKICAgIGZp OwogICAgcm0gIiR7bG9ja2ZpbGV9IiB8fCBkaWU7CiAgICBpZiBbWyAke3JldH0gLW5lIDAgXV07 IHRoZW4KICAgICAgICBkaWUgIiR7TVVMVElCVUlMRF9WQVJJQU5UOi0odW5rbm93bil9OiBtZXJn aW5nIGltYWdlIGZhaWxlZC4iOwogICAgZmk7CiAgICBybSAtcmYgIiR7c3JjfSIKfQptdWx0aWJ1 aWxkX3BhcmFsbGVsX2ZvcmVhY2hfdmFyaWFudCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0 aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxvY2FsIHJldCBscmV0OwogICAgZnVuY3Rpb24g X211bHRpYnVpbGRfcGFyYWxsZWwgKCkgCiAgICB7IAogICAgICAgICggbXVsdGlqb2JfY2hpbGRf aW5pdDsKICAgICAgICAiJHtAfSIgKSAmIG11bHRpam9iX3Bvc3RfZm9yawogICAgfTsKICAgIGxv Y2FsIG9wdHM7CiAgICBpZiBbWyAtbiAke01VTFRJQlVJTERfSk9CU30gXV07IHRoZW4KICAgICAg ICBvcHRzPS1qJHtNVUxUSUJVSUxEX0pPQlN9OwogICAgZWxzZQogICAgICAgIG9wdHM9JHtNQUtF T1BUU307CiAgICBmaTsKICAgIG11bHRpam9iX2luaXQgIiR7b3B0c30iOwogICAgbXVsdGlidWls ZF9mb3JlYWNoX3ZhcmlhbnQgX211bHRpYnVpbGRfcGFyYWxsZWwgIiR7QH0iOwogICAgcmV0PSR7 P307CiAgICBtdWx0aWpvYl9maW5pc2g7CiAgICBscmV0PSR7P307CiAgICBbWyAke3JldH0gLWVx IDAgXV0gJiYgcmV0PSR7bHJldH07CiAgICByZXR1cm4gJHtyZXR9Cn0KbXVsdGlqb2JfY2hpbGRf aW5pdCAoKSAKeyAKICAgIGxvY2FsIG1vZGU9InByZSI7CiAgICBjYXNlICQxIGluIAogICAgICAg IC0tcHJlKQogICAgICAgICAgICBtb2RlPSJwcmUiOwogICAgICAgICAgICBzaGlmdAogICAgICAg IDs7CiAgICAgICAgLS1wb3N0KQogICAgICAgICAgICBtb2RlPSJwb3N0IjsKICAgICAgICAgICAg c2hpZnQKICAgICAgICA7OwogICAgZXNhYzsKICAgIGlmIFtbICQjIC1lcSAwIF1dOyB0aGVuCiAg ICAgICAgdHJhcCAnZWNobyAke0JBU0hQSUQ6LSQoYmFzaHBpZCl9ICQ/ID4mJyR7bWpfd3JpdGVf ZmR9IEVYSVQ7CiAgICAgICAgdHJhcCAnZXhpdCAxJyBJTlQgVEVSTTsKICAgIGVsc2UKICAgICAg ICBsb2NhbCByZXQ7CiAgICAgICAgW1sgJHttb2RlfSA9PSAicHJlIiBdXSAmJiB7IAogICAgICAg ICAgICBtdWx0aWpvYl9wcmVfZm9yazsKICAgICAgICAgICAgcmV0PSQ/CiAgICAgICAgfTsKICAg ICAgICAoIG11bHRpam9iX2NoaWxkX2luaXQ7CiAgICAgICAgIiRAIiApICYgW1sgJHttb2RlfSA9 PSAicG9zdCIgXV0gJiYgeyAKICAgICAgICAgICAgbXVsdGlqb2JfcG9zdF9mb3JrOwogICAgICAg ICAgICByZXQ9JD8KICAgICAgICB9OwogICAgICAgIHJldHVybiAke3JldH07CiAgICBmaQp9Cm11 bHRpam9iX2ZpbmlzaCAoKSAKeyAKICAgIGxvY2FsIHJldD0wOwogICAgd2hpbGUgW1sgJHttal9u dW1fam9ic30gLWd0IDAgXV07IGRvCiAgICAgICAgbXVsdGlqb2JfZmluaXNoX29uZTsKICAgICAg ICA6ICQoKCByZXQgfD0gJD8gKSk7CiAgICBkb25lOwogICAgd2FpdDsKICAgIFtbICQjIC1lcSAw IF1dIHx8IGRpZSAiJHtGVU5DTkFNRX0gdGFrZXMgbm8gYXJndW1lbnRzIjsKICAgIEVCVUlMRF9E RUFUSF9IT09LUz0ke0VCVUlMRF9ERUFUSF9IT09LUy8gd2FpdCAvIH07CiAgICByZXR1cm4gJHty ZXR9Cn0KbXVsdGlqb2JfZmluaXNoX29uZSAoKSAKeyAKICAgIFtbICQjIC1lcSAwIF1dIHx8IGRp ZSAiJHtGVU5DTkFNRX0gdGFrZXMgbm8gYXJndW1lbnRzIjsKICAgIGxvY2FsIHBpZCByZXQ7CiAg ICByZWFkIC1yIC11ICR7bWpfcmVhZF9mZH0gcGlkIHJldCB8fCBkaWU7CiAgICA6ICQoKCAtLW1q X251bV9qb2JzICkpOwogICAgcmV0dXJuICR7cmV0fQp9Cm11bHRpam9iX2luaXQgKCkgCnsgCiAg ICBoYXMgd2FpdCAke0VCVUlMRF9ERUFUSF9IT09LU30gfHwgRUJVSUxEX0RFQVRIX0hPT0tTKz0i IHdhaXQgIjsKICAgIGxvY2FsIHBpcGU9IiR7VH0vbXVsdGlqb2IucGlwZSI7CiAgICBta2ZpZm8g LW0gNjAwICIke3BpcGV9IjsKICAgIHJlZGlyZWN0X2FsbG9jX2ZkIG1qX3dyaXRlX2ZkICIke3Bp cGV9IjsKICAgIHJlZGlyZWN0X2FsbG9jX2ZkIG1qX3JlYWRfZmQgIiR7cGlwZX0iOwogICAgcm0g LWYgIiR7cGlwZX0iOwogICAgbWpfbWF4X2pvYnM9JChtYWtlb3B0c19qb2JzICIkQCIpOwogICAg bWpfbnVtX2pvYnM9MAp9Cm11bHRpam9iX3Bvc3RfZm9yayAoKSAKeyAKICAgIF9tdWx0aWpvYl9m b3JrIHBvc3QgIiRAIgp9Cm11bHRpam9iX3ByZV9mb3JrICgpIAp7IAogICAgX211bHRpam9iX2Zv cmsgcHJlICIkQCIKfQptdWx0aWxpYl9lbnYgKCkgCnsgCiAgICBsb2NhbCBDVEFSR0VUPSR7MTot JHtDVEFSR0VUfX07CiAgICBsb2NhbCBjcHU9JHtDVEFSR0VUJSUqLX07CiAgICBjYXNlICR7Y3B1 fSBpbiAKICAgICAgICBhYXJjaDY0KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19hcm09JHtD RkxBR1NfYXJtLX07CiAgICAgICAgICAgIGNhc2UgJHtjcHV9IGluIAogICAgICAgICAgICAgICAg YWFyY2g2NCpiZSkKICAgICAgICAgICAgICAgICAgICBleHBvcnQgQ0hPU1RfYXJtPSJhcm12OGIt JHtDVEFSR0VUIyotfSIKICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAqKQogICAg ICAgICAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9hcm09ImFybXY4bC0ke0NUQVJHRVQjKi19Igog ICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgQ0hPU1RfYXJt PSR7Q0hPU1RfYXJtLyUtZ251Ly1nbnVlYWJpfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRf YXJtPSR7Q0hPU1RfYXJtfTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9hcm09ImxpYiI7CiAg ICAgICAgICAgIGV4cG9ydCBDRkxBR1NfYXJtNjQ9JHtDRkxBR1NfYXJtNjQtfTsKICAgICAgICAg ICAgZXhwb3J0IENIT1NUX2FybTY0PSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFS R0VUX2FybTY0PSR7Q0hPU1RfYXJtNjR9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX2FybTY0 PSJsaWI2NCI7CiAgICAgICAgICAgIDogJHtNVUxUSUxJQl9BQklTPWFybTY0fTsKICAgICAgICAg ICAgOiAke0RFRkFVTFRfQUJJPWFybTY0fQogICAgICAgIDs7CiAgICAgICAgeDg2XzY0KikKICAg ICAgICAgICAgZXhwb3J0IENGTEFHU194ODY9JHtDRkxBR1NfeDg2LS1tMzJ9OwogICAgICAgICAg ICBleHBvcnQgQ0hPU1RfeDg2PSR7Q1RBUkdFVC94ODZfNjQvaTY4Nn07CiAgICAgICAgICAgIENI T1NUX3g4Nj0ke0NIT1NUX3g4Ni8lLWdudXgzMi8tZ251fTsKICAgICAgICAgICAgZXhwb3J0IENU QVJHRVRfeDg2PSR7Q0hPU1RfeDg2fTsKICAgICAgICAgICAgaWYgW1sgJHtTWU1MSU5LX0xJQn0g PT0gInllcyIgXV07IHRoZW4KICAgICAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfeDg2PSJsaWIz MiI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfeDg2PSJs aWIiOwogICAgICAgICAgICBmaTsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19hbWQ2ND0ke0NG TEFHU19hbWQ2NC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX2FtZDY0PSR7Q1RBUkdF VC8lLWdudXgzMi8tZ251fTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfYW1kNjQ9JHtDSE9T VF9hbWQ2NH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfYW1kNjQ9ImxpYjY0IjsKICAgICAg ICAgICAgZXhwb3J0IENGTEFHU194MzI9JHtDRkxBR1NfeDMyLS1teDMyfTsKICAgICAgICAgICAg ZXhwb3J0IENIT1NUX3gzMj0ke0NUQVJHRVQvJS1nbnUvLWdudXgzMn07CiAgICAgICAgICAgIGV4 cG9ydCBDVEFSR0VUX3gzMj0ke0NIT1NUX3gzMn07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJf eDMyPSJsaWJ4MzIiOwogICAgICAgICAgICBjYXNlICR7Q1RBUkdFVH0gaW4gCiAgICAgICAgICAg ICAgICAqLWdudXgzMikKICAgICAgICAgICAgICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz14MzIg YW1kNjQgeDg2fTsKICAgICAgICAgICAgICAgICAgICA6ICR7REVGQVVMVF9BQkk9eDMyfQogICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICAgICAgOiAk e01VTFRJTElCX0FCSVM9YW1kNjQgeDg2fTsKICAgICAgICAgICAgICAgICAgICA6ICR7REVGQVVM VF9BQkk9YW1kNjR9CiAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICBlc2FjCiAgICAgICAg OzsKICAgICAgICBtaXBzNjQqKQogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX28zMj0ke0NGTEFH U19vMzItLW1hYmk9MzJ9OwogICAgICAgICAgICBleHBvcnQgQ0hPU1RfbzMyPSR7Q1RBUkdFVC9t aXBzNjQvbWlwc307CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX28zMj0ke0NIT1NUX28zMn07 CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfbzMyPSJsaWIiOwogICAgICAgICAgICBleHBvcnQg Q0ZMQUdTX24zMj0ke0NGTEFHU19uMzItLW1hYmk9bjMyfTsKICAgICAgICAgICAgZXhwb3J0IENI T1NUX24zMj0ke0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9uMzI9JHtDSE9T VF9uMzJ9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX24zMj0ibGliMzIiOwogICAgICAgICAg ICBleHBvcnQgQ0ZMQUdTX242ND0ke0NGTEFHU19uNjQtLW1hYmk9NjR9OwogICAgICAgICAgICBl eHBvcnQgQ0hPU1RfbjY0PSR7Q1RBUkdFVH07CiAgICAgICAgICAgIGV4cG9ydCBDVEFSR0VUX242 ND0ke0NIT1NUX242NH07CiAgICAgICAgICAgIGV4cG9ydCBMSUJESVJfbjY0PSJsaWI2NCI7CiAg ICAgICAgICAgIDogJHtNVUxUSUxJQl9BQklTPW42NCBuMzIgbzMyfTsKICAgICAgICAgICAgOiAk e0RFRkFVTFRfQUJJPW4zMn0KICAgICAgICA7OwogICAgICAgIHBvd2VycGM2NCopCiAgICAgICAg ICAgIGV4cG9ydCBDRkxBR1NfcHBjPSR7Q0ZMQUdTX3BwYy0tbTMyfTsKICAgICAgICAgICAgZXhw b3J0IENIT1NUX3BwYz0ke0NUQVJHRVQvcG93ZXJwYzY0L3Bvd2VycGN9OwogICAgICAgICAgICBl eHBvcnQgQ1RBUkdFVF9wcGM9JHtDSE9TVF9wcGN9OwogICAgICAgICAgICBleHBvcnQgTElCRElS X3BwYz0ibGliIjsKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19wcGM2ND0ke0NGTEFHU19wcGM2 NC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3BwYzY0PSR7Q1RBUkdFVH07CiAgICAg ICAgICAgIGV4cG9ydCBDVEFSR0VUX3BwYzY0PSR7Q0hPU1RfcHBjNjR9OwogICAgICAgICAgICBl eHBvcnQgTElCRElSX3BwYzY0PSJsaWI2NCI7CiAgICAgICAgICAgIDogJHtNVUxUSUxJQl9BQklT PXBwYzY0IHBwY307CiAgICAgICAgICAgIDogJHtERUZBVUxUX0FCST1wcGM2NH0KICAgICAgICA7 OwogICAgICAgIHMzOTB4KikKICAgICAgICAgICAgZXhwb3J0IENGTEFHU19zMzkwPSR7Q0ZMQUdT X3MzOTAtLW0zMX07CiAgICAgICAgICAgIGV4cG9ydCBDSE9TVF9zMzkwPSR7Q1RBUkdFVC9zMzkw eC9zMzkwfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfczM5MD0ke0NIT1NUX3MzOTB9Owog ICAgICAgICAgICBleHBvcnQgTElCRElSX3MzOTA9ImxpYiI7CiAgICAgICAgICAgIGV4cG9ydCBD RkxBR1NfczM5MHg9JHtDRkxBR1NfczM5MHgtLW02NH07CiAgICAgICAgICAgIGV4cG9ydCBDSE9T VF9zMzkweD0ke0NUQVJHRVR9OwogICAgICAgICAgICBleHBvcnQgQ1RBUkdFVF9zMzkweD0ke0NI T1NUX3MzOTB4fTsKICAgICAgICAgICAgZXhwb3J0IExJQkRJUl9zMzkweD0ibGliNjQiOwogICAg ICAgICAgICA6ICR7TVVMVElMSUJfQUJJUz1zMzkweCBzMzkwfTsKICAgICAgICAgICAgOiAke0RF RkFVTFRfQUJJPXMzOTB4fQogICAgICAgIDs7CiAgICAgICAgc3BhcmM2NCopCiAgICAgICAgICAg IGV4cG9ydCBDRkxBR1Nfc3BhcmMzMj0ke0NGTEFHU19zcGFyYzMyLS1tMzJ9OwogICAgICAgICAg ICBleHBvcnQgQ0hPU1Rfc3BhcmMzMj0ke0NUQVJHRVQvc3BhcmM2NC9zcGFyY307CiAgICAgICAg ICAgIGV4cG9ydCBDVEFSR0VUX3NwYXJjMzI9JHtDSE9TVF9zcGFyYzMyfTsKICAgICAgICAgICAg ZXhwb3J0IExJQkRJUl9zcGFyYzMyPSJsaWIiOwogICAgICAgICAgICBleHBvcnQgQ0ZMQUdTX3Nw YXJjNjQ9JHtDRkxBR1Nfc3BhcmM2NC0tbTY0fTsKICAgICAgICAgICAgZXhwb3J0IENIT1NUX3Nw YXJjNjQ9JHtDVEFSR0VUfTsKICAgICAgICAgICAgZXhwb3J0IENUQVJHRVRfc3BhcmM2ND0ke0NI T1NUX3NwYXJjNjR9OwogICAgICAgICAgICBleHBvcnQgTElCRElSX3NwYXJjNjQ9ImxpYjY0IjsK ICAgICAgICAgICAgOiAke01VTFRJTElCX0FCSVM9c3BhcmM2NCBzcGFyYzMyfTsKICAgICAgICAg ICAgOiAke0RFRkFVTFRfQUJJPXNwYXJjNjR9CiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAg ICAgICA6ICR7TVVMVElMSUJfQUJJUz1kZWZhdWx0fTsKICAgICAgICAgICAgOiAke0RFRkFVTFRf QUJJPWRlZmF1bHR9CiAgICAgICAgOzsKICAgIGVzYWM7CiAgICBleHBvcnQgTVVMVElMSUJfQUJJ UyBERUZBVUxUX0FCSQp9Cm11bHRpbGliX3Rvb2xjaGFpbl9zZXR1cCAoKSAKeyAKICAgIGxvY2Fs IHYgdnY7CiAgICBleHBvcnQgQUJJPSQxOwogICAgaWYgW1sgJHtfREVGQVVMVF9BQklfU0FWRUR9 ID09ICJ0cnVlIiBdXTsgdGhlbgogICAgICAgIGZvciB2IGluIENIT1NUIENCVUlMRCBBUyBDQyBD WFggTEQgUEtHX0NPTkZJR197TElCRElSLFBBVEh9OwogICAgICAgIGRvCiAgICAgICAgICAgIHZ2 PSJfYWJpX3NhdmVkXyR7dn0iOwogICAgICAgICAgICBbWyAkeyF2ditzZXR9ID09ICJzZXQiIF1d ICYmIGV4cG9ydCAke3Z9PSIkeyF2dn0iIHx8IHVuc2V0ICR7dn07CiAgICAgICAgICAgIHVuc2V0 ICR7dnZ9OwogICAgICAgIGRvbmU7CiAgICAgICAgdW5zZXQgX0RFRkFVTFRfQUJJX1NBVkVEOwog ICAgZmk7CiAgICBpZiBbWyAke0FCSX0gIT0gJHtERUZBVUxUX0FCSX0gXV07IHRoZW4KICAgICAg ICBmb3IgdiBpbiBDSE9TVCBDQlVJTEQgQVMgQ0MgQ1hYIExEIFBLR19DT05GSUdfe0xJQkRJUixQ QVRIfTsKICAgICAgICBkbwogICAgICAgICAgICB2dj0iX2FiaV9zYXZlZF8ke3Z9IjsKICAgICAg ICAgICAgW1sgJHshditzZXR9ID09ICJzZXQiIF1dICYmIGV4cG9ydCAke3Z2fT0iJHshdn0iIHx8 IHVuc2V0ICR7dnZ9OwogICAgICAgIGRvbmU7CiAgICAgICAgZXhwb3J0IF9ERUZBVUxUX0FCSV9T QVZFRD0idHJ1ZSI7CiAgICAgICAgZXhwb3J0IENIT1NUPSQoZ2V0X2FiaV9DSE9TVCAke0RFRkFV TFRfQUJJfSk7CiAgICAgICAgZXhwb3J0IENDPSIkKHRjLWdldENDKSAkKGdldF9hYmlfQ0ZMQUdT KSI7CiAgICAgICAgZXhwb3J0IENYWD0iJCh0Yy1nZXRDWFgpICQoZ2V0X2FiaV9DRkxBR1MpIjsK ICAgICAgICBleHBvcnQgTEQ9IiQodGMtZ2V0TEQpICQoZ2V0X2FiaV9MREZMQUdTKSI7CiAgICAg ICAgZXhwb3J0IENIT1NUPSQoZ2V0X2FiaV9DSE9TVCAkMSk7CiAgICAgICAgZXhwb3J0IENCVUlM RD0kKGdldF9hYmlfQ0hPU1QgJDEpOwogICAgICAgIGV4cG9ydCBQS0dfQ09ORklHX0xJQkRJUj0k e0VQUkVGSVh9L3Vzci8kKGdldF9saWJkaXIpL3BrZ2NvbmZpZzsKICAgICAgICBleHBvcnQgUEtH X0NPTkZJR19QQVRIPSR7RVBSRUZJWH0vdXNyL3NoYXJlL3BrZ2NvbmZpZzsKICAgIGZpCn0KbmV3 aWNvbiAoKSAKeyAKICAgIF9pY29uaW5zICR7RlVOQ05BTUV9ICIkQCIKfQpuZXdtZW51ICgpIAp7 IAogICAgKCBpbnNpbnRvIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zOwogICAgbmV3aW5zICIkQCIg KQp9Cm51bWJlcl9hYmlzICgpIAp7IAogICAgc2V0IC0tIGBnZXRfaW5zdGFsbF9hYmlzYDsKICAg IGVjaG8gJCMKfQpvcHRmZWF0dXJlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtG VU5DTkFNRX0gIiRAIjsKICAgIGxvY2FsIGkgaiBtc2c7CiAgICBsb2NhbCBkZXNjPSQxOwogICAg bG9jYWwgZmxhZz0wOwogICAgc2hpZnQ7CiAgICBmb3IgaSBpbiAiJEAiOwogICAgZG8KICAgICAg ICBmb3IgaiBpbiAke2l9OwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIGhhc192ZXJzaW9uICIk e2p9IjsgdGhlbgogICAgICAgICAgICAgICAgZmxhZz0xOwogICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZmk7 CiAgICAgICAgZG9uZTsKICAgICAgICBpZiBbWyAke2ZsYWd9IC1lcSAxIF1dOyB0aGVuCiAgICAg ICAgICAgIGJyZWFrOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIGlmIFtbICR7ZmxhZ30gLWVx IDAgXV07IHRoZW4KICAgICAgICBmb3IgaSBpbiAiJEAiOwogICAgICAgIGRvCiAgICAgICAgICAg IG1zZz0iICI7CiAgICAgICAgICAgIGZvciBqIGluICR7aX07CiAgICAgICAgICAgIGRvCiAgICAg ICAgICAgICAgICBtc2crPSIgJHtqfSBhbmQiOwogICAgICAgICAgICBkb25lOwogICAgICAgICAg ICBtc2c9IiR7bXNnOjA6IC00fSBmb3IgJHtkZXNjfSI7CiAgICAgICAgICAgIGVsb2cgIiR7bXNn fSI7CiAgICAgICAgZG9uZTsKICAgIGZpCn0KcGF0aF9leGlzdHMgKCkgCnsgCiAgICBsb2NhbCBv cHQ9JDE7CiAgICBbWyAke29wdH0gPT0gLVthb10gXV0gJiYgc2hpZnQgfHwgb3B0PSItYSI7CiAg ICBbWyAkIyAtZXEgMCBdXSAmJiByZXR1cm4gMTsKICAgIGxvY2FsIHAgcj0wOwogICAgZm9yIHAg aW4gIiRAIjsKICAgIGRvCiAgICAgICAgW1sgLWUgJHtwfSBdXTsKICAgICAgICA6ICQoKCByICs9 ICQ/ICkpOwogICAgZG9uZTsKICAgIGNhc2UgJHtvcHR9IGluIAogICAgICAgIC1hKQogICAgICAg ICAgICByZXR1cm4gJCgoIHIgIT0gMCApKQogICAgICAgIDs7CiAgICAgICAgLW8pCiAgICAgICAg ICAgIHJldHVybiAkKCggciA9PSAkIyApKQogICAgICAgIDs7CiAgICBlc2FjCn0KcGtnX25vZmV0 Y2ggKCkgCnsgCiAgICBfX2VhcGkwX3BrZ19ub2ZldGNoICIkQCIKfQpwa2dfcG9zdGluc3QgKCkg CnsgCiAgICBpZiAhIHVzZSBodG1sOyB0aGVuCiAgICAgICAgZXdhcm4gIllvdSBoYXZlbid0IHJl cXVlc3RlZCB0aGUgaHRtbCBkb2N1bWVudGF0aW9uLiI7CiAgICAgICAgZXdhcm4gIlRoZSBodG1s IHZlcnNpb24gb2YgdGhlIHNhZ2UgbWFudWFsIHdvbid0IGJlIGF2YWlsYWJsZSBpbiB0aGUgc2Fn ZSBub3RlYm9vay4iOwogICAgZmk7CiAgICBlaW5mbyAiV2Ugbm8gbG9uZ2VyIHN1cHBvcnQgZ2Vu ZXJhdGluZyB0aGUgcGRmIHZlcnNpb24gb2YgdGhlIGRvY3VtZW50YXRpb24uIjsKICAgIGVpbmZv ICJBc2lkZSBmcm9tIGEgbG9uZyBsaXN0IG9mIGRlcGVuZGVuY2llcyBpdCBpcyBjdXJyZW50bHkg YnJva2VuIHdpdGggdGhlIjsKICAgIGVpbmZvICJsYXRlc3QgdmVyc2lvbiBvZiBzcGhpbnguIElm IHlvdSB3YW50IHRoZSBwZGYgeW91IGNhbiBhbHdheXMgZG93bmxvYWQiOwogICAgZWluZm8gInRo ZSB2ZXJzaW9uIHByb2R1Y2VkIHVwc3RyZWFtIGF0OiI7CiAgICBlaW5mbyAiaHR0cDovL3NhZ2Vt YXRoLm9yZy9kb2MtYnoyL3NhZ2UtJHtQVn0tZG9jLXBkZi50YXIuYnoyIjsKICAgIGVpbmZvICJO b3RlIHRoYXQgb24gb25lIG9jY2FzaW9uIGl0IHRvb2sgdGhyZWUgd2Vla3MgZm9yIHVwc3RyZWFt IHRvIHByb2R1Y2UiOwogICAgZWluZm8gInRoZWlyIG93biBwZGYgZmlsZXMuIgp9CnByZXNlcnZl X29sZF9saWIgKCkgCnsgCiAgICBfZXV0aWxzX2VwcmVmaXhfaW5pdDsKICAgIGlmIFtbICR7RUJV SUxEX1BIQVNFfSAhPSAicHJlaW5zdCIgXV07IHRoZW4KICAgICAgICBlZXJyb3IgInByZXNlcnZl X29sZF9saWIoKSBtdXN0IGJlIGNhbGxlZCBmcm9tIHBrZ19wcmVpbnN0KCkgb25seSI7CiAgICAg ICAgZGllICJJbnZhbGlkIHByZXNlcnZlX29sZF9saWIoKSB1c2FnZSI7CiAgICBmaTsKICAgIFtb IC16ICQxIF1dICYmIGRpZSAiVXNhZ2U6IHByZXNlcnZlX29sZF9saWIgPGxpYnJhcnkgdG8gcHJl c2VydmU+IFttb3JlIGxpYnJhcmllcyB0byBwcmVzZXJ2ZV0iOwogICAgaGFzIHByZXNlcnZlLWxp YnMgJHtGRUFUVVJFU30gJiYgcmV0dXJuIDA7CiAgICBsb2NhbCBsaWIgZGlyOwogICAgZm9yIGxp YiBpbiAiJEAiOwogICAgZG8KICAgICAgICBbWyAtZSAke0VST09UfS8ke2xpYn0gXV0gfHwgY29u dGludWU7CiAgICAgICAgZGlyPSR7bGliJS8qfTsKICAgICAgICBkb2RpciAke2Rpcn0gfHwgZGll ICJkb2RpciAke2Rpcn0gZmFpbGVkIjsKICAgICAgICBjcCAiJHtFUk9PVH0iLyR7bGlifSAiJHtF RH0iLyR7bGlifSB8fCBkaWUgImNwICR7bGlifSBmYWlsZWQiOwogICAgICAgIHRvdWNoICIke0VE fSIvJHtsaWJ9OwogICAgZG9uZQp9CnByZXNlcnZlX29sZF9saWJfbm90aWZ5ICgpIAp7IAogICAg aWYgW1sgJHtFQlVJTERfUEhBU0V9ICE9ICJwb3N0aW5zdCIgXV07IHRoZW4KICAgICAgICBlZXJy b3IgInByZXNlcnZlX29sZF9saWJfbm90aWZ5KCkgbXVzdCBiZSBjYWxsZWQgZnJvbSBwa2dfcG9z dGluc3QoKSBvbmx5IjsKICAgICAgICBkaWUgIkludmFsaWQgcHJlc2VydmVfb2xkX2xpYl9ub3Rp ZnkoKSB1c2FnZSI7CiAgICBmaTsKICAgIGhhcyBwcmVzZXJ2ZS1saWJzICR7RkVBVFVSRVN9ICYm IHJldHVybiAwOwogICAgX2V1dGlsc19lcHJlZml4X2luaXQ7CiAgICBsb2NhbCBsaWIgbm90aWNl PTA7CiAgICBmb3IgbGliIGluICIkQCI7CiAgICBkbwogICAgICAgIFtbIC1lICR7RVJPT1R9LyR7 bGlifSBdXSB8fCBjb250aW51ZTsKICAgICAgICBpZiBbWyAke25vdGljZX0gLWVxIDAgXV07IHRo ZW4KICAgICAgICAgICAgbm90aWNlPTE7CiAgICAgICAgICAgIGV3YXJuICJPbGQgdmVyc2lvbnMg b2YgaW5zdGFsbGVkIGxpYnJhcmllcyB3ZXJlIGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtLiI7CiAg ICAgICAgICAgIGV3YXJuICJJbiBvcmRlciB0byBhdm9pZCBicmVha2luZyBwYWNrYWdlcyB0aGF0 IGRlcGVuZCBvbiB0aGVzZSBvbGQgbGlicywiOwogICAgICAgICAgICBld2FybiAidGhlIGxpYnJh cmllcyBhcmUgbm90IGJlaW5nIHJlbW92ZWQuICBZb3UgbmVlZCB0byBydW4gcmV2ZGVwLXJlYnVp bGQiOwogICAgICAgICAgICBld2FybiAiaW4gb3JkZXIgdG8gcmVtb3ZlIHRoZXNlIG9sZCBkZXBl bmRlbmNpZXMuICBJZiB5b3UgZG8gbm90IGhhdmUgdGhpcyI7CiAgICAgICAgICAgIGV3YXJuICJo ZWxwZXIgcHJvZ3JhbSwgc2ltcGx5IGVtZXJnZSB0aGUgJ2dlbnRvb2xraXQnIHBhY2thZ2UuIjsK ICAgICAgICAgICAgZXdhcm47CiAgICAgICAgZmk7CiAgICAgICAgZXdhcm4gIiAgIyByZXZkZXAt cmVidWlsZCAtLWxpYnJhcnkgJyR7bGlifScgJiYgcm0gJyR7bGlifSciOwogICAgZG9uZQp9CnBy dW5lX2xpYnRvb2xfZmlsZXMgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNO QU1FfSAiJEAiOwogICAgbG9jYWwgcmVtb3ZpbmdfYWxsIHJlbW92aW5nX21vZHVsZXMgb3B0Owog ICAgX2V1dGlsc19lcHJlZml4X2luaXQ7CiAgICBmb3Igb3B0IGluICIkQCI7CiAgICBkbwogICAg ICAgIGNhc2UgIiR7b3B0fSIgaW4gCiAgICAgICAgICAgIC0tYWxsKQogICAgICAgICAgICAgICAg cmVtb3ZpbmdfYWxsPTE7CiAgICAgICAgICAgICAgICByZW1vdmluZ19tb2R1bGVzPTEKICAgICAg ICAgICAgOzsKICAgICAgICAgICAgLS1tb2R1bGVzKQogICAgICAgICAgICAgICAgcmVtb3Zpbmdf bW9kdWxlcz0xCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgICopCiAgICAgICAgICAgICAgICBk aWUgIkludmFsaWQgYXJndW1lbnQgdG8gJHtGVU5DTkFNRX0oKTogJHtvcHR9IgogICAgICAgICAg ICA7OwogICAgICAgIGVzYWM7CiAgICBkb25lOwogICAgbG9jYWwgZjsKICAgIGxvY2FsIHF1ZXVl PSgpOwogICAgd2hpbGUgSUZTPSByZWFkIC1yIC1kICcnIGY7IGRvCiAgICAgICAgbG9jYWwgYXJj aGl2ZWZpbGU9JHtmLyUubGEvLmF9OwogICAgICAgIGlmICEgc2VkIC1uIC1lICcvXiMgR2VuZXJh dGVkIGJ5IC4qbGlidG9vbC9xMDs0cTEnICIke2Z9IjsgdGhlbgogICAgICAgICAgICBjb250aW51 ZTsKICAgICAgICBmaTsKICAgICAgICBbWyAke2Z9ICE9ICR7YXJjaGl2ZWZpbGV9IF1dIHx8IGRp ZSAncmVnZXggc2FuaXR5IGNoZWNrIGZhaWxlZCc7CiAgICAgICAgbG9jYWwgcmVhc29uIHBrZ2Nv bmZpZ19zY2FubmVkOwogICAgICAgIGxvY2FsIHNub3RsaW5rPSQoc2VkIC1uIC1lICdzOl5zaG91 bGRub3RsaW5rPTo6cCcgIiR7Zn0iKTsKICAgICAgICBpZiBbWyAke3Nub3RsaW5rfSA9PSB5ZXMg XV07IHRoZW4KICAgICAgICAgICAgaWYgW1sgLWYgJHthcmNoaXZlZmlsZX0gXV07IHRoZW4KICAg ICAgICAgICAgICAgIGVpbmZvICJSZW1vdmluZyB1bm5lY2Vzc2FyeSAke2FyY2hpdmVmaWxlIyR7 RCUvfX0gKHN0YXRpYyBwbHVnaW4pIjsKICAgICAgICAgICAgICAgIHF1ZXVlKz0oIiR7YXJjaGl2 ZWZpbGV9Iik7CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBpZiBbWyAtbiAke3JlbW92aW5n X21vZHVsZXN9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICByZWFzb249J21vZHVsZSc7CiAgICAg ICAgICAgIGZpOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaWYgW1sgLW4gJHtyZW1vdmluZ19h bGx9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICByZWFzb249J3JlcXVlc3RlZCc7CiAgICAgICAg ICAgIGVsc2UKICAgICAgICAgICAgICAgIGlmIFtbICEgLWYgJHthcmNoaXZlZmlsZX0gXV07IHRo ZW4KICAgICAgICAgICAgICAgICAgICByZWFzb249J25vIHN0YXRpYyBhcmNoaXZlJzsKICAgICAg ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBpZiBbWyAhIC1uICQoc2VkIC1ucmUg CQkJCQkicy9eKGRlcGVuZGVuY3lfbGlic3xpbmhlcml0ZWRfbGlua2VyX2ZsYWdzKT0nKC4qKSck L1wyL3AiIAkJCQkJIiR7Zn0iKSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICByZWFz b249J25vIGxpYnMgJiBmbGFncyc7CiAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgICAgICAgICBpZiBbWyAhIC1uICR7cGtnY29uZmlnX3NjYW5uZWR9IF1dOyB0aGVuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwY19saWJzPSgpOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgaWYgW1sgISAtbiAke3JlbW92aW5nX2FsbH0gXV07IHRoZW4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbCBwYzsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBsb2NhbCB0Zj0ke1R9L3BydW5lLWx0LWZpbGVzLnBjOwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxvY2FsIHBrZ2NvbmY9JCh0Yy1nZXRQS0dfQ09ORklHKTsKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBJRlM9IHJlYWQgLXIgLWQgJycgcGM7 IGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsIGFyZyBsaWJzOwog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAke3BrZ2NvbmZ9IC0tZXhpc3Rz ICIke3BjfSIgJj4vZGV2L251bGw7IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlZCAtZSAnL15SZXF1aXJlczovZCcgIiR7cGN9IiA+ICIke3RmfSI7CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJzPSQoJHtwa2djb25mfSAtLWxp YnMgIiR7dGZ9Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnM9JChzZWQgLW5lICdzL15M aWJzOi8vcCcgIiR7cGN9Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYXJnIGluICR7bGlic307 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAke2FyZ30gPT0gLWwqIF1dOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgJHthcmd9ID09ICcq JConIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGVxYXdhcm4gIiR7RlVOQ05BTUV9OiB2YXJpYWJsZSBzdWJzdGl0dXRpb24gbGlrZWx5IGZh aWxlZCBpbiAke3BjfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVxYXdhcm4gIihhcmc6ICR7YXJnfSkiOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcWF3YXJuICJNb3N0IGxpa2VseSwgeW91IG5lZWQgdG8g YWRkIHZpcnR1YWwvcGtnY29uZmlnIHRvIERFUEVORC4iOwogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBjX2xpYnMrPShsaWIke2FyZyMtbH0ubGEpOwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGRvbmU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA8IDwoZmlu ZCAiJHtEfSIgLXR5cGUgZiAtbmFtZSAnKi5wYycgLXByaW50MCk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcm0gLWYgIiR7dGZ9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAg IGZpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnY29uZmlnX3NjYW5uZWQ9MTsKICAg ICAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgIGhhcyAiJHtm IyMqL30iICIke3BjX2xpYnNbQF19IiAmJiByZWFzb249J2NvdmVyZWQgYnkgLnBjJzsKICAgICAg ICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAg ICAgICBmaTsKICAgICAgICBpZiBbWyAtbiAke3JlYXNvbn0gXV07IHRoZW4KICAgICAgICAgICAg ZWluZm8gIlJlbW92aW5nIHVubmVjZXNzYXJ5ICR7ZiMke0QlL319ICgke3JlYXNvbn0pIjsKICAg ICAgICAgICAgcXVldWUrPSgiJHtmfSIpOwogICAgICAgIGZpOwogICAgZG9uZSA8IDwoZmluZCAi JHtFRH0iIC14dHlwZSBmIC1uYW1lICcqLmxhJyAtcHJpbnQwKTsKICAgIGlmIFtbIC1uICR7cXVl dWVbQF19IF1dOyB0aGVuCiAgICAgICAgcm0gLWYgIiR7cXVldWVbQF19IjsKICAgIGZpCn0KcHl0 aG9uX2NvbXBpbGUgKCkgCnsgCiAgICBleHBvcnQgU0FHRV9ET0M9IiR7U30iL2RvYzsKICAgIGV4 cG9ydCBTQUdFX1NSQz0iJHtTfSI7CiAgICBleHBvcnQgU0FHRV9OVU1fVEhSRUFEUz0kKG1ha2Vv cHRzX2pvYnMpOwogICAgZXhwb3J0IFNBR0VfRE9DX01BVEhKQVg9eWVzOwogICAgZXhwb3J0IFZB UlRFWEZPTlRTPSIke1R9Ii9mb250czsKICAgIGlmIHVzZSBodG1sOyB0aGVuCiAgICAgICAgJHtQ WVRIT059IGRvYy9jb21tb24vYnVpbGRlci5weSAtLW5vLXBkZi1saW5rcyBhbGwgaHRtbCB8fCBk aWUgImZhaWxlZCB0byBwcm9kdWNlIGh0bWwgZG9jIjsKICAgICAgICB0b3VjaCBkb2Mvb3V0cHV0 L2h0bWwvZW4vX19pbml0X18ucHk7CiAgICBmaQp9CnB5dGhvbl9jb3B5X3NvdXJjZXMgKCkgCnsg CiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCBN VUxUSUJVSUxEX1ZBUklBTlRTOwogICAgX3B5dGhvbl9vYnRhaW5faW1wbHM7CiAgICBtdWx0aWJ1 aWxkX2NvcHlfc291cmNlcwp9CnB5dGhvbl9kb2V4ZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxvY2FsIGY7CiAgICBmb3IgZiBpbiAiJEAi OwogICAgZG8KICAgICAgICBweXRob25fbmV3ZXhlICIke2Z9IiAiJHtmIyMqL30iOwogICAgZG9u ZQp9CnB5dGhvbl9kb2hlYWRlciAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVO Q05BTUV9ICIke0B9IjsKICAgIFtbIC1uICR7RVBZVEhPTn0gXV0gfHwgZGllICdObyBQeXRob24g aW1wbGVtZW50YXRpb24gc2V0IChFUFlUSE9OIGlzIG51bGwpLic7CiAgICBsb2NhbCBkIFBZVEhP Tl9JTkNMVURFRElSPSR7UFlUSE9OX0lOQ0xVREVESVJ9OwogICAgW1sgLW4gJHtQWVRIT05fSU5D TFVERURJUn0gXV0gfHwgcHl0aG9uX2V4cG9ydCBQWVRIT05fSU5DTFVERURJUjsKICAgIGQ9JHtQ WVRIT05fSU5DTFVERURJUiMke0VQUkVGSVh9fTsKICAgIGxvY2FsIElOU0RFU1RUUkVFOwogICAg aW5zaW50byAiJHtkfSI7CiAgICBkb2lucyAtciAiJHtAfSIgfHwgZGllCn0KcHl0aG9uX2RvbW9k dWxlICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwog ICAgW1sgLW4gJHtFUFlUSE9OfSBdXSB8fCBkaWUgJ05vIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBz ZXQgKEVQWVRIT04gaXMgbnVsbCkuJzsKICAgIGxvY2FsIGQ7CiAgICBpZiBbWyAke3B5dGhvbl9t b2R1bGVyb290fSA9PSAvKiBdXTsgdGhlbgogICAgICAgIGQ9JHtweXRob25fbW9kdWxlcm9vdH07 CiAgICBlbHNlCiAgICAgICAgbG9jYWwgUFlUSE9OX1NJVEVESVI9JHtQWVRIT05fU0lURURJUn07 CiAgICAgICAgW1sgLW4gJHtQWVRIT05fU0lURURJUn0gXV0gfHwgcHl0aG9uX2V4cG9ydCBQWVRI T05fU0lURURJUjsKICAgICAgICBkPSR7UFlUSE9OX1NJVEVESVIjJHtFUFJFRklYfX0vJHtweXRo b25fbW9kdWxlcm9vdH07CiAgICBmaTsKICAgIGxvY2FsIElOU0RFU1RUUkVFOwogICAgaW5zaW50 byAiJHtkfSI7CiAgICBkb2lucyAtciAiJHtAfSIgfHwgZGllOwogICAgcHl0aG9uX29wdGltaXpl ICIke0VEfS8ke2R9Igp9CnB5dGhvbl9kb3NjcmlwdCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxvY2FsIF9QWVRIT05fUkVXUklURV9TSEVC QU5HPTE7CiAgICBweXRob25fZG9leGUgIiR7QH0iCn0KcHl0aG9uX2V4cG9ydCAoKSAKeyAKICAg IGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxvY2FsIGltcGwg dmFyOwogICAgY2FzZSAiJHsxfSIgaW4gCiAgICAgICAgcHl0aG9uKiB8IGp5dGhvbiopCiAgICAg ICAgICAgIGltcGw9JHsxL18vLn07CiAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgOzsKICAgICAg ICBweXB5IHwgcHlweTMpCiAgICAgICAgICAgIGltcGw9JHsxfTsKICAgICAgICAgICAgc2hpZnQK ICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGltcGw9JHtFUFlUSE9OfTsKICAgICAg ICAgICAgaWYgW1sgLXogJHtpbXBsfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZGllICJweXRo b25fZXhwb3J0IGNhbGxlZCB3aXRob3V0IGEgcHl0aG9uIGltcGxlbWVudGF0aW9uIGFuZCBFUFlU SE9OIGlzIHVuc2V0IjsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgZXNhYzsKICAgIGRl YnVnLXByaW50ICIke0ZVTkNOQU1FfTogaW1wbGVtZW50YXRpb246ICR7aW1wbH0iOwogICAgZm9y IHZhciBpbiAiJEAiOwogICAgZG8KICAgICAgICBjYXNlICIke3Zhcn0iIGluIAogICAgICAgICAg ICBFUFlUSE9OKQogICAgICAgICAgICAgICAgZXhwb3J0IEVQWVRIT049JHtpbXBsfTsKICAgICAg ICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogRVBZVEhPTiA9ICR7RVBZVEhPTn0i CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFBZVEhPTikKICAgICAgICAgICAgICAgIGV4cG9y dCBQWVRIT049JHtFUFJFRklYfS91c3IvYmluLyR7aW1wbH07CiAgICAgICAgICAgICAgICBkZWJ1 Zy1wcmludCAiJHtGVU5DTkFNRX06IFBZVEhPTiA9ICR7UFlUSE9OfSIKICAgICAgICAgICAgOzsK ICAgICAgICAgICAgUFlUSE9OX1NJVEVESVIpCiAgICAgICAgICAgICAgICBsb2NhbCBkaXI7CiAg ICAgICAgICAgICAgICBjYXNlICIke2ltcGx9IiBpbiAKICAgICAgICAgICAgICAgICAgICBweXRo b24qIHwgcHlweSB8IHB5cHkzKQogICAgICAgICAgICAgICAgICAgICAgICBkaXI9L3Vzci8kKGdl dF9saWJkaXIpLyR7aW1wbH0KICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAg ICAgIGp5dGhvbiopCiAgICAgICAgICAgICAgICAgICAgICAgIGRpcj0vdXNyL3NoYXJlLyR7aW1w bC9uL24tfS9MaWIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsK ICAgICAgICAgICAgICAgIGV4cG9ydCBQWVRIT05fU0lURURJUj0ke0VQUkVGSVh9JHtkaXJ9L3Np dGUtcGFja2FnZXM7CiAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IFBZ VEhPTl9TSVRFRElSID0gJHtQWVRIT05fU0lURURJUn0iCiAgICAgICAgICAgIDs7CiAgICAgICAg ICAgIFBZVEhPTl9JTkNMVURFRElSKQogICAgICAgICAgICAgICAgbG9jYWwgZGlyOwogICAgICAg ICAgICAgICAgY2FzZSAiJHtpbXBsfSIgaW4gCiAgICAgICAgICAgICAgICAgICAgcHl0aG9uKikK ICAgICAgICAgICAgICAgICAgICAgICAgZGlyPS91c3IvaW5jbHVkZS8ke2ltcGx9CiAgICAgICAg ICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICBweXB5IHwgcHlweTMpCiAgICAgICAg ICAgICAgICAgICAgICAgIGRpcj0vdXNyLyQoZ2V0X2xpYmRpcikvJHtpbXBsfS9pbmNsdWRlCiAg ICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAqKQogICAgICAgICAgICAg ICAgICAgICAgICBkaWUgIiR7aW1wbH0gbGFja3MgaGVhZGVyIGZpbGVzIgogICAgICAgICAgICAg ICAgICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICAgICAgZXhwb3J0IFBZ VEhPTl9JTkNMVURFRElSPSR7RVBSRUZJWH0ke2Rpcn07CiAgICAgICAgICAgICAgICBkZWJ1Zy1w cmludCAiJHtGVU5DTkFNRX06IFBZVEhPTl9JTkNMVURFRElSID0gJHtQWVRIT05fSU5DTFVERURJ Un0iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFBZVEhPTl9MSUJQQVRIKQogICAgICAgICAg ICAgICAgbG9jYWwgbGlibmFtZTsKICAgICAgICAgICAgICAgIGNhc2UgIiR7aW1wbH0iIGluIAog ICAgICAgICAgICAgICAgICAgIHB5dGhvbiopCiAgICAgICAgICAgICAgICAgICAgICAgIGxpYm5h bWU9bGliJHtpbXBsfQogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAg KikKICAgICAgICAgICAgICAgICAgICAgICAgZGllICIke2ltcGx9IGxhY2tzIGEgZHluYW1pYyBs aWJyYXJ5IgogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICBlc2FjOwogICAg ICAgICAgICAgICAgbG9jYWwgcGF0aD0ke0VQUkVGSVh9L3Vzci8kKGdldF9saWJkaXIpOwogICAg ICAgICAgICAgICAgZXhwb3J0IFBZVEhPTl9MSUJQQVRIPSR7cGF0aH0vJHtsaWJuYW1lfSQoZ2V0 X2xpYm5hbWUpOwogICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBQWVRI T05fTElCUEFUSCA9ICR7UFlUSE9OX0xJQlBBVEh9IgogICAgICAgICAgICA7OwogICAgICAgICAg ICBQWVRIT05fQ0ZMQUdTKQogICAgICAgICAgICAgICAgbG9jYWwgdmFsOwogICAgICAgICAgICAg ICAgY2FzZSAiJHtpbXBsfSIgaW4gCiAgICAgICAgICAgICAgICAgICAgcHl0aG9uKikKICAgICAg ICAgICAgICAgICAgICAgICAgdmFsPSQoJCh0Yy1nZXRQS0dfQ09ORklHKSAtLWNmbGFncyAke2lt cGwvbi9uLX0pCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAqKQog ICAgICAgICAgICAgICAgICAgICAgICBkaWUgIiR7aW1wbH06IG9idGFpbmluZyAke3Zhcn0gbm90 IHN1cHBvcnRlZCIKICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgZXNhYzsK ICAgICAgICAgICAgICAgIGV4cG9ydCBQWVRIT05fQ0ZMQUdTPSR7dmFsfTsKICAgICAgICAgICAg ICAgIGRlYnVnLXByaW50ICIke0ZVTkNOQU1FfTogUFlUSE9OX0NGTEFHUyA9ICR7UFlUSE9OX0NG TEFHU30iCiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIFBZVEhPTl9MSUJTKQogICAgICAgICAg ICAgICAgbG9jYWwgdmFsOwogICAgICAgICAgICAgICAgY2FzZSAiJHtpbXBsfSIgaW4gCiAgICAg ICAgICAgICAgICAgICAgcHl0aG9uKikKICAgICAgICAgICAgICAgICAgICAgICAgdmFsPSQoJCh0 Yy1nZXRQS0dfQ09ORklHKSAtLWxpYnMgJHtpbXBsL24vbi19KQogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgZGllICIk e2ltcGx9OiBvYnRhaW5pbmcgJHt2YXJ9IG5vdCBzdXBwb3J0ZWQiCiAgICAgICAgICAgICAgICAg ICAgOzsKICAgICAgICAgICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICBleHBvcnQgUFlUSE9O X0xJQlM9JHt2YWx9OwogICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBQ WVRIT05fTElCUyA9ICR7UFlUSE9OX0xJQlN9IgogICAgICAgICAgICA7OwogICAgICAgICAgICBQ WVRIT05fUEtHX0RFUCkKICAgICAgICAgICAgICAgIGxvY2FsIGQ7CiAgICAgICAgICAgICAgICBj YXNlICR7aW1wbH0gaW4gCiAgICAgICAgICAgICAgICAgICAgcHl0aG9uMi43KQogICAgICAgICAg ICAgICAgICAgICAgICBQWVRIT05fUEtHX0RFUD0nPj1kZXYtbGFuZy9weXRob24tMi43LjUtcjI6 Mi43JwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAgICAgcHl0aG9uMy4y KQogICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05fUEtHX0RFUD0nPj1kZXYtbGFuZy9weXRo b24tMy4yLjUtcjI6My4yJwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAgICAg ICAgcHl0aG9uMy4zKQogICAgICAgICAgICAgICAgICAgICAgICBQWVRIT05fUEtHX0RFUD0nPj1k ZXYtbGFuZy9weXRob24tMy4zLjItcjI6My4zJwogICAgICAgICAgICAgICAgICAgIDs7CiAgICAg ICAgICAgICAgICAgICAgcHl0aG9uKikKICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OX1BL R19ERVA9ImRldi1sYW5nL3B5dGhvbjoke2ltcGwjcHl0aG9ufSIKICAgICAgICAgICAgICAgICAg ICA7OwogICAgICAgICAgICAgICAgICAgIHB5cHkpCiAgICAgICAgICAgICAgICAgICAgICAgIFBZ VEhPTl9QS0dfREVQPSd2aXJ0dWFsL3B5cHk6MD0nCiAgICAgICAgICAgICAgICAgICAgOzsKICAg ICAgICAgICAgICAgICAgICBweXB5MykKICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OX1BL R19ERVA9J3ZpcnR1YWwvcHlweTM6MD0nCiAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAg ICAgICAgICAgICBqeXRob24yLjUpCiAgICAgICAgICAgICAgICAgICAgICAgIFBZVEhPTl9QS0df REVQPSc+PWRldi1qYXZhL2p5dGhvbi0yLjUuMy1yMjoyLjUnCiAgICAgICAgICAgICAgICAgICAg OzsKICAgICAgICAgICAgICAgICAgICBqeXRob24yLjcpCiAgICAgICAgICAgICAgICAgICAgICAg IFBZVEhPTl9QS0dfREVQPSdkZXYtamF2YS9qeXRob246Mi43JwogICAgICAgICAgICAgICAgICAg IDs7CiAgICAgICAgICAgICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgZGllICJJ bnZhbGlkIGltcGxlbWVudGF0aW9uOiAke2ltcGx9IgogICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICBlc2FjOwogICAgICAgICAgICAgICAgaWYgW1sgLW4gJHtQWVRIT05fUkVR X1VTRX0gXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICBQWVRIT05fUEtHX0RFUCs9WyR7UFlU SE9OX1JFUV9VU0V9XTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZXhwb3J0 IFBZVEhPTl9QS0dfREVQOwogICAgICAgICAgICAgICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9 OiBQWVRIT05fUEtHX0RFUCA9ICR7UFlUSE9OX1BLR19ERVB9IgogICAgICAgICAgICA7OwogICAg ICAgICAgICBQWVRIT05fU0NSSVBURElSKQogICAgICAgICAgICAgICAgbG9jYWwgZGlyOwogICAg ICAgICAgICAgICAgZXhwb3J0IFBZVEhPTl9TQ1JJUFRESVI9JHtFUFJFRklYfS91c3IvbGliL3B5 dGhvbi1leGVjLyR7aW1wbH07CiAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFN RX06IFBZVEhPTl9TQ1JJUFRESVIgPSAke1BZVEhPTl9TQ1JJUFRESVJ9IgogICAgICAgICAgICA7 OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgZGllICJweXRob25fZXhwb3J0OiB1bmtu b3duIHZhcmlhYmxlICR7dmFyfSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9u ZQp9CnB5dGhvbl9leHBvcnRfYmVzdCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7 RlVOQ05BTUV9ICIke0B9IjsKICAgIFtbICR7I30gLWd0IDAgXV0gfHwgc2V0IC0tIEVQWVRIT04g UFlUSE9OOwogICAgbG9jYWwgYmVzdCBNVUxUSUJVSUxEX1ZBUklBTlRTOwogICAgX3B5dGhvbl9v YnRhaW5faW1wbHM7CiAgICBmdW5jdGlvbiBfcHl0aG9uX3NldF9iZXN0ICgpIAogICAgeyAKICAg ICAgICBiZXN0PSR7TVVMVElCVUlMRF9WQVJJQU5UfQogICAgfTsKICAgIG11bHRpYnVpbGRfZm9y X2Jlc3RfdmFyaWFudCBfcHl0aG9uX3NldF9iZXN0OwogICAgZGVidWctcHJpbnQgIiR7RlVOQ05B TUV9OiBCZXN0IGltcGxlbWVudGF0aW9uIGlzOiAke2Jlc3R9IjsKICAgIHB5dGhvbl9leHBvcnQg IiR7YmVzdH0iICIke0B9IjsKICAgIHB5dGhvbl93cmFwcGVyX3NldHVwCn0KcHl0aG9uX2V4cG9y dF91dGY4X2xvY2FsZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIke0B9IjsKICAgIGlmIFtbICQobG9jYWxlIGNoYXJtYXApICE9IFVURi04IF1dOyB0aGVuCiAg ICAgICAgaWYgW1sgLW4gJHtMQ19BTEx9IF1dOyB0aGVuCiAgICAgICAgICAgIGV3YXJuICJMQ19B TEwgaXMgc2V0IHRvIGEgbG9jYWxlIHdpdGggYSBjaGFybWFwIG90aGVyIHRoYW4gVVRGLTguIjsK ICAgICAgICAgICAgZXdhcm4gIlRoaXMgbWF5IHRyaWdnZXIgYnVpbGQgZmFpbHVyZXMgaW4gc29t ZSBweXRob24gcGFja2FnZXMuIjsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgZmk7CiAg ICAgICAgbG9jYWwgbGFuZyBsb2NhbGVzPSJlbl9VUy5VVEYtOCAkKGxvY2FsZSAtYSkiOwogICAg ICAgIGZvciBsYW5nIGluICR7bG9jYWxlc307CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgW1sg JChMQ19DVFlQRT0ke2xhbmd9IGxvY2FsZSBjaGFybWFwIDI+L2Rldi9udWxsKSA9PSBVVEYtOCBd XTsgdGhlbgogICAgICAgICAgICAgICAgZXhwb3J0IExDX0NUWVBFPSR7bGFuZ307CiAgICAgICAg ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgICAgICBl d2FybiAiQ291bGQgbm90IGZpbmQgYSBVVEYtOCBsb2NhbGUuIFRoaXMgbWF5IHRyaWdnZXIgYnVp bGQgZmFpbHVyZXMgaW4iOwogICAgICAgIGV3YXJuICJzb21lIHB5dGhvbiBwYWNrYWdlcy4gUGxl YXNlIGVuc3VyZSB0aGF0IGEgVVRGLTggbG9jYWxlIGlzIGxpc3RlZCBpbiI7CiAgICAgICAgZXdh cm4gIi9ldGMvbG9jYWxlLmdlbiBhbmQgcnVuIGxvY2FsZS1nZW4uIjsKICAgICAgICByZXR1cm4g MTsKICAgIGZpOwogICAgcmV0dXJuIDAKfQpweXRob25fZml4X3NoZWJhbmcgKCkgCnsgCiAgICBk ZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBbWyAtbiAke0VQWVRI T059IF1dIHx8IGRpZSAiJHtGVU5DTkFNRX06IEVQWVRIT04gdW5zZXQgKHBrZ19zZXR1cCBub3Qg Y2FsbGVkPykiOwogICAgbG9jYWwgZm9yY2UgcXVpZXQ7CiAgICB3aGlsZSBbWyAtbiAke0B9IF1d OyBkbwogICAgICAgIGNhc2UgIiR7MX0iIGluIAogICAgICAgICAgICAtZiB8IC0tZm9yY2UpCiAg ICAgICAgICAgICAgICBmb3JjZT0xOwogICAgICAgICAgICAgICAgc2hpZnQKICAgICAgICAgICAg OzsKICAgICAgICAgICAgLXEgfCAtLXF1aWV0KQogICAgICAgICAgICAgICAgcXVpZXQ9MTsKICAg ICAgICAgICAgICAgIHNoaWZ0CiAgICAgICAgICAgIDs7CiAgICAgICAgICAgIC0tKQogICAgICAg ICAgICAgICAgc2hpZnQ7CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICA7OwogICAg ICAgICAgICAqKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgOzsKICAgICAgICBl c2FjOwogICAgZG9uZTsKICAgIFtbIC1uICR7MX0gXV0gfHwgZGllICIke0ZVTkNOQU1FfTogbm8g cGF0aHMgZ2l2ZW4iOwogICAgbG9jYWwgcGF0aCBmOwogICAgZm9yIHBhdGggaW4gIiRAIjsKICAg IGRvCiAgICAgICAgbG9jYWwgYW55X2NvcnJlY3QgYW55X2ZpeGVkIGlzX3JlY3Vyc2l2ZTsKICAg ICAgICBbWyAtZCAke3BhdGh9IF1dICYmIGlzX3JlY3Vyc2l2ZT0xOwogICAgICAgIHdoaWxlIElG Uz0gcmVhZCAtciAtZCAnJyBmOyBkbwogICAgICAgICAgICBsb2NhbCBzaGViYW5nIGk7CiAgICAg ICAgICAgIGxvY2FsIGVycm9yPSBmcm9tPTsKICAgICAgICAgICAgSUZTPSByZWFkIC1yIHNoZWJh bmcgPCAke2Z9OwogICAgICAgICAgICBpZiBbWyAke3NoZWJhbmd9ID09ICcjIScqIF1dOyB0aGVu CiAgICAgICAgICAgICAgICBsb2NhbCBzcGxpdF9zaGViYW5nPSgpOwogICAgICAgICAgICAgICAg cmVhZCAtciAtYSBzcGxpdF9zaGViYW5nIDw8PCAke3NoZWJhbmd9OwogICAgICAgICAgICAgICAg Zm9yIGkgaW4gIiR7c3BsaXRfc2hlYmFuZ1tAXX0iOwogICAgICAgICAgICAgICAgZG8KICAgICAg ICAgICAgICAgICAgICBjYXNlICIke2l9IiBpbiAKICAgICAgICAgICAgICAgICAgICAgICAgKiIk e0VQWVRIT059IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnLXByaW50ICIke0ZV TkNOQU1FfTogaW4gZmlsZSAke2YjJHtEfX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBzaGViYW5nIG1hdGNoZXMgRVBZVEhPTjogJHtzaGVi YW5nfSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnlfY29ycmVjdD0xOwogICAgICAg ICAgICAgICAgICAgICAgICAgICAgZnJvbT0ke0VQWVRIT059OwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAg ICAgICAgICAgKnB5dGhvbiB8ICpweXRob25bMjNdKQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVidWctcHJpbnQgIiR7RlVOQ05BTUV9OiBpbiBmaWxlICR7ZiMke0R9fSI7CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWJ1Zy1wcmludCAiJHtGVU5DTkFNRX06IHJld3JpdGluZyBz aGViYW5nOiAke3NoZWJhbmd9IjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFtbICR7 aX0gPT0gKnB5dGhvbjIgXV07IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tPXB5dGhvbjI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgISAtbiAk e2ZvcmNlfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRo b25faXNfcHl0aG9uMyAiJHtFUFlUSE9OfSIgJiYgZXJyb3I9MTsKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBbWyAke2l9ID09ICpweXRob24zIF1dOyB0aGVu CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209cHl0aG9uMzsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgW1sgISAtbiAke2ZvcmNlfSBdXTsgdGhl bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uX2lzX3B5dGhv bjMgIiR7RVBZVEhPTn0iIHx8IGVycm9yPTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbT1weXRob247CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAg ICAgICAgICAgICAgICAgICAgICAgICpweXRob25bMjNdLlswMTIzNDU2Nzg5XSB8ICpweXB5IHwg KnB5cHkzIHwgKmp5dGhvblsyM10uWzAxMjM0NTY3ODldKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgaWYgW1sgISAtbiAke2ZvcmNlfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycm9yPTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtpfSIgaW4gCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpweXRob25bMjNdLlswMTIzNDU2Nzg5XSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209InB5dGhvblsyM10uWzAxMjM0NTY3 ODldIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqcHlweSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZyb209InB5cHkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpweXB5MykKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb209InB5cHkzIgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAqanl0aG9uWzIzXS5bMDEyMzQ1Njc4OV0pCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmcm9tPSJqeXRob25bMjNdLlswMTIzNDU2Nzg5XSIKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZSAi JHtGVU5DTkFNRX06IGludGVybmFsIGVycm9yIGluIDJuZCBwYXR0ZXJuIG1hdGNoIgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVzYWM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICAgIDs7CiAgICAgICAg ICAgICAgICAgICAgZXNhYzsKICAgICAgICAgICAgICAgIGRvbmU7CiAgICAgICAgICAgIGZpOwog ICAgICAgICAgICBpZiBbWyAhIC1uICR7ZXJyb3J9ICYmICEgLW4gJHtmcm9tfSBdXTsgdGhlbgog ICAgICAgICAgICAgICAgW1sgLW4gJHtpc19yZWN1cnNpdmV9IF1dICYmIGNvbnRpbnVlOwogICAg ICAgICAgICAgICAgZXJyb3I9MTsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtbICEg LW4gJHtxdWlldH0gXV07IHRoZW4KICAgICAgICAgICAgICAgIGVpbmZvICJGaXhpbmcgc2hlYmFu ZyBpbiAke2YjJHtEfX0uIjsKICAgICAgICAgICAgZmk7CiAgICAgICAgICAgIGlmIFtbICEgLW4g JHtlcnJvcn0gXV07IHRoZW4KICAgICAgICAgICAgICAgIGlmIFtbICR7c2hlYmFuZ30gPT0gKiR7 ZnJvbX0iICIqIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgc2VkIC1pIC1lICIxczoke2Zy b219IDoke0VQWVRIT059IDoiICIke2Z9IiB8fCBkaWU7CiAgICAgICAgICAgICAgICBlbHNlCiAg ICAgICAgICAgICAgICAgICAgc2VkIC1pIC1lICIxczoke2Zyb219JDoke0VQWVRIT059OiIgIiR7 Zn0iIHx8IGRpZTsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgYW55X2ZpeGVk PTE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVlcnJvciAiVGhlIGZpbGUgaGFz IGluY29tcGF0aWJsZSBzaGViYW5nOiI7CiAgICAgICAgICAgICAgICBlZXJyb3IgIiAgZmlsZTog JHtmIyR7RH19IjsKICAgICAgICAgICAgICAgIGVlcnJvciAiICBjdXJyZW50IHNoZWJhbmc6ICR7 c2hlYmFuZ30iOwogICAgICAgICAgICAgICAgZWVycm9yICIgIHJlcXVlc3RlZCBpbXBsOiAke0VQ WVRIT059IjsKICAgICAgICAgICAgICAgIGRpZSAiJHtGVU5DTkFNRX06IGNvbnZlcnNpb24gb2Yg aW5jb21wYXRpYmxlIHNoZWJhbmcgcmVxdWVzdGVkIjsKICAgICAgICAgICAgZmk7CiAgICAgICAg ZG9uZSA8IDwoZmluZCAiJHtwYXRofSIgLXR5cGUgZiAtcHJpbnQwKTsKICAgICAgICBpZiBbWyAh IC1uICR7YW55X2ZpeGVkfSBdXTsgdGhlbgogICAgICAgICAgICBlcWF3YXJuICJRQSB3YXJuaW5n OiAke0ZVTkNOQU1FfSwgJHtwYXRoIyR7RH19IGRpZCBub3QgbWF0Y2ggYW55IGZpeGFibGUgZmls ZXMuIjsKICAgICAgICAgICAgaWYgW1sgLW4gJHthbnlfY29ycmVjdH0gXV07IHRoZW4KICAgICAg ICAgICAgICAgIGVxYXdhcm4gIkFsbCBmaWxlcyBoYXZlICR7RVBZVEhPTn0gc2hlYmFuZyBhbHJl YWR5LiI7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGVxYXdhcm4gIlRoZXJlIGFy ZSBubyBQeXRob24gZmlsZXMgaW4gc3BlY2lmaWVkIGRpcmVjdG9yeS4iOwogICAgICAgICAgICBm aTsKICAgICAgICBmaTsKICAgIGRvbmUKfQpweXRob25fZm9yZWFjaF9pbXBsICgpIAp7IAogICAg ZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgbG9jYWwgTVVMVElC VUlMRF9WQVJJQU5UUzsKICAgIF9weXRob25fb2J0YWluX2ltcGxzOwogICAgbXVsdGlidWlsZF9m b3JlYWNoX3ZhcmlhbnQgX3B5dGhvbl9tdWx0aWJ1aWxkX3dyYXBwZXIgIiR7QH0iCn0KcHl0aG9u X2dlbl9jb25kX2RlcCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9 ICIke0B9IjsKICAgIGxvY2FsIGltcGwgcGF0dGVybjsKICAgIGxvY2FsIG1hdGNoZXM9KCk7CiAg ICBsb2NhbCBkZXA9JHsxfTsKICAgIHNoaWZ0OwogICAgZm9yIGltcGwgaW4gIiR7UFlUSE9OX0NP TVBBVFtAXX0iOwogICAgZG8KICAgICAgICBfcHl0aG9uX2ltcGxfc3VwcG9ydGVkICIke2ltcGx9 IiB8fCBjb250aW51ZTsKICAgICAgICBmb3IgcGF0dGVybiBpbiAiJEAiOwogICAgICAgIGRvCiAg ICAgICAgICAgIGlmIFtbICR7aW1wbH0gPT0gJHtwYXR0ZXJufSBdXTsgdGhlbgogICAgICAgICAg ICAgICAgaWYgW1sgJHtkZXB9ID09IConJHtQWVRIT05fVVNFREVQfScqIF1dOyB0aGVuCiAgICAg ICAgICAgICAgICAgICAgbG9jYWwgUFlUSE9OX1VTRURFUD0kKHB5dGhvbl9nZW5fdXNlZGVwICIk e0B9Iik7CiAgICAgICAgICAgICAgICAgICAgZGVwPSR7ZGVwLy9cJFx7UFlUSE9OX1VTRURFUFx9 LyR7UFlUSE9OX1VTRURFUH19OwogICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICBt YXRjaGVzKz0oInB5dGhvbl90YXJnZXRzXyR7aW1wbH0/ICggJHtkZXB9ICkiKTsKICAgICAgICAg ICAgICAgIGJyZWFrOwogICAgICAgICAgICBmaTsKICAgICAgICBkb25lOwogICAgZG9uZTsKICAg IGVjaG8gIiR7bWF0Y2hlc1tAXX0iCn0KcHl0aG9uX2dlbl91c2VkZXAgKCkgCnsgCiAgICBkZWJ1 Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCBpbXBsIHBhdHRl cm47CiAgICBsb2NhbCBtYXRjaGVzPSgpOwogICAgZm9yIGltcGwgaW4gIiR7UFlUSE9OX0NPTVBB VFtAXX0iOwogICAgZG8KICAgICAgICBfcHl0aG9uX2ltcGxfc3VwcG9ydGVkICIke2ltcGx9IiB8 fCBjb250aW51ZTsKICAgICAgICBmb3IgcGF0dGVybiBpbiAiJEAiOwogICAgICAgIGRvCiAgICAg ICAgICAgIGlmIFtbICR7aW1wbH0gPT0gJHtwYXR0ZXJufSBdXTsgdGhlbgogICAgICAgICAgICAg ICAgbWF0Y2hlcys9KCJweXRob25fdGFyZ2V0c18ke2ltcGx9KC0pPyIgIi1weXRob25fc2luZ2xl X3RhcmdldF8ke2ltcGx9KC0pIik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg Zmk7CiAgICAgICAgZG9uZTsKICAgIGRvbmU7CiAgICBbWyAtbiAke21hdGNoZXNbQF19IF1dIHx8 IGRpZSAiTm8gc3VwcG9ydGVkIGltcGxlbWVudGF0aW9ucyBtYXRjaCBweXRob25fZ2VuX3VzZWRl cCBwYXR0ZXJuczogJHtAfSI7CiAgICBsb2NhbCBvdXQ9JHttYXRjaGVzW0BdfTsKICAgIGVjaG8g IiR7b3V0Ly8gLyx9Igp9CnB5dGhvbl9nZW5fdXNlZmxhZ3MgKCkgCnsgCiAgICBkZWJ1Zy1wcmlu dC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCBpbXBsIHBhdHRlcm47CiAg ICBsb2NhbCBtYXRjaGVzPSgpOwogICAgZm9yIGltcGwgaW4gIiR7UFlUSE9OX0NPTVBBVFtAXX0i OwogICAgZG8KICAgICAgICBfcHl0aG9uX2ltcGxfc3VwcG9ydGVkICIke2ltcGx9IiB8fCBjb250 aW51ZTsKICAgICAgICBmb3IgcGF0dGVybiBpbiAiJEAiOwogICAgICAgIGRvCiAgICAgICAgICAg IGlmIFtbICR7aW1wbH0gPT0gJHtwYXR0ZXJufSBdXTsgdGhlbgogICAgICAgICAgICAgICAgbWF0 Y2hlcys9KCJweXRob25fdGFyZ2V0c18ke2ltcGx9Iik7CiAgICAgICAgICAgICAgICBicmVhazsK ICAgICAgICAgICAgZmk7CiAgICAgICAgZG9uZTsKICAgIGRvbmU7CiAgICBlY2hvICIke21hdGNo ZXNbQF19Igp9CnB5dGhvbl9nZXRfQ0ZMQUdTICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rp b24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgcHl0aG9uX2V4cG9ydCAiJHtAfSIgUFlUSE9OX0NG TEFHUzsKICAgIGVjaG8gIiR7UFlUSE9OX0NGTEFHU30iCn0KcHl0aG9uX2dldF9MSUJTICgpIAp7 IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwogICAgcHl0aG9u X2V4cG9ydCAiJHtAfSIgUFlUSE9OX0xJQlM7CiAgICBlY2hvICIke1BZVEhPTl9MSUJTfSIKfQpw eXRob25fZ2V0X2luY2x1ZGVkaXIgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZV TkNOQU1FfSAiJHtAfSI7CiAgICBweXRob25fZXhwb3J0ICIke0B9IiBQWVRIT05fSU5DTFVERURJ UjsKICAgIGVjaG8gIiR7UFlUSE9OX0lOQ0xVREVESVJ9Igp9CnB5dGhvbl9nZXRfbGlicmFyeV9w YXRoICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0iOwog ICAgcHl0aG9uX2V4cG9ydCAiJHtAfSIgUFlUSE9OX0xJQlBBVEg7CiAgICBlY2hvICIke1BZVEhP Tl9MSUJQQVRIfSIKfQpweXRob25fZ2V0X3NjcmlwdGRpciAoKSAKeyAKICAgIGRlYnVnLXByaW50 LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIHB5dGhvbl9leHBvcnQgIiR7QH0iIFBZ VEhPTl9TQ1JJUFRESVI7CiAgICBlY2hvICIke1BZVEhPTl9TQ1JJUFRESVJ9Igp9CnB5dGhvbl9n ZXRfc2l0ZWRpciAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIk e0B9IjsKICAgIHB5dGhvbl9leHBvcnQgIiR7QH0iIFBZVEhPTl9TSVRFRElSOwogICAgZWNobyAi JHtQWVRIT05fU0lURURJUn0iCn0KcHl0aG9uX2luc3RhbGwgKCkgCnsgCiAgICBkb2NvbXByZXNz IC14IC91c3Ivc2hhcmUvZG9jL3NhZ2U7CiAgICBpbnNpbnRvIC91c3Ivc2hhcmUvZG9jL3NhZ2U7 CiAgICBybSBkb2MvY29tbW9uL2J1aWxkZXIucHk7CiAgICBybSBkb2MvY29tbW9uL2N1c3RvbS1z cGhpbngtYnVpbGQucHk7CiAgICBkb2lucyAtciBkb2MvKgp9CnB5dGhvbl9pc19pbnN0YWxsZWQg KCkgCnsgCiAgICBsb2NhbCBpbXBsPSR7MTotJHtFUFlUSE9OfX07CiAgICBbWyAtbiAke2ltcGx9 IF1dIHx8IGRpZSAiJHtGVU5DTkFNRX06IG5vIGltcGwgbm9yIEVQWVRIT04iOwogICAgbG9jYWwg LXggUk9PVD0vOwogICAgY2FzZSAiJHtpbXBsfSIgaW4gCiAgICAgICAgcHlweSB8IHB5cHkzKQog ICAgICAgICAgICBsb2NhbCBhcHBlbmQ9OwogICAgICAgICAgICBpZiBbWyAtbiAke1BZVEhPTl9S RVFfVVNFfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgYXBwZW5kPVske1BZVEhPTl9SRVFfVVNF fV07CiAgICAgICAgICAgIGZpOwogICAgICAgICAgICBoYXNfdmVyc2lvbiAiZGV2LXB5dGhvbi8k e2ltcGx9JHthcHBlbmR9IiB8fCBoYXNfdmVyc2lvbiAiZGV2LXB5dGhvbi8ke2ltcGx9LWJpbiR7 YXBwZW5kfSIKICAgICAgICA7OwogICAgICAgICopCiAgICAgICAgICAgIGxvY2FsIFBZVEhPTl9Q S0dfREVQOwogICAgICAgICAgICBweXRob25fZXhwb3J0ICIke2ltcGx9IiBQWVRIT05fUEtHX0RF UDsKICAgICAgICAgICAgaGFzX3ZlcnNpb24gIiR7UFlUSE9OX1BLR19ERVB9IgogICAgICAgIDs7 CiAgICBlc2FjCn0KcHl0aG9uX2lzX3B5dGhvbjMgKCkgCnsgCiAgICBsb2NhbCBpbXBsPSR7MTot JHtFUFlUSE9OfX07CiAgICBbWyAtbiAke2ltcGx9IF1dIHx8IGRpZSAicHl0aG9uX2lzX3B5dGhv bjM6IG5vIGltcGwgbm9yIEVQWVRIT04iOwogICAgW1sgJHtpbXBsfSA9PSBweXRob24zKiB8fCAk e2ltcGx9ID09IHB5cHkzIF1dCn0KcHl0aG9uX21vZHVsZWludG8gKCkgCnsgCiAgICBkZWJ1Zy1w cmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBweXRob25fbW9kdWxlcm9vdD0k ezF9Cn0KcHl0aG9uX25ld2V4ZSAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVO Q05BTUV9ICIke0B9IjsKICAgIFtbIC1uICR7RVBZVEhPTn0gXV0gfHwgZGllICdObyBQeXRob24g aW1wbGVtZW50YXRpb24gc2V0IChFUFlUSE9OIGlzIG51bGwpLic7CiAgICBbWyAkeyN9IC1lcSAy IF1dIHx8IGRpZSAiVXNhZ2U6ICR7RlVOQ05BTUV9IDxwYXRoPiA8bmV3LW5hbWU+IjsKICAgIGxv Y2FsIGQ9JHtweXRob25fc2NyaXB0cm9vdDotJHtERVNUVFJFRX0vYmlufTsKICAgIGxvY2FsIHdy YXBkPSR7ZH07CiAgICBsb2NhbCBmPSR7MX07CiAgICBsb2NhbCBiYXJlZm49JHsyfTsKICAgIGxv Y2FsIG5ld2ZuOwogICAgaWYgX3B5dGhvbl93YW50X3B5dGhvbl9leGVjMjsgdGhlbgogICAgICAg IGxvY2FsIFBZVEhPTl9TQ1JJUFRESVI7CiAgICAgICAgcHl0aG9uX2V4cG9ydCBQWVRIT05fU0NS SVBURElSOwogICAgICAgIGQ9JHtQWVRIT05fU0NSSVBURElSIyR7RVBSRUZJWH19OwogICAgICAg IG5ld2ZuPSR7YmFyZWZufTsKICAgIGVsc2UKICAgICAgICBuZXdmbj0ke2JhcmVmbn0tJHtFUFlU SE9OfTsKICAgIGZpOwogICAgKCBkb2RpciAiJHt3cmFwZH0iOwogICAgZXhlaW50byAiJHtkfSI7 CiAgICBuZXdleGUgIiR7Zn0iICIke25ld2ZufSIgfHwgZGllICk7CiAgICBfcHl0aG9uX2xuX3Jl bCAiJHtFRCUvfSIkKF9weXRob25fZ2V0X3dyYXBwZXJfcGF0aCkgIiR7RUQlL30vJHt3cmFwZH0v JHtiYXJlZm59IiB8fCBkaWU7CiAgICBpZiBbWyAtbiAke19QWVRIT05fUkVXUklURV9TSEVCQU5H fSBdXTsgdGhlbgogICAgICAgIHB5dGhvbl9maXhfc2hlYmFuZyAtcSAiJHtFRCUvfS8ke2R9LyR7 bmV3Zm59IjsKICAgIGZpCn0KcHl0aG9uX25ld3NjcmlwdCAoKSAKeyAKICAgIGRlYnVnLXByaW50 LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGxvY2FsIF9QWVRIT05fUkVXUklURV9T SEVCQU5HPTE7CiAgICBweXRob25fbmV3ZXhlICIke0B9Igp9CnB5dGhvbl9vcHRpbWl6ZSAoKSAK eyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGlmIFtb ICR7RUJVSUxEX1BIQVNFfSA9PSBwcmUqIHx8ICR7RUJVSUxEX1BIQVNFfSA9PSBwb3N0KiBdXTsg dGhlbgogICAgICAgIGVlcnJvciAiVGhlIG5ldyBQeXRob24gZWNsYXNzZXMgZXhwZWN0IHRoZSBj b21waWxlZCBQeXRob24gZmlsZXMgdG8iOwogICAgICAgIGVlcnJvciAiYmUgY29udHJvbGxlZCBi eSB0aGUgUGFja2FnZSBNYW5hZ2VyLiBGb3IgdGhpcyByZWFzb24sIjsKICAgICAgICBlZXJyb3Ig InRoZSBweXRob25fb3B0aW1pemUgZnVuY3Rpb24gY2FuIGJlIHVzZWQgb25seSBkdXJpbmcgc3Jj XyogcGhhc2VzIjsKICAgICAgICBlZXJyb3IgIihzcmNfaW5zdGFsbCBtb3N0IGNvbW1vbmx5KSBh bmQgbm90IGR1cmluZyBwa2dfKiBwaGFzZXMuIjsKICAgICAgICBlY2hvOwogICAgICAgIGRpZSAi cHl0aG9uX29wdGltaXplIGlzIG5vdCB0byBiZSB1c2VkIGluIHByZS9wb3N0KiBwaGFzZXMiOwog ICAgZmk7CiAgICBbWyAtbiAke0VQWVRIT059IF1dIHx8IGRpZSAnTm8gUHl0aG9uIGltcGxlbWVu dGF0aW9uIHNldCAoRVBZVEhPTiBpcyBudWxsKS4nOwogICAgbG9jYWwgUFlUSE9OPSR7UFlUSE9O fTsKICAgIFtbIC1uICR7UFlUSE9OfSBdXSB8fCBweXRob25fZXhwb3J0IFBZVEhPTjsKICAgIGlm IFtbICR7I30gLWVxIDAgXV07IHRoZW4KICAgICAgICBsb2NhbCBmOwogICAgICAgIHdoaWxlIElG Uz0gcmVhZCAtciAtZCAnJyBmOyBkbwogICAgICAgICAgICBpZiBbWyAke2Z9ID09IC8qICYmIC1k ICR7RH0ke2Z9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBzZXQgLS0gIiR7RH0ke2Z9IiAiJHtA fSI7CiAgICAgICAgICAgIGZpOwogICAgICAgIGRvbmUgPCA8KCIke1BZVEhPTn0iIC1jICdpbXBv cnQgc3lzOyBwcmludCgiXDAiLmpvaW4oc3lzLnBhdGgpKScpOwogICAgICAgIGRlYnVnLXByaW50 ICIke0ZVTkNOQU1FfTogdXNpbmcgc3lzLnBhdGg6ICR7Ki8lLzt9IjsKICAgIGZpOwogICAgbG9j YWwgZDsKICAgIGZvciBkIGluICIkQCI7CiAgICBkbwogICAgICAgIGxvY2FsIGluc3RwYXRoPSR7 ZCMke0R9fTsKICAgICAgICBpbnN0cGF0aD0vJHtpbnN0cGF0aCMjL307CiAgICAgICAgY2FzZSAi JHtFUFlUSE9OfSIgaW4gCiAgICAgICAgICAgIHB5dGhvbiopCiAgICAgICAgICAgICAgICAiJHtQ WVRIT059IiAtbSBjb21waWxlYWxsIC1xIC1mIC1kICIke2luc3RwYXRofSIgIiR7ZH0iOwogICAg ICAgICAgICAgICAgIiR7UFlUSE9OfSIgLU9PIC1tIGNvbXBpbGVhbGwgLXEgLWYgLWQgIiR7aW5z dHBhdGh9IiAiJHtkfSIKICAgICAgICAgICAgOzsKICAgICAgICAgICAgKikKICAgICAgICAgICAg ICAgICIke1BZVEhPTn0iIC1tIGNvbXBpbGVhbGwgLXEgLWYgLWQgIiR7aW5zdHBhdGh9IiAiJHtk fSIKICAgICAgICAgICAgOzsKICAgICAgICBlc2FjOwogICAgZG9uZQp9CnB5dGhvbl9wYXJhbGxl bF9mb3JlYWNoX2ltcGwgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1F fSAiJHtAfSI7CiAgICBsb2NhbCBNVUxUSUJVSUxEX0pPQlM9JHtNVUxUSUJVSUxEX0pPQlM6LSR7 RElTVFVUSUxTX0pPQlN9fTsKICAgIGxvY2FsIE1VTFRJQlVJTERfVkFSSUFOVFM7CiAgICBfcHl0 aG9uX29idGFpbl9pbXBsczsKICAgIG11bHRpYnVpbGRfcGFyYWxsZWxfZm9yZWFjaF92YXJpYW50 IF9weXRob25fbXVsdGlidWlsZF93cmFwcGVyICIke0B9Igp9CnB5dGhvbl9wcmVwYXJlX2FsbCAo KSAKeyAKICAgIGRpc3R1dGlscy1yMV9weXRob25fcHJlcGFyZV9hbGw7CiAgICBjZCBkb2M7CiAg ICBybSAtcmYgZW4vcmVmZXJlbmNlL2RldjsKICAgIGNwICIke1dPUktESVJ9Ii9TaW5ndWxhci8z LTEtNi9pbmZvL3Npbmd1bGFyLmhscCAuLzsKICAgIHRvdWNoIGVuL19faW5pdF9fLnB5OwogICAg bWtkaXIgLXAgb3V0cHV0L2RvY3RyZWVzL2VuL3R1dG9yaWFsOwogICAgbWtkaXIgLXAgZW4vdHV0 b3JpYWwvdGVtcGxhdGVzOwogICAgbWtkaXIgLXAgZW4vdHV0b3JpYWwvc3RhdGljOwogICAgbWtk aXIgLXAgZW4vcmVmZXJlbmNlL3RlbXBsYXRlczsKICAgIG1rZGlyIC1wIGVuL3JlZmVyZW5jZS9z dGF0aWMKfQpweXRob25fcmVwbGljYXRlX3NjcmlwdCAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1 bmN0aW9uICR7RlVOQ05BTUV9ICIke0B9IjsKICAgIGZ1bmN0aW9uIF9weXRob25fcmVwbGljYXRl X3NjcmlwdCAoKSAKICAgIHsgCiAgICAgICAgbG9jYWwgX1BZVEhPTl9GSVhfU0hFQkFOR19RVUlF VD0xOwogICAgICAgIGlmIF9weXRob25fd2FudF9weXRob25fZXhlYzI7IHRoZW4KICAgICAgICAg ICAgbG9jYWwgUFlUSE9OX1NDUklQVERJUjsKICAgICAgICAgICAgcHl0aG9uX2V4cG9ydCBQWVRI T05fU0NSSVBURElSOwogICAgICAgICAgICAoIGV4ZWludG8gIiR7UFlUSE9OX1NDUklQVERJUiMk e0VQUkVGSVh9fSI7CiAgICAgICAgICAgIGRvZXhlICIke2ZpbGVzW0BdfSIgKTsKICAgICAgICAg ICAgcHl0aG9uX2ZpeF9zaGViYW5nIC1xICIke2ZpbGVzW0BdLypcLy8ke0QlL30vJHtQWVRIT05f U0NSSVBURElSfS99IjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGxvY2FsIGY7CiAgICAgICAg ICAgIGZvciBmIGluICIke2ZpbGVzW0BdfSI7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAg ICBjcCAtcCAiJHtmfSIgIiR7Zn0tJHtFUFlUSE9OfSIgfHwgZGllOwogICAgICAgICAgICBkb25l OwogICAgICAgICAgICBweXRob25fZml4X3NoZWJhbmcgLXEgIiR7ZmlsZXNbQF0vJS8tJHtFUFlU SE9OfX0iOwogICAgICAgIGZpCiAgICB9OwogICAgbG9jYWwgZmlsZXM9KCIke0B9Iik7CiAgICBw eXRob25fZm9yZWFjaF9pbXBsIF9weXRob25fcmVwbGljYXRlX3NjcmlwdDsKICAgIGxvY2FsIGY7 CiAgICBmb3IgZiBpbiAiJEAiOwogICAgZG8KICAgICAgICBfcHl0aG9uX2xuX3JlbCAiJHtFRCUv fSQoX3B5dGhvbl9nZXRfd3JhcHBlcl9wYXRoKSIgIiR7Zn0iIHx8IGRpZTsKICAgIGRvbmUKfQpw eXRob25fc2NyaXB0aW50byAoKSAKeyAKICAgIGRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05B TUV9ICIke0B9IjsKICAgIHB5dGhvbl9zY3JpcHRyb290PSR7MX0KfQpweXRob25fc2V0dXAgKCkg CnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBweXRo b25fZXhwb3J0X2Jlc3Q7CiAgICBweXRob25fd3JhcHBlcl9zZXR1cAp9CnB5dGhvbl93cmFwcGVy X3NldHVwICgpIAp7IAogICAgZGVidWctcHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiR7QH0i OwogICAgbG9jYWwgd29ya2Rpcj0kezE6LSR7VH0vJHtFUFlUSE9OfX07CiAgICBsb2NhbCBpbXBs PSR7MjotJHtFUFlUSE9OfX07CiAgICBbWyAtbiAke3dvcmtkaXJ9IF1dIHx8IGRpZSAiJHtGVU5D TkFNRX06IG5vIHdvcmtkaXIgc3BlY2lmaWVkLiI7CiAgICBbWyAtbiAke2ltcGx9IF1dIHx8IGRp ZSAiJHtGVU5DTkFNRX06IG5vIGltcGwgbm9yIEVQWVRIT04gc3BlY2lmaWVkLiI7CiAgICBpZiBb WyAhIC14ICR7d29ya2Rpcn0vYmluL3B5dGhvbiBdXTsgdGhlbgogICAgICAgIG1rZGlyIC1wICIk e3dvcmtkaXJ9Ii97YmluLHBrZ2NvbmZpZ30gfHwgZGllOwogICAgICAgIHJtIC1mICIke3dvcmtk aXJ9Ii9iaW4vcHl0aG9ueywyLDMsLWNvbmZpZ307CiAgICAgICAgcm0gLWYgIiR7d29ya2Rpcn0i L2Jpbi8ydG8zOwogICAgICAgIHJtIC1mICIke3dvcmtkaXJ9Ii9wa2djb25maWcvcHl0aG9ueywy LDN9LnBjOwogICAgICAgIGxvY2FsIEVQWVRIT04gUFlUSE9OOwogICAgICAgIHB5dGhvbl9leHBv cnQgIiR7aW1wbH0iIEVQWVRIT04gUFlUSE9OOwogICAgICAgIGxvY2FsIHB5dmVyOwogICAgICAg IGlmIHB5dGhvbl9pc19weXRob24zOyB0aGVuCiAgICAgICAgICAgIHB5dmVyPTM7CiAgICAgICAg ZWxzZQogICAgICAgICAgICBweXZlcj0yOwogICAgICAgIGZpOwogICAgICAgIGxuIC1zICIke1BZ VEhPTn0iICIke3dvcmtkaXJ9Ii9iaW4vcHl0aG9uIHx8IGRpZTsKICAgICAgICBsbiAtcyBweXRo b24gIiR7d29ya2Rpcn0iL2Jpbi9weXRob24ke3B5dmVyfSB8fCBkaWU7CiAgICAgICAgbG9jYWwg bm9uc3VwcD0oKTsKICAgICAgICBpZiBbWyAke0VQWVRIT059ID09IHB5dGhvbiogXV07IHRoZW4K ICAgICAgICAgICAgbG4gLXMgIiR7UFlUSE9OfS1jb25maWciICIke3dvcmtkaXJ9Ii9iaW4vcHl0 aG9uLWNvbmZpZyB8fCBkaWU7CiAgICAgICAgICAgIGxuIC1zICIke1BZVEhPTi9weXRob24vMnRv My19IiAiJHt3b3JrZGlyfSIvYmluLzJ0bzMgfHwgZGllOwogICAgICAgICAgICBsbiAtcyAiJHtF UFJFRklYfSIvdXNyLyQoZ2V0X2xpYmRpcikvcGtnY29uZmlnLyR7RVBZVEhPTi9uL24tfS5wYyAi JHt3b3JrZGlyfSIvcGtnY29uZmlnL3B5dGhvbi5wYyB8fCBkaWU7CiAgICAgICAgICAgIGxuIC1z IHB5dGhvbi5wYyAiJHt3b3JrZGlyfSIvcGtnY29uZmlnL3B5dGhvbiR7cHl2ZXJ9LnBjIHx8IGRp ZTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIG5vbnN1cHArPSgydG8zIHB5dGhvbi1jb25maWcp OwogICAgICAgIGZpOwogICAgICAgIGxvY2FsIHg7CiAgICAgICAgZm9yIHggaW4gIiR7bm9uc3Vw cFtAXX0iOwogICAgICAgIGRvCiAgICAgICAgICAgIGNhdCA+ICIke3dvcmtkaXJ9Ii9iaW4vJHt4 fSAgPDxfX0VPRl9fCiMhL2Jpbi9zaAplY2hvICIke3h9IGlzIG5vdCBzdXBwb3J0ZWQgYnkgJHtF UFlUSE9OfSIgPiYyCmV4aXQgMQpfX0VPRl9fCgogICAgICAgICAgICBjaG1vZCAreCAiJHt3b3Jr ZGlyfSIvYmluLyR7eH0gfHwgZGllOwogICAgICAgIGRvbmUKICAgICAgICBpZiBbWyAke1BBVEgj IzoqfSAhPSAke3dvcmtkaXJ9L2JpbiBdXTsgdGhlbgogICAgICAgICAgICBQQVRIPSR7d29ya2Rp cn0vYmluJHtQQVRIOis6JHtQQVRIfX07CiAgICAgICAgZmk7CiAgICAgICAgaWYgW1sgJHtQS0df Q09ORklHX1BBVEgjIzoqfSAhPSAke3dvcmtkaXJ9L3BrZ2NvbmZpZyBdXTsgdGhlbgogICAgICAg ICAgICBQS0dfQ09ORklHX1BBVEg9JHt3b3JrZGlyfS9wa2djb25maWcke1BLR19DT05GSUdfUEFU SDorOiR7UEtHX0NPTkZJR19QQVRIfX07CiAgICAgICAgZmk7CiAgICAgICAgZXhwb3J0IFBBVEgg UEtHX0NPTkZJR19QQVRIOwogICAgZmkKfQpyZWRpcmVjdF9hbGxvY19mZCAoKSAKeyAKICAgIGxv Y2FsIHZhcj0kMSBmaWxlPSQyIHJlZGlyPSR7MzotIjw+In07CiAgICBpZiBbWyAhIC1MIC9kZXYv ZmQgJiYgJHtDQlVJTER9ID09ICpsaW51eCogXV07IHRoZW4KICAgICAgICBlZXJyb3IgIllvdSdy ZSBtaXNzaW5nIGEgL2Rldi9mZCBzeW1saW5rIHRvIC9wcm9jL3NlbGYvZmQuIjsKICAgICAgICBl ZXJyb3IgIlBsZWFzZSBmaXggdGhlIHN5bWxpbmsgYW5kIGNoZWNrIHlvdXIgYm9vdCBzY3JpcHRz ICh1ZGV2L2V0Yy4uLikuIjsKICAgICAgICBkaWUgIi9kZXYvZmQgaXMgYnJva2VuIjsKICAgIGZp OwogICAgaWYgW1sgJCgoIChCQVNIX1ZFUlNJTkZPWzBdIDw8IDgpICsgQkFTSF9WRVJTSU5GT1sx XSApKSAtZ2UgJCgoICg0IDw8IDgpICsgMSApKSBdXTsgdGhlbgogICAgICAgIGV2YWwgImV4ZWMg eyR7dmFyfX0ke3JlZGlyfScke2ZpbGV9JyI7CiAgICBlbHNlCiAgICAgICAgbG9jYWwgZmQ9MTA7 CiAgICAgICAgd2hpbGUgOjsgZG8KICAgICAgICAgICAgaWYgW1sgISAtZSAvZGV2L2ZkLyR7ZmR9 IF1dICYmIFtbICEgLUwgL2Rldi9mZC8ke2ZkfSBdXTsgdGhlbgogICAgICAgICAgICAgICAgZXZh bCAiZXhlYyAke2ZkfSR7cmVkaXJ9JyR7ZmlsZX0nIiAmJiBicmVhazsKICAgICAgICAgICAgZmk7 CiAgICAgICAgICAgIFtbICR7ZmR9IC1ndCAxMDI0IF1dICYmIGRpZSAnY291bGQgbm90IGxvY2F0 ZSBhIGZyZWUgdGVtcCBmZCAhPyc7CiAgICAgICAgICAgIDogJCgoICsrZmQgKSk7CiAgICAgICAg ZG9uZTsKICAgICAgICA6ICQoKCAke3Zhcn0gPSBmZCApKTsKICAgIGZpCn0KcmVwbGFjZV9hbGxf dmVyc2lvbl9zZXBhcmF0b3JzICgpIAp7IAogICAgbG9jYWwgYz0oJChnZXRfYWxsX3ZlcnNpb25f Y29tcG9uZW50cyAiJHsyOi0ke1BWfX0iKSk7CiAgICBjPSR7Y1tAXS8vWy0uX10vJDF9OwogICAg ZWNobyAke2MvLyB9Cn0KcmVwbGFjZV92ZXJzaW9uX3NlcGFyYXRvciAoKSAKeyAKICAgIGVzaG9w dHNfcHVzaCAtcyBleHRnbG9iOwogICAgbG9jYWwgdyBjIHY9IiR7MzotJHtQVn19IjsKICAgIGRl Y2xhcmUgLWkgaSBmb3VuZD0wOwogICAgdz0kezE6LTF9OwogICAgYz0oJChnZXRfYWxsX3ZlcnNp b25fY29tcG9uZW50cyAke3Z9KSk7CiAgICBpZiBbWyAke3d9ICE9ICpbWzpkaWdpdDpdXSogXV07 IHRoZW4KICAgICAgICBmb3IgKChpID0gMDsgaSA8ICR7I2NbQF19OyBpKyspKQogICAgICAgIGRv CiAgICAgICAgICAgIGlmIFtbICR7Y1tpXX0gPT0gJHt3fSBdXTsgdGhlbgogICAgICAgICAgICAg ICAgY1tpXT0kezJ9OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGZpOwogICAg ICAgIGRvbmU7CiAgICBlbHNlCiAgICAgICAgZm9yICgoaSA9IDA7IGkgPCAkeyNjW0BdfTsgaSsr KSkKICAgICAgICBkbwogICAgICAgICAgICBpZiBbWyAtbiAiJHtjW2ldLy9bXi0uX119IiBdXTsg dGhlbgogICAgICAgICAgICAgICAgZm91bmQrPTE7CiAgICAgICAgICAgICAgICBpZiAoKGZvdW5k ID09IHcpKTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGNbaV09JHsyfTsKICAgICAgICAgICAg ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBmaTsKICAgICAg ICBkb25lOwogICAgZmk7CiAgICBjPSR7Y1sqXX07CiAgICBlY2hvICR7Yy8vIH07CiAgICBlc2hv cHRzX3BvcAp9CnJ1bl9pbl9idWlsZF9kaXIgKCkgCnsgCiAgICBkZWJ1Zy1wcmludC1mdW5jdGlv biAke0ZVTkNOQU1FfSAiJHtAfSI7CiAgICBsb2NhbCByZXQ7CiAgICBbWyAkeyN9IC1uZSAwIF1d IHx8IGRpZSAiJHtGVU5DTkFNRX06IG5vIGNvbW1hbmQgc3BlY2lmaWVkLiI7CiAgICBbWyAtbiAk e0JVSUxEX0RJUn0gXV0gfHwgZGllICIke0ZVTkNOQU1FfTogQlVJTERfRElSIG5vdCBzZXQuIjsK ICAgIG1rZGlyIC1wICIke0JVSUxEX0RJUn0iIHx8IGRpZTsKICAgIHB1c2hkICIke0JVSUxEX0RJ Un0iID4gL2Rldi9udWxsIHx8IGRpZTsKICAgICIke0B9IjsKICAgIHJldD0kez99OwogICAgcG9w ZCA+IC9kZXYvbnVsbCB8fCBkaWU7CiAgICByZXR1cm4gJHtyZXR9Cn0Kc3JjX2NvbXBpbGUgKCkg CnsgCiAgICBkaXN0dXRpbHMtcjFfc3JjX2NvbXBpbGUgIiRAIgp9CnNyY19jb25maWd1cmUgKCkg CnsgCiAgICBkaXN0dXRpbHMtcjFfc3JjX2NvbmZpZ3VyZSAiJEAiCn0Kc3JjX2luc3RhbGwgKCkg CnsgCiAgICBkaXN0dXRpbHMtcjFfc3JjX2luc3RhbGwgIiRAIgp9CnNyY19wcmVwYXJlICgpIAp7 IAogICAgZGlzdHV0aWxzLXIxX3NyY19wcmVwYXJlICIkQCIKfQpzcmNfdGVzdCAoKSAKeyAKICAg IGRpc3R1dGlscy1yMV9zcmNfdGVzdCAiJEAiCn0Kc3JjX3VucGFjayAoKSAKeyAKICAgIF9fZWFw aTBfc3JjX3VucGFjayAiJEAiCn0Kc3RyaXAtbGluZ3VhcyAoKSAKeyAKICAgIGxvY2FsIGxzIG5l d2xzIG5vbHM7CiAgICBpZiBbWyAkMSA9PSAiLWkiIF1dIHx8IFtbICQxID09ICItdSIgXV07IHRo ZW4KICAgICAgICBsb2NhbCBvcD0kMTsKICAgICAgICBzaGlmdDsKICAgICAgICBscz0kKGZpbmQg IiQxIiAtbmFtZSAnKi5wbycgLWV4ZWMgYmFzZW5hbWUge30gLnBvICc7Jyk7CiAgICAgICAgc2hp ZnQ7CiAgICAgICAgbG9jYWwgZCBmOwogICAgICAgIGZvciBkIGluICIkQCI7CiAgICAgICAgZG8K ICAgICAgICAgICAgaWYgW1sgJHtvcH0gPT0gIi11IiBdXTsgdGhlbgogICAgICAgICAgICAgICAg bmV3bHM9JHtsc307CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIG5ld2xzPSIiOwog ICAgICAgICAgICBmaTsKICAgICAgICAgICAgZm9yIGYgaW4gJChmaW5kICIkZCIgLW5hbWUgJyou cG8nIC1leGVjIGJhc2VuYW1lIHt9IC5wbyAnOycpOwogICAgICAgICAgICBkbwogICAgICAgICAg ICAgICAgaWYgW1sgJHtvcH0gPT0gIi1pIiBdXTsgdGhlbgogICAgICAgICAgICAgICAgICAgIGhh cyAke2Z9ICR7bHN9ICYmIG5ld2xzPSIke25ld2xzfSAke2Z9IjsKICAgICAgICAgICAgICAgIGVs c2UKICAgICAgICAgICAgICAgICAgICBoYXMgJHtmfSAke2xzfSB8fCBuZXdscz0iJHtuZXdsc30g JHtmfSI7CiAgICAgICAgICAgICAgICBmaTsKICAgICAgICAgICAgZG9uZTsKICAgICAgICAgICAg bHM9JHtuZXdsc307CiAgICAgICAgZG9uZTsKICAgIGVsc2UKICAgICAgICBscz0iJEAiOwogICAg Zmk7CiAgICBub2xzPSIiOwogICAgbmV3bHM9IiI7CiAgICBmb3IgZiBpbiAke0xJTkdVQVN9Owog ICAgZG8KICAgICAgICBpZiBoYXMgJHtmfSAke2xzfTsgdGhlbgogICAgICAgICAgICBuZXdscz0i JHtuZXdsc30gJHtmfSI7CiAgICAgICAgZWxzZQogICAgICAgICAgICBub2xzPSIke25vbHN9ICR7 Zn0iOwogICAgICAgIGZpOwogICAgZG9uZTsKICAgIFtbIC1uICR7bm9sc30gXV0gJiYgZWluZm8g IlNvcnJ5LCBidXQgJHtQTn0gZG9lcyBub3Qgc3VwcG9ydCB0aGUgTElOR1VBUzoiICR7bm9sc307 CiAgICBleHBvcnQgTElOR1VBUz0ke25ld2xzOjF9Cn0KdGMtYXJjaCAoKSAKeyAKICAgIHRjLW5p bmphX21hZ2ljX3RvX2FyY2ggcG9ydGFnZSAiJEAiCn0KdGMtYXJjaC1rZXJuZWwgKCkgCnsgCiAg ICB0Yy1uaW5qYV9tYWdpY190b19hcmNoIGtlcm4gIiRAIgp9CnRjLWVuZGlhbiAoKSAKeyAKICAg IGxvY2FsIGhvc3Q9JDE7CiAgICBbWyAteiAke2hvc3R9IF1dICYmIGhvc3Q9JHtDVEFSR0VUOi0k e0NIT1NUfX07CiAgICBob3N0PSR7aG9zdCUlLSp9OwogICAgY2FzZSAke2hvc3R9IGluIAogICAg ICAgIGFhcmNoNjQqYmUpCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBh YXJjaDY0KQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgYWxwaGEq KQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgYXJtKmIqKQogICAgICAg ICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAgICAgICAgYXJtKikKICAgICAgICAgICAgZWNobyBs aXR0bGUKICAgICAgICA7OwogICAgICAgIGNyaXMqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQog ICAgICAgIDs7CiAgICAgICAgaHBwYSopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsK ICAgICAgICBpPzg2KikKICAgICAgICAgICAgZWNobyBsaXR0bGUKICAgICAgICA7OwogICAgICAg IGlhNjQqKQogICAgICAgICAgICBlY2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgbTY4KikK ICAgICAgICAgICAgZWNobyBiaWcKICAgICAgICA7OwogICAgICAgIG1pcHMqbCopCiAgICAgICAg ICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBtaXBzKikKICAgICAgICAgICAgZWNo byBiaWcKICAgICAgICA7OwogICAgICAgIHBvd2VycGMqbGUpCiAgICAgICAgICAgIGVjaG8gbGl0 dGxlCiAgICAgICAgOzsKICAgICAgICBwb3dlcnBjKikKICAgICAgICAgICAgZWNobyBiaWcKICAg ICAgICA7OwogICAgICAgIHMzOTAqKQogICAgICAgICAgICBlY2hvIGJpZwogICAgICAgIDs7CiAg ICAgICAgc2gqYiopCiAgICAgICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICBzaCop CiAgICAgICAgICAgIGVjaG8gbGl0dGxlCiAgICAgICAgOzsKICAgICAgICBzcGFyYyopCiAgICAg ICAgICAgIGVjaG8gYmlnCiAgICAgICAgOzsKICAgICAgICB4ODZfNjQqKQogICAgICAgICAgICBl Y2hvIGxpdHRsZQogICAgICAgIDs7CiAgICAgICAgKikKICAgICAgICAgICAgZWNobyB3dGYKICAg ICAgICA7OwogICAgZXNhYwp9CnRjLWVudl9idWlsZCAoKSAKeyAKICAgIHRjLWV4cG9ydF9idWls ZF9lbnY7CiAgICBDRkxBR1M9JHtCVUlMRF9DRkxBR1N9IENYWEZMQUdTPSR7QlVJTERfQ1hYRkxB R1N9IENQUEZMQUdTPSR7QlVJTERfQ1BQRkxBR1N9IExERkxBR1M9JHtCVUlMRF9MREZMQUdTfSBB Uj0kKHRjLWdldEJVSUxEX0FSKSBBUz0kKHRjLWdldEJVSUxEX0FTKSBDQz0kKHRjLWdldEJVSUxE X0NDKSBDUFA9JCh0Yy1nZXRCVUlMRF9DUFApIENYWD0kKHRjLWdldEJVSUxEX0NYWCkgTEQ9JCh0 Yy1nZXRCVUlMRF9MRCkgTk09JCh0Yy1nZXRCVUlMRF9OTSkgUEtHX0NPTkZJRz0kKHRjLWdldEJV SUxEX1BLR19DT05GSUcpIFJBTkxJQj0kKHRjLWdldEJVSUxEX1JBTkxJQikgIiRAIgp9CnRjLWV4 cG9ydCAoKSAKeyAKICAgIGxvY2FsIHZhcjsKICAgIGZvciB2YXIgaW4gIiRAIjsKICAgIGRvCiAg ICAgICAgW1sgJCh0eXBlIC10IHRjLWdldCR7dmFyfSkgIT0gImZ1bmN0aW9uIiBdXSAmJiBkaWUg InRjLWV4cG9ydDogaW52YWxpZCBleHBvcnQgdmFyaWFibGUgJyR7dmFyfSciOwogICAgICAgIGV2 YWwgdGMtZ2V0JHt2YXJ9ID4gL2Rldi9udWxsOwogICAgZG9uZQp9CnRjLWV4cG9ydF9idWlsZF9l bnYgKCkgCnsgCiAgICB0Yy1leHBvcnQgIiRAIjsKICAgIDogJHtCVUlMRF9DRkxBR1M6PS1PMSAt cGlwZX07CiAgICA6ICR7QlVJTERfQ1hYRkxBR1M6PS1PMSAtcGlwZX07CiAgICA6ICR7QlVJTERf Q1BQRkxBR1M6PX07CiAgICA6ICR7QlVJTERfTERGTEFHUzo9fTsKICAgIGV4cG9ydCBCVUlMRF97 QyxDWFgsQ1BQLExEfUZMQUdTOwogICAgbG9jYWwgdjsKICAgIGZvciB2IGluIEJVSUxEX3tDLENY WCxDUFAsTER9RkxBR1M7CiAgICBkbwogICAgICAgIGV4cG9ydCAke3YjQlVJTERffV9GT1JfQlVJ TEQ9IiR7IXZ9IjsKICAgIGRvbmUKfQp0Yy1nZXRBUiAoKSAKeyAKICAgIHRjLWdldFBST0cgQVIg YXIgIiRAIgp9CnRjLWdldEFTICgpIAp7IAogICAgdGMtZ2V0UFJPRyBBUyBhcyAiJEAiCn0KdGMt Z2V0QlVJTERfQVIgKCkgCnsgCiAgICB0Yy1nZXRCVUlMRF9QUk9HIEFSIGFyICIkQCIKfQp0Yy1n ZXRCVUlMRF9BUyAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cgQVMgYXMgIiRAIgp9CnRjLWdl dEJVSUxEX0NDICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBDQyBnY2MgIiRAIgp9CnRjLWdl dEJVSUxEX0NQUCAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cgQ1BQIGNwcCAiJEAiCn0KdGMt Z2V0QlVJTERfQ1hYICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBDWFggZysrICIkQCIKfQp0 Yy1nZXRCVUlMRF9MRCAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cgTEQgbGQgIiRAIgp9CnRj LWdldEJVSUxEX05NICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBOTSBubSAiJEAiCn0KdGMt Z2V0QlVJTERfT0JKQ09QWSAoKSAKeyAKICAgIHRjLWdldEJVSUxEX1BST0cgT0JKQ09QWSBvYmpj b3B5ICIkQCIKfQp0Yy1nZXRCVUlMRF9QS0dfQ09ORklHICgpIAp7IAogICAgdGMtZ2V0QlVJTERf UFJPRyBQS0dfQ09ORklHIHBrZy1jb25maWcgIiRAIgp9CnRjLWdldEJVSUxEX1BST0cgKCkgCnsg CiAgICBfdGMtZ2V0UFJPRyBDQlVJTEQgIkJVSUxEXyQxICQxX0ZPUl9CVUlMRCBIT1NUJDEiICIk e0A6Mn0iCn0KdGMtZ2V0QlVJTERfUkFOTElCICgpIAp7IAogICAgdGMtZ2V0QlVJTERfUFJPRyBS QU5MSUIgcmFubGliICIkQCIKfQp0Yy1nZXRCVUlMRF9TVFJJUCAoKSAKeyAKICAgIHRjLWdldEJV SUxEX1BST0cgU1RSSVAgc3RyaXAgIiRAIgp9CnRjLWdldENDICgpIAp7IAogICAgdGMtZ2V0UFJP RyBDQyBnY2MgIiRAIgp9CnRjLWdldENQUCAoKSAKeyAKICAgIHRjLWdldFBST0cgQ1BQIGNwcCAi JEAiCn0KdGMtZ2V0Q1hYICgpIAp7IAogICAgdGMtZ2V0UFJPRyBDWFggZysrICIkQCIKfQp0Yy1n ZXRETExXUkFQICgpIAp7IAogICAgdGMtZ2V0UFJPRyBETExXUkFQIGRsbHdyYXAgIiRAIgp9CnRj LWdldEY3NyAoKSAKeyAKICAgIHRjLWdldFBST0cgRjc3IGdmb3J0cmFuICIkQCIKfQp0Yy1nZXRG QyAoKSAKeyAKICAgIHRjLWdldFBST0cgRkMgZ2ZvcnRyYW4gIiRAIgp9CnRjLWdldEdDSiAoKSAK eyAKICAgIHRjLWdldFBST0cgR0NKIGdjaiAiJEAiCn0KdGMtZ2V0TEQgKCkgCnsgCiAgICB0Yy1n ZXRQUk9HIExEIGxkICIkQCIKfQp0Yy1nZXROTSAoKSAKeyAKICAgIHRjLWdldFBST0cgTk0gbm0g IiRAIgp9CnRjLWdldE9CSkNPUFkgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIE9CSkNPUFkgb2JqY29w eSAiJEAiCn0KdGMtZ2V0UEtHX0NPTkZJRyAoKSAKeyAKICAgIHRjLWdldFBST0cgUEtHX0NPTkZJ RyBwa2ctY29uZmlnICIkQCIKfQp0Yy1nZXRQUk9HICgpIAp7IAogICAgX3RjLWdldFBST0cgQ0hP U1QgIiRAIgp9CnRjLWdldFJBTkxJQiAoKSAKeyAKICAgIHRjLWdldFBST0cgUkFOTElCIHJhbmxp YiAiJEAiCn0KdGMtZ2V0UkMgKCkgCnsgCiAgICB0Yy1nZXRQUk9HIFJDIHdpbmRyZXMgIiRAIgp9 CnRjLWdldFNUUklQICgpIAp7IAogICAgdGMtZ2V0UFJPRyBTVFJJUCBzdHJpcCAiJEAiCn0KdGMt aGFzLW9wZW5tcCAoKSAKeyAKICAgIGxvY2FsIGJhc2U9IiR7VH0vdGVzdC10Yy1vcGVubXAiOwog ICAgY2F0ID4gIiR7YmFzZX0uYyIgIDw8LUVPRgojaW5jbHVkZSA8b21wLmg+CmludCBtYWluKCkg ewppbnQgbnRocmVhZHMsIHRpZCwgcmV0ID0gMDsKI3ByYWdtYSBvbXAgcGFyYWxsZWwgcHJpdmF0 ZShudGhyZWFkcywgdGlkKQp7CnRpZCA9IG9tcF9nZXRfdGhyZWFkX251bSgpOwpudGhyZWFkcyA9 IG9tcF9nZXRfbnVtX3RocmVhZHMoKTsgcmV0ICs9IHRpZCArIG50aHJlYWRzOwp9CnJldHVybiBy ZXQ7Cn0KRU9GCgogICAgJCh0Yy1nZXRDQyAiJEAiKSAtZm9wZW5tcCAiJHtiYXNlfS5jIiAtbyAi JHtiYXNlfSIgJj4vZGV2L251bGw7CiAgICBsb2NhbCByZXQ9JD87CiAgICBybSAtZiAiJHtiYXNl fSIqOwogICAgcmV0dXJuICR7cmV0fQp9CnRjLWhhcy10bHMgKCkgCnsgCiAgICBsb2NhbCBiYXNl PSIke1R9L3Rlc3QtdGMtdGxzIjsKICAgIGNhdCA+ICIke2Jhc2V9LmMiICA8PC1FT0YKaW50IGZv byhpbnQgKmkpIHsKc3RhdGljIF9fdGhyZWFkIGludCBqID0gMDsKcmV0dXJuICppID8gaiA6ICpp Owp9CkVPRgoKICAgIGxvY2FsIGZsYWdzOwogICAgY2FzZSAkMSBpbiAKICAgICAgICAtcykKICAg ICAgICAgICAgZmxhZ3M9Ii1TIgogICAgICAgIDs7CiAgICAgICAgLWMpCiAgICAgICAgICAgIGZs YWdzPSItYyIKICAgICAgICA7OwogICAgICAgIC1sKQoKICAgICAgICA7OwogICAgICAgIC0qKQog ICAgICAgICAgICBkaWUgIlVzYWdlOiB0Yy1oYXMtdGxzIFstY3wtbF0gW3Rvb2xjaGFpbiBwcmVm aXhdIgogICAgICAgIDs7CiAgICBlc2FjOwogICAgOiAke2ZsYWdzOj0tZlBJQyAtc2hhcmVkIC1X bCwteixkZWZzfTsKICAgIFtbICQxID09IC0qIF1dICYmIHNoaWZ0OwogICAgJCh0Yy1nZXRDQyAi JEAiKSAke2ZsYWdzfSAiJHtiYXNlfS5jIiAtbyAiJHtiYXNlfSIgJj4vZGV2L251bGw7CiAgICBs b2NhbCByZXQ9JD87CiAgICBybSAtZiAiJHtiYXNlfSIqOwogICAgcmV0dXJuICR7cmV0fQp9CnRj LWlzLWNyb3NzLWNvbXBpbGVyICgpIAp7IAogICAgW1sgJHtDQlVJTEQ6LSR7Q0hPU1R9fSAhPSAk e0NIT1NUfSBdXQp9CnRjLWlzLXNvZnRmbG9hdCAoKSAKeyAKICAgIGxvY2FsIENUQVJHRVQ9JHtD VEFSR0VUOi0ke0NIT1NUfX07CiAgICBjYXNlICR7Q1RBUkdFVH0gaW4gCiAgICAgICAgYmZpbiog fCBoODMwMCopCiAgICAgICAgICAgIGVjaG8gIm9ubHkiCiAgICAgICAgOzsKICAgICAgICAqKQog ICAgICAgICAgICBpZiBbWyAke0NUQVJHRVQvL18vLX0gPT0gKi1zb2Z0ZmxvYXQtKiBdXTsgdGhl bgogICAgICAgICAgICAgICAgZWNobyAieWVzIjsKICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgaWYgW1sgJHtDVEFSR0VULy9fLy19ID09ICotc29mdGZwLSogXV07IHRoZW4KICAgICAg ICAgICAgICAgICAgICBlY2hvICJzb2Z0ZnAiOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAg ICAgICAgICAgICAgIGVjaG8gIm5vIjsKICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICBm aQogICAgICAgIDs7CiAgICBlc2FjCn0KdGMtaXMtc3RhdGljLW9ubHkgKCkgCnsgCiAgICBsb2Nh bCBob3N0PSR7Q1RBUkdFVDotJHtDSE9TVH19OwogICAgW1sgJHtob3N0fSA9PSAqLW1pbnQqIF1d Cn0KdGMtbmluamFfbWFnaWNfdG9fYXJjaCAoKSAKeyAKICAgIGZ1bmN0aW9uIG5pbmogKCkgCiAg ICB7IAogICAgICAgIFtbICR7dHlwZX0gPT0gImtlcm4iIF1dICYmIGVjaG8gJDEgfHwgZWNobyAk MgogICAgfTsKICAgIGxvY2FsIHR5cGU9JDE7CiAgICBsb2NhbCBob3N0PSQyOwogICAgW1sgLXog JHtob3N0fSBdXSAmJiBob3N0PSR7Q1RBUkdFVDotJHtDSE9TVH19OwogICAgbG9jYWwgS1Y9JHtL VjotJHtLVl9GVUxMfX07CiAgICBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAteiAke0tW fSBdXSAmJiBld2FybiAiUUE6IEtlcm5lbCB2ZXJzaW9uIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVk LCBwbGVhc2UgaW5oZXJpdCBrZXJuZWwtMiBvciBsaW51eC1pbmZvIjsKICAgIGNhc2UgJHtob3N0 fSBpbiAKICAgICAgICBhYXJjaDY0KikKICAgICAgICAgICAgZWNobyBhcm02NAogICAgICAgIDs7 CiAgICAgICAgYWxwaGEqKQogICAgICAgICAgICBlY2hvIGFscGhhCiAgICAgICAgOzsKICAgICAg ICBhcm0qKQogICAgICAgICAgICBlY2hvIGFybQogICAgICAgIDs7CiAgICAgICAgYXZyKikKICAg ICAgICAgICAgbmluaiBhdnIzMiBhdnIKICAgICAgICA7OwogICAgICAgIGJmaW4qKQogICAgICAg ICAgICBuaW5qIGJsYWNrZmluIGJmaW4KICAgICAgICA7OwogICAgICAgIGM2eCkKICAgICAgICAg ICAgZWNobyBjNngKICAgICAgICA7OwogICAgICAgIGNyaXMqKQogICAgICAgICAgICBlY2hvIGNy aXMKICAgICAgICA7OwogICAgICAgIGZydikKICAgICAgICAgICAgZWNobyBmcnYKICAgICAgICA7 OwogICAgICAgIGhleGFnb24pCiAgICAgICAgICAgIGVjaG8gaGV4YWdvbgogICAgICAgIDs7CiAg ICAgICAgaHBwYSopCiAgICAgICAgICAgIG5pbmogcGFyaXNjIGhwcGEKICAgICAgICA7OwogICAg ICAgIGk/ODYqKQogICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAk KEtWX3RvX2ludCAke0tWfSkgLWx0ICQoS1ZfdG9faW50IDIuNi4yNCkgfHwgJHtob3N0fSA9PSAq ZnJlZWJzZCogXV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8gaTM4NjsKICAgICAgICAgICAg ZWxzZQogICAgICAgICAgICAgICAgZWNobyB4ODY7CiAgICAgICAgICAgIGZpCiAgICAgICAgOzsK ICAgICAgICBpYTY0KikKICAgICAgICAgICAgZWNobyBpYTY0CiAgICAgICAgOzsKICAgICAgICBt NjgqKQogICAgICAgICAgICBlY2hvIG02OGsKICAgICAgICA7OwogICAgICAgIG1ldGFnKQogICAg ICAgICAgICBlY2hvIG1ldGFnCiAgICAgICAgOzsKICAgICAgICBtaXBzKikKICAgICAgICAgICAg ZWNobyBtaXBzCiAgICAgICAgOzsKICAgICAgICBuaW9zMiopCiAgICAgICAgICAgIGVjaG8gbmlv czIKICAgICAgICA7OwogICAgICAgIG5pb3MqKQogICAgICAgICAgICBlY2hvIG5pb3MKICAgICAg ICA7OwogICAgICAgIG9yMzIpCiAgICAgICAgICAgIGVjaG8gb3BlbnJpc2MKICAgICAgICA7Owog ICAgICAgIHBvd2VycGMqKQogICAgICAgICAgICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAm JiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdlICQoS1ZfdG9faW50IDIuNi4xNikgXV07IHRoZW4K ICAgICAgICAgICAgICAgIGVjaG8gcG93ZXJwYzsKICAgICAgICAgICAgZWxzZQogICAgICAgICAg ICAgICAgaWYgW1sgJHt0eXBlfSA9PSAia2VybiIgXV0gJiYgW1sgJChLVl90b19pbnQgJHtLVn0p IC1lcSAkKEtWX3RvX2ludCAyLjYuMTUpIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgaWYg W1sgJHtob3N0fSA9PSBwb3dlcnBjNjQqIF1dIHx8IFtbICR7UFJPRklMRV9BUkNIfSA9PSAicHBj NjQiIF1dOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcG93ZXJwYzsKICAgICAg ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gcHBjOwogICAg ICAgICAgICAgICAgICAgIGZpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg ICAgIGlmIFtbICR7aG9zdH0gPT0gcG93ZXJwYzY0KiBdXTsgdGhlbgogICAgICAgICAgICAgICAg ICAgICAgICBlY2hvIHBwYzY0OwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg ICAgICAgICAgICAgaWYgW1sgJHtQUk9GSUxFX0FSQ0h9ID09ICJwcGM2NCIgXV07IHRoZW4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG5pbmogcHBjNjQgcHBjOwogICAgICAgICAgICAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvIHBwYzsKICAgICAg ICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAgICAgICAgICAgZmk7CiAgICAgICAgICAg ICAgICBmaTsKICAgICAgICAgICAgZmkKICAgICAgICA7OwogICAgICAgIHJpc2N2KikKICAgICAg ICAgICAgZWNobyByaXNjdgogICAgICAgIDs7CiAgICAgICAgczM5MCopCiAgICAgICAgICAgIGVj aG8gczM5MAogICAgICAgIDs7CiAgICAgICAgc2NvcmUpCiAgICAgICAgICAgIGVjaG8gc2NvcmUK ICAgICAgICA7OwogICAgICAgIHNoNjQqKQogICAgICAgICAgICBuaW5qIHNoNjQgc2gKICAgICAg ICA7OwogICAgICAgIHNoKikKICAgICAgICAgICAgZWNobyBzaAogICAgICAgIDs7CiAgICAgICAg c3BhcmM2NCopCiAgICAgICAgICAgIG5pbmogc3BhcmM2NCBzcGFyYwogICAgICAgIDs7CiAgICAg ICAgc3BhcmMqKQogICAgICAgICAgICBbWyAke1BST0ZJTEVfQVJDSH0gPT0gInNwYXJjNjQiIF1d ICYmIG5pbmogc3BhcmM2NCBzcGFyYyB8fCBlY2hvIHNwYXJjCiAgICAgICAgOzsKICAgICAgICB0 aWxlKikKICAgICAgICAgICAgZWNobyB0aWxlCiAgICAgICAgOzsKICAgICAgICB2YXgqKQogICAg ICAgICAgICBlY2hvIHZheAogICAgICAgIDs7CiAgICAgICAgeDg2XzY0KmZyZWVic2QqKQogICAg ICAgICAgICBlY2hvIGFtZDY0CiAgICAgICAgOzsKICAgICAgICB4ODZfNjQqKQogICAgICAgICAg ICBpZiBbWyAke3R5cGV9ID09ICJrZXJuIiBdXSAmJiBbWyAkKEtWX3RvX2ludCAke0tWfSkgLWdl ICQoS1ZfdG9faW50IDIuNi4yNCkgXV07IHRoZW4KICAgICAgICAgICAgICAgIGVjaG8geDg2Owog ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBuaW5qIHg4Nl82NCBhbWQ2NDsKICAgICAg ICAgICAgZmkKICAgICAgICA7OwogICAgICAgIHh0ZW5zYSopCiAgICAgICAgICAgIGVjaG8geHRl bnNhCiAgICAgICAgOzsKICAgICAgICAqKQogICAgICAgICAgICBlY2hvIHVua25vd24KICAgICAg ICA7OwogICAgZXNhYwp9CnVzZV9pZl9pdXNlICgpIAp7IAogICAgaW5faXVzZSAkMSB8fCByZXR1 cm4gMTsKICAgIHVzZSAkMQp9CnZhbGlkYXRlX2Rlc2t0b3BfZW50cmllcyAoKSAKeyAKICAgIF9l dXRpbHNfZXByZWZpeF9pbml0OwogICAgaWYgW1sgLXggIiR7RVBSRUZJWH0iL3Vzci9iaW4vZGVz a3RvcC1maWxlLXZhbGlkYXRlIF1dOyB0aGVuCiAgICAgICAgZWluZm8gIkNoZWNraW5nIGRlc2t0 b3AgZW50cnkgdmFsaWRpdHkiOwogICAgICAgIGxvY2FsIGRpcmVjdG9yaWVzPSIiOwogICAgICAg IGZvciBkIGluIC91c3Ivc2hhcmUvYXBwbGljYXRpb25zICRAOwogICAgICAgIGRvCiAgICAgICAg ICAgIFtbIC1kICR7RUR9JHtkfSBdXSAmJiBkaXJlY3Rvcmllcz0iJHtkaXJlY3Rvcmllc30gJHtF RH0ke2R9IjsKICAgICAgICBkb25lOwogICAgICAgIGlmIFtbIC1uICR7ZGlyZWN0b3JpZXN9IF1d OyB0aGVuCiAgICAgICAgICAgIGZvciBGSUxFIGluICQoZmluZCAke2RpcmVjdG9yaWVzfSAtbmFt ZSAiKlwuZGVza3RvcCIgCQkJCQkJCS1ub3QgLXBhdGggJyouaGlkZGVuKicgfCBzb3J0IC11IDI+ L2Rldi9udWxsKTsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGxvY2FsIHRlbXA9JChk ZXNrdG9wLWZpbGUtdmFsaWRhdGUgJHtGSUxFfSB8IGdyZXAgLXYgIndhcm5pbmc6IiB8IAkJCQkJ CQkJc2VkIC1lICJzfGVycm9yOiB8fCIgLWUgInN8JHtGSUxFfTp8LS18ZyIgKTsKICAgICAgICAg ICAgICAgIFtbIC1uICR0ZW1wIF1dICYmIGVsb2cgJHt0ZW1wLy0tLyR7RklMRS8ke0VEfS99On07 CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgZmk7CiAgICAgICAgZWNobyAiIjsKICAgIGVsc2UK ICAgICAgICBlaW5mbyAiUGFzc2luZyBkZXNrdG9wIGVudHJ5IHZhbGlkaXR5IGNoZWNrLiBJbnN0 YWxsIGRldi11dGlsL2Rlc2t0b3AtZmlsZS11dGlscywgaWYgeW91IHdhbnQgdG8gaGVscCB0byBp bXByb3ZlIEdlbnRvby4iOwogICAgZmkKfQp2ZXJzaW9uX2NvbXBhcmUgKCkgCnsgCiAgICBlc2hv cHRzX3B1c2ggLXMgZXh0Z2xvYjsKICAgIGxvY2FsIHZlcl9hPSR7MX0gdmVyX2I9JHsyfSBwYXJ0 c19hIHBhcnRzX2I7CiAgICBsb2NhbCBjdXJfdG9rX2EgY3VyX3Rva19iIG51bV9wYXJ0X2EgbnVt X3BhcnRfYjsKICAgIGxvY2FsIC1pIGN1cl9pZHhfYT0wIGN1cl9pZHhfYj0wIHByZXZfaWR4X2Eg cHJldl9pZHhfYjsKICAgIHBhcnRzX2E9KCQoZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7 dmVyX2F9IiApKTsKICAgIHBhcnRzX2I9KCQoZ2V0X2FsbF92ZXJzaW9uX2NvbXBvbmVudHMgIiR7 dmVyX2J9IiApKTsKICAgIGxvY2FsIC1pIGluZl9sb29wPTA7CiAgICB3aGlsZSB0cnVlOyBkbwog ICAgICAgIGluZl9sb29wKz0xOwogICAgICAgICgoaW5mX2xvb3AgPiAyMCkpICYmIGRpZSAidmVy c2lvbmF0b3IgY29tcGFyZSBidWcgW251bWJlcnMsICR7dmVyX2F9LCAke3Zlcl9ifV0iOwogICAg ICAgIHByZXZfaWR4X2E9Y3VyX2lkeF9hOwogICAgICAgIHByZXZfaWR4X2I9Y3VyX2lkeF9iOwog ICAgICAgIGN1cl90b2tfYT0ke3BhcnRzX2FbY3VyX2lkeF9hXX07CiAgICAgICAgY3VyX3Rva19i PSR7cGFydHNfYltjdXJfaWR4X2JdfTsKICAgICAgICBpZiBbWyAtbiAke2N1cl90b2tfYX0gXV0g JiYgW1sgLXogJHtjdXJfdG9rX2EvL1tbOmRpZ2l0Ol1dfSBdXTsgdGhlbgogICAgICAgICAgICBj dXJfaWR4X2ErPTE7CiAgICAgICAgICAgIFtbICR7cGFydHNfYVtjdXJfaWR4X2FdfSA9PSAuIF1d ICYmIGN1cl9pZHhfYSs9MTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGN1cl90b2tfYT07CiAg ICAgICAgZmk7CiAgICAgICAgaWYgW1sgLW4gJHtjdXJfdG9rX2J9IF1dICYmIFtbIC16ICR7Y3Vy X3Rva19iLy9bWzpkaWdpdDpdXX0gXV07IHRoZW4KICAgICAgICAgICAgY3VyX2lkeF9iKz0xOwog ICAgICAgICAgICBbWyAke3BhcnRzX2JbY3VyX2lkeF9iXX0gPT0gLiBdXSAmJiBjdXJfaWR4X2Ir PTE7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9rX2I9OwogICAgICAgIGZpOwogICAg ICAgIFtbIC16ICR7Y3VyX3Rva19hfSAmJiAteiAke2N1cl90b2tfYn0gXV0gJiYgYnJlYWs7CiAg ICAgICAgW1sgLXogJHtjdXJfdG9rX2F9IF1dICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwog ICAgICAgIFtbIC16ICR7Y3VyX3Rva19ifSBdXSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMzsK ICAgICAgICBpZiAoKCBwcmV2X2lkeF9hICE9IDAgJiYgcHJldl9pZHhfYiAhPSAwICkpICYmIFtb ICR7Y3VyX3Rva19hfSA9PSAwKiB8fCAke2N1cl90b2tfYn0gPT0gMCogXV07IHRoZW4KICAgICAg ICAgICAgY3VyX3Rva19hPSR7Y3VyX3Rva19hJSUrKDApfTsKICAgICAgICAgICAgY3VyX3Rva19i PSR7Y3VyX3Rva19iJSUrKDApfTsKICAgICAgICAgICAgW1sgJHtjdXJfdG9rX2F9IDwgJHtjdXJf dG9rX2J9IF1dICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwogICAgICAgICAgICBbWyAke2N1 cl90b2tfYX0gPiAke2N1cl90b2tfYn0gXV0gJiYgZXNob3B0c19wb3AgJiYgcmV0dXJuIDM7CiAg ICAgICAgZWxzZQogICAgICAgICAgICBjdXJfdG9rX2E9JHtjdXJfdG9rX2EjIysoMCl9OwogICAg ICAgICAgICBjdXJfdG9rX2I9JHtjdXJfdG9rX2IjIysoMCl9OwogICAgICAgICAgICA6ICR7Y3Vy X3Rva19hOj0wfTsKICAgICAgICAgICAgOiAke2N1cl90b2tfYjo9MH07CiAgICAgICAgICAgICgo Y3VyX3Rva19hIDwgY3VyX3Rva19iKSkgJiYgZXNob3B0c19wb3AgJiYgcmV0dXJuIDE7CiAgICAg ICAgICAgICgoY3VyX3Rva19hID4gY3VyX3Rva19iKSkgJiYgZXNob3B0c19wb3AgJiYgcmV0dXJu IDM7CiAgICAgICAgZmk7CiAgICBkb25lOwogICAgbG9jYWwgbGV0dGVyX2E9OwogICAgbGV0dGVy X2E9JHtwYXJ0c19hW2N1cl9pZHhfYV19OwogICAgaWYgW1sgJHsjbGV0dGVyX2F9IC1lcSAxICYm IC16ICR7bGV0dGVyX2EvW2Etel19IF1dOyB0aGVuCiAgICAgICAgY3VyX2lkeF9hKz0xOwogICAg ZWxzZQogICAgICAgIGxldHRlcl9hPUA7CiAgICBmaTsKICAgIGxvY2FsIGxldHRlcl9iPTsKICAg IGxldHRlcl9iPSR7cGFydHNfYltjdXJfaWR4X2JdfTsKICAgIGlmIFtbICR7I2xldHRlcl9ifSAt ZXEgMSAmJiAteiAke2xldHRlcl9iL1thLXpdfSBdXTsgdGhlbgogICAgICAgIGN1cl9pZHhfYis9 MTsKICAgIGVsc2UKICAgICAgICBsZXR0ZXJfYj1AOwogICAgZmk7CiAgICBbWyAke2xldHRlcl9h fSA8ICR7bGV0dGVyX2J9IF1dICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwogICAgW1sgJHts ZXR0ZXJfYX0gPiAke2xldHRlcl9ifSBdXSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMzsKICAg IGluZl9sb29wPTA7CiAgICB3aGlsZSB0cnVlOyBkbwogICAgICAgIGluZl9sb29wKz0xOwogICAg ICAgICgoaW5mX2xvb3AgPiAyMCkpICYmIGRpZSAidmVyc2lvbmF0b3IgY29tcGFyZSBidWcgW251 bWJlcnMsICR7dmVyX2F9LCAke3Zlcl9ifV0iOwogICAgICAgIFtbICR7cGFydHNfYVtjdXJfaWR4 X2FdfSA9PSBfIF1dICYmICgoY3VyX2lkeF9hKyspKTsKICAgICAgICBbWyAke3BhcnRzX2JbY3Vy X2lkeF9iXX0gPT0gXyBdXSAmJiAoKGN1cl9pZHhfYisrKSk7CiAgICAgICAgY3VyX3Rva19hPSR7 cGFydHNfYVtjdXJfaWR4X2FdfTsKICAgICAgICBjdXJfdG9rX2I9JHtwYXJ0c19iW2N1cl9pZHhf Yl19OwogICAgICAgIG51bV9wYXJ0X2E9MDsKICAgICAgICBudW1fcGFydF9iPTA7CiAgICAgICAg aWYgaGFzICR7Y3VyX3Rva19hJSUrKFswLTldKX0gImFscGhhIiAiYmV0YSIgInByZSIgInJjIiAi cCI7IHRoZW4KICAgICAgICAgICAgY3VyX2lkeF9hKz0xOwogICAgICAgICAgICBudW1fcGFydF9h PSR7Y3VyX3Rva19hIyMrKFthLXpdKX07CiAgICAgICAgICAgIG51bV9wYXJ0X2E9JHtudW1fcGFy dF9hIyMrKDApfTsKICAgICAgICAgICAgOiAke251bV9wYXJ0X2E6PTB9OwogICAgICAgICAgICBj dXJfdG9rX2E9JHtjdXJfdG9rX2ElJSsoWzAtOV0pfTsKICAgICAgICBlbHNlCiAgICAgICAgICAg IGN1cl90b2tfYT07CiAgICAgICAgZmk7CiAgICAgICAgaWYgaGFzICR7Y3VyX3Rva19iJSUrKFsw LTldKX0gYWxwaGEgYmV0YSBwcmUgcmMgcDsgdGhlbgogICAgICAgICAgICBjdXJfaWR4X2IrPTE7 CiAgICAgICAgICAgIG51bV9wYXJ0X2I9JHtjdXJfdG9rX2IjIysoW2Etel0pfTsKICAgICAgICAg ICAgbnVtX3BhcnRfYj0ke251bV9wYXJ0X2IjIysoMCl9OwogICAgICAgICAgICA6ICR7bnVtX3Bh cnRfYjo9MH07CiAgICAgICAgICAgIGN1cl90b2tfYj0ke2N1cl90b2tfYiUlKyhbMC05XSl9Owog ICAgICAgIGVsc2UKICAgICAgICAgICAgY3VyX3Rva19iPTsKICAgICAgICBmaTsKICAgICAgICBp ZiBbWyAke2N1cl90b2tfYX0gIT0gJHtjdXJfdG9rX2J9IF1dOyB0aGVuCiAgICAgICAgICAgIGxv Y2FsIHN1ZmZpeDsKICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBhbHBoYSBiZXRhIHByZSByYyAi IiBwOwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgW1sgJHtjdXJfdG9rX2F9ID09ICR7 c3VmZml4fSBdXSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1cm4gMTsKICAgICAgICAgICAgICAgIFtb ICR7Y3VyX3Rva19ifSA9PSAke3N1ZmZpeH0gXV0gJiYgZXNob3B0c19wb3AgJiYgcmV0dXJuIDM7 CiAgICAgICAgICAgIGRvbmU7CiAgICAgICAgZWxzZQogICAgICAgICAgICBpZiBbWyAteiAke2N1 cl90b2tfYX0gJiYgLXogJHtjdXJfdG9rX2J9IF1dOyB0aGVuCiAgICAgICAgICAgICAgICBicmVh azsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgKChudW1fcGFydF9hIDwgbnVtX3Bh cnRfYikpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAxOwogICAgICAgICAgICAgICAgKChudW1f cGFydF9hID4gbnVtX3BhcnRfYikpICYmIGVzaG9wdHNfcG9wICYmIHJldHVybiAzOwogICAgICAg ICAgICBmaTsKICAgICAgICBmaTsKICAgIGRvbmU7CiAgICBbWyAke3BhcnRzX2FbY3VyX2lkeF9h XX0gPT0gLSBdXSAmJiAoKGN1cl9pZHhfYSsrKSk7CiAgICBbWyAke3BhcnRzX2JbY3VyX2lkeF9i XX0gPT0gLSBdXSAmJiAoKGN1cl9pZHhfYisrKSk7CiAgICBpZiBbWyAtbiAke3BhcnRzX2FbY3Vy X2lkeF9hXS9yKyhbMC05XSl9IHx8IC1uICR7cGFydHNfYltjdXJfaWR4X2JdL3IrKFswLTldKX0g XV07IHRoZW4KICAgICAgICBkaWUgInZlcnNpb25hdG9yIGNvbXBhcmUgYnVnIFtyZXZpc2lvbnMs ICR7dmVyX2F9LCAke3Zlcl9ifV0iOwogICAgZmk7CiAgICBudW1fcGFydF9hPSR7cGFydHNfYVtj dXJfaWR4X2FdI3J9OwogICAgbnVtX3BhcnRfYT0ke251bV9wYXJ0X2EjIysoMCl9OwogICAgOiAk e251bV9wYXJ0X2E6PTB9OwogICAgbnVtX3BhcnRfYj0ke3BhcnRzX2JbY3VyX2lkeF9iXSNyfTsK ICAgIG51bV9wYXJ0X2I9JHtudW1fcGFydF9iIyMrKDApfTsKICAgIDogJHtudW1fcGFydF9iOj0w fTsKICAgICgobnVtX3BhcnRfYSA8IG51bV9wYXJ0X2IpKSAmJiBlc2hvcHRzX3BvcCAmJiByZXR1 cm4gMTsKICAgICgobnVtX3BhcnRfYSA+IG51bV9wYXJ0X2IpKSAmJiBlc2hvcHRzX3BvcCAmJiBy ZXR1cm4gMzsKICAgIGVzaG9wdHNfcG9wOwogICAgcmV0dXJuIDIKfQp2ZXJzaW9uX2Zvcm1hdF9z dHJpbmcgKCkgCnsgCiAgICBsb2NhbCBmc3RyPSQxOwogICAgc2hpZnQ7CiAgICBzZXQgLS0gJChn ZXRfdmVyc2lvbl9jb21wb25lbnRzICIkQCIpOwogICAgZXZhbCBlY2hvICIke2ZzdHJ9Igp9CnZl cnNpb25faXNfYXRfbGVhc3QgKCkgCnsgCiAgICBsb2NhbCB3YW50X3M9IiQxIiBoYXZlX3M9IiR7 MjotJHtQVlJ9fSIgcjsKICAgIHZlcnNpb25fY29tcGFyZSAiJHt3YW50X3N9IiAiJHtoYXZlX3N9 IjsKICAgIHI9JD87CiAgICBjYXNlICRyIGluIAogICAgICAgIDEgfCAyKQogICAgICAgICAgICBy ZXR1cm4gMAogICAgICAgIDs7CiAgICAgICAgMykKICAgICAgICAgICAgcmV0dXJuIDEKICAgICAg ICA7OwogICAgICAgICopCiAgICAgICAgICAgIGRpZSAidmVyc2lvbmF0b3IgY29tcGFyZSBidWcg W2F0bGVhc3QsICR7d2FudF9zfSwgJHtoYXZlX3N9LCAke3J9XSIKICAgICAgICA7OwogICAgZXNh Ywp9CnZlcnNpb25fc29ydCAoKSAKeyAKICAgIGVzaG9wdHNfcHVzaCAtcyBleHRnbG9iOwogICAg bG9jYWwgaXRlbXM9OwogICAgbG9jYWwgLWkgbGVmdD0wOwogICAgaXRlbXM9KCIkQCIpOwogICAg d2hpbGUgKChsZWZ0IDwgJHsjaXRlbXNbQF19KSk7IGRvCiAgICAgICAgbG9jYWwgLWkgbG93ZXN0 X2lkeD1sZWZ0OwogICAgICAgIGxvY2FsIC1pIGlkeD1sb3dlc3RfaWR4KzE7CiAgICAgICAgd2hp bGUgKChpZHggPCAkeyNpdGVtc1tAXX0pKTsgZG8KICAgICAgICAgICAgdmVyc2lvbl9jb21wYXJl ICIke2l0ZW1zW2xvd2VzdF9pZHhdfSIgIiR7aXRlbXNbaWR4XX0iOwogICAgICAgICAgICBbWyAk PyAtZXEgMyBdXSAmJiBsb3dlc3RfaWR4PWlkeDsKICAgICAgICAgICAgaWR4Kz0xOwogICAgICAg IGRvbmU7CiAgICAgICAgbG9jYWwgdG1wPSR7aXRlbXNbbG93ZXN0X2lkeF19OwogICAgICAgIGl0 ZW1zW2xvd2VzdF9pZHhdPSR7aXRlbXNbbGVmdF19OwogICAgICAgIGl0ZW1zW2xlZnRdPSR7dG1w fTsKICAgICAgICBsZWZ0Kz0xOwogICAgZG9uZTsKICAgIGVjaG8gJHtpdGVtc1tAXX07CiAgICBl c2hvcHRzX3BvcAp9Cg== --047d7b87451cb65053050862591a Content-Type: text/plain; charset=US-ASCII; name="pqv.txt" Content-Disposition: attachment; filename="pqv.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i2rv3j3w3 W2VidWlsZCAgTiAgICBdIHNjaS1tYXRoZW1hdGljcy9zaW5ndWxhci0zLjEuNiAgVVNFPSJib29z dCBlbWFjcyBmbGludCBweXRob24gcmVhZGxpbmUgLWRvYyAtZXhhbXBsZXMgey10ZXN0fSIgUFlU SE9OX1RBUkdFVFM9InB5dGhvbjJfNyIgCgogKiBJTVBPUlRBTlQ6IDEgbmV3cyBpdGVtcyBuZWVk IHJlYWRpbmcgZm9yIHJlcG9zaXRvcnkgJ2dlbnRvbycuCiAqIFVzZSBlc2VsZWN0IG5ld3MgdG8g cmVhZCBuZXdzIGl0ZW1zLgoKW2VidWlsZCAgTiAgICBdIHgxMS1kcml2ZXJzL2F0aS1kcml2ZXJz LTE0LjRfcDEgIFVTRT0ibW9kdWxlcyBtdWx0aWxpYiBwYXhfa2VybmVsIC1kZWJ1ZyAtcXQ0IC1z dGF0aWMtbGlicyIgCgogKiBJTVBPUlRBTlQ6IDEgbmV3cyBpdGVtcyBuZWVkIHJlYWRpbmcgZm9y IHJlcG9zaXRvcnkgJ2dlbnRvbycuCiAqIFVzZSBlc2VsZWN0IG5ld3MgdG8gcmVhZCBuZXdzIGl0 ZW1zLgoKW2VidWlsZCAgIFIgICBdIHNjaS1tYXRoZW1hdGljcy9zYWdlLWRvYy02LjMgIFVTRT0i aHRtbCoiIFBZVEhPTl9UQVJHRVRTPSJweXRob24yXzciIAoKICogSU1QT1JUQU5UOiAxIG5ld3Mg aXRlbXMgbmVlZCByZWFkaW5nIGZvciByZXBvc2l0b3J5ICdnZW50b28nLgogKiBVc2UgZXNlbGVj dCBuZXdzIHRvIHJlYWQgbmV3cyBpdGVtcy4KCg== --047d7b87451cb65053050862591a--