Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg6U2-0002we-6D for pgadmin-hackers@arkaria.postgresql.org; Mon, 10 May 2021 14:02:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lg6U1-0002s6-5k for pgadmin-hackers@arkaria.postgresql.org; Mon, 10 May 2021 14:02:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg6U0-0002pm-L3 for pgadmin-hackers@lists.postgresql.org; Mon, 10 May 2021 14:02:04 +0000 Received: from mail-yb1-xb32.google.com ([2607:f8b0:4864:20::b32]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1lg6Tw-0001GQ-Gt for pgadmin-hackers@postgresql.org; Mon, 10 May 2021 14:02:04 +0000 Received: by mail-yb1-xb32.google.com with SMTP id v188so21784719ybe.1 for ; Mon, 10 May 2021 07:01:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=5fI/pfF0RhFfD5xmKHCELFuIl3BX8scqFZH/9oUXemM=; b=bt4eYnSjikzXWSd0O9UeDST7xNE14sep9NBeA2DqhWbDBrZ15WRC2HHm1mpaN5AW23 oNc7cs/BSfXADxcd0hGVP/Ngaf2PMjKQfoJIXjvEk6OgSuL6Igpf/mJeIobymmfspzg6 UUkf0k1OjIKOK86WfUGWX2r7fydxiNHzMJzazAaetIOVxRfEXnOcfiunPaQ1PkbT8T6o aEKF3tOrPaOmRgrUU5Sl9xC1MNdBHOss8NnImSnjDgxnV8eThHRb4KKsRaKRu3jdjEN/ 2lgVKcggzyAxfDPnosAruE8xToZTKBCRI2v3LbgvP/qmQXItiPB0fhcq3I694gzjLmG6 aULw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=5fI/pfF0RhFfD5xmKHCELFuIl3BX8scqFZH/9oUXemM=; b=bHXUYsPU3uNS1AtPXx3bQZc5yqwRzJ8BV0nwd/4gTSompyEdkHAzc6Bm9Wdx8qcxDD wR4Gm9PUw8NwsrRa3Kmxa9HeJKTcvsmEIEsRpW5ztp7RlHFda+T7KjQjPo35WA++Eeo6 5yBcl/kR1jjynGsjJ8NEJSW4O0bSUhrSPisFTfTbQxgwB9OOqDOyeKXMPn/W7/8H9pt2 sgvR0m1z2OUjsJTyWmjnojip7YKoPsneVo8MLuJL7nLNLvKDAd8WwME+Pheq33w5Kz0M yiYT8HGIc8tSKwGlEhMV5+m9feAZ6GJwdcR3M2LMmHB/8lkYWNvWahDmMm40cjL8/e0B MQQw== X-Gm-Message-State: AOAM533YiGmxK7j1rSOW13dK5jUeJQWek1khjlDapITdi1jdw7L0oISz LoAKVcCAW3xxBcEDBEXZmMBieVI9lA48mgy4byKQGXXZZPZJByseQiR6FPZ2g4/MoonDH2EtGtO sfB1QegFQbvLrfPgqiUw6NpdfKUlIOGX5NqACDXvjZKKDeCO5RoM7iFTwlUIkJjtSVTvFJ+ZjDP ep+L1vnUHVOww5CPfzzF4OM4hVXvQR53r70hJu1PjcqiW95L+1mUj9hUWttzdBW5Y= X-Google-Smtp-Source: ABdhPJzosFQ+EzeSY7qJCQLSVdFOaGAf661URt33zfPTXWrfof/1MxXdDHjxV6n3BWU/6N2WQe+5bMkzCswdjFo/Z3E= X-Received: by 2002:a25:5048:: with SMTP id e69mr1500952ybb.479.1620655318511; Mon, 10 May 2021 07:01:58 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Nikhil Mohite Date: Mon, 10 May 2021 19:31:47 +0530 Message-ID: Subject: Re: [pgAdmin][RM-2341]: Add menu option for starting PSQL To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000906a8605c1fa3889" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000906a8605c1fa3889 Content-Type: multipart/alternative; boundary="000000000000906a8205c1fa3887" --000000000000906a8205c1fa3887 Content-Type: text/plain; charset="UTF-8" Hi Dave/ Team, PFA updated patch, sorry for the inconvenience, while cleanup I removed the unwanted libraries but forgot to remove the code related to them. On Mon, May 10, 2021 at 7:10 PM Dave Page wrote: > Hi > > On Mon, May 10, 2021 at 1:45 PM Nikhil Mohite < > nikhil.mohite@enterprisedb.com> wrote: > >> Hi Hackers, >> >> Please find the attached patch for RM-2341 >> : Add Menu option for >> starting PSQL. >> 1. Added new Option PSQL Tool in Tools menu. >> 2. Added the same option for Server and Database nodes from the tree view. >> > > Unfortunately there's a trailing comma in package.json that makes it > invalid. If I fix that, then I get the error below, so I'm guessing the > intention was to actually include another package there? > > ERROR in ./pgadmin/tools/psql/static/js/psql_module.js 23:50-82 > Module not found: Error: Can't resolve 'local-echo-controller' in > '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js' > resolve 'local-echo-controller' in > '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js' > Parsed request is a module > using description file: /Users/dpage/git/pgadmin4/web/package.json > (relative path: ./pgadmin/tools/psql/static/js) > aliased with mapping 'local-echo-controller': > '/Users/dpage/git/pgadmin4/web/node_modules/local-echo' to > '/Users/dpage/git/pgadmin4/web/node_modules/local-echo' > using description file: /Users/dpage/git/pgadmin4/web/package.json > (relative path: ./pgadmin/tools/psql/static/js) > Field 'browser' doesn't contain a valid alias configuration > root path /Users/dpage/git/pgadmin4/web > using description file: > /Users/dpage/git/pgadmin4/web/package.json (relative path: > ./Users/dpage/git/pgadmin4/web/node_modules/local-echo) > no extension > Field 'browser' doesn't contain a valid alias configuration > > /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo > doesn't exist > .js > Field 'browser' doesn't contain a valid alias configuration > > /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.js > doesn't exist > .jsx > Field 'browser' doesn't contain a valid alias configuration > > /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx > doesn't exist > as directory > > /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo > doesn't exist > using description file: /Users/dpage/git/pgadmin4/web/package.json > (relative path: ./node_modules/local-echo) > no extension > Field 'browser' doesn't contain a valid alias configuration > /Users/dpage/git/pgadmin4/web/node_modules/local-echo doesn't > exist > .js > Field 'browser' doesn't contain a valid alias configuration > /Users/dpage/git/pgadmin4/web/node_modules/local-echo.js > doesn't exist > .jsx > Field 'browser' doesn't contain a valid alias configuration > /Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx > doesn't exist > as directory > /Users/dpage/git/pgadmin4/web/node_modules/local-echo doesn't > exist > @ ./pgadmin/tools/psql/static/js/index.js 17:19-43 > > 2021-05-10 14:38:37: webpack 5.21.2 compiled with 1 error in 60041 ms > > -- > Dave Page > Blog: https://pgsnake.blogspot.com > Twitter: @pgsnake > > EDB: https://www.enterprisedb.com > Regards, Nikhil Mohite --000000000000906a8205c1fa3887 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Dave/ Team,

PFA updated p= atch, sorry for the inconvenience, while cleanup I removed the unwanted lib= raries but forgot to remove the code related to them.

On Mon, May 10, 2021= at 7:10 PM Dave Page <dpage@pgadmi= n.org> wrote:
Hi

On Mon, May 10, 2= 021 at 1:45 PM Nikhil Mohite <nikhil.mohite@enterprisedb.com> wrote:
=
Hi= Hackers,

Please find the attached patch for RM-2341:= =C2=A0Add Menu option for starting PSQL.
1. Added new Option PSQL= Tool in Tools menu.
2. Added the same option for Server and Data= base nodes from the tree view.

= Unfortunately=C2=A0there's a trailing comma in package.json that makes = it invalid. If I fix that, then I get the error below, so I'm guessing = the intention was to actually include another package there?

=
ERROR in ./pgadmin/tools/psql/static/js/psql_module.js 23:5= 0-82
Module not found: Error: Can't resolve 'local-echo-c= ontroller' in '/Users/dpage/git/pgadmin4/web/pgadmin/tools/psql/sta= tic/js'
resolve 'local-echo-controller' in '/User= s/dpage/git/pgadmin4/web/pgadmin/tools/psql/static/js'
=C2=A0= Parsed request is a module
=C2=A0 using description file: /Users= /dpage/git/pgadmin4/web/package.json (relative path: ./pgadmin/tools/psql/s= tatic/js)
=C2=A0 =C2=A0 aliased with mapping 'local-echo-cont= roller': '/Users/dpage/git/pgadmin4/web/node_modules/local-echo'= ; to '/Users/dpage/git/pgadmin4/web/node_modules/local-echo'
<= div>=C2=A0 =C2=A0 =C2=A0 using description file: /Users/dpage/git/pgadmin4/= web/package.json (relative path: ./pgadmin/tools/psql/static/js)
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'browser' doesn't contain a v= alid alias configuration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 root path /U= sers/dpage/git/pgadmin4/web
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 us= ing description file: /Users/dpage/git/pgadmin4/web/package.json (relative = path: ./Users/dpage/git/pgadmin4/web/node_modules/local-echo)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 no extension
=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'browser' doesn't con= tain a valid alias configuration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 /Users/dpage/git/pgadmin4/web/Users/dpage/git/pgadmin4/we= b/node_modules/local-echo doesn't exist
=C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 .js
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 Field 'browser' doesn't contain a valid alias config= uration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /Users/d= page/git/pgadmin4/web/Users/dpage/git/pgadmin4/web/node_modules/local-echo.= js doesn't exist
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .j= sx
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'br= owser' doesn't contain a valid alias configuration
=C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /Users/dpage/git/pgadmin4/web/Us= ers/dpage/git/pgadmin4/web/node_modules/local-echo.jsx doesn't exist
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 as directory
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /Users/dpage/git/pgadmin4/= web/Users/dpage/git/pgadmin4/web/node_modules/local-echo doesn't exist<= /div>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 using description file: /Users/dpage/= git/pgadmin4/web/package.json (relative path: ./node_modules/local-echo)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 no extension
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'browser' doesn't cont= ain a valid alias configuration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 /Users/dpage/git/pgadmin4/web/node_modules/local-echo doesn'= t exist
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .js
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'browser' doesn't cont= ain a valid alias configuration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 /Users/dpage/git/pgadmin4/web/node_modules/local-echo.js doesn&#= 39;t exist
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 .jsx
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Field 'browser' doesn't = contain a valid alias configuration
=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 /Users/dpage/git/pgadmin4/web/node_modules/local-echo.jsx doe= sn't exist
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 as directory
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /Users/dpage/git/pgadmin4= /web/node_modules/local-echo doesn't exist
=C2=A0@ ./pgadmin/= tools/psql/static/js/index.js 17:19-43

2021-05-10 = 14:38:37: webpack 5.21.2 compiled with 1 error in 60041 ms
= =C2=A0
--
Dave Page
Blo= g: https://pgsna= ke.blogspot.com
Twitter: @pgsnake

EDB: https://www.enterprisedb.com
=

Regards,
Nikhi= l Mohite=C2=A0
--000000000000906a8205c1fa3887-- --000000000000906a8605c1fa3889 Content-Type: application/octet-stream; name="RM_2341_V2.patch" Content-Disposition: attachment; filename="RM_2341_V2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_koioadqd0 ZGlmZiAtLWdpdCBhL2RvY3MvZW5fVVMvZGV2ZWxvcGVyX3Rvb2xzLnJzdCBiL2RvY3MvZW5fVVMv ZGV2ZWxvcGVyX3Rvb2xzLnJzdAppbmRleCAxZmY0NDJjYy4uYmI2N2UzM2EgMTAwNjQ0Ci0tLSBh L2RvY3MvZW5fVVMvZGV2ZWxvcGVyX3Rvb2xzLnJzdAorKysgYi9kb2NzL2VuX1VTL2RldmVsb3Bl cl90b29scy5yc3QKQEAgLTE2LDMgKzE2LDQgQEAgUEwvU1FMIGNvZGUuCiAgICBlZGl0Z3JpZAog ICAgc2NoZW1hX2RpZmYKICAgIGVyZF90b29sCisgICBwc3FsX3Rvb2wKZGlmZiAtLWdpdCBhL2Rv Y3MvZW5fVVMvaW1hZ2VzL3BzcWxfdG9vbC5wbmcgYi9kb2NzL2VuX1VTL2ltYWdlcy9wc3FsX3Rv b2wucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAuLmM1Zjg4YmE1YTU3M2FhNjBiZjdlMDhiOGEzODUyNmRjNzNlOGZj ZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDIzNzM2CnpjbWVGWWc8bitOX2NseF4tMngmRjNX IylmRHlYQ3xOT3lNKC02XlB+YmMwOUAoJW5jNk5EMlo8IXZJNWY1QWghRQp6dWlrdjAtfX03cFUr fXtaJmYlUUImZmFfTnoxTGRUd2Jyfj5RSWY7T2RXNDA5Z29PTCo8I1NhZUIkUiQ2QjsqKjMKemBA a0t8QX50NnZCcGcjSzg1eHlWR0JVSSgmSk5+UXdxezYzRlcpQzxwekZyVFFNOT82ZWt3O0hqM0dR Qkc5IzloCnojZHNESnBkYmEzQ1ZLZ2hpeEdgUEtwU0U+T2FGbm08TzgjSU54O3YqYTk3ZjlKRX08 M2d4NzN1b3BLS0pVUHtgdQp6P0lTWWhjanBsQjJLZT1HPzxgXnRJbEV3fi19R0xnSTh4eyt5ezlx Z3BeY0Ile2Z8RX05VkpuNDdCRT1QUTk+aSkKelZoRklhYVpkYmBDTVNfVUAwOFVTSEN6aV84KzVC TXQ3MEhZYT89Znd2WT4/JClGQX5WVlZORyNCWlYpaklFYStJCnolPG5Ne2s2aC1JNDdWdDlEIXRG NDBrZyVPNkV9PVk/K3ZaVE1CPEpkUEoqTGtQdjFaT1lBblVSe0tGVG1xNngkdAp6aTtgYEQ9MlJ7 QEtxajR6dm1mNWtAemghci08WmpnQmlNdGlZaW8tYDVQWns8Q0R0X3podk9NMz5aM35JQns3QGMK enlDbER7dSkzfiRLKzI1bkU3JmVlK0BESzRlJXw/TFpYazsmd30mXnBEZXQkX3spVj45PHktb25L ZEYlN1M+RFBQCnpTWj0pbTJMQHFwcTkrcUhWVl5IQDV2MGpiSzRsQzRJS0VLQGVqRjxyekd5OH5B cGdPbVo+cihyXkFGKlYrMkhyagp6PEdhcUooaXp+KykhQHpaMUxRVnExaXpVZG1SIUhUOHRXNDdL XnFHcFEtUEdpSil+U3hjfnV6Z01DaC1WdX5gcHQKekU1NnlqP3dZQldxRztmTEwpQXZyV2dFLU9x UjwmX3clV0A7VHlzKD4tRUcqYW5XRVk4YWNsYGZAOG4jYUZhRkNPCnoqYEw7cklHcDBTcz92QWI9 JEJtTFprJUt9JSVhazlBYHxTTkArfVgkY2x0aGI1WT5SYVA0OGk5ZCNBSXFnc1gxYQp6KGVrVDNW NnVXUTwkaGRQYG5kPElzUWVzYXMrakthbWZCdy1oPl5QYVZIWE5KMjBDa1kycGZlMHZadihlLTBV eDAKemU9QXZmV1NVK25iXj5JOTVfM257c3JLKig7JkdDZ1hRPWRxRG1hN0s2YzAlUGpTRnVDemxA OHtOKUVNSz96Y3p5Cno+XilxUENQMmtuYTlDKylVNX17KT9PfDl5elMoMEJzMzJ8NnIkIVYrcTRI SHxNPkB3TzxxMjU2aWxCVypvY2xpWgp6eHkxfCllaD0hdDx7M2B0QWg4QVBJezFmUUV0NHB0M2pz QWpESXE5Q0MrPG4hTDc2YypIWWkzeUhPPVdIaTUhTCgKekdscWBlOEI4bDsrTEthRz8lM0lxTHhW PytCOEhHOykxYXNtY0FzZUwxMllHNlNlTXIxKX5sJn09WH1sRnl9cF4hCnokbGZSfSFAQlhvUG00 eko+dSh3TDZ9KDhGP0pVSExqTGBEdl5DPT5vNVVNVUU2UT1VMlV4WiU/JWdiUyEjQlJ0VQp6a1JC UEV3SUEofDl2dmtMNS01dT0kNmp7UTc7TEtQeSRiY3RASj5SWVokRCV2UXNodXw7TXtyZTg+aXYx aEhscVYKemRzI3F1Y05+XiVsJVojJXctLXxPYi10eSg4Yj1FMUpYVlAzUEwpMEtPdXk5Vl80UEdG bU1obVReNFg2Xl9UWGBnCno0NEIhT2FLSjglPU5afi0ma0VWRlZqOHFGeypocGo/Ky1MbGJRYUtm NCR4WEAyfHxKfUlQWjRfbzV0V1ZlaVF6PAp6PSM/MDNXa3tOZ3w2VEgpQ2YtRUF1XzRjfGApK3xQ M3JMbnxhX3lMVkpjOVZfZmk/Xkx4KUs9KzxaSC1mUVp6eGQKemszKnQzM0RtbDxEJiV3dGx8diVZ N3prZ29laFVBPnAhSmZTe3paSCp0MH1ULTtNZUM5M183dmUlam5DVCZMfjEzCnpVMTtsSzVISENO JFBURXhSVVRQflhsTFdDRn4+KGJrMzhmaCZqP0BydG9EUCpnfDZ7SWlMfWojbT9mJGdpZGVNMQp6 alFTYytINXFDJFVRZ0ZvRWBmK2hyd1J7TiljJFlGemJMO183SSNeZmR3bklwOUBGMz9uVFR4WmRA cVA8djFzcHoKekQraGE4a0NnUmNfKj5HIz1Ed1o+PmZBZW5aQFZ6REdiV1NfTG5YJjJYYXBXMWB5 c2o9eXdjPTNwVVEoQiF5VTE5CnpAfDhNbD13b3t5M2xtKX0qZWZ1dDU/VC0/NWVOe1M2NiVDZ2Il a341NlRMVG0/Zm0zaz85d1lBUmw9Zig+WnN+NAp6bXZvbnVwUmNeK0MrS3V5I3JrNUdhVnEwPVV6 YX1LV3UjIytWM2VSY2VSSzVtQnAmSXQ9IT0mclFkK1hWbTh8bDAKenpxcUpnNnk2OFBTcmhRM3F7 P0x8bXdjWDNRK342blZ6OUJjX0d8NUlHaCFAdVpENmN1Xm1pRnA3VCE3fWwxZXVpCnorTExFQzhl ZzRQb2wjOVgjV3AxYG9VdFFgcEp5QGhhWlBAYDx8eXZTYD4zdUZYRXdHYFI0LT5vY2gtOUx7JW44 YQp6QEctTzNpNUYkZEUzWVNCMzB+O08+Pkk5fFlEWktANEhySUZMS291flZhRTxAcjtqKnNMfilq SXYyWVV+WnQpQSsKej9FUT19VHtDPVcjTFROfVN3RmI8V2xgcFNQcX4+UklaNipvazZYYEUqI2cy SnkrNlYmO3c/WiUpc3V5QGgwdEZrCnp6b3JHcEpzTz5BX1RRTTA1U3N7ZGRKZHFoYTwzdzx4fj9M T05JTH5QcExkZXQ3dF4/VHstVEltV1h4ZnRrOF9VbQp6V3Q+ISlPUkgzMVAmaWM3TmFqelM8TGV5 TTlxMzY+PGU0XmdgfktDdHs+TlZYViRrQUJDcUI7MkkzPUd1bW9qZ2IKelJxTm5va1lgekYtaSFG cTBwcERCUzBDLT1eVVZzKUdGUG5vTyVuQ3E7dUlTYGRwflluNDEzI0Y2YEA3PjdQPEp0CnpjK1ct IWVfZDRWVFd5Q0xgP3tTZnJ8TVN+UGl1WiNmRn4ySmApZGEpXno1ZHNyJWYhKDFTYWVnXiloRDVQ OUF2SQp6dyoyeGR4dzFrQzs2PnFDO21yJjQzWDhoKEl4UHomM1FoPmtJZWl1aDY7eVBFSTVsbzR4 UntIO01JMm1PbXhDSjUKej5jak9RZGhDcyNPSXU1Y0NMPkYhNyUmKHY8ekNBRGpIcTlmMTtncXxu I0xQdVk1Rk0xTUppb1BWWkhGJkVtXlkmCnpaTFc9QExnZ0x0b3FJZGV2a3UtNXkoMEZSazFiRW1g cDNHfTdQUGlLJDNPMG50bipENF9pY3ZPNzEjQjgkREp6RAp6eWNeY2NhYDRzbTZ+RE1SfEwoaSMr ak9+Z1MkV0JTSGZ1O3hMSHRZcG0mR09Ld2IzPkJEKkNKcWRrPmN4T09SbUMKekIzc0FNWigqbXNB ZVR6K3FwU25YNj15R0ZJODhPKk9PZ1NzQSo/eH51VUhqJGkoeC1RTEB7YmBOIzU7WF87eHQwCnpF PDJxI1dgO0Z7Xj55TmZ3aytPdnY7Z2FMUk99Vio5cWdUOGJjVi09OX19TF4rdEdzPUh0REBUYCtQ USt0JDl4VAp6KzJwZ3ZeWjVtPkoreCtSe28jamdUdmdFTz9oKWZwI3VIR3thTSQrPFEyeXVfJj94 ZEk+I1lueWdySnFLaUQpPnkKenlYLT8tK0NubFgtKHJETm1sR3hvMHVAc19kWVBXIUFeYmo7U0lF a0piYVQwVSp7cldsRW5QTUtYLVNiK1FBJHh3CnprOzc9bSp4VVN+cDZFdnMtazBZdFJXN2YqKWIy bEo7NF9odi0zPHhIdnwpNUh6YzVXUyk2WkhIYmhfeE9pV15gZwp6UTRraV5hXlV0cV97Sip6Uihv UlNFQj5YMkE4d21LVDJjI0xsVXpIPVJ9eFg7Y1VUKE9QMHl1MUN3eWlTa2BqNmIKeiZSbzV9UXU9 K0hDQGxQMF9iZ0dWWTBMNXBlVjRoX1dgWG5sYkNFKj9fOSlmfiR0VWI4RVBRI355enxsOHItXkYk CnolSWglPS1AbHRlaWpkVk42fURyY3ozJDhlLU9wZEIjUyk0KDg+azNCWkZAN3ZmeVo5VD9rQj9M SWB3Vit7I2YxXgp6JEFEdT5nLTFgXnJgfUp5N0UzKCRjeXVoWmhFcFhydVdnNjZPMjlFZnpyb3RA c1ViYlZJPFdyRlgxJjlyISRiSXUKej5WfCR9PDxXUmhefVJ1Q0hxcyVUdiVSIUpobUckcHttVyhv dCs8ek5oeDkoTnJmKDMmVyE7O2t7dyFwUFM7ZFpKCnpnPHNGZ3BPLUpzeEtxIW9gJWJwO1QzOHt0 PWdyYSppSWUxJDM9OVk+alZFNlJDcD52WlF+SWIwViNIX1RkY0w3eQp6ISZvTXl2IyFfUiQ+digo VG1vVUtnOy1fR0htKz1uZTxkcXhkclM0VSNVYzNvVHtwIz8/RjBNZj1CRi1kU0xQb0YKek56JiNX VnI/NTVfXmZTWUI0cmQ7Xz9LI3o/NHMpbT4/TittNVFyJSVhfWdGZHBQOHEjTU48aiYjVSZHRXdR aENpCnpKNyV0eThJYDNyJUJ6fDMta3FvWDw0eGxadihPb2gzWXNtQW90dnckdVFhN0o7WCklYEZ9 fiYzYXRJbSROQEdlRQp6Mmd5Z355aHBxckRBWDAjNnsqNllsPWdPYncmRikpeTsqTTU3Mj5NQ0to TUBHT0A1a1NNPDNJMDIrZDg/K3BMU24KemRNX0RtRT5CRHxMOT8ydF8pQU4hS20kY1E1Xn5vKjJm WG0zZUk2LWBzQn5PRz89d24tRjNmWk81U1Bxe28ke2deCnpvK1B1fnh7WFZBI209dkgoRHJrTnN9 YzVWQzhuUkxHe29UaW9NbV84K3tTNUF4VUBqRyY2REJxLUE0WjI+WF4+Rwp6SXtpIVNPUGwjXlBq P0xXQDRGbEdDQ3dJb1d2Y0A0YEk5MGFiLUNUSmBMO2RVXj41b0BMMUR3eFBwTiZeYmtDQm4Kej5r cjxLJDR3UHZEbzRBI2FNUWMrP2J5djJIWFhpYj83IXdiR3dCMnV6JExFOUZXe2s+YChoYSElTiFS cys2U1hZCnpEPz1Ke1chbTF2VWJgKnFLQ2BGIW1uR31kZGJfYE5tRC1mT1pAeEg4cF50X15xSzli R0IpV1lYI3woYldiSE10fgp6UVJSP3ZfPDVQbzFLUWtCQiRkJHZvRz4kSzclZ3t2UD1oUllpY20y d25aN29WO2V+U2A5aGEtb09nNjl+Wkd7YVEKelE3XnchXmFVeTctNzhGKlIybG1+NUE5ZCRkPVZA Xy03JFRBb2tXVGhsWnQlQ3l0fShRe2NIWSlhUENjbzRwT3prCnpfemQ1O2JjbE59K2VRPDZlVHtX VF82XjtTOEpWYDt7WX5tWmhRMGQrciNDMUIoZUhoRTVzcEx2Pl97fXpkfVhldgp6aHtPVjFWPDZv X0NQRzM1dThASSROWFU8bj8pYEkoZyFDR2o7QEBqa1dhZDlAUD5fKHF0ZFArRHc5eTdXWit+S2QK elVxSmZMQytlcW5OYSg7e3d8I3xWcXhAfSsod35qYF9aczxEMCFkMHU9RzgwVVFfYU5MJSotQmE+ RU0kOFYkSzcmCnpmJDh7QzN5ZyRCYHNEVChgSVlNOUpwZWJrVDdmaU9HISskdU8mc2psalo3Vmsm RGNIYzlCPCEpQjxkanlULXVxcgp6N30wdnorMWk3Sko7ZG4kWCgwPzstYD9oK3J+UmppaTtXbily bEpiMWpEeGNvRWd3NUNKMTR6MzdBLUJVc0kjZkwKenU8Q1EhS2pPZSZWKVR8U0V7PygrOVBhTSE/ Q3cxNTQkYy1GVHRZJVo5R3UpNyt9dnpIM3BUSyl5XkUwdG4/MER9CnpLUUg8RnA2NnlANks1KyY3 Yl4jUStTflVVODlUVlRofCR5RWNKJU1oZjV2SSVWUmhHJkpeMFZHZkMrTmtLSD1iRQp6PWo4YW1p TWQjcnw5Xjx4S0tZTj5LbEEhZWNjUW0xNklLVkNJbTxaTSpfcWs5aH5IXmtecS0jb2tCNHtUe0V3 aUQKem00fShGPTVzNFI1KTh+cW9TVURNX205fkJlRHJANil3JmJxO15wSzJaXylwSF5rMVU0bE1x JlJ3Z05fS2JnTTtpCnpFPlZ2RSpTLUpRVWV5ZmpWQyNDQFQ7MU52TVYkTU8kcDUoZ01AcDNBYzQ3 VyZxNWlXQXs8I1ptMTkyPS1qKEBrNQp6SU0oJGtMb08xTUIreyRyUVhtaUg/T0Y4dCRMYzl6YChQ dUM1M2wxWEA1a1R9LUZ3WFByakgmJk1uJnE/WVphfEcKemhMfGlZUDNgUjJBQD5NMWdWM1ojISli LUVVUSUqMWtpWW04NVZWSFVhX3JhSGFJKVF5KVpqd0czQkQtdFd6VD5wCnpqaHw8bntQeTwrSCRv aGBoaXp3NVo3Y2dtREk4aTtFPUhUR3N2K2hnKD5wJDhoc1JDZSRBZE0oVHZXU1YmYUF0fgp6UFIo T2lFbn4rX018TV8/VmtkSEd0UWp9bjxmbDdicn1LKnM2JT4zXk5BX0UxO1NRKDJyeX57V3JkI3lW O3g7VVoKekQ8QUhfdz5ON2Z2T3MjTmY7KT9YKW4jTVhtbC08fTRydyRedikzOCtsTVF9I2grVyUp b2xYMWItMEFITlk2dGtxCno/dmRjIWBvJmg2WmB1aHcxM0VnbVgrTEVga3d8eXJaKWFmTzF2P2ZQ bEBtWTY7WFU4PG11QzxeOGZGPnxDdUE3Qwp6eHRoT2Vzbk4yaHBXMnRlViRLZGdgT2treDV0MFRa eGQjNVFXOE9ndEBsU0tNJDlhU2ZDeUZVXjNVTEpqI1NnP3gKeko5ZnlhTUllOGhHbXJHNnNFYUY9 MnJ2fl8/I0hYRVVrPnRxPUopX0JWUFZHQ2YzczY4JWAwRWJjTHJCOXRjLVRnCnp6NHtpX2FAZGw4 c3drMTRaMlpCe15YaG1xWjZVPlNZT1VKNDQqeDZJYzRNY2xzPkt+fldAbXRXP30zVVdAO3llVwp6 ITBfZ3E/PiV2ZmgxZlRqYUVZPGA+eXhecDl0d3ZwbSZsPUdibkokVi1OQDY2NTx+SXg8djJPOzdI clVaaF9+TmsKeih+VyNJTWY+Mmk/TUFIU1dYazNXSV9PPjJlREx9TERzZkc/VGZ1UUx7IWBsZlh1 U2VURSRARlptUE9DJjQoTSNGCno3KDZ7UlMpRE0/ZktqPTdESiszaytjcT5UWXlqKX0xUWlWZjwh fGlpRXBVfX1kU3kpNHdHRWpKYyhIRDBNUzVFLQp6X0BBZlNvcnp4X20tJEQrOHl0TDtBR1MzK09w dCNTVFV+Jj1wN35WdkY/fkZDX0NgSGpkLWs4e0pYbXt6JXF7SjAKens8JH0kTn51NipJZWJXOStN dWM8ZkBkaDFSTGVCPkM8b3R7OEhGfS1qNShURGJSfU1gJDBuMGxeKF5BX0t4KGdkCnpsVHZAX0BN KFU4LU9XSyMrdzxAZ3ZxWV4/Ym4oNXdVI15KOD5kODRqTGBCT2lJQkkzc3t+RypBJGt7WCVKUn4j Kgp6aTxZMjxwOFFsKCZidnBkTmpvVGRJUGlsaz5pdFB0cz11YE4pQGlaOW1Held1KSFedV57fCRv b19AXjVGcWN1akMKek9UaVYxaVM2cHU3QmAhcT9UO0wtNH5NcXhNVGc0e0FKJE5+Tjh4WVlEIU84 QGRRMihwYFYxPTMlOWtiZk00ekwxCnp1VlgpQiE4RzhjYT91YnI9PE9NeUJ8eVY1eSojLSs0RUYj MVpudHlrQlMmVlk9VzVGSChDZ244UyZCUlpvSEUqJAp6SWlYOSpYWkVBZiU/Nl57PDJPIzFmfSNo IzQ5ejZhKDxLQV9oLTFzPlRGbD5EXkRxQUYxMjZmMm47VHs3RjlHfjMKekFob3YqSVVIZ2FZcXtA KFcoPEReb0hBeFB3NFVRVkhlQ01CWnJiZDNKZ3pZWU9mO0BgLVZlYiRyb2ZaOGw0S3gwCnpEMn5g Iy16WTlxOGtWXjZMNlohXiUyXkkyKD1ZVm5JKlRwKk1Xaz9eejkoQnhVb1pNNXZ+MDUyZEtuTlNN KD1gJAp6P0FBPWBpX0FMcnZzcCMqT0BzJDg4KUNrMjJ7PFhGQ3p8a3hLSz94KUxPUVlOUTlJK0BV KV9RQT9EK2BPIVdGUEcKejNmfGlfOHJ0UzVXfX5YfFkkVSNvPWN7UkJfRCRRUXpKXig3Yjs4KXcj NT58dz4mZ1lWMHlDVjdlQis/PyQrbTBQCnpgV2wzaUNDeWlQIXphSj8xK0k/OVA3eHlsdE90Znc1 PFMqQzRlJShnIz17fHpUK2cwKy1ZOEVKanU1K1Q1PFM3TQp6TU5GUSVvXntlKEo5K180bWJ3OyFT dF5ZdzNnfiQpYSZVWk10TmxmdntfdXVHTHprOzMhdHRWfSUkTXlWWCNWblcKem4xJUB6bCR6elNe IV52cUhkayF+eHc+IUVXPndhZUVoVCFaa0J+dihNZHU7RC0oSylLelc8cmIqR30rN0tmKl5WCnpO eW9tU3h7b29mPihwVC1LfGByLSZkV3Z7SmpnZlp3T051UmVvXyhMZU1hVEU5Qlp9UGF2RyZGMj18 JWZUb2tEfgp6OGtIfWdheXpwfCtaPER0NU5rQ15aKzBBelhSVWJkMUFqPHl2SGJhdTwhR1VrUkg5 QSQrSUQ+ck9UJW9mbnZSJSgKemk8NnhQdmNefUBrX1VjbT1lODk3IWk3Uyo3PjBEWCFyP0RlKHpN ZlBITDImV24wNHs5ZlBSM1d2Sj89azF7VjNuCnpwNzc/XnM/UXJRTjlmblkmbFpCJCZ0VEVmM29r NUpqQDMydk5FWUt5RnR0S25jaTx2Tk5keXM0KEdwfk9aND9weQp6ZGFHcllhSktkTkJsYCF0d0pz STlGZ01JcG1uZkNYIT5rKzg0NXVGUWJ0Wn1QUn5NczZ0cS1Kakh3fHZRdzV7P0kKem1SdzZPWWMt ZlFlZV5LMChZUjYwZSNwXmUkVk5VUWZwJTc/aURpdllubnp7djdwfXIySi1YcHQjTDV3RjxtZ0ok Cno/NyshKm1fKzQxIXt2TEZPTXxPe0xockFEe0xRfjAhfGdUQmg0MU1zOE1WbDZDQWpnYmNEZ2do aUJpUFBSKFFMNQp6WSYxWDN7dEAhMCpaWUtXbCFTckZkdFQ9Jk5wa2x4M0JGZkVQPlRzaSotaEtr TUg+MlRSWTNDX1IjVHN5eXZsTkQKenlFLWBuUEJUbFpWfkFBe21yMUtzJXtDPT9mUks5cnRWZl9u LUsmXkR4cWE1PmFGQWhQc1MyXnZCdiZwMHNMOHwhCno8M2VQJjg3ekQ+QV9HSTV5alMrMipLXz1L JiZYLWM2UH5CJV9XT3hhPUdpQkJsfmdPKXh5YXM2SEdoU3dBej5UUAp6MT9FKmNFMlUjUUBfUyEo cmZ7ZEE9TXJIVD9Cbk91XihCOXRoa181dmdXeHtkMlIzfklyWmJUT2JBckFIYWFqcnkKenpAQkhJ OzZofmNsO0xWPzRkcTBCSVFTJmJ7QGJBRGFVcjJCblR+Q1IlYTlRS2FTLXZpKUM1eEBwKC1aNWhR Nm02CnoyKnJycmJsem81a3VWX25RQGRCKXRlWn5BUSkhJlY2YHJoZmdgMDIwPHJzcUBsRzZNTT5j VFFGe212R3tVXm9sZwp6RDByS00pZmZATGhFVVM+SnN1fVVQTn0tRGdvTlEqRXRpKjBgP31eYjVT PT5Oa2JxXzwjLXdgZl5HRGZVOWxNKEcKeiZvfFk+ZUo/VnRyM0ltMXQ3dmZPcCZ7Nil1T3dGbEY8 bjhMTVpkVE1YbH5BKzNAO0RFdypnejNuQ1ctMW99Mz5iCnoyNk9Kajc1SCtHT3FjV0ltMWMoWl9v OXhCZlF6UjJEfFZLaWJldSZubCo7YEp6UGtEaTtyTEh7bU5ITiRJZE0tUQp6NzlZYUcybiQ9eWA0 XipkKEwmM3VDbz54U0p0YSRGN3ZCPj5QQ1ZgcWdiKkRFSiZZcDZaVmQ9QVJqT2FaLXUpclIKeihp NEh9PTNfN2ZuNnpLJDI4SWAlPztuaERvREo9bDV1ZDUqITV7ODVwM1pzYVVKU2p6NUI+ZyVkfG5U LTliJFRJCno3RFFZQ1klVCNNQitTfExAYTh6ezglT0I7QGp3M2JmcntiTTE2dURgc0B+RyY+NiFg Y1hJTTUjeTNWZzJFY2ZEPgp6NXxWT2ptJEtyWXFlP3RfdFV3QE1HKHp+aUYhQTc4MjRDeX1hQD9O I0xMaHFuO2pufiteaEB5b1NkPDhSJDZ7cWEKekpCNyQrJG1eUXFQISYwbilWLUdAYm9HU3FGZUNz d1dFVm0kT0A9TlhWQCFrZ20/ZmRKMnU7PEBHP1NaZHYlQ31VCnpCVE83e1pTPHoyPnkpfUZuZUJ+ KzFlcnFZYEZKQzNfR0Q5Xl47am1udzxfZDdRPVVxT0Zva3k7WX5XUFM8O1JCUQp6cTVLJFFYdzdq LSFjUypgblc/fEwoeVckV0t5LThYNWxZM1psY3NCT2M4NkZJcXxAJCZrejlSI3QjRip8czdUUEEK ejUpalVsYkRXbz98QTlFPFMhcTRKbEg7fHVgVVUyMl58em5jTEZ7a1M3ZFdZWm5STEZ3ZiUqSj1C aUhAQHtgQF9iCnpkNDt5QDR1JGN3bkQyZjxUO0psfGVubip1cSlePGk/c3RpYVF4K0czPl9xVGZ0 PTZCRlFuYCNzNSQ+RVBWTkc/MQp6YGMrOE80cUVzZ01RI1kwXiFEQUtyKGxeb1p7anhZZGhtbHVp U35APEpfMl44X2VifkhiIWZkYyVlZHdvRjthIT4KemFjcyVQM1lpYUNRMVBfMjcrcDlPamUmeX54 ekk0e0hyPGBCaXQ8MlJEanpmNXU+KjVvYDMmQF4kZ3ZWTjJydDEqCnpudyheTHYkVG1GQCYpdD4o K0pIUkc3M1YkRUxFdFc8c353PF56ST9JYDAkJDE9K2cmQXUqUG9WV0ApbWpSMUFadAp6KzZ5V09l SnxIP2ZIRUlCKHJVLTNfK2twZCVlP35wWVdJYGg3U01GPDRxQGFwZip2bUNwcG41MkgoTztBIzUw NVEKeipOeU5AQDZvcTlifGZwbDdlUCRscU9EbU1WPGwoQUlZcFY2NGBsYyFFR1A/R3FzWVBUJjAl YzVNaU5KbkJoWlI1CnpqJnpVYXtUPlBnSmpyQkdrU04+OWgke2FqQ3cyV0heby1DdGc/UWwxMzh6 fSNFRTd3PmZWdmhnLXxmVmM1YT4kfgp6Uml0fDtoaCkpUSNDKGB+VmlrUS1naEF8clMrfDdeP0By UGJ5LW89RCZabGspPX1UOHxSUT1YUSV7aVE2I1MwMloKejtxRyh+K0AtV0xZQ254Xj0pSjdNV01X RT4qbCNocz1JMXtPdTliVk16UmZkcV81IXEwX3VEKVRXMyQxKG8/eiUtCnp7Ul5ObShyfGVga2I2 NEEpcDlzMCZrPjM4bjFgXko9RH1ldiR1akE2RkdMallRNmUxIXMydGZKampEcmM4MW9JRgp6YFhl R2lqOGBFRmtmRCU9a1ZHXyFwcnUjcFg3U3NDdzReSzxBPj1fXlFuM3FOKFVYRkw5U15nM3dnWUpV UGVOWHgKeiZ9Tk8lNEl3ZEJGUEE/YlBjP2oxLT8qQTtWKz12Y1RBP1l9S1F+TCNCVGRsQ2YydERz aDI+UU94NWc4dT5hdzk+Cnp0RDdHaWF2dWlOODVMQ1o3Xn1KUm1IPTFlcWQ+RnAwZiRuaSlVUXJN aD5IbyQ8WWptQWh7RDJTNzNhIXRac347awp6Q05FSXYlN25OWUFnT01XY2AwQG4tNV9Wb2VBezhL T0U5V1lkPm1PMjglIz5ZKUMrQSkjUyt+PzZheVkmcH5QfncKejxqODhQb0VHdEhkI3xeaXMxPnNh T348ZFdQdURwQTx6NUV1blhffFRmc0VzVFgxVngwOWJ+fHZgQ09LZ0NjIUM0CnolJXVIMjVxTUU2 RGVqU3xSbmppZm01Q1RtREcqcW5pOTIzYEQlWikzR0lwNzw9VTw2Pk1xZSo9Y358JGgoTzJLIwp6 ZStFPGZtaStQYkUwflQ1Rj14YFRTTGFGSWVpU2NHYSs2PjJLTElifUJ6Sk9TYEtzUzVmOHFIMz00 KngoI3ZfbXIKenJWU2RTXnV0WDs/JSN4Z0A4S2E3azUqJWdpQVQ9citPRD5mOVRYKCM7dDc3ZWdy anw+dGhMUFlFRG9XPml3e3N9CnpZTDs3aismKEl2NkJpP005Q0s9UXZ6O2kyU3tUS25RS14rQXNi cmJVSFU8QmNnNVImSjJicjwkcT1DeE83TD83aAp6QUFOal5PekItM0w+eWpXWGU1ITJyYjVeZ2RW SlZ7WHFNfVJMISkmWlQza2J2UVJ2M1YxPkdqLUVYVk1lOXdybGYKeiprXkY1PGpBS2FjIWIlRXd2 NWZ1JFRgUyFEJDFwbHspSUUmTjJ2KjlWbnhBbEczYnw0N2w5M1hvc2ZMQk1ANElUCnprVzNicDtS SWlQWl89THBUSEtkbVdZb1ZXNUhAOFBqUWlQT0U5dUpkRW1ZVzY/bHslZUdNYTBfeDMmNXhAfHgo Zwp6UiNAJEM4alkxfnozVW56XnhFOHVMSEVhUHQ0Jj8qaytBTX5AZSR9ezgzclojWDUkfmNDaDMz fl5UY2BMYW4qazYKeiExSjl4QCkrQ0tQOGBuTkRue2h8KGwwR3k3QFBPUjdnTEFOT3l+dihjeis4 bWg4JHh8Mys8S2p4WHNLX1hFfmA8CnpDKChldHRGdW0oNXpUJX5pfF5iNz9+X2lNZCFJbE5sPDFy eEJHTndrOXVmPklyeWN7Xylvcko0ISYrR3FRemtpegp6OVhmfihDaiM0UExfOElTYkJJbTglTHJi U1h6bGF9PjZLQkE/QDcxWVIrI3ZrI1Y1TElDR2gyZD5uaTt3P0FgczsKekRgKDB9Q3V5blUxZVA2 fTh4T1d3X2chRFljZmF2QkQte3RQVCs2VzRoWCp6aml9aT1zNyhXJCQoRWJHWGk3TiRZCnpDWT8r bldHTmArYzY5OFMkfnMjeSZUTiUrSmRNJiRPaVdzUW5yLUYxemprKGJvcU50QExjakkyVVYqY297 UmhDZAp6ZjhtSSFRWFptUjRvUjFBLXR8el9XVGUyKyhpKGIoZTtWczNFb2kpczZXRDE3WXRpTEV1 VVh1UiVORWVBZT43QzwKek5wPTZUWiUjfGpsJksqYDN0RVJnWClXOXxBViM0KGZkZHVCbE1AT3Yr RGdgIUYteVlZQW58Smp4c3NnPnpqfX1lCnpzQF9DWD54dFN2cl5oY2E9b0U2QlQ4dFJ8aSZoQD04 bH45JilZTj4oaG58IXB6M31Dd2F1KUwtdV5YIUcheU5GWAp6cFghZnZNQF8xXyo/UU9DOUQkcl5R UztecTVtO1NUOVlUV3dSeUg7Iz9VI3YyP2k4RGJwWjFnLXheM2ZKay15Tn0KemBQMz14LUF0WUN5 dkU8TkV1cm1VZ0lHK2l0KGlSR3R4R2BrKyVQOXxjaUU4ck1WTk1oQypgOF9WWm9RMFZmcFgqCnpI QDRkUD5AWXRudW8qJF9nVWdHQWBMKzZOND5hd0h5XiZrMUt0bX1ldHZBO1FzUDM5KlN0SGBAdG08 Rlh0JldUcAp6d0gkbkBhck48fXA2MVBkYSZjXiZIOVM/XmUpWU9sT1JwbUVuVz0mcC0qQWFBem52 Jm9IU3w1OWchOGloMTJuU14KekZ0TTY0PEdXVCpvSWg7Qi1xNXw/RT5qcUR7OUVAdm9CZzJ2VV9+ ciY8aC1ZUSg+eDBFRHVWbEZHUzNIalJoOVM/Cno8ezxrWTM2KVl3YnBhJj96KUQtNTQ0eX5Sb0g+ b3g1LVJXK0U+Oz97MlY/S2FHPkM/fEBBM0ojdENBVm9eSzBOYwp6eSNZN156X3x2XzVrN1M5IyU3 bTZsISs1M19DWCZnSll8bGlNTFNAYGJ8ODQ5ZG1xYkQmcDdHZW8rdXJRZjVkanEKemU8RD9reXxQ fGkqTkNUZTg4QEY1KmNwakFWTHtOZEttK352Knx3U3xAP1pYQ0gmaHl0UWomMWUhSChZa2haZkJP Cnpkck5LR0hzYHYzNm17RCpINW4pQz1eMHUzJll1a2tOYUM8QF9KeD9PQ2c4eUZZLVRELXVTaDNr Ky1IXmwxT2N9cgp6X1Y1bFErQF51a1RucX1xKTRBNERnZVllXkY1V1hgSzZEWTZMKTdsQmYqQ2Qy ME9Gem95RU00SkJ3R1pxQXRLdT0KenttcjtGYGYjX25CXnkha2l5elRtJE0wU18/VE1RSVNAK35H WCFrP1IqcWJqR0AlO3RHMEY7Z0BFVHh8R2VrakQhCnprTDE+VHZhJDJZays+Jm5uWkdaI0QmTmtI N0pvRkVuKzlOVjZFWEl0ZUVeYCNoV2kzWWwxTCpWKzVoPytjQXd4RAp6RE9ieiZubyleb1MhODt1 ZShha1ZwT2VATiNReUBOX0dYMjJRSTZmPitzenB1Sm0yNFo0cEBxKi1+I30rcStWWjQKencmbVoz d2lPMVkoYTtMODdBSEckaHF5aXZpKDYqSjE8RngtSntCT3BUNChgJEdoMW4wVDZBcHgjKmZ0KkBH dXBeCno5OTNGcWR6bHpKRGghcmtecDFTPVhpUztMSnB8X2JTaEs8KnM9Xm1WJFprS0NNTnB2Mlcy Mn5HJEArME1SUTs3QAp6K1AwdmQ9PGlIbE43ZktDQHFTLVZBZlNQbktlQ2xLQVpMaW14VD5Qc2VV c3BTeGV2ez8+eGxeNl9nRC1pYHxLTmAKem1FYDk8Wjl6S0c4QnJAN0UlQTJtVSo9MTQ5WXZtXyNs QHpaTUJ7TipFbzJpRDNkM1lkQThCMHJASiN5X2olPT53CnpNbnwyVkhEOHJzc2lOdjFZTFJVOWNt czRCJUsrfkF4aHtaKypEVGNjS0F0S3xUcGRqJGJEMW84bER0SSFzLXFxYwp6SjNmYkomRUc8Sjll NnI7Q300T3hJX0o9bjFPPDNGSkxsRUQqP2JMPERJIy0takhgOEBqSmo+bkltbXtYejdCWVIKejMr bDBwWWJNPXZiOEspay1nWFY+ZEdiYmQ3aEU0NU9hJiU2KE5VK31icFQ3bGdsQnZrPUd0Iz8qS0Ar PWs9cyFICnomQGJgTXM2MXwzUVBzYXl6U3Y+N3NsRDBQUzlpM0hxIWc7RzBobyVLJnlAcHUzWXZ3 fmxgNDgpckNsenZacUJvQQp6IVRwIXAkbENZMy0kMlBDJWh3SVdULUpLQWFkaTk4WUZ1NElAZkll NilDfDFWXlF1PThiQEtUcEcjUiQqVk5xNVcKej4tb3ljOz5WX3E4PDY3QitHK2M9QXBuVVYwZWt8 aHA1eCpAdDFUSDU2WXJAazJ0KyN6O0Z8SkdxUSY/IytAYEdGCnpuQntYZl9SQGQrOyhQTCYyfnlf MCt2NUtETzd0cW9uaSg0XnptaX5XTCRZQnE0fmoxbXVMMi0wd049YVUjN0NDaAp6d3lXdjNKZUl4 dVVFZntyYilZTUdkRy1kPW5HVk9RTEheQSk4d3hkd0xkZDg5T0tiSjxFIVVDWmJJYFh3eiUjNU0K emNmSClwSkt1Y3hWdWg2VyFldVFkT2pjKEduZWUwNz0/cVV2PCMoMktmRlNoTXdrZkdHSGZXWX1P fiZIZj1GU1YqCnpIdDspTjtvV1VNP0FmazlvdzZ3dFR2YnlSPDZ+Sjhtfm9WdV4xcnpuMU1YJHFs MXJkX09OQSY3ITBeXz84S1QwUwp6YXorKEc1cXE4WihNfnl2a2FKTGVGPiVKeEV2U1prMlpqQkVa fl49ej56ZUI4Uk0xR1FFWHQrTUx9fj5mVDVPVCkKekpmeVQ7enRnNUdLVHVDYFQhR19pIV5iflJu dDRQWDE/SU9QITJheFg3QFA0U0goTDxyT0ckZHVPMz9UKUN+dnpPCnpLPU0hPFkxVyluUzQ8T0RH fGB8UGQ1KlN0UWF6VSs3K1U9dFo5V2psN3BxJkk7YyFeTXxDVmVVMStaJDJ4VU0zeAp6MlBFfk4w dkxaRC09cj4yMlNaPzdFZH5edXdPa1RTSUc9I0VePXlnb2ApX3BqcFoodiZDQWNGNEkwdHtDPTBD TnEKent2a192a15IRlJMVmE5bCkoXjRHUmtJKjZmM0Flfkl6SX1DJUg9djM9O0FgKkF6TDVXODx+ QUNWS21WdTQxM1gyCnomTDlPZExsI1ZnO0J0KTIoKGBQSGRCSDZva20wQDR1em17eiViV1l6bzFY aClLc31BN1VTeSZLcVNHWm1lSz43Zgp6cjY+JXI2Snk8RTI5eVlmYV81ZX5aaF9ZUSRtJVg0YEww KUpyS35pRlVyPE9+TD1pbT50aXlSZEZHK1VLK3paezgKenNoSyN2P1A5ITRIVnFBWXFBMXhEUzQ1 dGtVRzgoM0hYcVQtR3QwT2U0Nk85az9rVCFPJitOWkdkV3xwOFh9dnNtCno1PXxYdC0yZGooVXZB fDlvUTJUNkkzTTw+Ui1YZ2RyZjBYVEF6PitkKF5oMzZCYWVIY29oRD9SIVlVWS1LaXNufAp6V1lR IWBoPjxKVzE3TlZESCNQdUZuellsMyptP2RVaUNfPlE0Q0B9VjxjRypYIyowZzh3VlE4cFh8OStk XiZtXmsKek5gWk1GYUleQUF8RGtgJWJpWl9STnhzIXt6TkU9RTJ4Sl5oN0RYNXY/NCFscmM2b3Iy Tm51fWEpSTRPQSM8S21hCnp0ZUkkYykmbXh+SzkrVXVCM2Q5bEFZNzJ7e0NkaExqRWNVdWlXO0dK JVNePSp5aztKQG4rMSolVypXYHEwe1Z+cAp6T2NjWVNoWUYkdik8WHh0by1FTU5fa0g1S2g7OHN2 Oz1FNnBleGRSenNUZk48Vkx6NVpGOEB1Z1l+RFhgb3xUQ08KemJnOSpQd2UyOFJsZj5ldWsxLSND KzdEMXlnamRad2poaGByWUtoeW0pOWd4a0o4ZGBEZl5Zcm1VKHBtXmdOLXtzCnppRnh8OUJjbVRo N3JTI2tAQXw3PEZHV0xMWDlAdVhlUTV3UFFjakhqQyNKSmlsfj95dCtGej9ZcChMYF5GemBKLQp6 THc+bVUzQ25gN2pHPT93PStnJFh4KXkxXkJJaiY/b0hUaVlVakZeZFJlYHFtODtud1c5b1FUUzNK bHEhe1lNY2MKendOb3MmQnh9VFgtZnlRRG5gUDBqY0BVNTVTN15TeCE4SD5DKmtjJkZoZWYpUkVT ZUdvYn5xP3RmY0VBaHchcj0/Cnp1JDFFITE0JFQ1WHZXZTQ4Ymg+JnFYTUtzNT5PYHFefW5GOzlF IShfaW5CZ3N0czQ0ZDhEP1RrNHY9dFlUN0hzcwp6Zkd6dW4taHVwM1V8NTl1ZnVnfU5MdiN9QXRI cV8yKSkoX1k+Tz9UYmEwKlI9O0xDMV5FZWlYJUJNSnw0OylxaHsKemA3TkNhOFdBIXduKShoTHVz SHNDcFRwO19oQDNGJDQ7dy1mK0A/YTtYRTBkVHlMTHM0MCpIYm97UERaJjJ1dm8tCnpAJF9UQ0FL NGNKS08+dHRsfFVJPDJXey1qISM8JEAxVUphe3lyY3tkSG9vSmQ2OXFNKCRZdl97JEQ9QCEyalco Jgp6Mnw7Ryg0NGxMI2gzeFFSZzh7ekRuUV5sTF5WaGpAKE5QT2ZVQmd2NDVtOEVfPG9LdEJLXzVM N3hAfSRPejkmeyYKekcoR3RNMF9DNERRKGA+fiFoR2o1Ujc7N2sjKW1ROSZzd0Vgcld6SFJKPlle aFd4QiV3UmEjKStCdGswK0N1WUEqCnpsSnZOSUFiRzF2cnc+TGN6YkpTY1VGOy1eKnk3PkozeCtN U0pQMHdIR01xd3pEdXQlWDEmUVRrNi0mKGs8Uz0wPwp6PTdNezRnVUc1e21pd0cxbW1NLSRlbGNm Mys3KTMwPGArPXhwe1Q9QEliSDgpKnp1JX0xa1VmTSpDSiM1WXI2cEoKeitHaU9AakZ+VXhOSjZs eCU5OVhzTUhxbkRGZmgoMjNjZmAxeEYhaWAxJUtgVTtZYlVSX155SXN1Vk08Z2w/Pz1vCnphI3tl SiFnU3BvO09rN140aUZqYlhPJCEzSCQ/M2ZvWkRZb0hZbEgrKGZvOyNSMUFxb1hrfWBabExsdkxw fFJpdwp6Wmk/UkBrWSpxI2JKUDBnMFMwSnFhVFdIO0FafTUwTzZtenp5RGNtT2sqRTQzWWR6aSRn fmRgWClYTTY1KURGey0KelBoeFo0IU4qNEImKHZfLVNjQzJRJWJ1V253X1VZaEhUWUFOWm9TRCFA N2lSa3VaN1N+TG08OFRqajM2KVpUZlM1Cno8PkRZRiV6ZjteVytsSWAobXVOMXpDaFVQQVB1WHFu cl5SUHk+bnlFQ1chVUN3TDV2S29IIXtCKGA2ZTtCPTNSOQp6Zl93WEp6XnpaOy1GNDUjYHJnXzBO UzA1dFZ5fX4qQn0yWE4xRnZGRGZgMkpJM3gwMGwhSUl1QSpCeV89U2Q8Mk4KekdEY1NUTUhNJDYo aWk+Qkx5O3R8bX5Tc3ZnZTM+V1ViTGpUdk1lQFheNXxaSURvZ2dJVzdOcW5iZzxYJihfWlR4Cnpj NkkkWiplfWchN35RZWolNCNlWWp8QTQyc1I4ZTtJMksrdGxFU0QlcTNIQG9UcjwrQjZ4ZlIzR30l PHtmcVkocQp6aUhSNndgWjdIQiM0PH53YzE3JCRlbW8pNipZU1EzJD54WmBNOENXXnxCMkwtV0l2 fSFEXmFkKkAyKEN+UDRlKi0KekpkTTYlTFohU3hwUnwlNjF3QSM5Xnh1Y0RteXpBanc/Qjl3cDZm TkJNVTM0O2lKZjI8cD4/cG9CSlN2O0FaMFk4Cno+NTxpe3dtbSR6QTkoWDgmPEQ9S15YJXlGKztv dk4zNTFEWUIqeTBsOyg7dFRoYXlyUjRTT3huVU1FdUdWMW5hfAp6UXx4Mk9QJC1iPXo8dTk3bz90 ayFoRysrdz13cG1rfDg1WTJ7dj54NGRVdUsxKzNmMiolYD4zNjRMXjU2XmtwZTQKek01QXJsJlRL bnp2OFN0KUo2NFdTazJjd2paVTJxZzE2QSlPMlQ0aE5HQiFkO0Q/UEZLXnlLTVE2ZTRoNSRFS1Yr Cno7YmpuS2YoYlJJNkcjQkYzezl0MENPdyMyITt0b2k+aVV6UE1EWXpARFolPEZWRlRWRU5mRU0+ eEszN3lXdGZ+OQp6bnB4QDdmIyNXd2NOQUI0SkxSMkdQRzt6U1RlOWxPITNBS0trV2VLQDk5QGJP bmtKX2o+ezhCZTcweFh0USV1Wk4KelpTU3E8N1FrRVNEbkRfKkFBUVZMTlE7UCpALSUqQTc1JiVk R01XV0MtTkBjZGpCXiZVNTt3TFVCJFJjbks8aShsCnoydFhJbVUwSFFjbEw5VW1nN0lZdyV+SEVh YiEtV2QpMUczNkBSaCMpaEpTak5MbkVMMG5TZipOMClHdGt0aVhAYAp6dzA1QEAoVWI3eEVjYHB+ Qio5UlVCJl85NFpmKFJtRTxeRzkhJUt7cVZudDUlS3IzYHNnI15QejdEREJsXll4PDwKelJRd2tz dDc3QHdqPFhpaEFgK1B0VXJgM1ZjQT13TW08fiUxPU9YI2oxbGd4PUdySXExbHU8cGZrb0RBd3M+ KFZpCnpYclNaUnFkfCN0RjxITFJOJlRNbVVUTT9MQmY3S2ZWN3czMz5gOU1KY0clb35VYG1kPF8k aT9RaVlqSkNFSEJfNAp6QHp8dSZMaDM1KURMczVpbkFOKU0/ODsyRWY/emRWTkdIZjNyOVh8Vmc5 bUk0VVFkVVRUT0BPX1p9d2FvaHtLJDEKejF7aUwhMzNifD1LRyVPWTZGYFU4cXJ7NFg3WTVWfj9Y Q0NRUVNyTy1JIWp3dUhAWSR8M2g4O1MwKTt3I2hGcyRzCnomTX1maVZNSGImYHU2eVAoeEhOTmVV eGhfRzV0ckZ0NVFgZWJnUUdidGUqRFY2NXs+Uyt8ZU9lKz5gWUFRfFg8OAp6Syo4fF9CVztNV1Vx RFpYcUZUTX5xY1FSTlc0XjJrJkw8KChnN1ckVGBnZGp0UHp4ak5VWVYrMGpXSiRQaDxXS3gKek5l cFZDO2EtZU4xXjB6MDR+MEhXJnlAc3w0WVlDbmQ8am5GbCFpKSV4a2lAZnR3RT9wJHdDZEZxLWoq fTlEY009CnpgPkhrZmJ+IUZLTEtzTnBHUXs2KFN4OWBPMjtMSiUrQGA9YFVWe1RVdEZeeGRre0RU ZXMyLVFUaGtoNnpDNyp6ewp6WjJGVkB5REFUbyVpOUNXKUJTbSZfLUFLeVJBYTEjSkkpMG5KRmxU TTU8Uil2MDUxPmlwe2RpbzJHWn59TnZ1dTkKempVUSkjTH02IV9xOVZyUmpBdH4zVkw3S2thJWV6 MG9FJUl7aCQ0alRvOzdWIyk/ekd0S01RPSRMdSF2QmpidHQ/CnppYGRSY2A3VHYlcDBtKmNMPili WVYpYSVTNS0wdUc/eFhgcmteTTw7YG1AZHB8SGE8Zj9iQkZ9Pi04STlLMkYzUgp6dCpJU0YteVND RGo3T2hvazNhYWhaKlR1NWJiZnloNXEpek97bm9XKXs7ZXk/JDk/Zil3PmdPUFMtQCVXQ0xoI2gK ejNKNnNZMiNIUEl2ZWNtO0h7eyFVOGxrN2l5RVhHaXhqXn5YamZNSj9DVXkwQ290WkRXc2xpbWM4 V09CcUg9PWNMCno3e1hpMUAjXl5XJkkwP1AmcWVSSEozNzRQVVR+WEsoOH5UaXo/UFE2RkdaNTlM JmNMMzFYcGt7I04hZng4O1VgaQp6YmNnS1g2IzN1Rnd7Wj1wdFA/Z3ZLfmF8c1pDS2c8SWJNVGk+ Jlh4JmI9UE9NRVIhSWdsO0RBOCk2IWxrdmxQM08KeiYpKl9kbDJIZVJ6eEY+X3tnc0h0eXtxUUIl RU9LZTx0Nm0lbEl1PkhjSUQ5dk4lTF5Ud3BpdF5HZTh4bFE3TyViCnp3PnIpITlRTitRan5TMVdD eF9La2w3bG5tWlJZdmc8WS1kbDJUZH18Vz9NNmRANzhycjRFY2JlNFo1a0BZaSgtbQp6JT1we0FV R2JHPjNqWCE9WTFecC1eeXN9MG0+YEgxbSV0Y3Y3O1ImeVNaQHppRVo9RVFNc2smfE4qflZzRUFq PEsKems+P3pEUEk3cX5uUSYpXkE3OyhBMEVkO3QrPSh3WUprXlNOOCsmX01YbW9vUVpaZnBIQjBz UV9SPXM9Kl9VQyV8CnopbkZTc2FWX2VRYnZvfWk7TTA/VkUpQDY+R1RZbnxlT0dCUmgoUXFGbSE2 UmxCYFcoeWE2Yk1xT01pJG9PUyRMKQp6OWsjbCVKJTJ+U0dZXk1FRXNJeGJpYkNvanNpTXFMJllX bG5QbDc0P3hHYWBNcEhiWHZ1QUk2bitRS2lSdDNZTnkKenYtTDF6X3NqOTVmeTlvV0l9clI4Ym1C e2hQUDcyb0Z+c1RjPzMhZn5EdmcjTmR6MjBiKmZvbUU/SDMobmMkX3pDCnpqaFYhZjx2V15rUkox NEhARzlna21kTSYzMHdFbnJNJWh8eWJleEhxTmFeeyYlMDU2VldFRS19MEVkdUVCRiUxJQp6Q0s7 NjBBa0lyaVN1bGU/VyFVR3Rgcz1OcD52O1ZVd0ZYWWs0R3RRRFpkcn02cGtxKlU/LXJ+JnJQPHFt PX01dHIKenU8aVBFUlV5dkF3aGF9d1NIOU54bXE1eGNaRmhYdXxFQlV1Y3FJV15hUllTeUhaNzRC dFArfkgpYkFQeHF9dysmCnohJnExfnZVfXdiayheVi1NUEglRWFhTCYoQ19LPzIoKXBTTWp+WDZP ais9SlNYO2pqZEE2eClRKSVTKy1oRC1+cQp6Vz9SMjFfVHg/SFpMMnNIT3tYQUptIXtLUmAlPWQ9 ZSFCSFBScG5uRzZ3VmhDPVlUU1EzMjVnJmt1RSZUfEpyNW0KejgjPmJ6Nko/Ym5qRCVFKVVRPHhF Z1U4PnEmJVQrbChCI3xvKl8qe158NFowV0ZHRit9Qjs5M0MmaWBOI1IyVCYyCnp7JnQqcXtebF9n Yjt5YTJkc2xPYFpzYnN6QDR0Y1QxQ0wjX288Um8+OH5eaFFEQkFCSXhwSCM5ekJ1PktvPyliYwp6 IzJkSVVsZmExQ1R8Y3RKZlRGPyFAdG5rX08oJTZNZCtVeDQ/LXtTdTUzRkByPTA9VWsqeCV3UVFw JCUjbGFoc28Keig7UWtvd0VAaWluT29sTT49cn5lSysob0YlaTY/IUgrQU07Jik7MDE8fnx5MSlv S04pTT5qWk84WU8oIyh6M2BQCnphbGlrVnZXZj1mQWFefDdHRXVaVTxuK0o9Wj0mR1FVYC0wUkoj VlcyKG42WmdvcVNtKyE5dHUjbSlIeGFGX2BAbwp6d05DdnppV29PWVIwQyh4cW1hOS1jRktBa1Q+ fCpWa3E0KVFDdHx4VW5peGUxdEZXKyZBaWZOTTdzOypDUGZ8REUKemYpTmYlbnJwO048bW8+M2Nq WipnVkpPPWdvck5zNVBCcX56WkI2ZFFTWG17SSZvaHdIKyE7dXxYZkA9IUxvd0VlCnplSWJvak98 dH1iWjhBTlZIXm9ARkJgbEJZQWxjSXBkK08wZ0ptdzBVTG42RGo+aDZ+fD5kMk1xdilkZkNNSiU9 Wgp6bnl3YFlyPTVvPFo3ZWdnWTNkMEFRP00hKSRKIXhAbzY4QUxjKlowb1UlREVDTF9RNjJ6cCVO alkxblZaWUlOZW0KekpNam41U35iTWx2SDBUMFZuRDRgRj1YX2xPK3p1eVFrX21oVXFnV0ZlZH43 SnlrODBBVnA8cHxNYlNCKDBXMTVzCnowVmtrdHIpanM8THd9YUFUcz9IPkVyfWJWPzE4RiFJRSpK TSY9PSYrVzItSnpjVSt8RzNzRGM5ZShSZGxAc159bgp6WFoqZDQ8X09KMk4yNnxERmg3flQkRClU YE1zX3VYZkk0JWx0P0B7fGRBUlhCeTRZdEtFYEh0cjAtTm9ZeFozKzsKemF8N0tFczB6KC10MEJn Z0FCKiM5MDFrYEtCJTgwWUBpbkRKQWNaNWsxU0RBQD51bXA8TD07NjNyQCQjZFVNZkxwCnp7QyVi WHpRWSZgV2x8PkpTZV8qUXhSe29GajZiPXllTmdKYTxzTE9oJVRlOWMqdSR4Xmg7SmI1ZF4lMnZx en5LMQp6QUtCZz52dm5XZ3UjfHcoUSNTakxRO1c2XihwbEtsYkBIRS10S150YmI3N0IzN3dUIygz YXVobjtuc2FPVXlMbncKej1YNEUqNFB0YD5pXjhqUG93YFhYQEY4dVcmSl59PDM0RUdgPHZpVSVw O3dPRW1PRz4jMEQ8PkIlYD9qVnRJQWNGCnpUZ3JGb0N6JjZGQihTPlQqQ2BZYl4lb24oI05iTTtk Uz92aV5XKTQ9aHsoN3JLPnRGJmIhPDFMM0BkaTAoMTV0dgp6fDVEO1dUNFQ0aEpzfEI5Q3Rzalkp ZUpeUmV+QTxFQ3JJVV5GPW9NZFoxI0hFS2BzTyg3Y19BYVpEUWxtQVhrRm4Kelo/bUxHJnFnJD5k fFV6b2MmZzExTSpHKzQxX0V4KDFjbEp2I25eUytYQz45RGtOQilYNUooQU9PZmljcTxkYmk4Cno5 fCUrVzAtIXIlQW04bVNVcShIQnojOEleWiVlUzYoJX1mdVc8NlkteFdQMntSLWY0fCE/TWR9ekp8 MDl7S059LQp6SXdvNTBEKno1cEBnQ1QySXd6I1FTYDc+OFhSb3VKdmRvUCVQRE12Zj1MYjhRLUxS X1hpUlc3cDlIcW9IMTZqfl8KemJQfVNiIWRTYjYyTFNtc2pkNk8zdT9IME1NYkhRdjQ9V2w3OFgy LTUwKmdwJCRETmUrXnkmRzFqdTcqfFgkXnBBCnpjUS1JPlBoWmpYVCFDNylUXzJhX0xjVio0N142 SlhhSTliS3AlYFZXbjwwfHhkQk8pMlRoKEA1Plo4eWtzME9XTQp6ZGhkYCsjRVNyJW4xTyhNSzJm TWFoN0E7Q2xfaiRLTXJ0KmhjSlJgOF5AaUdJMVJ3SUA7SzNXR3l6ZjNoKn5hc0cKemlROXRXZWt5 V2p0NTgyJUlUaUUxMW8qZDt2YChKIUlxVFBRKWlVaUNfQmA5MWxVQE14XykhR1l4ITcpMW1CeTwj CnpYUEBCKDFkOFVFPShGQXx4fEAwcD4jWDNaT0VzYUxBcyliN25BOE87ZzdPKl5KQHtINEUwTFpW SnQ0NyRvWCN3egp6I1Y4cigzbERaPTswbmJxdXV5Pn00c3whck1zRUpnYShKVCpYcURQYTZDRTFm PH1jXjA5Yml7bjUpRH00U0JHfDUKejEoMj5ELUZYPjJwfm4rdGA5ez9jJFUlVkpWZWBWYnNleFZH OGY5P3t5alN8c1A/aX15azNueUJHcmByMXd7JGg/Cno+aU13NEEoKjhEZzlNSEJ3RkJiUGRaSHhn KGdRKGhKSDdGTjZqbE5+ODMtT2lFTFJCa0o9XyFhZjIlJiYkdW9+eAp6MG9sVEBNPVl2PFRNa2Rl cWkkTnBwQS1NKG5ReEQpVkwxPlAhQ0NSXnBKRT1gNnZhRVFWQ0xnK2JfWmF3ai1lSlYKenQlZzN1 MGNuNjs2SGtqcVJRQ3NfeCNnMEQ+T248ZVJwbkhOTm1nK1pgRW58ZT01NVd4YThQPkRGSThtb0RI LXZKCnpsZUIyZzdsRl56VCF4LWRaIytFTUE5V3s8TjspNmslQnI7dGdKbGEzKitobDQ7O1RRa0BC X0R3LXErYTc9QlJmWgp6STUmVW5RSGhyWTdjVT1uRThnbmtzK2JMZDlEYXJXRWl9Vm88YGhOdEdm MWteTHkoJXY5Mm00ZD9hTVo1QEQwOTkKekZQOX5GOThQcWlpU2FXO0wzKyF2KTVeWkFQY0VPKWso SDdua1ZpU3Yod1MhV2ckQG9ENkVqRFB1SUlKTSUlSVdTCnokRSF5Q3pqUStPQi0lVFFNRHpoSUth c35RalViOFhYOUshe0t9VDE5VlFRO3ZKUW0zJkhXSUNNbzVOamE8Vjx3TAp6IVNGNmk3fXdMa1d3 eUl2P2Q2PlpoRWd1JnIqcUx0PC0/flU8cE11Oy19aEMkenk5Xl5GOVhiM2dwRWAwR1ZeN1EKekpv O30lPn18QDRAZzdkVXFWLWhiLSk3bThaJjJRP2UxMTFKYmhta1VwS0AqcV4oKmNpd2Iqfjg4UlZq PVp9ZkFYCnppNHF4aFNiYUA+JHIoZUR2RnRqeFgjKTFZMyYpN2RCO09kTl5xMX5LSkJ9a1VkcyMp RGU+VzltZGE+eGNVeChTUwp6ZlJtKX0mTFotP3NlNnlgYCQwQWh6aHpyViFIQSgkRkNgS3w0azNj VylZSXYqKUFadSpeWlBWMk81VjM2RXdxQ2MKemwrV3JLMFdQJSltZldDVXtWJS1AWGhRNHVMe215 KkNlNEl8JG44KWtrd0wwPmhERV4mVygjNXlhTT8lV0MzeV9DCnpNQip0K2t9OWlzZWhwJDFXOyMy Y3F8PGNLUVlTO0tyITJmeyZIQ0tzYCQmeEsxdnt1Tkg3ISFEXjU0NV4pP0d6awp6amomSlpXQ0ht R245d0hpN3BwTFMlP1ZBRCRvZSNXKlhiUlhkRWU3S0FuVjNjMCtjYFBsVFNDQHNmPkFxb2luPnEK enE1aVJediR1STd6KXx2MVZgaGQ3Nj1lQX0tWHNwcGE3N3A0JV9NKkVyUTVuS2V6OzlBWjI2fShi WSFUfSk9JXJ9CnoqRHFxcUJmUDMqNUNjcXBLcUJuYDteWSZ1YlEwPCs2aCg4cjdpTSpSNHYqRmBJ IXIoQjRZOVYqP35xPmMyJX5hYQp6bnxBPmNhX2Q+T3YyZDxhfDI1KmpgJHtxfWxrNmNgOyhZNDNC clJqTS1+TEFmZzxJeFcralUlaFkrUz0yZ1c2fkIKelRmbDcqITY8aD5ZaDBBallCSSo+PF5+fGUj M1QqQkktUkZNXzYjTD9gfGBGRHdHcUk2Q2UpbUVNRFlUJUVAUmhMCnpMP0llMT9hSEcyJihWSVh6 dHd0QDBhT1k5UXwmbmdXTUA3SFQ+P3lYcH0qczh5ISVnJEhKMlVgXklHKmlOczU0UQp6ayhpLWVl WFNadyU/QW83c3sjTDJ1dER1LXdOYUcrUGVtdnc4RlJZOWRhJllfWXFjNms9NmIpdTROZF43SUZ0 cFEKej8qM3hCK2hTc0QxViMtVWtARWNeYjQqITIrX3piel8xbTBAV0NILXkzVEVCcyNuPUc7K1h8 cX5VcT8kXmRyU2V3CnotMXdxbiZVLWZfNWh6MUYwI3lFbSEqXll0JjsjPjMkWHphKW5yaE1nKSgk KGlUd2lQZ0IpOHwyTDRiMyQwIztaTgp6O0xWLVVDVTB8PGA0JUhSYllZYUFSc207IyhONXZlPl9x UHxAN1JnRUAzcEZCdTlTNT9VfTFkR2J6NXBfbHRRNDgKel9EPipUUzJ6M0Y0bDtDYDB0TGwqVzxm a2tTJFJmNSl0S0t8LV5LLWhgITVUUExxfFh5ZEtrVCZZJSQ7ciZ2NEpMCnpGb0VVK25Gfj1NZ21o aU1DNWVnRVM4bUM1JFJIPi1US3I8fHM2Z1dDc2pwKXl6VTxsO1pGdj4zamx4e3wjfTI/MAp6LWUo VX4tWklYQkFSayswRkZqIWBXKW1vOzBpfDBDbyQ3JV5CZiM0b2hHOH59OFVQaVYzPHx7V2ZHdjQo RypkTykKej9lciEjfDNXYkBNSXdefU5LP0dnVnRrK2BtVCZDKXtiQG0wPiFJMT0odS1yN1hUNGUt YSg2b202QjdxV2JLP3lUCno9JEtQO05fZCUyYXxPbiZWfGA/Kyl2VDdnbXdNaVlIaktYR1BiOz85 aiFPOHM/dzllJHFxTy07TSEkTGk9akdtaQp6cyVgSjMyI28rOyRxVm15NXUwcUZNJXZhZHpXY0Z5 bkA+ajIocEtUR3o4SVNXWUxUZkN3NTs8JEJJRkhXeyooXzsKenUkcCg5UG5tVXNRdGk4KyZiayti KGZBNGFhcldZNDdkQChDYDxDOWw7bCVsMFkpQndHK1dwSVI0aFFBNiRFSEwrCnpmRCNKZDxiTCsq ZX1GQmBxREoxajdzfk1rKnk8Yz9qY2NEUGhKYXUtXlJeUFdrYVFrTWZCY2hKZl5iTmswRTBIYQp6 Kmx9OzgwRG1rKDh3UEMzZHFZSyVXYjAjfj5pZ2xoM24xYUYydmhfYllhMGdNVE94OENOTHk4UFA/ JWwjPFR3eSkKent1P3xqYzlfJHtAR1doZjR3UENIcUlTJTwjaUpOfSNnISQqcTVEMyMqcFBHZk9V dzVHVTVvJEk4dWtvb205bGhnCnpWfjspM1JAVzM/e31NTH1Ccmhwdy1oOGBGI2x4VmszUyktOVAy JmBvViRZI3lXfjNjIUstSzMxXj5yVjArJlBRYwp6eWhMcGwkajw+YWIxRnk9K0ZPPD5VQV5FOTl5 S1k5MXk3cEdXQns3I1QxU35JI0x9ISpQI0srX2xWd0lQXnk4eGQKenkhPmpCNC1hfihuXnIrZjt7 Y3xsZXNiK01JSUhLSit4NVdSWTlyc2Y0QHlrbzgwYiljaWpuS2RmfnYrPCRhcUxpCnptLXcwXjND eGhMeThuY0VuMTktcVlkLW4tO0tAUj1mZFp9QmhrTF4qanIlMUl6UXFPXm8yK24oejtjSHZ2c1Ij VAp6X2hLTChoaC1XUnNwWl9uKFJTKFZQZUY7UXpNVnNnIWVhO1FCNEVFb1oxOEd+V0deWDxValhy Vmw7U2sldjVNViEKej56IypreiZ2N1dJVH5lP1VSRCZDZUlOI0JxJnMpRVp2TksxYSlRT1J4IVNi K0NnRilCUFg+S2sobTYpT3htV01ACnpGaUAyTFQwTGMzNjllTWUlRGVsNi02JH4+P2tSRUphK2JY PFFMWCRVRSExKHlDRV9JMW5zM19xWD4leTRIWiQ8Owp6bnhqTFlDUk5gNWBZXzljPUtpVzEtYH1G MzBGKUsxN14oJiV7aHtvSjAjaEFsSFpgdlh1RE84ayspQGNodVJAYk4KelRoWC1ySUg5cilJVlVS Vm9ue3QtVyk/IXNhNXpJVCZFKmdBP1VpLTFVXn1TeV9IST5sYkpvb0pBLVIrQlJeWW9LCnpuQlVS TlM0SDhUIWBxdCM9fWd0cEMmI3t9fDF3dTI2ZXlAMiZVanI0cF9UPippMCQyJEY/alNfalRURlRS TGlRQwp6N0VDY0ZQQmxJelVicnVxTlljPihBNUxyeXtWJUA4T1VfVklsZjdqY0cmbyg1OTZ4NyhE RVJsaUQkMGlLdThFc2AKekQtKEF7NilYT1VwKGVZSD15djN0d3U2Q3E7NjloIz5wUGwoNn1pKHsz dWZpO20oZlBQX3Zpczl0M2JHdytURU1YCnpGZHJ1TktUYEoye2tPbDc+O1IoJURUT3JFenMmNmVY OEhEVi0zZ0I9aWFWMlg5fCVXcWppPSk4eTRNMV91azBDewp6eVlzRVElIVpvdzFZYE1rLUczK0lX S0g3Qkpkd1F7cVpCYTQ7QUg7MWY0ZiZuMWlKc2FVb0NKcU1xSTNpaTQ8TWMKelB3JT5+TThvTWZp ITVsbFZ8Nlc2K1JKQlheQS1PTXcqRlR8fEVyP14tOWBVPChFZWphez9gYCR1ZXR2Sl9oX2pvCnp6 UGBSY1BAPjxocSRiPG5kM0JYaXojWXcwKUw3aVBCUjtfUUBnZExONkArSCUwIzI7SyNBZik7KF4m JjklTGIqZgp6O20kdWMwUkdWI0krMXpqcG5kfCpjb05NOGVDTzdqZmo2JjJtNThiUj52e3tIOGZ1 bmV1QzNubno1PXx0cEd3QyYKenxJVEJvMHEmVzJXYmlLZ15QTDNudm0mKTgzVXxqSkpNZThXaU8j O0k8X15rOztAdnBDV0J8OEcwa2g/fTZLKjhuCnpXT1daKld4VlVNaDBhaU9DKEB9bD5GJDt1Iz4y IVdOJGBLYypFdkEhdmAyN1N7JSQoI2ZTMTxHWmdfdkUxUDRJTwp6K2EhSEVAOXF7RXBjblIkbmRm Jnk2IyZGcXhRMCZ0bUxAKz8kO0pqME9sRTArJEw7e1oqMU1KZVhaSXgxdDU/RTwKejtYKjRncm5w VmE1cDlBT3lnK1VGSik4RjtDTVJBdjBzWUg1WWNgXmxAfSYpXiZIVUtTSTQjJlA0T2E9c3pmNU9H CnpnSzVZRlF8Z1ljY0hvKFByJEpge3ohSXMkWHYhaXAxSTlHJitxZHQ5NDZyQ0hJKGAkV3okKCRh a2hTJHYlNEdrJQp6aDxCSUhwR0F9K1VnODw1aGxeZSY9bG47QT9HaTdMYXtGR0Voc2RBLUpBZ1V1 MUxMLThTUFY1Vi1RQC1yQmlvQ1MKeiU4V3o2QkN3VHohKEJ1WF8jeklOVyV0Z0ZNJndUc0p6KGRq cnMzXjhMQER3ZVNSQX4yZGszaz1DOzthRGhzLShPCnprekU4Vip6JXVHTHM7Sm13NFBmJlZLPF8p Ynp2e2lqbiZyTTVoYUYzNDZ0PGwhRW9DYVFMZEhpVUFUVUlkZW1DOwp6JCUjTWItcm1gWWFLPU5Y d1BEJnt6eHQqRC04VG8+ZVl9aj9yJWdaSDJ8PCl7SVk5VF9lNFBDcjtsMzxqO2g2bmsKej1TcVpl SC1XeXxib319fnEmZnB3JTNlUUU5RUA8eENTWlcyX09JV0kyKFQ1djslaTt3XkpOSHNyVUx6V1N9 d2pDCno7bS1oSXhnVyFQLVdPNXFwQXJNczhNZ2JyYDV+TUxEakNgNCV8LTxMNmtUQXpTSiU5cWkq Tz5TaH4+MzA0fjVyUQp6OHFxK0x6eH12bmpjfXFBJj5LPH1kNUdnOTA9NUI3ZSlEbF9JbF9zaXoo UmpDZk1EU3w4Ykc1ZDIkblktTXpoI3gKejgzWmtxTStAblpRSHohNlVocnlyeTYpcWgwN1B3Xihg V341RiktJkt3SFM1QHpJZzR1XjZJOGRjWTVkRU1zI1VKCnpeYTdxZm5YPkFAODxVPHg/Nj0rX1Ng UWBhN3M4ak85eGZeYCVSPnlmVVNJfVImdkZ0ZXlBZ3twRlUkcWomKGBNSwp6NWt0VCk3PWlVWEto TElFTThvS1hBRnkzRWNYbCt3XyU5NnlRZXkxUyE0QFpqVFE8a1VIKkIpbSpaQ2dkSXQ+QSkKenck JUxgdTtMQmFmOHpsKlNtYzxGWkFVYWxzJHZ4R0EzUkBxK1YtRjhoVGt4aTQqZ3N1Jm1QcTglYDRw ZytKdEYzCnphMVdiSz9HdDVyOzleMTMmfGxaTllfLXltT2k8SG8rLUh+Y19KakRSY090PCk3dzZZ blo/QXZjWWtyQnstb3AzUQp6WU5KbWFPYG19Q2dfR2lkSkhIO2pLV0tgdVQwfG96O3A1VGk5PHwq MWRrVjRfd3UqVGZwRVVfcWF4R1ZUZVRlckIKenFSRHdjTWI5OWxQV0RhaHl+VWYoRDcheFhybj4o QnYpVEQ+U0FXaC1wVnp4bVZsOE5ZOXFfMTt1JFJDaWd7MVFyCnplYEJqYmo0Q1dSYTcxTVNiNih3 KDg9czJoSzdUJjx7ZFdCNElqWlp1QmpnTnxUJT5IUE5gQlJVWX4mV3ljeWY2VwpQPXA7USlTM2oz XlA2PHJfSlRufikKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL2RvY3MvZW5f VVMvcHNxbF90b29sLnJzdCBiL2RvY3MvZW5fVVMvcHNxbF90b29sLnJzdApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZTBiMzI4N2UKLS0tIC9kZXYvbnVsbAorKysgYi9kb2Nz L2VuX1VTL3BzcWxfdG9vbC5yc3QKQEAgLTAsMCArMSwxOCBAQAorLi4gX3BzcWxfdG9vbDoKKwor KioqKioqKioqKioqKioqKioqCitgUFNRTCBUb29sYDppbmRleDoKKyoqKioqKioqKioqKioqKioq KgorCitQU1FMIHRvb2wgYWxsb3dzIHVzZXIgdG8gY29ubmVjdCB0byBQb3N0Z3JlU1FMIHNlcnZl ciB1c2luZyBwc3FsIHRlcm1pbmFsLgorCisqIExvZ2luIHRvIFBvc3RncmVTUUwgc2VydmVyIHRo cm91Z2ggdGVybWluYWwgaW4gcGdBZG1pbi4KKyogZXhlY3V0ZSBhbGwgdHlwZSBvZiBjb21tYW5k cy4KKworLi4gaW1hZ2U6OiBpbWFnZXMvcHNxbF90b29sLnBuZworICAgIDphbHQ6IFBTUUwgdG9v bCB3aW5kb3cKKyAgICA6YWxpZ246IGNlbnRlcgorCitZb3UgY2FuIG9wZW4gbXVsdGlwbGUgaW5z dGFuY2Ugb2YgdGhlIFBTUUwgdG9vbCBpbiBpbmRpdmlkdWFsIHRhYnMgc2ltdWx0YW5lb3VzbHku CitUbyBjbG9zZSB0aGUgUFNRTCB0b29sLCBjbGljayB0aGUgKlgqIGluIHRoZSB1cHBlci1yaWdo dCBoYW5kIGNvcm5lciBvZiB0aGUgdGFiIGJhci4KKwpkaWZmIC0tZ2l0IGEvcmVxdWlyZW1lbnRz LnR4dCBiL3JlcXVpcmVtZW50cy50eHQKaW5kZXggZWRkNzAwMGIuLmZiOGYyNWNkIDEwMDY0NAot LS0gYS9yZXF1aXJlbWVudHMudHh0CisrKyBiL3JlcXVpcmVtZW50cy50eHQKQEAgLTM2LDMgKzM2 LDYgQEAgc3NodHVubmVsPT0wLioKIGxkYXAzPT0yLioKIEZsYXNrLUJhYmVsRXg9PTAuKgogZ3Nz YXBpPT0xLjYuKgorCitmbGFzay1zb2NrZXRpbz49NS4wLjEKK2V2ZW50bGV0PT0wLjMwLjIKZGlm ZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IDI2NDNlZjE5Li4w MDJhOTk1MSAxMDA2NDQKLS0tIGEvd2ViL2NvbmZpZy5weQorKysgYi93ZWIvY29uZmlnLnB5CkBA IC0xNTYsOCArMTU2LDggQEAgWF9GUkFNRV9PUFRJT05TID0gIlNBTUVPUklHSU4iCiAjIHN1Y2gg YXMgSmF2YVNjcmlwdCwgQ1NTLCBvciBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IHRoZSBicm93 c2VyIGxvYWRzLgogIyBzZWUgaHR0cHM6Ly9jb250ZW50LXNlY3VyaXR5LXBvbGljeS5jb20vI3Nv dXJjZV9saXN0IGZvciBtb3JlIGluZm8KICMgZS5nLiAiZGVmYXVsdC1zcmMgaHR0cHM6IGRhdGE6 ICd1bnNhZmUtaW5saW5lJyAndW5zYWZlLWV2YWwnOyIKLUNPTlRFTlRfU0VDVVJJVFlfUE9MSUNZ ID0gImRlZmF1bHQtc3JjIGh0dHA6IGRhdGE6IGJsb2I6ICd1bnNhZmUtaW5saW5lJyAiIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgIid1bnNhZmUtZXZhbCc7IgorQ09OVEVOVF9TRUNVUklU WV9QT0xJQ1kgPSAiZGVmYXVsdC1zcmMgd3M6IGh0dHA6IGRhdGE6IGJsb2I6ICd1bnNhZmUtaW5s aW5lJyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiICd1bnNhZmUtZXZhbCc7IgogCiAj IFNUUklDVF9UUkFOU1BPUlRfU0VDVVJJVFlfRU5BQkxFRCB3aGVuIHNldCB0byBUcnVlIHdpbGwg c2V0IHRoZQogIyBTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5IGhlYWRlcgpAQCAtNjM2LDYgKzYz NiwxOSBAQCBLUkJfQVVUT19DUkVBVEVfVVNFUiA9IFRydWUKIAogS0VSQkVST1NfQ0NBQ0hFX0RJ UiA9IG9zLnBhdGguam9pbihEQVRBX0RJUiwgJ2tyYmNjYWNoZScpCiAKKyMgUFNRTCB0b29sIHNl dHRpbmdzCisjIFRoaXMgd2lsbCBlbmFibGUgUFNRTCB0b29sIGluIHBnQWRtaW4uIFNvIHVzZXIg Y2FuIGV4ZWN1dGUgdGhlIGNvbW1hbmRzIHVzaW5nCisjIFBTUUwgdGVybWluYWwgaW4gcGdBZG1p bi4KK0VOQUJMRV9QU1FMID0gVHJ1ZQorCisjIEFMTE9XX1BTUUxfU0hFTExfQ09NTUFORCA9IFRy dWUgd2lsbCBkaXNhYmxlIHRoZSBleGVjdXRpb24gb2Ygb3MgbGV2ZWwKKyMgY29tbWFuZHMgdXNp bmcgbWV0YSBjb21tYW5kIFwhIGZyb20gUFNRTCB0ZXJtaW5hbC4KKyMgQXMgUFNRTCBhbGxvdyB1 c2VyIHRvIGV4ZWN1dGUgdGhlIG9zIGxldmVsIGNvbW1hbmRzIGZyb20gdGhlIFBTUUwgdGVybWlu YWwKKyMgdXNlciBjYW4gZXhlY3V0ZSBhbnkgc3lzdGVtIGxldmVsIGNvbW1hbmQgYXMgcGVyIHRo ZSBzeXN0ZW0gbG9naW4gdXNlcgorIyBwcml2aWxlZ2VzLiBEZWZhdWx0IHRoaXMgc2V0dGluZyBp cyBzZXQgdG8gRmFsc2UgYnV0IGlmIGl0IHNldCB0byBUcnVlCisjIFVzZXIgd2lsbCBhYmxlIHRv IGV4ZWN1dGUgdGhlIHN5c3RlbSBsZXZlbCBjb21tYW5kcyB0aHJvdWdoIFBTUUwgdGVybWluYWwg aW4KKyMgcGdBZG1pbi4KK0FMTE9XX1BTUUxfU0hFTExfQ09NTUFORFMgPSBGYWxzZQogCiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogIyBMb2NhbCBjb25maWcgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL3dlYi9w YWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IGNjMWUxNWFiLi5mYzJlODE5MyAx MDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93ZWIvcGFja2FnZS5qc29uCkBAIC0x MDMsNiArMTAzLDcgQEAKICAgICAianNvbi1iaWdudW1iZXIiOiAiXjEuMC4xIiwKICAgICAia2Fy bWEtY292ZXJhZ2UiOiAiXjIuMC4zIiwKICAgICAibGVhZmxldCI6ICJeMS41LjEiLAorCiAgICAg ImxvZGFzaCI6ICI0LioiLAogICAgICJtbC1tYXRyaXgiOiAiXjYuNS4wIiwKICAgICAibW9tZW50 IjogIl4yLjI0LjAiLApAQCAtMTE4LDEzICsxMTksMTggQEAKICAgICAic2hpbS1sb2FkZXIiOiAi XjEuMC4xIiwKICAgICAic2xpY2tncmlkIjogImdpdCtodHRwczovL2dpdGh1Yi5jb20vNnBhYy9T bGlja0dyaWQuZ2l0IzIuMy4xNiIsCiAgICAgInNuYXBzdmctY2pzIjogIl4wLjAuNiIsCisgICAg InNvY2tldC5pby1jbGllbnQiOiAiXjQuMC4wIiwKICAgICAic3BsaXQuanMiOiAiXjEuNS4xMCIs CiAgICAgInRhYmxlc29ydGVyIjogIl4yLjMxLjIiLAogICAgICJ0ZW1wdXNkb21pbnVzLWJvb3Rz dHJhcC00IjogIl41LjEuMiIsCiAgICAgInRlbXB1c2RvbWludXMtY29yZSI6ICJeNS4wLjMiLAog ICAgICJ1bmRlcnNjb3JlIjogIl4xLjkuMSIsCiAgICAgIndlYmNhYmluLWRvY2tlciI6ICJnaXQr aHR0cHM6Ly9naXRodWIuY29tL0VudGVycHJpc2VEQi93Y0RvY2tlci8jYzRhMzM5OGI4OTU4ODQw OGRjNzA1ODk1Njc1YmNlN2JkNzY2MGQzNiIsCi0gICAgIndreCI6ICJeMC41LjAiCisgICAgIndr eCI6ICJeMC41LjAiLAorICAgICJ4dGVybSI6ICJeNC4xMS4wIiwKKyAgICAieHRlcm0tYWRkb24t Zml0IjogIl4wLjUuMCIsCisgICAgInh0ZXJtLWFkZG9uLXNlYXJjaCI6ICJeMC44LjAiLAorICAg ICJ4dGVybS1hZGRvbi13ZWItbGlua3MiOiAiXjAuNC4wIgogICB9LAogICAic2NyaXB0cyI6IHsK ICAgICAibGludGVyIjogInlhcm4gZXNsaW50IC0tbm8tZXNsaW50cmMgLWMgLmVzbGludHJjLmpz IC0tZXh0IC5qcyAgLS1leHQgLmpzeCAuIiwKZGlmZiAtLWdpdCBhL3dlYi9wZ0FkbWluNC5weSBi L3dlYi9wZ0FkbWluNC5weQppbmRleCBkMmJkMWFmNi4uNmUxZTRlYTYgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ0FkbWluNC5weQorKysgYi93ZWIvcGdBZG1pbjQucHkKQEAgLTE1LDYgKzE1LDcgQEAgdG8g c3RhcnQgYSB3ZWIgc2VydmVyLiIiIgogaW1wb3J0IHN5cwogZnJvbSBjaGVyb290LndzZ2kgaW1w b3J0IFNlcnZlciBhcyBDaGVyb290U2VydmVyCiAKKwogaWYgc3lzLnZlcnNpb25faW5mbyA8ICgz LCA0KToKICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1RoaXMgYXBwbGljYXRpb24gbXVzdCBiZSBy dW4gdW5kZXIgUHl0aG9uIDMuNCAnCiAgICAgICAgICAgICAgICAgICAgICAgICdvciBsYXRlci4n KQpAQCAtMzcsNyArMzgsNyBAQCBlbHNlOgogICAgIGJ1aWx0aW5zLlNFUlZFUl9NT0RFID0gTm9u ZQogCiBpbXBvcnQgY29uZmlnCi1mcm9tIHBnYWRtaW4gaW1wb3J0IGNyZWF0ZV9hcHAKK2Zyb20g cGdhZG1pbiBpbXBvcnQgY3JlYXRlX2FwcCwgc29ja2V0aW8KIGZyb20gcGdhZG1pbi51dGlscyBp bXBvcnQgdV9lbmNvZGUsIGZzX2VuY29kaW5nLCBmaWxlX3F1b3RlCiBmcm9tIHBnYWRtaW4udXRp bHMuY29uc3RhbnRzIGltcG9ydCBJTlRFUk5BTAogIyBHZXQgdGhlIGNvbmZpZyBkYXRhYmFzZSBz Y2hlbWEgdmVyc2lvbi4gV2Ugc3RvcmUgdGhpcyBpbiBwZ2FkbWluLm1vZGVsCkBAIC05Nyw2ICs5 OCw4IEBAIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShjb25maWcuU1FMSVRFX1BBVEgpOgogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKIGFwcCA9IGNyZWF0ZV9hcHAoKQogYXBwLmRlYnVnID0gRmFsc2UKK2FwcC5j b25maWdbJ3Nlc3Npb25zJ10gPSBkaWN0KCkKKwogaWYgY29uZmlnLlNFUlZFUl9NT0RFOgogICAg IGFwcC53c2dpX2FwcCA9IFJldmVyc2VQcm94aWVkKGFwcC53c2dpX2FwcCkKIApAQCAtMjA2LDE3 ICsyMDksMTYgQEAgZGVmIG1haW4oKToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQ2Fu IHVzZSBjaGVyb290IGluc3RlYWQgb2YgZmxhc2sgZGV2IHNlcnZlciB3aGVuIG5vdCBpbiBkZWJ1 ZwogICAgICAgICAgICAgIyAxMCBpcyBkZWZhdWx0IHRocmVhZCBjb3VudCBpbiBDaGVyb290U2Vy dmVyCi0gICAgICAgICAgICBudW1fdGhyZWFkcyA9IDEwIGlmIGNvbmZpZy5USFJFQURFRF9NT0RF IGVsc2UgMQotICAgICAgICAgICAgcHJvZF9zZXJ2ZXIgPSBDaGVyb290U2VydmVyKAotICAgICAg ICAgICAgICAgIChjb25maWcuREVGQVVMVF9TRVJWRVIsIGNvbmZpZy5FRkZFQ1RJVkVfU0VSVkVS X1BPUlQpLAotICAgICAgICAgICAgICAgIHdzZ2lfYXBwPWFwcCwKLSAgICAgICAgICAgICAgICBu dW10aHJlYWRzPW51bV90aHJlYWRzLAotICAgICAgICAgICAgICAgIHNlcnZlcl9uYW1lPWNvbmZp Zy5BUFBfTkFNRSkKKyAgICAgICAgICAgICMgbnVtX3RocmVhZHMgPSAxMCBpZiBjb25maWcuVEhS RUFERURfTU9ERSBlbHNlIDEKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwcmlu dCgiVXNpbmcgcHJvZHVjdGlvbiBzZXJ2ZXIuLi4iKQotICAgICAgICAgICAgICAgIHByb2Rfc2Vy dmVyLnN0YXJ0KCkKKyAgICAgICAgICAgICAgICBzb2NrZXRpby5ydW4oCisgICAgICAgICAgICAg ICAgICAgIGFwcCwKKyAgICAgICAgICAgICAgICAgICAgaG9zdD1jb25maWcuREVGQVVMVF9TRVJW RVIsCisgICAgICAgICAgICAgICAgICAgIHBvcnQ9Y29uZmlnLkVGRkVDVElWRV9TRVJWRVJfUE9S VCwKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1 cHQ6Ci0gICAgICAgICAgICAgICAgcHJvZF9zZXJ2ZXIuc3RvcCgpCisgICAgICAgICAgICAgICAg cHJpbnQoIkNMT1NFIFNFUlZFUiIpCisgICAgICAgICAgICAgICAgc29ja2V0aW8uc3RvcCgpCiAK ICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgYXBwLmxvZ2dlci5lcnJvcigiRXJyb3Igc3Rh cnRpbmcgdGhlIGFwcCBzZXJ2ZXI6ICVzIiwgc3lzLmV4Y19pbmZvKCkpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL19faW5pdF9fLnB5CmluZGV4IGE3 MzMzNTM3Li5hNjQxZWE2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKKysr IGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKQEAgLTE5LDYgKzE5LDcgQEAgZnJvbSBjb2xsZWN0 aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGZyb20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9k dWxlCiAKIGZyb20gZmxhc2sgaW1wb3J0IEZsYXNrLCBhYm9ydCwgcmVxdWVzdCwgY3VycmVudF9h cHAsIHNlc3Npb24sIHVybF9mb3IKK2Zyb20gZmxhc2tfc29ja2V0aW8gaW1wb3J0IFNvY2tldElP CiBmcm9tIHdlcmt6ZXVnLmV4Y2VwdGlvbnMgaW1wb3J0IEhUVFBFeGNlcHRpb24KIGZyb20gZmxh c2tfYmFiZWxleCBpbXBvcnQgQmFiZWwsIGdldHRleHQKIGZyb20gZmxhc2tfYmFiZWxleCBpbXBv cnQgZ2V0dGV4dCBhcyBfCkBAIC01MiwxMCArNTMsMTUgQEAgaW1wb3J0IG1pbWV0eXBlcwogbWlt ZXR5cGVzLmFkZF90eXBlKCdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JywgJy5qcycpCiBtaW1ldHlw ZXMuYWRkX3R5cGUoJ3RleHQvY3NzJywgJy5jc3MnKQogCisKIHdpbnJlZyA9IE5vbmUKIGlmIG9z Lm5hbWUgPT0gJ250JzoKICAgICBpbXBvcnQgd2lucmVnCiAKK3NvY2tldGlvID0gU29ja2V0SU8o bWFuYWdlX3Nlc3Npb249RmFsc2UsIGFzeW5jX21vZGU9J2V2ZW50bGV0JywKKyAgICAgICAgICAg ICAgICAgICAgbG9nZ2VyPVRydWUsIGVuZ2luZWlvX2xvZ2dlcj1UcnVlLCBkZWJ1Zz1GYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgcGluZ19pbnRlcnZhbD0yNSwgcGluZ190aW1lb3V0PTEyMCkK KwogCiBjbGFzcyBQZ0FkbWluKEZsYXNrKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms ICoqa3dhcmdzKToKQEAgLTgxMSw0ICs4MTcsNSBAQCBkZWYgY3JlYXRlX2FwcChhcHBfbmFtZT1O b25lKToKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICMgQWxsIGRvbmUhCiAgICAgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyAgICBzb2NrZXRpby5pbml0X2FwcChhcHApCiAgICAgcmV0dXJuIGFwcApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVu Y2VzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2Vz LnB5CmluZGV4IDIzNWRiMDI3Li5iMDkzZTNhNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2VzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvcmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcy5weQpAQCAtMTAsNiArMTAsNyBAQCBm cm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZyb20gcGdhZG1pbi51dGlscy5jb25z dGFudHMgaW1wb3J0IFBSRUZfTEFCRUxfRElTUExBWSxcCiAgICAgUFJFRl9MQUJFTF9LRVlCT0FS RF9TSE9SVENVVFMsIFBSRUZfTEFCRUxfVEFCU19TRVRUSU5HUywgXAogICAgIFBSRUZfTEFCRUxf T1BUSU9OUworZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQgY3VycmVudF91c2VyCiBpbXBvcnQg Y29uZmlnCiAKIExPQ0tfTEFZT1VUX0xFVkVMID0gewpAQCAtNTExLDEwICs1MTIsMTIgQEAgZGVm IHJlZ2lzdGVyX2Jyb3dzZXJfcHJlZmVyZW5jZXMoc2VsZik6CiAgICAgICAgIG9wdGlvbnM9W3sn bGFiZWwnOiBnZXR0ZXh0KCdRdWVyeSBUb29sJyksICd2YWx1ZSc6ICdxdCd9LAogICAgICAgICAg ICAgICAgICB7J2xhYmVsJzogZ2V0dGV4dCgnRGVidWdnZXInKSwgJ3ZhbHVlJzogJ2RlYnVnZ2Vy J30sCiAgICAgICAgICAgICAgICAgIHsnbGFiZWwnOiBnZXR0ZXh0KCdTY2hlbWEgRGlmZicpLCAn dmFsdWUnOiAnc2NoZW1hX2RpZmYnfSwKLSAgICAgICAgICAgICAgICAgeydsYWJlbCc6IGdldHRl eHQoJ0VSRCBUb29sJyksICd2YWx1ZSc6ICdlcmRfdG9vbCd9XSwKLSAgICAgICAgaGVscF9zdHI9 Z2V0dGV4dCgnU2VsZWN0IFF1ZXJ5IFRvb2wsIERlYnVnZ2VyLCBvciBTY2hlbWEgRGlmZiBmcm9t ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGRyb3AtZG93biB0byBzZXQgb3BlbiBp biBuZXcgYnJvd3NlciB0YWIgZm9yICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBw YXJ0aWN1bGFyIG1vZHVsZS4nKSwKKyAgICAgICAgICAgICAgICAgeydsYWJlbCc6IGdldHRleHQo J0VSRCBUb29sJyksICd2YWx1ZSc6ICdlcmRfdG9vbCd9LAorICAgICAgICAgICAgICAgICB7J2xh YmVsJzogZ2V0dGV4dCgnUFNRTCBUb29sJyksICd2YWx1ZSc6ICdwc3FsX3Rvb2wnfV0sCisgICAg ICAgIGhlbHBfc3RyPWdldHRleHQoJ1NlbGVjdCBRdWVyeSBUb29sLCBEZWJ1Z2dlciwgU2NoZW1h IERpZmYsIEVSRCBUb29sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnb3IgUFNRTCBUb29s IGZyb20gdGhlIGRyb3AtZG93biB0byBzZXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICdv cGVuIGluIG5ldyBicm93c2VyIHRhYiBmb3IgdGhhdCBwYXJ0aWN1bGFyIG1vZHVsZS4nCisgICAg ICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgc2VsZWN0Mj17CiAgICAgICAgICAgICAn bXVsdGlwbGUnOiBUcnVlLCAnYWxsb3dDbGVhcic6IEZhbHNlLAogICAgICAgICAgICAgJ3RhZ3Mn OiBUcnVlLCAnZmlyc3RfZW1wdHknOiBGYWxzZSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zdGF0aWMvanMvZGF0YWJhc2Uu anMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c3RhdGljL2pzL2RhdGFiYXNlLmpzCmluZGV4IDAxYWI4OWM1Li5jNDc4NGQ1MSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3N0 YXRpYy9qcy9kYXRhYmFzZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc3RhdGljL2pzL2RhdGFiYXNlLmpzCkBAIC05MSw2ICs5MSwx MSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5kYXRhYmFzZScsIFsKICAgICAgICAgICBuYW1lOiAn Z2VuZXJhdGVfZXJkJywgbm9kZTogJ2RhdGFiYXNlJywgbW9kdWxlOiB0aGlzLAogICAgICAgICAg IGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdnZW5lcmF0ZV9lcmQn LAogICAgICAgICAgIGNhdGVnb3J5OiAnZXJkJywgcHJpb3JpdHk6IDUsIGxhYmVsOiBnZXR0ZXh0 KCdHZW5lcmF0ZSBFUkQgKEJldGEpJyksCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdw c3FsX3Rvb2wnLCBub2RlOiAnZGF0YWJhc2UnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBw bGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2RiX3BzcWxfdG9vbCcsCisg ICAgICAgICAgY2F0ZWdvcnk6ICdwc3FsX3Rvb2wnLCBwcmlvcml0eTogNSwgbGFiZWw6IGdldHRl eHQoJ1BTUUwgVG9vbCAoQmV0YSknKSwKKyAgICAgICAgICBlbmFibGU6ICdpc19wc3FsX2VuYWJs ZWQnCiAgICAgICAgIH1dKTsKIAogICAgICAgICBfLmJpbmRBbGwodGhpcywgJ2Nvbm5lY3Rpb25f bG9zdCcpOwpAQCAtMTIyLDYgKzEyNyw5IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmRhdGFiYXNl JywgWwogICAgICAgaXNfY29ubmVjdGVkOiBmdW5jdGlvbihub2RlKSB7CiAgICAgICAgIHJldHVy biAobm9kZSAmJiBub2RlLmNvbm5lY3RlZCA9PSB0cnVlICYmIG5vZGUuY2FuRGlzY29ubiA9PSB0 cnVlKTsKICAgICAgIH0sCisgICAgICBpc19wc3FsX2VuYWJsZWQ6IGZ1bmN0aW9uKG5vZGUpIHsK KyAgICAgICAgcmV0dXJuIChub2RlICYmIG5vZGUuY29ubmVjdGVkID09IHRydWUpICYmIHBnQWRt aW5bJ2VuYWJsZV9wc3FsJ107CisgICAgICB9LAogICAgICAgaXNfY29ubl9hbGxvdzogZnVuY3Rp b24obm9kZSkgewogICAgICAgICByZXR1cm4gKG5vZGUgJiYgbm9kZS5hbGxvd0Nvbm4gPT0gdHJ1 ZSk7CiAgICAgICB9LApAQCAtMjY2LDYgKzI3NCwxNSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5k YXRhYmFzZScsIFsKICAgICAgICAgICBwZ0Jyb3dzZXIuZXJkLnNob3dFcmRUb29sKGQsIGksIHRy dWUpOwogICAgICAgICB9LAogCisgICAgICAgIC8qIE9wZW4gcHNxbCB0b29sIGZvciBkYiovCisg ICAgICAgIGRiX3BzcWxfdG9vbDogZnVuY3Rpb24oYXJncykgeworICAgICAgICAgIHZhciBpbnB1 dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAg ICAgICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAgICAgICAgICBkID0gaSAm JiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsKKyAgICAgICAgICBw Z0Jyb3dzZXIucHNxbC5wc3FsX3Rvb2woZCwgaSwgdHJ1ZSk7CisgICAgICAgIH0sCisKICAgICAg ICAgLyogQ29ubmVjdCB0aGUgZGF0YWJhc2UgKGlmIG5vdCBjb25uZWN0ZWQpLCBiZWZvcmUgb3Bl bmluZyB0aGlzIG5vZGUgKi8KICAgICAgICAgYmVmb3Jlb3BlbjogZnVuY3Rpb24oaXRlbSwgZGF0 YSkgewogICAgICAgICAgIGlmKCFkYXRhIHx8IGRhdGEuX3R5cGUgIT0gJ2RhdGFiYXNlJyB8fCBk YXRhLmxhYmVsID09ICd0ZW1wbGF0ZTAnKSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9zdGF0aWMvanMvc2VydmVyLmpzIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5qcwppbmRl eCBiMjFjYmE0My4uMWE3YTBjZWYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL3N0YXRpYy9qcy9zZXJ2ZXIuanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvc3RhdGljL2pzL3NlcnZlci5qcwpAQCAtMTAy LDYgKzEwMiwxMiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5zZXJ2ZXInLCBbCiAgICAgICAgICAg ICBkYXRhX2Rpc2FibGVkOiBnZXR0ZXh0KCdEYXRhYmFzZSBpcyBhbHJlYWR5IGRpc2Nvbm5lY3Rl ZC4nKSwKICAgICAgICAgICB9LAogICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAnc2VydmVy X3BzcWwnLCBub2RlOiAnc2VydmVyJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6 IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzZXJ2ZXJfcHNxbF90b29sJywKKyAg ICAgICAgICBjYXRlZ29yeTogJ3BzcWxfdG9vbCcsIHByaW9yaXR5OiA1LCBsYWJlbDogZ2V0dGV4 dCgnUFNRTCBUb29sIChCZXRhKScpLAorICAgICAgICAgIGVuYWJsZSA6ICdpc19wc3FsX2VuYWJs ZWQnLAorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgbmFtZTogJ3JlbG9hZF9jb25m aWd1cmF0aW9uJywgbm9kZTogJ3NlcnZlcicsIG1vZHVsZTogdGhpcywKICAgICAgICAgICBhcHBs aWVzOiBbJ3Rvb2xzJywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdyZWxvYWRfY29uZmlndXJhdGlv bicsCiAgICAgICAgICAgY2F0ZWdvcnk6ICdyZWxvYWQnLCBwcmlvcml0eTogNiwgbGFiZWw6IGdl dHRleHQoJ1JlbG9hZCBDb25maWd1cmF0aW9uJyksCkBAIC0xODMsNiArMTg5LDkgQEAgZGVmaW5l KCdwZ2FkbWluLm5vZGUuc2VydmVyJywgWwogICAgICAgaXNfY29ubmVjdGVkOiBmdW5jdGlvbihu b2RlKSB7CiAgICAgICAgIHJldHVybiAobm9kZSAmJiBub2RlLmNvbm5lY3RlZCA9PSB0cnVlKTsK ICAgICAgIH0sCisgICAgICBpc19wc3FsX2VuYWJsZWQ6IGZ1bmN0aW9uKG5vZGUpIHsKKyAgICAg ICAgcmV0dXJuIChub2RlICYmIG5vZGUuY29ubmVjdGVkID09IHRydWUpICYmIHBnQWRtaW5bJ2Vu YWJsZV9wc3FsJ107CisgICAgICB9LAogICAgICAgZW5hYmxlX3JlbG9hZF9jb25maWc6IGZ1bmN0 aW9uKG5vZGUpIHsKICAgICAgICAgLy8gTXVzdCBiZSBjb25uZWN0ZWQgJiBpcyBTdXBlciB1c2Vy CiAgICAgICAgIGlmIChub2RlICYmIG5vZGUuX3R5cGUgPT0gJ3NlcnZlcicgJiYKQEAgLTcyOCw2 ICs3MzcsMTQgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VydmVyJywgWwogCiAgICAgICAgICAg cmV0dXJuIGZhbHNlOwogICAgICAgICB9LAorICAgICAgICAvKiBPcGVuIHBzcWwgdG9vbCBmb3Ig c2VydmVyKi8KKyAgICAgICAgc2VydmVyX3BzcWxfdG9vbDogZnVuY3Rpb24oYXJncykgeworICAg ICAgICAgIHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAgICB0ID0gcGdCcm93c2Vy LnRyZWUsCisgICAgICAgICAgICBpID0gaW5wdXQuaXRlbSB8fCB0LnNlbGVjdGVkKCksCisgICAg ICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5l ZDsKKyAgICAgICAgICBwZ0Jyb3dzZXIucHNxbC5wc3FsX3Rvb2woZCwgaSwgdHJ1ZSk7CisgICAg ICAgIH0KICAgICAgIH0sCiAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwu ZXh0ZW5kKHsKICAgICAgICAgZGVmYXVsdHM6IHsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL3BhbmVsLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMv cGFuZWwuanMKaW5kZXggYzllNjQxMzIuLjMwNjhhYWJlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3N0YXRpYy9qcy9wYW5lbC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0 YXRpYy9qcy9wYW5lbC5qcwpAQCAtMTIyLDEwICsxMjIsMzAgQEAgZGVmaW5lKAogICAgICAgICAg ICAgICAgICAgICBteVBhbmVsLm9uKGV2LCB0aGF0LmhhbmRsZVZpc2liaWxpdHkuYmluZChteVBh bmVsLCBldikpOwogICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgIH0KKworICAg ICAgICAgICAgICAvLyBMaXN0ZW4gb24gZGV0YWNoIHBhbmVsIGV2ZW50CisgICAgICAgICAgICAg IG15UGFuZWwub24od2NEb2NrZXIuRVZFTlQuREVUQUNIRUQsIGZ1bmN0aW9uKG9iaikgeworICAg ICAgICAgICAgICAgIHRoYXQuc2V0Q29kZU1pcnJvckhlaWdodChvYmopOworICAgICAgICAgICAg ICB9KTsKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICAgIH0s CisgICAgICBzZXRDb2RlTWlycm9ySGVpZ2h0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gRml4 IGZvciBtYWMgb3MgY29kZS1taXJyb3Igc2hvd2luZyBibGFjayBzY3JlZW4uCisgICAgICAgIHZh ciB0eHRBcmVhID0gJCgnLnBnLXBhbmVsLWNvbnRlbnQgLnNxbF90ZXh0YXJlYSA+IHRleHRhcmVh JykuZmlyc3QoKTsKKyAgICAgICAgdHh0QXJlYS5jc3MoJ3otaW5kZXgnLCAtMSk7CisgICAgICAg IHZhciAkdGFiQ29udGVudCA9ICQoJy5wZy1wYW5lbC1jb250ZW50ID4gLnNxbF90ZXh0YXJlYScp LmZpcnN0KCk7CisgICAgICAgIHZhciAkc3FsUGFuZSA9ICR0YWJDb250ZW50LmZpbmQoJy5Db2Rl TWlycm9yID4gZGl2ID4gdGV4dGFyZWEnKTsKKyAgICAgICAgZm9yKGxldCBpPTA7IGk8JHNxbFBh bmUubGVuZ3RoOyBpKyspIHskKCRzcWxQYW5lW2ldKS5jc3MoJ3otaW5kZXgnLCAtMSk7fQorCisg ICAgICAgICR0YWJDb250ZW50ID0gJCgnLnBnLXBhbmVsLWNvbnRlbnQgPiAuc3FsX3RleHRhcmVh JykuZmlyc3QoKTsKKyAgICAgICAgJHNxbFBhbmUgPSAkdGFiQ29udGVudC5maW5kKCcucGctcGFu ZWwtY29udGVudCcpOworICAgICAgICAkc3FsUGFuZS5maW5kKCcuQ29kZU1pcnJvcicpLmNzcygK KyAgICAgICAgICAnY3NzVGV4dCcsCisgICAgICAgICAgJ2hlaWdodDogJyArICgkdGFiQ29udGVu dC5oZWlnaHQoKSkgKyAncHggIWltcG9ydGFudDsnCisgICAgICAgICk7CisgICAgICB9LAogICAg ICAgZXZlbnRGdW5jOiBmdW5jdGlvbihldmVudE5hbWUpIHsKICAgICAgICAgdmFyIG5hbWUgPSAk KHRoaXMpLmRhdGEoJ3BnQWRtaW5OYW1lJyk7CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvdXRpbHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxzLmpzCmluZGV4IDg1OTdkZjQ4Li5iMGEzMTdhNSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy91dGls cy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxz LmpzCkBAIC01Miw2ICs1MiwxMCBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAg IHBnQWRtaW5bJ3VzZXJfaW5hY3Rpdml0eV90aW1lb3V0J10gPSB7eyBjdXJyZW50X2FwcC5jb25m aWcuZ2V0KCdVU0VSX0lOQUNUSVZJVFlfVElNRU9VVCcpIH19OwogICBwZ0FkbWluWydvdmVycmlk ZV91c2VyX2luYWN0aXZpdHlfdGltZW91dCddID0gJ3t7IGN1cnJlbnRfYXBwLmNvbmZpZy5nZXQo J09WRVJSSURFX1VTRVJfSU5BQ1RJVklUWV9USU1FT1VUJykgfX0nID09ICdUcnVlJzsKIAorICAv KiBHRVQgUFNRTCBUb29sIHJlbGF0ZWQgY29uZmlnICovCisgIHBnQWRtaW5bJ2VuYWJsZV9wc3Fs J10gPSAgJ3t7IGN1cnJlbnRfYXBwLmNvbmZpZy5nZXQoJ0VOQUJMRV9QU1FMJykgfX0nID09ICdU cnVlJzsKKyAgcGdBZG1pblsnYWxsb3dfcHNxbF9zaGVsbF9jb21tYW5kcyddID0gICd7eyBjdXJy ZW50X2FwcC5jb25maWcuZ2V0KCdBTExPV19QU1FMX1NIRUxMX0NPTU1BTkRTJykgfX0nICA9PSAn VHJ1ZSc7CisKICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24gd2hpY2ggUXVlcnkgdG9vbCBv cHRpb24gZG9lc24ndCBhcHBlYXJzCiAgIHZhciB1bnN1cHBvcnRlZF9ub2RlcyA9IHBnQWRtaW4u dW5zdXBwb3J0ZWRfbm9kZXMgPSBbCiAgICAgICdzZXJ2ZXJfZ3JvdXAnLCAnc2VydmVyJywgJ2Nv bGwtdGFibGVzcGFjZScsICd0YWJsZXNwYWNlJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9idW5kbGUvYnJvd3Nlci5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9idW5kbGUvYnJvd3Nl ci5qcwppbmRleCAxNDE0MGEyZi4uMGIzYWQ4MWIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9idW5kbGUvYnJvd3Nlci5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvYnVuZGxlL2Jy b3dzZXIuanMKQEAgLTExLDYgKzExLDcgQEAgZGVmaW5lKCdidW5kbGVkX2Jyb3dzZXInLFsKICAg J3BnYWRtaW4uYnJvd3NlcicsCiAgICdzb3VyY2VzL2Jyb3dzZXIvaW5kZXgnLAogICAndG9wL3Rv b2xzL2VyZC9zdGF0aWMvanMvaW5kZXgnLAorICAndG9wL3Rvb2xzL3BzcWwvc3RhdGljL2pzL2lu ZGV4JywKIF0sIGZ1bmN0aW9uKHBnQnJvd3NlcikgewogICBwZ0Jyb3dzZXIuaW5pdCgpOwogfSk7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvY3NzL3N0eWxlLmNzcyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9jc3Mvc3R5bGUuY3NzCmluZGV4IGMyYTc3NmM4Li41YjRhOWYyZCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9zdHlsZS5jc3MKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2Nzcy9zdHlsZS5jc3MKQEAgLTIxLDMgKzIxLDUgQEAKIAogQGltcG9ydCAnLi4vdmVu ZG9yL2JhY2tncmlkL2JhY2tncmlkLmNzcyc7CiBAaW1wb3J0ICcuLi92ZW5kb3IvYmFja2dyaWQv YmFja2dyaWQtc2VsZWN0LWFsbC5jc3MnOworCitAaW1wb3J0ICdub2RlX21vZHVsZXMveHRlcm0v Y3NzL3h0ZXJtLmNzcyc7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9wc3FsL19faW5p dF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMjdhZTdlMmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9wc3FsL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNTAzIEBACisjIS91c3Iv YmluL2VudiBweXRob24zCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNlbGVjdAoraW1w b3J0IHNpZ25hbAoraW1wb3J0IHRlcm1pb3MKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBmY250bAor aW1wb3J0IHB0eQoraW1wb3J0IGNvbmZpZworaW1wb3J0IGV2ZW50bGV0LmdyZWVuLnN1YnByb2Nl c3MgYXMgc3VicHJvY2VzcworZnJvbSBmbGFzayBpbXBvcnQgUmVzcG9uc2UsIHNlc3Npb24sIHVy bF9mb3IsIHJlcXVlc3QKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCB1bmRlcnNj b3JlX3VuZXNjYXBlCitmcm9tIGZsYXNrIGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIGNvcHlfY3Vy cmVudF9yZXF1ZXN0X2NvbnRleHQsIFwKKyAgICBjdXJyZW50X2FwcCBhcyBhcHAKK2Zyb20gZmxh c2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0Fk bWluTW9kdWxlCitmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBsb2dpbl9yZXF1aXJlZCwgY3Vy cmVudF91c2VyCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBQUkVGX0xBQkVM X0RJU1BMQVksIE1JTUVUWVBFX0FQUF9KUywgXAorICAgIEVSUk9SX01TR19UUkFOU19JRF9OT1Rf Rk9VTkQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9y dCBTZXJ2ZXIKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgZ2V0X2NvbXBsZXRlX2ZpbGVfcGF0 aAorCitmcm9tIC4uLiBpbXBvcnQgc29ja2V0aW8gYXMgc2lvCisKK3Nlc3Npb25faW5wdXQgPSBk aWN0KCkKK3Nlc3Npb25faW5wdXRfY3Vyc29yID0gZGljdCgpCitzZXNzaW9uX2xhc3RfY21kID0g ZGljdCgpCitwZGF0YSA9IGRpY3QoKQorY2RhdGEgPSBkaWN0KCkKKworCitjbGFzcyBQU1FMTW9k dWxlKFBnQWRtaW5Nb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIFBTUUxNb2R1bGUoUGdBZG1p bk1vZHVsZSkKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIFBTUUwgZGVyaXZlZCBmcm9tIFBn QWRtaW5Nb2R1bGUuCisgICAgIiIiCisKKyAgICBMQUJFTCA9IGdldHRleHQoIlBTUUwiKQorCisg ICAgZGVmIGdldF9vd25fbWVudWl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4ge30KKworICAg IGRlZiBnZXRfb3duX2phdmFzY3JpcHRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW3sKKyAgICAg ICAgICAgICduYW1lJzogJ3BnYWRtaW4ucHNxbCcsCisgICAgICAgICAgICAncGF0aCc6IHVybF9m b3IoJ3BzcWwuaW5kZXgnKSArICJwc3FsIiwKKyAgICAgICAgICAgICd3aGVuJzogTm9uZQorICAg ICAgICB9XQorCisgICAgZGVmIGdldF9wYW5lbHMoc2VsZik6CisgICAgICAgIHJldHVybiBbXQor CisgICAgZGVmIGdldF9leHBvc2VkX3VybF9lbmRwb2ludHMoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgbGlzdDogVVJMIGVuZHBvaW50cyBmb3IgUFNR TCBtb2R1bGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAncHNx bC5wYW5lbCcsCisgICAgICAgIF0KKworCitibHVlcHJpbnQgPSBQU1FMTW9kdWxlKCdwc3FsJywg X19uYW1lX18sIHN0YXRpY191cmxfcGF0aD0nL3N0YXRpYycpCisKKworQGJsdWVwcmludC5yb3V0 ZSgiL3BzcWwuanMiKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgc2NyaXB0KCk6CisgICAgIiIicmVu ZGVyIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0IiIiCisgICAgcmV0dXJuIFJlc3BvbnNlKAorICAg ICAgICByZXNwb25zZT1yZW5kZXJfdGVtcGxhdGUoInBzcWwvanMvcHNxbC5qcyIsIF89Z2V0dGV4 dCksCisgICAgICAgIHN0YXR1cz0yMDAsCisgICAgICAgIG1pbWV0eXBlPU1JTUVUWVBFX0FQUF9K UworICAgICkKKworCitAYmx1ZXByaW50LnJvdXRlKCcvcGFuZWwvPGludDp0cmFuc19pZD4nLAor ICAgICAgICAgICAgICAgICBtZXRob2RzPVsiUE9TVCJdLAorICAgICAgICAgICAgICAgICBlbmRw b2ludD0icGFuZWwiKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgcGFuZWwodHJhbnNfaWQpOgorICAg ICIiIgorICAgIFJldHVybiBwYW5lbCB0ZW1wbGF0ZSBmb3IgUFNRTCB0b29scy4KKyAgICA6cGFy YW0gdHJhbnNfaWQ6CisgICAgIiIiCisgICAgcGFyYW1zID0geworICAgICAgICAndHJhbnNfaWQn OiB0cmFuc19pZCwKKyAgICAgICAgJ3RpdGxlJzogcmVxdWVzdC5mb3JtWyd0aXRsZSddCisgICAg fQorICAgIGlmIHJlcXVlc3QuYXJnczoKKyAgICAgICAgcGFyYW1zLnVwZGF0ZSh7azogdiBmb3Ig aywgdiBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMoKX0pCisKKyAgICByZXR1cm4gcmVuZGVyX3RlbXBs YXRlKCdlZGl0b3JfdGVtcGxhdGUuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBz aWQ9cGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiPXBhcmFtc1sn ZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlPXBhcmFtc1snc2Vy dmVyX3R5cGUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2VuYWJsZT1jb25maWcu RU5BQkxFX1BTUUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT11bmRlcnNjb3Jl X3VuZXNjYXBlKHBhcmFtc1sndGl0bGUnXSkpCisKKworZGVmIHNldF90ZXJtX3NpemUoZmQsIHJv dywgY29sLCB4cGl4PTAsIHlwaXg9MCk6CisgICAgIiIiCisgICAgU2V0IHRoZSB0ZXJtaW5hbCBz aXplIGFzIHBlciBVSSB4dGVybSBzaXplLgorICAgIDpwYXJhbSBmZDoKKyAgICA6cGFyYW0gcm93 OgorICAgIDpwYXJhbSBjb2w6CisgICAgOnBhcmFtIHhwaXg6CisgICAgOnBhcmFtIHlwaXg6Cisg ICAgIiIiCisgICAgdGVybV9zaXplID0gc3RydWN0LnBhY2soJ0hISEgnLCByb3csIGNvbCwgeHBp eCwgeXBpeCkKKyAgICBmY250bC5pb2N0bChmZCwgdGVybWlvcy5USU9DU1dJTlNaLCB0ZXJtX3Np emUpCisKKworQHNpby5vbignY29ubmVjdCcsIG5hbWVzcGFjZT0nL3B0eScpCitkZWYgY29ubmVj dCgpOgorICAgICIiIgorICAgIENvbm5lY3QgdG8gdGhlIHNlcnZlciB0aHJvdWdoIHNvY2tldC4K KyAgICA6cmV0dXJuOgorICAgIDpydHlwZToKKyAgICAiIiIKKyAgICBpZiBjb25maWcuRU5BQkxF X1BTUUw6CisgICAgICAgIHNpby5lbWl0KCdjb25uZWN0ZWQnLCB7J3NpZCc6IHJlcXVlc3Quc2lk fSwgbmFtZXNwYWNlPScvcHR5JywKKyAgICAgICAgICAgICAgICAgdG89cmVxdWVzdC5zaWQpCisg ICAgICAgIGlmIHJlcXVlc3Quc2lkIGluIHNlc3Npb25fbGFzdF9jbWQ6CisgICAgICAgICAgICBz ZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsnaXNfbmV3X2Nvbm5lY3Rpb24nXSA9IEZhbHNl CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lk XSA9IHsnY21kJzogJycsICdhcnJvd191cCc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfY21kJzogRmFsc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbmV3X2Nvbm5lY3Rpb24nOiBU cnVlfQorICAgIGVsc2U6CisgICAgICAgIHNpby5lbWl0KCdjb25uX25vdF9hbGxvdycsIHsnc2lk JzogcmVxdWVzdC5zaWR9LCBuYW1lc3BhY2U9Jy9wdHknLAorICAgICAgICAgICAgICAgICB0bz1y ZXF1ZXN0LnNpZCkKKworCitAc2lvLm9uKCdzdGFydF9wcm9jZXNzJywgbmFtZXNwYWNlPScvcHR5 JykKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHN0YXJ0X3Byb2Nlc3MoZGF0YSk6CisgICAgIiIiCisg ICAgU3RhcnQgdGhlIHB0eSB0ZXJtaW5hbCBhbmQgZXhlY3V0ZSBwc3FsIGNvbW1hbmQgYW5kIGVt aXQgcmVzdWx0cyB0byB1c2VyLgorICAgIDpwYXJhbSBkYXRhOgorICAgIDpyZXR1cm46CisgICAg IiIiCisKKyAgICBAY29weV9jdXJyZW50X3JlcXVlc3RfY29udGV4dAorICAgIGRlZiByZWFkX2Fu ZF9mb3J3YXJkX3B0eV9vdXRwdXQoc2lkLCBkYXRhKToKKyAgICAgICAgbWF4X3JlYWRfYnl0ZXMg PSAxMDI0ICogMjAKKyAgICAgICAgIyBDcmVhdGUgdGhlIHB0eSB0ZXJtaW5hbCBwcm9jZXNzLCBw YXJlbnQgYW5kIGZkIGFyZSBmaWxlIGRlc2NyaXB0b3JzCisgICAgICAgICMgZm9yIHBhcmVudCBh bmQgY2hpbGQuCisgICAgICAgIHBhcmVudCwgZmQgPSBwdHkub3BlbnB0eSgpCisgICAgICAgIHAg PSBOb25lCisgICAgICAgIGlmIHBhcmVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgQ2hp bGQgcHJvY2VzcworICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY29ubmVjdGlvbl9k YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZXhlY19mbj1vcy5zZXRz aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1mZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1mZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0ZGVycj1mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgICAgIGFwcC5jb25maWdbJ3Nlc3Npb25zJ11bcmVxdWVzdC5zaWRdID0g cGFyZW50CisgICAgICAgICAgICBwZGF0YVtyZXF1ZXN0LnNpZF0gPSBwCisgICAgICAgICAgICBj ZGF0YVtyZXF1ZXN0LnNpZF0gPSBmZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXBwLmNv bmZpZ1snc2Vzc2lvbnMnXVtyZXF1ZXN0LnNpZF0gPSBwYXJlbnQKKyAgICAgICAgICAgIGNkYXRh W3JlcXVlc3Quc2lkXSA9IGZkCisgICAgICAgICAgICBzZXRfdGVybV9zaXplKGZkLCA1MCwgNTAp CisKKyAgICAgICAgd2hpbGUgcCBhbmQgcC5wb2xsKCkgaXMgTm9uZToKKyAgICAgICAgICAgIGlm IHJlcXVlc3Quc2lkIGluIGFwcC5jb25maWdbJ3Nlc3Npb25zJ106CisgICAgICAgICAgICAgICAg IyBUaGlzIGNvZGUgaXMgYWRkZWQgdG8gbWFrZSB0aGlzIHVuaXQgdGVzdGFibGUuCisgICAgICAg ICAgICAgICAgaWYgImlzX3Rlc3QiIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBz aW8uc2xlZXAoMC4wMSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICBkYXRhWydjb3VudCddICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgZGF0YVsnY291bnQn XSA9PSA1OgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAg IHRpbWVvdXQgPSAwCisgICAgICAgICAgICAgICAgIyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRv IHBsYXRmb3JtLXNwZWNpZmljIEkvTworICAgICAgICAgICAgICAgICMgbW9uaXRvcmluZyBmdW5j dGlvbnMKKyAgICAgICAgICAgICAgICAoZGF0YV9yZWFkeSwgXywgXykgPSBzZWxlY3Quc2VsZWN0 KFtwYXJlbnQsIGZkXSwgW10sIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGltZW91dCkKKworICAgICAgICAgICAgICAgIGlmIHBhcmVudCBp biBkYXRhX3JlYWR5OgorICAgICAgICAgICAgICAgICAgICAjIFJlYWQgdGhlIG91dHB1dCBmcm9t IHBhcmVudCBmZCAodGVybWluYWwpLgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBvcy5y ZWFkKHBhcmVudCwgbWF4X3JlYWRfYnl0ZXMpCisgICAgICAgICAgICAgICAgICAgIGVtaXRfb3V0 cHV0ID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHNpZCBpbiBzZXNzaW9uX2xhc3Rf Y21kIGFuZCBzZXNzaW9uX2xhc3RfY21kW3NpZF1bCisgICAgICAgICAgICAgICAgICAgICAgICAn YXJyb3dfdXAnXSBhbmQgbm90IHNlc3Npb25fbGFzdF9jbWRbcmVxdWVzdC5zaWRdWworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdhcnJvd19sZWZ0X3JpZ2h0J106CisgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3NpZF1bJ2NtZCddID0gb3V0cHV0LmRlY29kZSgp CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNp ZF0gPSBsZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9sYXN0X2NtZFtz aWRdWydjbWQnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fbGFzdF9jbWRbc2lk XVsnYXJyb3dfdXAnXSA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICBpZiBzaWQgaW4gc2Vz c2lvbl9sYXN0X2NtZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgY29tbWFuZCBpcyBp bnZhbGlkIHRoZW4gZW1pdCBlcnJvciB0byB1c2VyLgorICAgICAgICAgICAgICAgICAgICAgICAg aWYgc2Vzc2lvbl9sYXN0X2NtZFtzaWRdWydpbnZhbGlkX2NtZCddOgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVtaXRfb3V0cHV0ID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaW8uZW1pdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B0eS1vdXRw dXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAncmVzdWx0JzogZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiRVJST1I6IFNoZWxsIGNvbW1hbmRzIGFyZSBkaXNhYmxl ZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHBzcWwgZm9y IHNlY3VyaXR5O1xyXG4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdl cnJvcic6IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlPScvcHR5Jywgcm9vbT1zaWQpCisgICAg ICAgICAgICAgICAgICAgICMgSWYgY29tbWFuZCBpcyB2YWxpZCB0aGVuIGVtaXQgb3V0cHV0IHRv IHVzZXIuCisgICAgICAgICAgICAgICAgICAgIGlmIGVtaXRfb3V0cHV0OgorICAgICAgICAgICAg ICAgICAgICAgICAgc2lvLmVtaXQoJ3B0eS1vdXRwdXQnLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgeydyZXN1bHQnOiBvdXRwdXQuZGVjb2RlKCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJ2Vycm9yJzogRmFsc2V9LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZXNwYWNlPScvcHR5Jywgcm9vbT1zaWQpCisgICAgICAgICAgICAgICAg ICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVl c3Quc2lkXVsnaW52YWxpZF9jbWQnXSA9IEZhbHNlCisKKyAgICAjIENoZWNrIHVzZXIgaXMgYXV0 aGVudGljYXRlZCBhbmQgUFNRTCBpcyBlbmFibGVkIGluIGNvbmZpZy4KKyAgICBpZiBjdXJyZW50 X3VzZXIuaXNfYXV0aGVudGljYXRlZCBhbmQgY29uZmlnLkVOQUJMRV9QU1FMOgorICAgICAgICBj b25uZWN0aW9uX2RhdGEgPSBbXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYiA9ICcnCisg ICAgICAgICAgICBpZiBkYXRhWydkYiddOgorICAgICAgICAgICAgICAgIGRiID0gZGF0YVsnZGIn XQorICAgICAgICAgICAgIyBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQor ICAgICAgICAgICAgIyBtYW5hZ2VyID0gZHJpdmVyLmNvbm5lY3Rpb25fbWFuYWdlcihpbnQoZGF0 YVsnc2lkJ10pKQorICAgICAgICAgICAgIyBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKCkKKyAg ICAgICAgICAgIGNvbm4sIG1hbmFnZXIgPSBfZ2V0X2Nvbm5lY3Rpb24oaW50KGRhdGFbJ3NpZCdd KSwgZGF0YSkKKyAgICAgICAgICAgIHBzcWxfdXRpbGl0eSA9IG1hbmFnZXIudXRpbGl0eSgnc3Fs JykKKyAgICAgICAgICAgIHByaW50KCJwc3FsX3V0aWxpdHk6ICIsIHBzcWxfdXRpbGl0eSkKKyAg ICAgICAgICAgIGNvbm5lY3Rpb25fZGF0YSA9IGdldF9jb25uZWN0aW9uX3N0cihwc3FsX3V0aWxp dHksIGNvbm4sIGRiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG1hbmFnZXIpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg ICAgICMgSWYgYW55IGVycm9yIHJhaXNlZCBkdXJpbmcgdGhlIHN0YXJ0IHRoZSBQU1FMIGVtaXQg ZXJyb3IgdG8gVUkuCisgICAgICAgICAgICBzaW8uZW1pdCgKKyAgICAgICAgICAgICAgICAnY29u bl9lcnJvcicsCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAnZXJyb3In OiAnRXJyb3Igd2hpbGUgcnVubmluZyBwc3FsIGNvbW1hbmQ6IHswfScuZm9ybWF0KGUpLAorICAg ICAgICAgICAgICAgIH0sIG5hbWVzcGFjZT0nL3B0eScsIHJvb209cmVxdWVzdC5zaWQpCisKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgc2lvLnN0YXJ0X2JhY2tncm91bmRfdGFzayhyZWFkX2Fu ZF9mb3J3YXJkX3B0eV9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJlcXVlc3Quc2lkLCBkYXRhKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg ICAgICAgICAgICBwcmludChlKQorICAgIGVsc2U6CisgICAgICAgICMgU2hvdyBlcnJvciBpZiB1 c2VyIGlzIG5vdCBhdXRoZW50aWNhdGVkLgorICAgICAgICBzaW8uZW1pdCgnY29ubl9ub3RfYWxs b3cnLCB7J3NpZCc6IHJlcXVlc3Quc2lkfSwgbmFtZXNwYWNlPScvcHR5JywKKyAgICAgICAgICAg ICAgICAgdG89cmVxdWVzdC5zaWQpCisKKworZGVmIF9nZXRfY29ubmVjdGlvbihzaWQsIGRhdGEp OgorICAgICIiIgorICAgIEdldCB0aGUgY29ubmVjdGlvbiBvYmplY3Qgb2YgRVJELgorICAgIDpw YXJhbSBzaWQ6CisgICAgOnBhcmFtIGRpZDoKKyAgICA6cGFyYW0gdHJhbnNfaWQ6CisgICAgOnJl dHVybjoKKyAgICAiIiIKKyAgICBtYW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZF UikuY29ubmVjdGlvbl9tYW5hZ2VyKHNpZCkKKyAgICB0cnk6CisgICAgICAgIGNvbm4gPSBtYW5h Z2VyLmNvbm5lY3Rpb24oKQorICAgICAgICBpZiAncHdkJyBpbiBkYXRhOgorICAgICAgICAgICAg a3dhcmdzID0geydwYXNzd29yZCc6IGRhdGFbJ3B3ZCddLCAidXNlciI6IGRhdGFbJ3VzZXInXX0K KyAgICAgICAgICAgIHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0KCoqa3dhcmdzKQorICAgICAg ICBlbHNlOgorICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBjb25uLmNvbm5lY3QoKQorICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgYXBwLmxvZ2dlci5lcnJvcihtc2cpCisgICAg ICAgICAgICAjIHJhaXNlIENvbm5lY3Rpb25Mb3N0KHNpZCwgY29ubi5kYiwgdHJhbnNfaWQpCisK KyAgICAgICAgcmV0dXJuIGNvbm4sIG1hbmFnZXIKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 CisgICAgICAgIGFwcC5sb2dnZXIuZXJyb3IoZSkKKyAgICAgICAgcmFpc2UKKworCitkZWYgZ2V0 X2Nvbm5lY3Rpb25fc3RyKHBzcWxfdXRpbGl0eSwgY29ubiwgZGIsIG1hbmFnZXIpOgorICAgICIi IgorICAgIEdldCBjb25uZWN0aW9uIHN0cmluZyh0aHJvdWdoIGNvbm5lY3Rpb24gZHNuKQorICAg IDpwYXJhbSBwc3FsX3V0aWxpdHk6IFBvc3RncmVTUUwgYmluYXJ5IHBhdGguCisgICAgOnBhcmFt IGNvbm46IENvbm5lY3Rpb24gZGF0YQorICAgIDpwYXJhbSBkYjogZGF0YWJhc2UgbmFtZSB0byBj b25uZWN0IHNwZWNpZmljIGRiLgorICAgIDpyZXR1cm46IGNvbm5lY3Rpb24gYXR0cmlidXRlIGxp c3QgZm9yIFBTUUwgY29ubmVjdGlvbi4KKyAgICAiIiIKKworICAgIGNvbm5fYXR0ciA9IGNvbm4u Y29ubi5kc24KKyAgICBpZiAncGFzc3dvcmQ9eHh4JyBpbiBjb25uX2F0dHI6CisgICAgICAgIGNv bm5fYXR0ciA9IGNvbm5fYXR0ci5yZXBsYWNlKCdwYXNzd29yZD14eHgnLCAnJykKKworICAgIGlm IGRiICE9ICcnOgorICAgICAgICBjb25uX2F0dHIgPSBjb25uX2F0dHIucmVwbGFjZSgnZGJuYW1l PXBvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RibmFt ZT17MH0nLmZvcm1hdChkYikpCisgICAgIyBBZGQgYXBwbGljYXRpb24gbmFtZSB0byBuZXcgY3Jl YXRlZCBwc3FsIHRlcm1pbmFsIGluc3RhbmNlCisgICAgIyB0aHJvdWdoIHBnQWRtaW4gNC4KKyAg ICBjb25uX2F0dHIgPSAiezB9IHsxfSIuZm9ybWF0KGNvbm5fYXR0ciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgYXBwbGljYXRpb25fbmFtZT0ncGdBZG1pbjQ6IHBzcWwnIikK KworICAgIGNvbm5fYXR0cl9saXN0ID0gbGlzdCgpCisgICAgY29ubl9hdHRyX2xpc3QuYXBwZW5k KHBzcWxfdXRpbGl0eSkKKyAgICBjb25uX2F0dHJfbGlzdC5hcHBlbmQoY29ubl9hdHRyKQorICAg IHJldHVybiBjb25uX2F0dHJfbGlzdAorCisKK0BzaW8ub24oJ3NvY2tldF9pbnB1dCcsIG5hbWVz cGFjZT0nL3B0eScpCitkZWYgc29ja2V0X2lucHV0KGRhdGEpOgorICAgICIiIgorICAgIFRoaXMg Z2V0IHRoZSB1c2VyIGlucHV0IHRocm91Z2ggc29ja2V0LgorICAgIDpwYXJhbSBkYXRhOiBVc2Vy IGlucHV0IGZyb20gc29ja2V0LgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgIyBDaGVjayBQ U1FMIGVuYWJsZWQgc2V0dGluZyBmcm9tIGNvbmZpZy4KKyAgICAgICAgZW5hYmxlX3BzcWwgPSBU cnVlIGlmIGNvbmZpZy5FTkFCTEVfUFNRTCBlbHNlIEZhbHNlCisKKyAgICAgICAgaWYgcmVxdWVz dC5zaWQgaW4gYXBwLmNvbmZpZ1snc2Vzc2lvbnMnXToKKyAgICAgICAgICAgIGlmIGRhdGFbJ2tl eV9uYW1lJ10gPT0gJ0VudGVyJyBhbmQgZW5hYmxlX3BzcWw6CisgICAgICAgICAgICAgICAgIyBJ ZiB1c2VyIGdldCBwcmV2aW91cyBleGVjdXRlZCBjb21tYW5kIGZyb20gaGlzdG9yeSB0aGVuIHNl dAorICAgICAgICAgICAgICAgICMgY3VycmVudCBjb21tYW5kIGFzIHByZXZpb3VzIGV4ZWN1dGVk IGNvbW1hbmQuCisgICAgICAgICAgICAgICAgaWYgc2Vzc2lvbl9sYXN0X2NtZFtyZXF1ZXN0LnNp ZF1bJ2NtZCddIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZXNzaW9uX2xhc3RfY21k W3JlcXVlc3Quc2lkXVsnYXJyb3dfdXAnXToKKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pbnB1 dCA9IHN0cigKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fbGFzdF9jbWRbcmVxdWVz dC5zaWRdWydjbWQnXSkuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3Rf Y21kW3JlcXVlc3Quc2lkXVsnYXJyb3dfdXAnXSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAg IHNlc3Npb25fbGFzdF9jbWRbcmVxdWVzdC5zaWRdWydjbWQnXSA9ICcnCisgICAgICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pbnB1dCA9IHN0cihzZXNzaW9uX2lu cHV0W3JlcXVlc3Quc2lkXSkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlc3Npb25faW5wdXRf Y3Vyc29yW3JlcXVlc3Quc2lkXSA9IDAKKworICAgICAgICAgICAgICAgICMgSWYgQUxMT1dfUFNR TF9TSEVMTF9DT01NQU5EUyBpcyBGYWxzZSB0aGVuIHVzZXIgY2FuJ3QgZXhlY3V0ZQorICAgICAg ICAgICAgICAgICMgXCEgbWV0YSBjb21tYW5kIHRvIHJ1biBzaGVsbCBjb21tYW5kcyB0aHJvdWdo IFBTUUwgdGVybWluYWwuCisgICAgICAgICAgICAgICAgIyBDaGVjayBiZWZvcmUgZXhlY3V0aW5n IHRoZSB1c2VyIGVudGVyZWQgY29tbWFuZCBkb2VzIG5vdAorICAgICAgICAgICAgICAgICMgY29u dGFpbnMgXCEgaW4gaW5wdXQuCisgICAgICAgICAgICAgICAgaXNfbmV3X2Nvbm5lY3Rpb24gPSBz ZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsKKyAgICAgICAgICAgICAgICAgICAgJ2lzX25l d19jb25uZWN0aW9uJ10KKyAgICAgICAgICAgICAgICBpZiB1c2VyX2lucHV0LnN0YXJ0c3dpdGgo J1xcIScpIGFuZCBcCisgICAgICAgICAgICAgICAgICAgIHJlLm1hdGNoKCJeXFxcISQiLCB1c2Vy X2lucHV0KSBhbmQgXAorICAgICAgICAgICAgICAgICAgICBsZW4odXNlcl9pbnB1dCkgPT0gMiBh bmQgXAorICAgICAgICAgICAgICAgICAgICBub3QgY29uZmlnLkFMTE9XX1BTUUxfU0hFTExfQ09N TUFORFMgXAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBpc19uZXdfY29ubmVjdGlv bjoKKworICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsn aW52YWxpZF9jbWQnXSA9IFRydWUKKworICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5n ZShsZW4oc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0pKToKKyAgICAgICAgICAgICAgICAgICAg ICAgIG9zLndyaXRlKGFwcC5jb25maWdbJ3Nlc3Npb25zJ11bcmVxdWVzdC5zaWRdLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xiIFxiJy5lbmNvZGUoKSkKKworICAgICAgICAg ICAgICAgICAgICBvcy53cml0ZShhcHAuY29uZmlnWydzZXNzaW9ucyddW3JlcXVlc3Quc2lkXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5lbmNvZGUoKSkKKyAgICAgICAgICAg ICAgICAgICAgc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0gPSAnJworICAgICAgICAgICAgICAg IGVsaWYgcmUuc2VhcmNoKCJcXFwhIiwgdXNlcl9pbnB1dCkgYW5kIFwKKyAgICAgICAgICAgICAg ICAgICAgbm90IGNvbmZpZy5BTExPV19QU1FMX1NIRUxMX0NPTU1BTkRTIGFuZCBcCisgICAgICAg ICAgICAgICAgICAgICAgICBub3Qgc2Vzc2lvbl9sYXN0X2NtZFtyZXF1ZXN0LnNpZF1bJ2lzX25l d19jb25uZWN0aW9uJ106CisgICAgICAgICAgICAgICAgICAgIHN0b3BfZXhlY3V0aW9uID0gVHJ1 ZQorICAgICAgICAgICAgICAgICAgICAjIENoZWNrIFwhIGlzIHBhc3NlZCBhcyBzdHJpbmcgb3Ig bm90LgorICAgICAgICAgICAgICAgICAgICBkb3VibGVfcXVvdGVfc3RycyA9IHJlLmZpbmRhbGwo JyIoW14iXSopIicsIHVzZXJfaW5wdXQpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgZG91Ymxl X3F1b3RlX3N0cnM6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc3ViX3N0ciBpbiBkb3Vi bGVfcXVvdGVfc3RyczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2go IlxcXCEiLCBzdWJfc3RyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcF9l eGVjdXRpb24gPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJyZWFr CisKKyAgICAgICAgICAgICAgICAgICAgaWYgc3RvcF9leGVjdXRpb246CisgICAgICAgICAgICAg ICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsnaW52YWxpZF9jbWQnXSA9 IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGFscmVhZHkgYWRkZWQgY29t bWFuZCBmcm9tIHRlcm1pbmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFu Z2UobGVuKHVzZXJfaW5wdXQpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0 ZShhcHAuY29uZmlnWydzZXNzaW9ucyddW3JlcXVlc3Quc2lkXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnXGIgXGInLmVuY29kZSgpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIyBBZGQgRW50ZXIgZXZlbnQgdG8gZXhlY3V0ZSB0aGUgY29tbWFuZC4KKyAgICAgICAg ICAgICAgICAgICAgICAgIG9zLndyaXRlKGFwcC5jb25maWdbJ3Nlc3Npb25zJ11bcmVxdWVzdC5z aWRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5lbmNvZGUoKSkKKyAg ICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25f bGFzdF9jbWRbcmVxdWVzdC5zaWRdWydpbnZhbGlkX2NtZCddID0gRmFsc2UKKyAgICAgICAgICAg ICAgICAgICAgICAgIG9zLndyaXRlKGFwcC5jb25maWdbJ3Nlc3Npb25zJ11bcmVxdWVzdC5zaWRd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5lbmNvZGUoKSkKKyAgICAg ICAgICAgICAgICBlbGlmIHVzZXJfaW5wdXQgPT0gJ1xxJzoKKyAgICAgICAgICAgICAgICAgICAg IyBJZiB1c2VyIGVudGVyIFxxIHRvIHRlcm1pbmF0ZSB0aGUgUFNRTCwgZW1pdCB0aGUgbXNnIHRv CisgICAgICAgICAgICAgICAgICAgICMgbm90aWZ5IHVzZXIgY29ubmVjdGlvbiBpcyB0ZXJtaW5h dGVkLgorICAgICAgICAgICAgICAgICAgICBvcy53cml0ZShhcHAuY29uZmlnWydzZXNzaW9ucydd W3JlcXVlc3Quc2lkXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJy5lbmNvZGUo KSkKKyAgICAgICAgICAgICAgICAgICAgc2lvLmVtaXQoJ3B0eS1vdXRwdXQnLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn cmVzdWx0JzogZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Q29ubmVjdGlvbiB0ZXJtaW5hdGVkLCBUTyBjcmVhdGUgbmV3ICcKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnY29ubmVjdGlvbiBwbGVhc2Ugb3BlbiBhbm90aGVyIHBzcWwn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyB0b29sLicpLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9yJzogVHJ1ZX0sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWVzcGFjZT0nL3B0eScsIHJvb209cmVxdWVzdC5zaWQpCisgICAg ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoYXBwLmNvbmZp Z1snc2Vzc2lvbnMnXVtyZXF1ZXN0LnNpZF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGFbJ2lucHV0J10uZW5jb2RlKCkpCisgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dFty ZXF1ZXN0LnNpZF0gPSAnJworICAgICAgICAgICAgICAgIHNlc3Npb25fbGFzdF9jbWRbcmVxdWVz dC5zaWRdWydpc19uZXdfY29ubmVjdGlvbiddID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgaWYgZGF0YVsna2V5X25hbWUnXSA9PSAnQXJyb3dMZWZ0JzoKKyAgICAg ICAgICAgICAgICAgICAgc2Vzc2lvbl9sYXN0X2NtZFtyZXF1ZXN0LnNpZF1bJ2Fycm93X2xlZnRf cmlnaHQnXSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgc2Vzc2lvbl9pbnB1dF9jdXJz b3JbcmVxdWVzdC5zaWRdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25faW5w dXRfY3Vyc29yW3JlcXVlc3Quc2lkXSAtPSAxCisKKyAgICAgICAgICAgICAgICBlbGlmIGRhdGFb J2tleV9uYW1lJ10gPT0gJ0Fycm93UmlnaHQnOgorICAgICAgICAgICAgICAgICAgICBzZXNzaW9u X2xhc3RfY21kW3JlcXVlc3Quc2lkXVsnYXJyb3dfbGVmdF9yaWdodCddID0gVHJ1ZQorICAgICAg ICAgICAgICAgICAgICBpZiBzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0gPCBsZW4o CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0p OgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVxdWVzdC5z aWRdICs9IDEKKworICAgICAgICAgICAgICAgIGVsaWYgZGF0YVsna2V5X25hbWUnXSA9PSAnQXJy b3dVcCc6CisgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fbGFzdF9jbWRbcmVxdWVzdC5zaWRd WydhcnJvd191cCddID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21k W3JlcXVlc3Quc2lkXVsnYXJyb3dfbGVmdF9yaWdodCddID0gRmFsc2UKKyAgICAgICAgICAgICAg ICAgICAgc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0gPSBzZXNzaW9uX2xhc3RfY21kW3JlcXVl c3Quc2lkXVsKKyAgICAgICAgICAgICAgICAgICAgICAgICdjbWQnXQorICAgICAgICAgICAgICAg ICAgICBzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0gPSBsZW4oCisgICAgICAgICAg ICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsnY21kJ10pCisKKyAg ICAgICAgICAgICAgICBlbGlmIHJlcXVlc3Quc2lkIGluIHNlc3Npb25faW5wdXQgYW5kIGRhdGFb CisgICAgICAgICAgICAgICAgICAgICdrZXlfbmFtZSddID09ICdCYWNrc3BhY2UnIGFuZCAoCisg ICAgICAgICAgICAgICAgICAgIGxlbihzZXNzaW9uX2lucHV0W3JlcXVlc3Quc2lkXSkgb3IgbGVu KAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9sYXN0X2NtZFtyZXF1ZXN0LnNpZF0p KToKKworICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsn YXJyb3dfbGVmdF9yaWdodCddID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgICAgIGlmIHNlc3Np b25fbGFzdF9jbWRbcmVxdWVzdC5zaWRdWydjbWQnXToKKyAgICAgICAgICAgICAgICAgICAgICAg IHNlc3Npb25faW5wdXRbcmVxdWVzdC5zaWRdID0gXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlc3Npb25fbGFzdF9jbWRbcmVxdWVzdC5zaWRdWydjbWQnXQorCisgICAgICAgICAgICAg ICAgICAgIHVzZXJfaW5wdXQgPSBsaXN0KHNlc3Npb25faW5wdXRbcmVxdWVzdC5zaWRdKQorCisg ICAgICAgICAgICAgICAgICAgIGlmIHNlc3Npb25faW5wdXRfY3Vyc29yW3JlcXVlc3Quc2lkXSA9 PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwCisgICAgICAgICAgICAgICAg ICAgICAgICBzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0gLT0gMQorICAgICAgICAg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2Vzc2lvbl9pbnB1 dF9jdXJzb3JbcmVxdWVzdC5zaWRdID4gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRleCA9IChzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0pIC0gMQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlc3Npb25faW5wdXRfY3Vyc29yW3JlcXVlc3Quc2lkXSAtPSAx CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGluZGV4ID0gc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVxdWVzdC5zaWRdCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVxdWVzdC5zaWRdID0gMAor CisgICAgICAgICAgICAgICAgICAgIGlmIGxlbih1c2VyX2lucHV0KToKKyAgICAgICAgICAgICAg ICAgICAgICAgIGRlbCB1c2VyX2lucHV0W2luZGV4XQorICAgICAgICAgICAgICAgICAgICBzZXNz aW9uX2lucHV0W3JlcXVlc3Quc2lkXSA9ICIiLmpvaW4odXNlcl9pbnB1dCkKKworICAgICAgICAg ICAgICAgICAgICBpZiBsZW4oc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0pID09IDA6CisgICAg ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0gPSAw CisgICAgICAgICAgICAgICAgICAgIHNlc3Npb25fbGFzdF9jbWRbcmVxdWVzdC5zaWRdWydjbWQn XSA9ICcnCisgICAgICAgICAgICAgICAgZWxpZiByZXF1ZXN0LnNpZCBpbiBzZXNzaW9uX2lucHV0 OgorICAgICAgICAgICAgICAgICAgICBpZiBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lkXVsn Y21kJ10gYW5kIHNlc3Npb25faW5wdXRbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx dWVzdC5zaWRdID09ICcnOgorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dFty ZXF1ZXN0LnNpZF0gPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9sYXN0 X2NtZFtyZXF1ZXN0LnNpZF1bJ2NtZCddCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9u X2lucHV0X2N1cnNvcltyZXF1ZXN0LnNpZF0gPSBsZW4oCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2Vzc2lvbl9pbnB1dFtyZXF1ZXN0LnNpZF0pCisgICAgICAgICAgICAgICAgICAgIGVs c2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xhc3RfY21kW3JlcXVlc3Quc2lk XVsnYXJyb3dfdXAnXSA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2xh c3RfY21kW3JlcXVlc3Quc2lkXVsnY21kJ10gPSAnJworICAgICAgICAgICAgICAgICAgICB1c2Vy X2lucHV0ID0gbGlzdChzZXNzaW9uX2lucHV0W3JlcXVlc3Quc2lkXSkKKyAgICAgICAgICAgICAg ICAgICAgdXNlcl9pbnB1dC5pbnNlcnQoc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVxdWVzdC5zaWRd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWydpbnB1dCddKQor ICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lucHV0W3JlcXVlc3Quc2lkXSA9ICcnLmpvaW4o dXNlcl9pbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVx dWVzdC5zaWRdICs9IDEKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9sYXN0X2NtZFtyZXF1 ZXN0LnNpZF1bJ2Fycm93X2xlZnRfcmlnaHQnXSA9IEZhbHNlCisgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVxdWVzdC5zaWRd ID0gMAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uX2lucHV0W3JlcXVlc3Quc2lkXSA9IGRh dGFbJ2lucHV0J10KKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbl9pbnB1dF9jdXJzb3JbcmVx dWVzdC5zaWRdICs9IDEKKworICAgICAgICAgICAgICAgICMgV3JpdGUgdXNlciBpbnB1dCB0byB0 ZXJtaW5hbCBwYXJlbnQgZmQuCisgICAgICAgICAgICAgICAgb3Mud3JpdGUoYXBwLmNvbmZpZ1sn c2Vzc2lvbnMnXVtyZXF1ZXN0LnNpZF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsn aW5wdXQnXS5lbmNvZGUoKSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICMg RGVsZXRlIHNvY2tldCBpZCBmcm9tIHNlc3Npb25zLgorICAgICAgICBkZWwgYXBwLmNvbmZpZ1sn c2Vzc2lvbnMnXVtyZXF1ZXN0LnNpZF0KKworCitAc2lvLm9uKCdyZXNpemUnLCBuYW1lc3BhY2U9 Jy9wdHknKQorZGVmIHJlc2l6ZShkYXRhKToKKyAgICAiIiIKKyAgICBSZXNpemUgdGhlIHB0eSB0 ZXJtaW5hbCBhcyBwZXIgdGhlIFVJIHRlcm1pbmFsLgorICAgIDpwYXJhbSBkYXRhOiBVSSB0ZXJt aW5hbCByb3dzIGFuZCBjb2xzIGRhdGEKKyAgICAiIiIKKyAgICBpZiByZXF1ZXN0LnNpZCBpbiBh cHAuY29uZmlnWydzZXNzaW9ucyddOgorICAgICAgICBzZXRfdGVybV9zaXplKGFwcC5jb25maWdb J3Nlc3Npb25zJ11bcmVxdWVzdC5zaWRdLCBkYXRhWydyb3dzJ10sCisgICAgICAgICAgICAgICAg ICAgICAgZGF0YVsnY29scyddKQorCisKK0BzaW8ub24oJ2Rpc2Nvbm5lY3QnLCBuYW1lc3BhY2U9 Jy9wdHknKQorZGVmIGRpc2Nvbm5lY3QoKToKKyAgICAiIiIKKyAgICBEaXNjb25uZWN0IHRoZSBz b2NrZXQgYW5kIHRlcm1pbmF0ZSB0aGUgcHJvY2VzcworICAgICIiIgorICAgIGlmIHJlcXVlc3Qu c2lkIGluIHBkYXRhOgorICAgICAgICAjIE9uIGRpc2Nvbm5lY3Qgc29ja2V0IG1hbnVhbGx5IGV4 aXQgdGhlIHBzcWwgdGVybWluYWwgYW5kIGNsb3NlIHRoZQorICAgICAgICAjIHBhcmVuZCBhbmQg Y2hpbGQgZmQgdGhlbiBraWxsIHRoZSBzdWJwcm9jZXNzLgorICAgICAgICBvcy53cml0ZShhcHAu Y29uZmlnWydzZXNzaW9ucyddW3JlcXVlc3Quc2lkXSwgJ1xxXG4nLmVuY29kZSgpKQorICAgICAg ICBzaW8uc2xlZXAoMSkKKyAgICAgICAgb3MuY2xvc2UoYXBwLmNvbmZpZ1snc2Vzc2lvbnMnXVty ZXF1ZXN0LnNpZF0pCisgICAgICAgIG9zLmNsb3NlKGNkYXRhW3JlcXVlc3Quc2lkXSkKKyAgICAg ICAgZGVsIGFwcC5jb25maWdbJ3Nlc3Npb25zJ11bcmVxdWVzdC5zaWRdCisgICAgICAgIG9zLmtp bGwocGRhdGFbcmVxdWVzdC5zaWRdLnBpZCwgc2lnbmFsLlNJR1NUT1ApCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9wc3FsL3N0YXRpYy9qcy9pbmRleC5qcyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3BzcWwvc3RhdGljL2pzL2luZGV4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwLi40ZDg4YmEwNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Bz cWwvc3RhdGljL2pzL2luZGV4LmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAy MSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGdl dHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJj ZXMvdXJsX2Zvcic7CitpbXBvcnQgJCBmcm9tICdqcXVlcnknOworaW1wb3J0IF8gZnJvbSAndW5k ZXJzY29yZSc7CitpbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOworaW1wb3J0 IHBnQnJvd3NlciBmcm9tICd0b3AvYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nlcic7CitpbXBvcnQg KiBhcyBjc3JmVG9rZW4gZnJvbSAnc291cmNlcy9jc3JmJzsKK2ltcG9ydCB7aW5pdGlhbGl6ZX0g ZnJvbSAnLi9wc3FsX21vZHVsZSc7CisKK2xldCBwZ0Jyb3dzZXJPdXQgPSBpbml0aWFsaXplKGdl dHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIGNzcmZUb2tlbiwgcGdCcm93c2VyKTsKKwor bW9kdWxlLmV4cG9ydHMgPSB7CisgIHBnQnJvd3NlcjogcGdCcm93c2VyT3V0LAorfTsKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvc3RhdGljL2pzL3BzcWxfbW9kdWxlLmpzIGIv d2ViL3BnYWRtaW4vdG9vbHMvcHNxbC9zdGF0aWMvanMvcHNxbF9tb2R1bGUuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmE5YmRkOTBiCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvcHNxbC9zdGF0aWMvanMvcHNxbF9tb2R1bGUuanMKQEAgLTAsMCAr MSwzMjkgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLwor Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMSwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IFRlcm1pbmFsIH0gZnJvbSAneHRlcm0nOworaW1wb3J0 IHsgRml0QWRkb24gfSBmcm9tICd4dGVybS1hZGRvbi1maXQnOworaW1wb3J0IHsgV2ViTGlua3NB ZGRvbiB9IGZyb20gJ3h0ZXJtLWFkZG9uLXdlYi1saW5rcyc7CitpbXBvcnQgeyBTZWFyY2hBZGRv biB9IGZyb20gJ3h0ZXJtLWFkZG9uLXNlYXJjaCc7CitpbXBvcnQgeyBpbyB9IGZyb20gJ3NvY2tl dGlvJzsKK2ltcG9ydCBBbGVydGlmeSBmcm9tICdwZ2FkbWluLmFsZXJ0aWZ5anMnOworaW1wb3J0 IGNsaXBib2FyZCBmcm9tICdzb3VyY2VzL3NlbGVjdGlvbi9jbGlwYm9hcmQnOworCitpbXBvcnQg J3djZG9ja2VyJzsKK2ltcG9ydCB7Z2V0UmFuZG9tSW50fSBmcm9tICdzb3VyY2VzL3V0aWxzJzsK K2ltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0gZnJvbSAnc291cmNl cy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKKworCitleHBvcnQgZnVuY3Rpb24gc2V0UGFuZWxU aXRsZShwc3FsVG9vbFBhbmVsLCBwYW5lbFRpdGxlKSB7CisgIHBzcWxUb29sUGFuZWwudGl0bGUo JzxzcGFuIHRpdGxlPSInK3BhbmVsVGl0bGUrJyI+JytwYW5lbFRpdGxlKyc8L3NwYW4+Jyk7Cit9 CisKK3ZhciB3Y0RvY2tlciA9IHdpbmRvdy53Y0RvY2tlcjsKKworZXhwb3J0IGZ1bmN0aW9uIGlu aXRpYWxpemUoZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgY3NyZlRva2VuLCBCcm93 c2VyKSB7CisgIHZhciBwZ0Jyb3dzZXIgPSBCcm93c2VyOworICB2YXIgdGVybWluYWwgPSBUZXJt aW5hbDsKKyAgdmFyIHBhcmVudERhdGEgPSBudWxsOworICAvKiBSZXR1cm4gYmFjaywgdGhpcyBo YXMgYmVlbiBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgKi8KKyAgaWYgKHBnQnJvd3Nlci5wc3FsKQor ICAgIHJldHVybiBwZ0Jyb3dzZXIucHNxbDsKKworICAvLyBDcmVhdGUgYW4gT2JqZWN0IFJlc3Rv cmUgb2YgcGdCcm93c2VyIGNsYXNzCisgIHBnQnJvd3Nlci5wc3FsID0geworICAgIGluaXQ6IGZ1 bmN0aW9uKCkgeworICAgICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgIGNzcmZU b2tlbi5zZXRQR0NTUkZUb2tlbihwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBwZ0FkbWluLmNz cmZfdG9rZW4pOworICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVudXMg dG8gYmUgYXBwZWFyCisgICAgICB2YXIgbWVudXMgPSBbeworICAgICAgICBuYW1lOiAncHNxbCcs CisgICAgICAgIG1vZHVsZTogdGhpcywKKyAgICAgICAgYXBwbGllczogWyd0b29scyddLAorICAg ICAgICBjYWxsYmFjazogJ3BzcWxfdG9vbCcsCisgICAgICAgIHByaW9yaXR5OiAxLAorICAgICAg ICBsYWJlbDogZ2V0dGV4dCgnUFNRTCBUb29sIChCZXRhKScpLAorICAgICAgICBlbmFibGU6IHRo aXMucHNxbFRvb2xFbmFibGVkLAorICAgICAgfV07CisKKyAgICAgIHRoaXMuZW5hYmxlX3BzcWxf dG9vbCA9IHBnQWRtaW5bJ2VuYWJsZV9wc3FsJ107CisgICAgICBpZihwZ0FkbWluWydlbmFibGVf cHNxbCddKSB7CisgICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMobWVudXMpOworICAgICAgfQor CisgICAgICAvLyBDcmVhdGluZyBhIG5ldyBwZ0Jyb3dzZXIgZnJhbWUgdG8gc2hvdyB0aGUgZGF0 YS4KKyAgICAgIHZhciBwc3FsRnJhbWVUeXBlID0gbmV3IHBnQnJvd3Nlci5GcmFtZSh7CisgICAg ICAgIG5hbWU6ICdmcm1fcHNxbHRvb2wnLAorICAgICAgICBzaG93VGl0bGU6IHRydWUsCisgICAg ICAgIGlzQ2xvc2VhYmxlOiB0cnVlLAorICAgICAgICBpc1ByaXZhdGU6IHRydWUsCisgICAgICAg IHVybDogJ2Fib3V0OmJsYW5rJywKKyAgICAgIH0pOworCisgICAgICBsZXQgc2VsZiA9IHRoaXM7 CisgICAgICAvKiBDYWNoZSBtYXkgdGFrZSB0aW1lIHRvIGxvYWQgZm9yIHRoZSBmaXJzdCB0aW1l CisgICAgICAgKiBLZWVwIHRyeWluZyB0aWxsIGF2YWlsYWJsZQorICAgICAgICovCisgICAgICBs ZXQgY2FjaGVJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgIGlm KHBnQnJvd3Nlci5wcmVmZXJlbmNlX3ZlcnNpb24oKSA+IDApIHsKKyAgICAgICAgICBzZWxmLnBy ZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdwc3FsJyk7 CisgICAgICAgICAgY2xlYXJJbnRlcnZhbChjYWNoZUludGVydmFsSWQpOworICAgICAgICB9Cisg ICAgICB9LDApOworCisgICAgICBwZ0Jyb3dzZXIub25QcmVmZXJlbmNlc0NoYW5nZSgncHNxbCcs IGZ1bmN0aW9uKCkgeworICAgICAgICBzZWxmLnByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9w cmVmZXJlbmNlc19mb3JfbW9kdWxlKCdwc3FsJyk7CisgICAgICB9KTsKKworICAgICAgLy8gTG9h ZCB0aGUgbmV3bHkgY3JlYXRlZCBmcmFtZQorICAgICAgcHNxbEZyYW1lVHlwZS5sb2FkKHBnQnJv d3Nlci5kb2NrZXIpOworICAgICAgcmV0dXJuIHRoaXM7CisgICAgfSwKKworICAgIHBzcWxUb29s RW5hYmxlZDogZnVuY3Rpb24ob2JqKSB7CisgICAgICAvL1NhbWUgYXMgcXVlcnkgdG9vbAorICAg ICAgdmFyIGlzRW5hYmxlZCA9ICgoKSA9PiB7CisgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChv YmopICYmICFfLmlzTnVsbChvYmopKSB7CisgICAgICAgICAgaWYgKCh0aGlzLmVuYWJsZV9wc3Fs X3Rvb2wgPT0gdHJ1ZSkgJiYgKChvYmouX3R5cGUgPT0gJ3NlcnZlcicgJiYgb2JqLmNvbm5lY3Rl ZCA9PSB0cnVlICl8fCBvYmouX3R5cGUgPT0gJ2RhdGFiYXNlJykpIHsKKyAgICAgICAgICAgIHJl dHVybiB0cnVlOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgfQorICAgICAgfSkoKTsKKyAgICAgIHJldHVybiBpc0VuYWJsZWQ7CisgICAgfSwK KyAgICByZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyOiBmdW5jdGlvbihpdGVtKSB7CisgICAg ICBsZXQgc2VydmVySW5mb3JtYXRpb24gPSBudWxsOworICAgICAgLy8gbGV0IGFjaVRyZWVJdGVt ID0gaXRlbSB8fCBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0ZWQoKTsKKyAgICAgIGxldCB0cmVl Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVudChpdGVtKTsKKwor ICAgICAgaWYgKHRyZWVOb2RlKSB7CisgICAgICAgIGxldCBub2RlRGF0YTsKKyAgICAgICAgbGV0 IGRhdGFiYXNlTm9kZSA9IHRyZWVOb2RlLmFuY2VzdG9yTm9kZSgKKyAgICAgICAgICAobm9kZSkg PT4geworICAgICAgICAgICAgbm9kZURhdGEgPSBub2RlLmdldERhdGEoKTsKKyAgICAgICAgICAg IHJldHVybiAobm9kZURhdGEuX3R5cGUgPT09ICdkYXRhYmFzZScpOworICAgICAgICAgIH0KKyAg ICAgICAgKTsKKyAgICAgICAgbGV0IGlzU2VydmVyTm9kZSA9IChub2RlKSA9PiB7CisgICAgICAg ICAgbm9kZURhdGEgPSBub2RlLmdldERhdGEoKTsKKyAgICAgICAgICByZXR1cm4gbm9kZURhdGEu X3R5cGUgPT09ICdzZXJ2ZXInOworICAgICAgICB9OworCisgICAgICAgIGlmIChkYXRhYmFzZU5v ZGUgIT09IG51bGwpIHsKKyAgICAgICAgICBpZiAobm9kZURhdGEuX2xhYmVsLmluZGV4T2YoJz0n KSA+PSAwKSB7CisgICAgICAgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAg ICBnZXR0ZXh0KHRoaXMuZXJyb3JBbGVydFRpdGxlKSwKKyAgICAgICAgICAgICAgZ2V0dGV4dCgK KyAgICAgICAgICAgICAgICAnRGF0YWJhc2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNh bm5vdCBiZSBiYWNrZWQgdXAgb3IgcmVzdG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5LicKKyAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgaWYgKGRhdGFiYXNlTm9kZS5hbnlQYXJlbnQoaXNTZXJ2ZXJOb2RlKSkKKyAgICAgICAgICAg ICAgc2VydmVySW5mb3JtYXRpb24gPSBub2RlRGF0YTsKKyAgICAgICAgICB9CisgICAgICAgIH0g ZWxzZSB7CisgICAgICAgICAgaWYgKHRyZWVOb2RlLmFueUZhbWlseU1lbWJlcihpc1NlcnZlck5v ZGUpKQorICAgICAgICAgICAgc2VydmVySW5mb3JtYXRpb24gPSBub2RlRGF0YTsKKyAgICAgICAg fQorICAgICAgfQorCisgICAgICBpZiAoc2VydmVySW5mb3JtYXRpb24gPT09IG51bGwpIHsKKyAg ICAgICAgdGhpcy5hbGVydGlmeS5hbGVydCgKKyAgICAgICAgICBnZXR0ZXh0KHRoaXMuZXJyb3JB bGVydFRpdGxlKSwKKyAgICAgICAgICBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IHNlcnZlciBvciBj aGlsZCBub2RlIGZyb20gdGhlIGJyb3dzZXIgdHJlZS4nKQorICAgICAgICApOworICAgICAgfQor ICAgICAgcmV0dXJuIHNlcnZlckluZm9ybWF0aW9uOworICAgIH0sCisgICAgcHNxbF90b29sOiBm dW5jdGlvbihkYXRhLCBhY2lUcmVlSWRlbnRpZmllciwgZ2VuPWZhbHNlKSB7CisgICAgICBjb25z dCBtb2R1bGUgPSAncGF0aHMnOworICAgICAgbGV0IHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5f ZGlyJzsKKyAgICAgIGxldCBtc2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0 Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7CisgICAgICBj b25zdCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IHRoaXMucmV0cmlldmVBbmNlc3Rvck9mVHlwZVNlcnZl cihhY2lUcmVlSWRlbnRpZmllcik7CisKKyAgICAgIC8vIGNvbnN0IG5vZGUxID0gcGdCcm93c2Vy LnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgICAg IGlmICgoc2VydmVySW5mb3JtYXRpb24udHlwZSAmJiBzZXJ2ZXJJbmZvcm1hdGlvbi50eXBlID09 PSAncHBhcycpIHx8CisgICAgICAgIHNlcnZlckluZm9ybWF0aW9uLnNlcnZlcl90eXBlID09PSAn cHBhcycpIHsKKyAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BwYXNfYmluX2Rpcic7CisgICAg ICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2 ZXIgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nKTsKKyAgICAgIH0KKyAg ICAgIGNvbnN0IHByZWZlcmVuY2UgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBw cmVmZXJlbmNlX25hbWUpOworCisgICAgICBpZiAocHJlZmVyZW5jZSkgeworICAgICAgICBpZiAo IXByZWZlcmVuY2UudmFsdWUpIHsKKyAgICAgICAgICBBbGVydGlmeS5hbGVydChnZXR0ZXh0KCdD b25maWd1cmF0aW9uIHJlcXVpcmVkJyksIG1zZyk7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBBbGVydGlmeS5hbGVydCgKKyAgICAg ICAgICBnZXR0ZXh0KHRoaXMuZXJyb3JBbGVydFRpdGxlKSwKKyAgICAgICAgICBnZXR0ZXh0KCdG YWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycsIHByZWZlcmVuY2VfbmFt ZSwgbW9kdWxlKQorICAgICAgICApOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9Cisg ICAgICBjb25zdCBub2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50 KGFjaVRyZWVJZGVudGlmaWVyKTsKKyAgICAgIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgIW5v ZGUuZ2V0RGF0YSgpKSB7CisgICAgICAgIEFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgIGdldHRl eHQoJ1BTUUwgRXJyb3InKSwKKyAgICAgICAgICBnZXR0ZXh0KCdObyBvYmplY3Qgc2VsZWN0ZWQu JykKKyAgICAgICAgKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBwYXJlbnRE YXRhID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5jYWxsKAorICAgICAgICBw Z0Jyb3dzZXIsCisgICAgICAgIGFjaVRyZWVJZGVudGlmaWVyCisgICAgICApOworCisgICAgICBp ZihfLmlzVW5kZWZpbmVkKHBhcmVudERhdGEuc2VydmVyKSkgeworICAgICAgICBBbGVydGlmeS5h bGVydCgKKyAgICAgICAgICBnZXR0ZXh0KCdQU1FMIEVycm9yJyksCisgICAgICAgICAgZ2V0dGV4 dCgnUGxlYXNlIHNlbGVjdCBhIHNlcnZlci9kYXRhYmFzZSBvYmplY3QuJykKKyAgICAgICAgKTsK KyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgICAgICBjb25zdCB0cmFuc0lkID0gZ2V0UmFu ZG9tSW50KDEsIDk5OTk5OTkpOworCisgICAgICB2YXIgcGFuZWxUaXRsZSA9ICcnOworICAgICAg aWYgKHBhcmVudERhdGEuZGF0YWJhc2UpIHsKKyAgICAgICAgcGFuZWxUaXRsZSA9IHBhcmVudERh dGEuZGF0YWJhc2UubGFiZWwgKyAnLycgKyBwYXJlbnREYXRhLnNlcnZlci51c2VyX25hbWUgKyAn QCcgKyBwYXJlbnREYXRhLnNlcnZlci5sYWJlbDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHBh bmVsVGl0bGUgPSBwYXJlbnREYXRhLnNlcnZlci51c2VyX25hbWUgKyAnQCcgKyBwYXJlbnREYXRh LnNlcnZlci5sYWJlbDsKKyAgICAgIH0KKyAgICAgIGNvbnN0IFtwYW5lbFVybCwgcGFuZWxDbG9z ZVVybF0gPSB0aGlzLmdldFBhbmVsVXJscyh0cmFuc0lkLCBwYW5lbFRpdGxlLCBwYXJlbnREYXRh LCBnZW4pOworCisgICAgICBsZXQgcHNxbFRvb2xGb3JtID0gYAorICAgICAgICA8Zm9ybSBpZD0i cHNxbFRvb2xGb3JtIiBhY3Rpb249IiR7cGFuZWxVcmx9IiBtZXRob2Q9InBvc3QiPgorICAgICAg ICAgIDxpbnB1dCBpZD0idGl0bGUiIG5hbWU9InRpdGxlIiBoaWRkZW4gLz4KKyAgICAgICAgICA8 aW5wdXQgbmFtZT0iY2xvc2VfdXJsIiB2YWx1ZT0iJHtwYW5lbENsb3NlVXJsfSIgaGlkZGVuIC8+ CisgICAgICAgIDwvZm9ybT4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgidGl0bGUiKS52YWx1ZSA9ICIke18uZXNjYXBlKHBhbmVsVGl0bGUpfSI7 CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBzcWxUb29sRm9ybSIpLnN1Ym1p dCgpOworICAgICAgICA8L3NjcmlwdD4KKyAgICAgIGA7CisKKyAgICAgIHZhciBvcGVuX25ld190 YWIgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ2Jyb3dzZXInKS5uZXdf YnJvd3Nlcl90YWJfb3BlbjsKKyAgICAgIGlmIChvcGVuX25ld190YWIgJiYgb3Blbl9uZXdfdGFi LmluY2x1ZGVzKCdwc3FsX3Rvb2wnKSkgeworICAgICAgICB2YXIgbmV3V2luID0gd2luZG93Lm9w ZW4oJycsICdfYmxhbmsnKTsKKyAgICAgICAgbmV3V2luLmRvY3VtZW50LndyaXRlKHBzcWxUb29s Rm9ybSk7CisgICAgICAgIG5ld1dpbi5kb2N1bWVudC50aXRsZSA9IHBhbmVsVGl0bGU7CisgICAg ICB9IGVsc2UgeworICAgICAgICAvKiBPbiBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6YXRpb24gZmlu ZCB0aGUgcHJvcGVydGllcyBwYW5lbCwKKyAgICAgICAgICogY3JlYXRlIG5ldyBwYW5lbCBhbmQg YWRkIGl0IHRvIHRoZSBkYXNoYm9hcmQgcGFuZWwuCisgICAgICAgICAqLworICAgICAgICB2YXIg cHJvcGVydGllc1BhbmVsID0gcGdCcm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdwcm9wZXJ0aWVz Jyk7CisgICAgICAgIHZhciBwc3FsVG9vbFBhbmVsID0gcGdCcm93c2VyLmRvY2tlci5hZGRQYW5l bCgnZnJtX3BzcWx0b29sJywgd2NEb2NrZXIuRE9DSy5TVEFDS0VELCBwcm9wZXJ0aWVzUGFuZWxb MF0pOworCisgICAgICAgIC8vIFNldCBwYW5lbCB0aXRsZSBhbmQgaWNvbgorICAgICAgICBzZXRQ YW5lbFRpdGxlKHBzcWxUb29sUGFuZWwsIHBhbmVsVGl0bGUpOworICAgICAgICBwc3FsVG9vbFBh bmVsLmljb24oJ2ZhcyBmYS10ZXJtaW5hbCcpOworICAgICAgICBwc3FsVG9vbFBhbmVsLmZvY3Vz KCk7CisKKyAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBwYW5lbCBjbG9zZWQgZXZlbnQuCisgICAg ICAgIC8qcHNxbFRvb2xQYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5DTE9TRUQsIGZ1bmN0aW9uKCkg eworICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAgICB1cmw6IHBhbmVsQ2xvc2VVcmwsCisg ICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAorICAgICAgICAgIH0pOworICAgICAgICB9KTsq LworCisgICAgICAgIHZhciBvcGVuUFNRTFRvb2xVUkwgPSBmdW5jdGlvbihqKSB7CisgICAgICAg ICAgLy8gYWRkIHNwaW5uZXIgZWxlbWVudAorICAgICAgICAgIGxldCAkc3Bpbm5lcl9lbCA9Cisg ICAgICAgICAgICAkKGA8ZGl2IGNsYXNzPSJwZy1zcC1jb250YWluZXIiPgorICAgICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0icGctc3AtY29udGVudCI+CisgICAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzcz0icm93Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i Y29sLTEyIHBnLXNwLWljb24iPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pgor ICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgIDwvZGl2PmApLmFwcGVuZFRv KCQoaikuZGF0YSgnZW1iZWRkZWRGcmFtZScpLiRjb250YWluZXIpOworCisgICAgICAgICAgbGV0 IGluaXRfcG9sbGVyX2lkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2 YXIgZnJhbWVJbml0aWFsaXplZCA9ICQoaikuZGF0YSgnZnJhbWVJbml0aWFsaXplZCcpOworICAg ICAgICAgICAgaWYgKGZyYW1lSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgICAgY2xlYXJJbnRl cnZhbChpbml0X3BvbGxlcl9pZCk7CisgICAgICAgICAgICAgIHZhciBmcmFtZSA9ICQoaikuZGF0 YSgnZW1iZWRkZWRGcmFtZScpOworICAgICAgICAgICAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAg ICAgICAgICBmcmFtZS5vbkxvYWRlZCgoKT0+eworICAgICAgICAgICAgICAgICAgJHNwaW5uZXJf ZWwucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZnJhbWUu b3BlbkhUTUwocHNxbFRvb2xGb3JtKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor ICAgICAgICAgIH0sIDEwMCk7CisgICAgICAgIH07CisKKyAgICAgICAgb3BlblBTUUxUb29sVVJM KHBzcWxUb29sUGFuZWwpOworCisgICAgICB9CisKKyAgICAgIC8vICAgICAgdmFyIHVybF9wYXJh bXMgPSB7CisgICAgICAvLyAgICAgICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKKyAg ICAgIC8vICAgICAgfTsKKyAgICAgIC8vICAgICAgdmFyICBiYXNlVXJsID0gdXJsX2ZvcigncHNx bC5pbml0aWFsaXplJywgdXJsX3BhcmFtcyk7CisgICAgICAvLworICAgICAgLy8gICAgICB3aW5k b3cub3BlbihiYXNlVXJsLCAnX2JsYW5rJyk7CisgICAgfSwKKyAgICBnZXRQYW5lbFVybHM6IGZ1 bmN0aW9uKHRyYW5zSWQsIHBhbmVsVGl0bGUsIHBhcmVudERhdGEpIHsKKyAgICAgIGxldCBvcGVu VXJsID0gdXJsX2ZvcigncHNxbC5wYW5lbCcsIHsKKyAgICAgICAgdHJhbnNfaWQ6IHRyYW5zSWQs CisgICAgICB9KTsKKworICAgICAgb3BlblVybCArPSBgP3NnaWQ9JHtwYXJlbnREYXRhLnNlcnZl cl9ncm91cC5faWR9YAorICAgICAgICArYCZzaWQ9JHtwYXJlbnREYXRhLnNlcnZlci5faWR9YAor ICAgICAgICArYCZzZXJ2ZXJfdHlwZT0ke3BhcmVudERhdGEuc2VydmVyLnNlcnZlcl90eXBlfWA7 CisKKyAgICAgIGlmKHBhcmVudERhdGEuZGF0YWJhc2UgJiYgcGFyZW50RGF0YS5kYXRhYmFzZS5f aWQpIHsKKyAgICAgICAgb3BlblVybCArPSBgJmRiPSR7cGFyZW50RGF0YS5kYXRhYmFzZS5fbGFi ZWx9YDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG9wZW5VcmwgKz0gYCZkYj0keycnfWA7Cisg ICAgICB9CisKKyAgICAgIGxldCBjbG9zZVVybCA9IHVybF9mb3IoJ3BzcWwuY2xvc2UnLCB7Cisg ICAgICAgIHRyYW5zX2lkOiB0cmFuc0lkLAorICAgICAgICAvLyAgICAgICAgc2dpZDogcGFyZW50 RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lkLAorICAgICAgICAvLyAgICAgICAgc2lkOiBwYXJlbnREYXRh LnNlcnZlci5faWQsCisgICAgICAgIC8vICAgICAgICBkaWQ6IHBhcmVudERhdGEuZGF0YWJhc2Uu X2lkLAorICAgICAgfSk7CisgICAgICByZXR1cm4gW29wZW5VcmwsIGNsb3NlVXJsXTsKKyAgICB9 LAorICAgIHBzcWxfdGVybWluYWw6IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIG5ldyB0ZXJt aW5hbCh7CisgICAgICAgIGN1cnNvckJsaW5rOiB0cnVlLAorICAgICAgICBtYWNPcHRpb25Jc01l dGE6IHRydWUsCisgICAgICAgIHNjcm9sbGJhY2s6IDEwMDAwLAorICAgICAgfSk7CisgICAgfSwK KyAgICBwc3FsX2ZpdF9zY3JlZW46IGZ1bmN0aW9uKCkgeworICAgICAgcmV0dXJuIG5ldyBGaXRB ZGRvbigpOworICAgIH0sCisgICAgcHNxbF93ZWJfbGluazogZnVuY3Rpb24oKSB7CisgICAgICBy ZXR1cm4gbmV3IFdlYkxpbmtzQWRkb24oKTsKKyAgICB9LAorICAgIHBzcWxfc2VhcmNoOiBmdW5j dGlvbigpIHsKKyAgICAgIHJldHVybiBuZXcgU2VhcmNoQWRkb24oKTsKKyAgICB9LAorICAgIHBz cWxfc29ja2V0OiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiBpbygnL3B0eScsIHtwaW5nVGlt ZW91dDogMTIwMDAwLCBwaW5nSW50ZXJ2YWw6IDI1MDAwfSk7CisgICAgfSwKKyAgICBnZXRfcGFy ZW50X2RiOiBmdW5jdGlvbigpeworICAgICAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyOworICAg IH0sCisgICAgX2NsaXBib2FyZDogZnVuY3Rpb24oKSB7CisgICAgICByZXR1cm4gY2xpcGJvYXJk OworICAgIH0KKyAgfTsKKworICByZXR1cm4gcGdCcm93c2VyLnBzcWw7Cit9CisKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVtcGxhdGVzL2VkaXRvcl90ZW1wbGF0ZS5odG1s IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZW1wbGF0ZXMvZWRpdG9yX3RlbXBsYXRlLmh0bWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmU1ZjUwYTI5Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZW1wbGF0ZXMvZWRpdG9yX3RlbXBsYXRl Lmh0bWwKQEAgLTAsMCArMSwxMzcgQEAKK3slIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KK3slIGJs b2NrIHRpdGxlICV9e3t0aXRsZX19eyUgZW5kYmxvY2sgJX0KKworeyUgYmxvY2sgY3NzX2xpbmsg JX0KKzxsaW5rIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVybF9m b3IoJ2Jyb3dzZXIuYnJvd3Nlcl9jc3MnKX19Ii8+Cit7JSBlbmRibG9jayAlfQoreyUgYmxvY2sg Ym9keSAlfQorPHN0eWxlPgorICAgIGJvZHkge3BhZGRpbmc6IDBweDt9CisgICAgeyUgaWYgaXNf ZGVza3RvcF9tb2RlIGFuZCBpc19saW51eCAlfQorICAgIC5hbGVydGlmeSAuYWpzLWRpbW1lciwu YWxlcnRpZnkgLmFqcy1tb2RhbHstd2Via2l0LXRyYW5zZm9ybTogbm9uZTt9CisgICAgLmFsZXJ0 aWZ5LW5vdGlmaWVyey13ZWJraXQtdHJhbnNmb3JtOiBub25lO30KKyAgICAuYWxlcnRpZnktbm90 aWZpZXIgLmFqcy1tZXNzYWdley13ZWJraXQtdHJhbnNmb3JtOiBub25lO30KKyAgICAuYWxlcnRp ZnkgLmFqcy1kaWFsb2cuYWpzLXNoYWtley13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IG5vbmU7fQor ICAgIC5zcWwtZWRpdG9yLWJ1c3ktaWNvbi5mYS1wdWxzZXstd2Via2l0LWFuaW1hdGlvbjogbm9u ZTt9CisgICAgeyUgZW5kaWYgJX0KKzwvc3R5bGU+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsg aGVpZ2h0OiAxMDAlOyIgaWQ9InBzcWwtdGVybWluYWwiIGNsYXNzPSJwc3FsX3Rlcm1pbmFsIj48 L2Rpdj4KK3slIGVuZGJsb2NrICV9CisKKworeyUgYmxvY2sgaW5pdF9zY3JpcHQgJX0KK3JlcXVp cmUoCisgICAgWydzb3VyY2VzL2dlbmVyYXRlZC9wc3FsX3Rvb2wnXSwKKyAgICBmdW5jdGlvbihw Z0Jyb3dzZXIpIHsKKyAgICAgICAgY29uc3QgdGVybSA9IHNlbGYucGdBZG1pbi5Ccm93c2VyLnBz cWwucHNxbF90ZXJtaW5hbCgpOworCisgICAgICAgIGNvbnN0IGZpdEFkZG9uID0gc2VsZi5wZ0Fk bWluLkJyb3dzZXIucHNxbC5wc3FsX2ZpdF9zY3JlZW4oKTsKKyAgICAgICAgdGVybS5sb2FkQWRk b24oZml0QWRkb24pOworICAgICAgICBsZXQgY2xpcGJvYXJkID0gc2VsZi5wZ0FkbWluLkJyb3dz ZXIucHNxbC5fY2xpcGJvYXJkKCk7CisKKyAgICAgICAgY29uc3Qgd2ViTGlua3NBZGRvbiA9IHNl bGYucGdBZG1pbi5Ccm93c2VyLnBzcWwucHNxbF93ZWJfbGluaygpOworICAgICAgICB0ZXJtLmxv YWRBZGRvbih3ZWJMaW5rc0FkZG9uKTsKKworICAgICAgICBjb25zdCBzZWFyY2hBZGRvbiA9IHNl bGYucGdBZG1pbi5Ccm93c2VyLnBzcWwucHNxbF9zZWFyY2goKTsKKyAgICAgICAgdGVybS5sb2Fk QWRkb24oc2VhcmNoQWRkb24pOworCisgICAgICAgIHRlcm0ub3Blbihkb2N1bWVudC5nZXRFbGVt ZW50QnlJZCgncHNxbC10ZXJtaW5hbCcpKTsKKyAgICAgICAgZml0QWRkb24uZml0KCkKKyAgICAg ICAgdGVybS5yZXNpemUoMTUsIDUwKQorICAgICAgICBmaXRBZGRvbi5maXQoKQorICAgICAgICBs ZXQgc2VsZWN0ZWRfdGV4dCA9ICcnOworICAgICAgICBsZXQgdXNlcl9pbnB1dCA9ICcnOworICAg ICAgICBsZXQgaXNfcHdkID0gdHJ1ZTsKKyAgICAgICAgbGV0IGN1cnNvcl9wb3NpdGlvbiA9IDA7 CisKKyAgICAgICAgdGVybS5hdHRhY2hDdXN0b21LZXlFdmVudEhhbmRsZXIoZSA9PiB7CisgICAg ICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgaWYoZS50eXBlPT0na2V5 ZG93bicgJiYgZS5tZXRhS2V5ICYmKGUua2V5ID09ICd2JyB8fCBlLmtleSA9PSAnVicpKSB7Cisg ICAgICAgICAgICAgICAgaWYoc2VsZWN0ZWRfdGV4dCAhPSAnJykgeworICAgICAgICAgICAgICAg ICAgICBpZiAoc2VsZWN0ZWRfdGV4dC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAg ICAgICBzb2NrZXQuZW1pdCgic29ja2V0X2lucHV0IiwgeyJpbnB1dCI6IHNlbGVjdGVkX3RleHQs ICdrZXlfbmFtZSc6IGUuY29kZX0pOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRf dGV4dCA9ICcnOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgICAgICAgbmF2aWdhdG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpLnRo ZW4oIGNsaXBUZXh0ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3RleHQg PSBjbGlwVGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZF90ZXh0Lmxl bmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuZW1pdCgic29j a2V0X2lucHV0IiwgeyJpbnB1dCI6IHNlbGVjdGVkX3RleHQsICdrZXlfbmFtZSc6IGUuY29kZX0p OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3RleHQgPSAnJzsKKyAgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg ICAgICAgfQorCisgICAgICAgICAgICB9ZWxzZSBpZihlLnR5cGU9PSdrZXlkb3duJyAmJiBlLm1l dGFLZXkgJiYgKGUua2V5ID09ICdjJyB8fCBlLmtleSA9PSAnQycpKSB7CisgICAgICAgICAgICAg ICAgaWYgKHRlcm0uaGFzU2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0 ZWRfdGV4dCA9IHRlcm0uZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRfdGV4dCA9IGNsaXBib2FyZC5yZWFkVGV4dCgp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKzwhLS0gICAgICAgICAgICBlbHNl IGlmIChlLnR5cGU9PSdrZXlkb3duJyAmJiBlLmtleUNvZGUgPT0gMzIpIHstLT4KKzwhLS0gICAg ICAgICAgICAgICAgdXNlcl9pbnB1dCArPSBlLmtleTstLT4KKzwhLS0gICAgICAgICAgICAgICAg Y29uc29sZS5sb2coJ1NQQUNFQkFSJyk7LS0+Cis8IS0tICAgICAgICAgICAgICAgIHNvY2tldC5l bWl0KCJzb2NrZXRfaW5wdXQiLCB7ImlucHV0IjogZS5rZXksICdrZXlfbmFtZSc6IGUuY29kZX0p Oy0tPgorPCEtLSAgICAgICAgICAgIH0tLT4KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICB9KTsKKworICAgICAgICB0ZXJtLm9uS2V5KGZ1bmN0aW9uIChldikgeworICAgICAgICAg ICAgaWYgKHBnQWRtaW5bJ2FsbG93X3BzcWxfc2hlbGxfY29tbWFuZHMnXSkgeworICAgICAgICAg ICAgICAgIHNvY2tldC5lbWl0KCJzb2NrZXRfaW5wdXQiLCB7ImlucHV0IjogZXYua2V5LCAna2V5 X25hbWUnOiBldi5kb21FdmVudC5jb2RlfSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgIGNvbnNvbGUubG9nKCJzb2NrZXRfaW5wdXQiICsgZXYua2V5KTsKKyAgICAgICAg ICAgICAgICBzb2NrZXQuZW1pdCgic29ja2V0X2lucHV0IiwgeyJpbnB1dCI6IGV2LmtleSwgJ2tl eV9uYW1lJzogZXYuZG9tRXZlbnQuY29kZX0pOworICAgICAgICAgICAgfQorICAgICAgICB9KTsK KworICAgICAgICBjb25zdCBzb2NrZXQgPSBzZWxmLnBnQWRtaW4uQnJvd3Nlci5wc3FsLnBzcWxf c29ja2V0KCk7CisKKyAgICAgICAgc29ja2V0Lm9uKCJwdHktb3V0cHV0IiwgZnVuY3Rpb24oZGF0 YSl7CisgICAgICAgICAgICBpZihkYXRhLmVycm9yKSB7CisgICAgICAgICAgICAgICAgdGVybS53 cml0ZSgnXHJcbicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGVybS53cml0ZShkYXRh LnJlc3VsdCk7CisgICAgICAgICAgICBpZihkYXRhLmVycm9yKSB7CisgICAgICAgICAgICAgICAg dGVybS53cml0ZSgnXHJcbicpOworICAgICAgICAgICAgfQorICAgICAgICB9KQorCisgICAgICAg IHNvY2tldC5vbigiY29ubmVjdCIsICgpID0+IHsKKyAgICAgICAgICAgIGlmKCd7e2lzX2VuYWJs ZX19JyA9PSAnVHJ1ZScpeworICAgICAgICAgICAgICAgIHNvY2tldC5lbWl0KCdzdGFydF9wcm9j ZXNzJywgeyJzaWQiOiB7e3NpZH19LCAiZGIiOiAne3tkYn19JywgJ3N0eXBlJzogJ3t7c2VydmVy X3R5cGV9fScgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaXRUb3NjcmVlbigpOwor ICAgICAgICB9KTsKKworICAgICAgICBzb2NrZXQub24oImNvbm5fZXJyb3IiLCAocmVzcG9uc2Up ID0+IHsKKyAgICAgICAgICAgIHRlcm0ud3JpdGUocmVzcG9uc2UuZXJyb3IpOworICAgICAgICAg ICAgZml0VG9zY3JlZW4oKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgc29ja2V0Lm9uKCJjb25u X25vdF9hbGxvdyIsICgpID0+IHsKKyAgICAgICAgICAgIHRlcm0ud3JpdGUoJ1BTUUwgY29ubmVj dGlvbiBub3QgYWxsb3dlZCcpOworICAgICAgICAgICAgZml0VG9zY3JlZW4oKTsKKyAgICAgICAg fSk7CisKKyAgICAgICAgZnVuY3Rpb24gZml0VG9zY3JlZW4oKXsKKyAgICAgICAgICAgIGZpdEFk ZG9uLmZpdCgpCisgICAgICAgICAgICBzb2NrZXQuZW1pdCgicmVzaXplIiwgeyJjb2xzIjogdGVy bS5jb2xzLCAicm93cyI6IHRlcm0ucm93c30pCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv biBkZWJvdW5jZShmdW5jLCB3YWl0X21zKSB7CisgICAgICAgICAgICBsZXQgdGltZW91dAorICAg ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKC4uLmFyZ3MpIHsKKyAgICAgICAgICAgICAgY29uc3Qg Y29udGV4dCA9IHRoaXMKKyAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpCisgICAg ICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGZ1bmMuYXBwbHkoY29udGV4dCwg YXJncyksIHdhaXRfbXMpCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjb25z dCB3YWl0X21zID0gNTA7OworICAgICAgICB3aW5kb3cub25yZXNpemUgPSBkZWJvdW5jZShmaXRU b3NjcmVlbiwgd2FpdF9tcykKKyAgICB9KTsKK3slIGVuZGJsb2NrICV9CisKKwpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3BzcWwvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAuLmU2OWRlMjliCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rl c3RzL3BzcWxfdGVzdF9kYXRhLmpzb24gYi93ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rlc3RzL3Bz cWxfdGVzdF9kYXRhLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjli MmNmYWY1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy9w c3FsX3Rlc3RfZGF0YS5qc29uCkBAIC0wLDAgKzEsMTc0IEBACit7CisgICJwc3FsX3VzZXJfaW5w dXQiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAiRW50ZXIgU2VsZWN0IDE7IiwKKyAgICAgICJp c19wb3NpdGl2ZV90ZXN0IjogdHJ1ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFsc2Us CisgICAgICAiaW5wdXRfY21kIjogInNlbGVjdCAxOyIsCisgICAgICAibW9ja19kYXRhIjogewor CisgICAgICB9LAorICAgICAgImV4cGVjdGVkX2RhdGEiOiB7CisgICAgICB9CisgICAgfSwKKyAg ICB7CisgICAgICAibmFtZSI6ICJFbnRlciBCYWNrc3BhY2UiLAorICAgICAgImlzX3Bvc2l0aXZl X3Rlc3QiOiB0cnVlLAorICAgICAgIm1vY2tpbmdfcmVxdWlyZWQiOiBmYWxzZSwKKyAgICAgICJp bnB1dF9jbWQiOiAic2VsZWN0IDE7IiwKKyAgICAgICJpc19iYWNrc3BhY2UiOiB0cnVlLAorICAg ICAgIm1vY2tfZGF0YSI6IHsKKworICAgICAgfSwKKyAgICAgICJleHBlY3RlZF9kYXRhIjogewor ICAgICAgfQorICAgIH0seworICAgICAgIm5hbWUiOiAiRW50ZXIgQmFja3NwYWNlIiwKKyAgICAg ICJpc19wb3NpdGl2ZV90ZXN0IjogdHJ1ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFs c2UsCisgICAgICAiaW5wdXRfY21kIjogInNlbGVjdCAxOyIsCisgICAgICAiaXNfYmFja3NwYWNl IjogdHJ1ZSwKKyAgICAgICJtb3ZlX2N1cnNvcl91cCI6IHRydWUsCisgICAgICAibW9ja19kYXRh IjogeworCisgICAgICB9LAorICAgICAgImV4cGVjdGVkX2RhdGEiOiB7CisgICAgICB9CisgICAg fSwKKyAgICB7CisgICAgICAibmFtZSI6ICJFbnRlciBBcnJvd1VwIiwKKyAgICAgICJpc19wb3Np dGl2ZV90ZXN0IjogdHJ1ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFsc2UsCisgICAg ICAiaW5wdXRfY21kIjogInNlbGVjdCAxOyIsCisgICAgICAiaXNfYXJyb3dVcCI6IHRydWUsCisg ICAgICAibW9ja19kYXRhIjogeworCisgICAgICB9LAorICAgICAgImV4cGVjdGVkX2RhdGEiOiB7 CisgICAgICB9CisgICAgfSwKKyAgICB7CisgICAgICAibmFtZSI6ICJFbnRlciBBcnJvd1VwIiwK KyAgICAgICJpc19wb3NpdGl2ZV90ZXN0IjogdHJ1ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVk IjogZmFsc2UsCisgICAgICAiaW5wdXRfY21kIjogInNlbGVjdCAxOyIsCisgICAgICAiaXNfYXJy b3dVcCI6IHRydWUsCisgICAgICAiaXNfaGlzdG9yeSI6IHRydWUsCisgICAgICAibW9ja19kYXRh IjogeworCisgICAgICB9LAorICAgICAgImV4cGVjdGVkX2RhdGEiOiB7CisgICAgICB9CisgICAg fSwKKyAgICB7CisgICAgICAibmFtZSI6ICJFbnRlciBBcnJvd0xlZnQiLAorICAgICAgImlzX3Bv c2l0aXZlX3Rlc3QiOiB0cnVlLAorICAgICAgIm1vY2tpbmdfcmVxdWlyZWQiOiBmYWxzZSwKKyAg ICAgICJpbnB1dF9jbWQiOiAic2VsZWN0IDE7IiwKKyAgICAgICJpc19hcnJvd0xlZnQiOiB0cnVl LAorICAgICAgIm1vY2tfZGF0YSI6IHsKKworICAgICAgfSwKKyAgICAgICJleHBlY3RlZF9kYXRh IjogeworICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgIm5hbWUiOiAiRW50ZXIgQXJyb3dS aWdodCIsCisgICAgICAiaXNfcG9zaXRpdmVfdGVzdCI6IHRydWUsCisgICAgICAibW9ja2luZ19y ZXF1aXJlZCI6IGZhbHNlLAorICAgICAgImlucHV0X2NtZCI6ICJzZWxlY3QgMTsiLAorICAgICAg ImlzX2Fycm93UmlnaHQiOiB0cnVlLAorICAgICAgIm1vY2tfZGF0YSI6IHsKKworICAgICAgfSwK KyAgICAgICJleHBlY3RlZF9kYXRhIjogeworICAgICAgfQorICAgIH0seworICAgICAgIm5hbWUi OiAiUmVhZCBwcmV2aW91cyBleGVjdXRlZCBjb21tYW5kIiwKKyAgICAgICJpc19wb3NpdGl2ZV90 ZXN0IjogdHJ1ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFsc2UsCisgICAgICAiaW5w dXRfY21kIjogInNlbGVjdCAxOyIsCisgICAgICAiaXNfYXJyb3dSaWdodCI6IHRydWUsCisgICAg ICAibW92ZV9jdXJzb3JfcmlnaHQiOiB0cnVlLAorICAgICAgIm1vY2tfZGF0YSI6IHsKKworICAg ICAgfSwKKyAgICAgICJleHBlY3RlZF9kYXRhIjogeworICAgICAgfQorICAgIH0sCisgICAgewor ICAgICAgIm5hbWUiOiAiTWV0YSBjb21tYW5kIFxcISBub3QgYWxsb3dlZCIsCisgICAgICAiaXNf cG9zaXRpdmVfdGVzdCI6IHRydWUsCisgICAgICAibW9ja2luZ19yZXF1aXJlZCI6IGZhbHNlLAor ICAgICAgImlucHV0X2NtZCI6ICJcXCEiLAorICAgICAgIm1vY2tfZGF0YSI6IHsKKworICAgICAg fSwKKyAgICAgICJleHBlY3RlZF9kYXRhIjogeworICAgICAgfQorICAgIH0sCisgICAgeworICAg ICAgIm5hbWUiOiAiTWV0YSBjb21tYW5kIFxcISB3aXRoIG90aGVyIGNtZCBub3QgYWxsb3dlZCIs CisgICAgICAiaXNfcG9zaXRpdmVfdGVzdCI6IHRydWUsCisgICAgICAibW9ja2luZ19yZXF1aXJl ZCI6IGZhbHNlLAorICAgICAgImlucHV0X2NtZCI6ICJcXCEgbHMiLAorICAgICAgIm1vY2tfZGF0 YSI6IHsKKworICAgICAgfSwKKyAgICAgICJleHBlY3RlZF9kYXRhIjogeworICAgICAgfQorICAg IH0sCisgICAgeworICAgICAgIm5hbWUiOiAiVmFsaWQgY29tbWFuZHMiLAorICAgICAgImlzX3Bv c2l0aXZlX3Rlc3QiOiB0cnVlLAorICAgICAgIm1vY2tpbmdfcmVxdWlyZWQiOiBmYWxzZSwKKyAg ICAgICJpbnB1dF9jbWQiOiAic2VsZWN0IFwiXFwhXCIiLAorICAgICAgIm1vY2tfZGF0YSI6IHsK KworICAgICAgfSwKKyAgICAgICJleHBlY3RlZF9kYXRhIjogeworICAgICAgfQorICAgIH0sCisg ICAgeworICAgICAgIm5hbWUiOiAiRXhpc3QgcHNxbCB0ZXJtaW5hbCBieSB1c2luZyBcXHEiLAor ICAgICAgImlzX3Bvc2l0aXZlX3Rlc3QiOiB0cnVlLAorICAgICAgIm1vY2tpbmdfcmVxdWlyZWQi OiBmYWxzZSwKKyAgICAgICJpbnB1dF9jbWQiOiAiXFxxIiwKKyAgICAgICJtb2NrX2RhdGEiOiB7 CisKKyAgICAgIH0sCisgICAgICAiZXhwZWN0ZWRfZGF0YSI6IHsKKyAgICAgIH0KKyAgICB9Cisg IF0sCisgICJyZXNpemVfdGVybWluYWwiOiBbCisgICAgeworICAgICAgIm5hbWUiOiAiUmVzaXpl IHBzcWwgdGVybWluYWwgYXMgcGVyIFVJLiIsCisgICAgICAiaXNfcG9zaXRpdmVfdGVzdCI6IHRy dWUsCisgICAgICAibW9ja2luZ19yZXF1aXJlZCI6IGZhbHNlLAorICAgICAgImlucHV0X2RhdGEi OiAgeworICAgICAgICAiY29scyI6IDE0MSwKKyAgICAgICAgInJvd3MiOiAzOQorICAgICAgfSwK KyAgICAgICJtb2NrX2RhdGEiOiB7CisKKyAgICAgIH0sCisgICAgICAiZXhwZWN0ZWRfZGF0YSI6 IHsKKyAgICAgIH0KKyAgICB9CisgIF0sCisgICJiYWNrZW5kX3Rhc2siOiBbCisgICAgeworICAg ICAgIm5hbWUiOiAiQmFja2VuZCBUYXNrIiwKKyAgICAgICJpc19wb3NpdGl2ZV90ZXN0IjogdHJ1 ZSwKKyAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFsc2UsCisgICAgICAiaW5wdXRfY21kIjog IlNlbGVjdCAxOyIsCisgICAgICAiaXNfYmFja2VuZF90YXNrIjogdHJ1ZSwKKyAgICAgICJtb2Nr X2RhdGEiOiB7CisgICAgICAgICJpc190ZXN0IjogdHJ1ZQorICAgICAgfSwKKyAgICAgICJleHBl Y3RlZF9kYXRhIjogeworICAgICAgfQorICAgIH0KKyAgXQorfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X2JhY2tlbmRfdGFzay5weSBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9iYWNrZW5kX3Rhc2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLjk5MDczYzBhCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X2JhY2tlbmRfdGFzay5weQpAQCAtMCwwICsxLDg4IEBA CitpbXBvcnQgdXVpZAoraW1wb3J0IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxz IGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVu dF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0 YQorZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxz Citmcm9tIHBnQWRtaW40IGltcG9ydCBhcHAKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgcHNxbF91 dGlscworZnJvbSAuLi4uIGltcG9ydCBzb2NrZXRpbworCisKK2NsYXNzIFBTUUxCYWNrZW5kKEJh c2VUZXN0R2VuZXJhdG9yKToKKyAgICBzY2VuYXJpb3MgPSB1dGlscy5nZW5lcmF0ZV9zY2VuYXJp b3MoJ2JhY2tlbmRfdGFzaycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBzcWxfdXRpbHMudGVzdF9jYXNlcykKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAg ICAgc2VsZi5kYl9uYW1lID0gInBzcWx0ZXN0ZGJfezB9Ii5mb3JtYXQoc3RyKHV1aWQudXVpZDQo KSlbMTo4XSkKKyAgICAgICAgZGF0YWJhc2VfaW5mbyA9IHBhcmVudF9ub2RlX2RpY3RbImRhdGFi YXNlIl1bLTFdCisgICAgICAgIHNlbGYuZGlkID0gZGF0YWJhc2VfaW5mb1siZGJfaWQiXQorICAg ICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lk Il0KKyAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbInNlcnZlcl9ncm91cCJdCisgICAg ICAgIGNvbmZpZy5FTkFCTEVfUFNRTCA9IFRydWUKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY29uID0g c2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2lkKQorCisgICAgZGVmIHJ1 blRlc3Qoc2VsZik6CisKKyAgICAgICAgIyBGZXRjaCBmbGFzayBjbGllbnQgdG8gYWNjZXNzIGN1 cnJlbnQgdXNlciBhbmQgb3RoZXIgY29va2llcy4KKyAgICAgICAgZmxhc2tfY2xpZW50ID0gYXBw LnRlc3RfY2xpZW50KCkKKyAgICAgICAgZmxhc2tfY2xpZW50LmdldCgnL3Nlc3Npb24nKQorICAg ICAgICBzZWxmLnRlc3RfY2xpZW50ID0gc29ja2V0aW8udGVzdF9jbGllbnQoYXBwLCBuYW1lc3Bh Y2U9Jy9wdHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZmxhc2tfdGVzdF9jbGllbnQ9Zmxhc2tfY2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydFRy dWUoc2VsZi50ZXN0X2NsaWVudC5pc19jb25uZWN0ZWQoJy9wdHknKSkKKyAgICAgICAgcmVjZWl2 ZWQgPSBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNlaXZlZCgnL3B0eScpCisKKyAgICAgICAgYXNz ZXJ0IHJlY2VpdmVkWzBdWyduYW1lJ10gPT0gJ2Nvbm5lY3RlZCcKKyAgICAgICAgYXNzZXJ0IHJl Y2VpdmVkWzBdWydhcmdzJ11bMF1bJ3NpZCddICE9ICcnCisKKyAgICAgICAgZGF0YSA9IHsKKyAg ICAgICAgICAgICdzaWQnOiBzZWxmLnNpZCwKKyAgICAgICAgICAgICdkYic6ICdwb3N0Z3Jlcycs CisgICAgICAgICAgICAncHdkJzogc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAg ICAgICAndXNlcic6IHNlbGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgJ2lzX3Rl c3QnOiBUcnVlLAorICAgICAgICAgICAgJ2NvdW50JzogMAorICAgICAgICB9CisKKyAgICAgICAg c2VsZi50ZXN0X2NsaWVudC5lbWl0KCdzdGFydF9wcm9jZXNzJywgZGF0YSwgbmFtZXNwYWNlPScv cHR5JykKKyAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisg ICAgICAgIGZvciBwIGluIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddOgorICAgICAgICAgICAg aW5wdXRfZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAnaW5wdXQnOiBwLAorICAgICAgICAgICAg ICAgICdrZXlfbmFtZSc6ICdLZXl7MH0nLmZvcm1hdChwKQorICAgICAgICAgICAgfQorICAgICAg ICAgICAgc2VsZi50ZXN0X2NsaWVudC5lbWl0KCdzb2NrZXRfaW5wdXQnLCBpbnB1dF9kYXRhLCBu YW1lc3BhY2U9Jy9wdHknKQorICAgICAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2 ZWQoJy9wdHknKQorCisgICAgICAgIGlucHV0X2RhdGEgPSB7CisgICAgICAgICAgICAnaW5wdXQn OiAnXFxuJywKKyAgICAgICAgICAgICdrZXlfbmFtZSc6ICdFbnRlcicKKyAgICAgICAgfQorICAg ICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3NvY2tldF9pbnB1dCcsIGlucHV0X2RhdGEsIG5h bWVzcGFjZT0nL3B0eScpCisgICAgICAgIHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcv cHR5JykKKworICAgICAgICBmb3IgaXAgaW4gc2VsZi5pbnB1dF9jbWQ6CisgICAgICAgICAgICBp bnB1dF9kYXRhID0geworICAgICAgICAgICAgICAgICdpbnB1dCc6IGlwLAorICAgICAgICAgICAg ICAgICdrZXlfbmFtZSc6ICdLZXl7MH0nLmZvcm1hdChpcCkKKyAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIHNlbGYudGVzdF9jbGllbnQuZW1pdCgnc29ja2V0X2lucHV0JywgaW5wdXRfZGF0YSwg bmFtZXNwYWNlPScvcHR5JykKKyAgICAgICAgICAgIHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2Vp dmVkKCcvcHR5JykKKworICAgICAgICBpbnB1dF9kYXRhID0geworICAgICAgICAgICAgJ2lucHV0 JzogJ1xcbicsCisgICAgICAgICAgICAna2V5X25hbWUnOiAnRW50ZXInCisgICAgICAgIH0KKyAg ICAgICAgc2VsZi50ZXN0X2NsaWVudC5lbWl0KCdzb2NrZXRfaW5wdXQnLCBpbnB1dF9kYXRhLCBu YW1lc3BhY2U9Jy9wdHknKQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNlaXZlZCgn L3B0eScpCisgICAgICAgIHNlbGYudGVzdF9jbGllbnQuZGlzY29ubmVjdChuYW1lc3BhY2U9Jy9w dHknKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gdXRp bHMuZ2V0X2RiX2Nvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydk Yl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10pCisgICAgICAgIHV0aWxzLmRyb3BfZGF0 YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5kYl9uYW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvcHNxbC90ZXN0cy90ZXN0X3BhbmVsLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90 ZXN0cy90ZXN0X3BhbmVsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44 MzQ4MDY4MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMv dGVzdF9wYW5lbC5weQpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgdXVpZAoraW1wb3J0IHJhbmRv bQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJv bSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxz Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lv bi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQorCisKK2NsYXNzIFBTUUxQYW5lbChCYXNl VGVzdEdlbmVyYXRvcik6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGJf bmFtZSA9ICJwc3FsdGVzdGRiX3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCisg ICAgICAgIHNlbGYuc2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJf aWQiXQorICAgICAgICBzZWxmLmRpZCA9IHV0aWxzLmNyZWF0ZV9kYXRhYmFzZShzZWxmLnNlcnZl ciwgc2VsZi5kYl9uYW1lKQorICAgICAgICBzZWxmLnNnaWQgPSBjb25maWdfZGF0YVsic2VydmVy X2dyb3VwIl0KKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICB0cmFuc19pZCA9IHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpCisgICAgICAgIHVybCA9ICcvcHNxbC9wYW5lbC97dHJh bnNfaWR9P3NnaWQ9e3NnaWR9JnNpZD17c2lkfSZzZXJ2ZXJfdHlwZT1wZycgXAorICAgICAgICAg ICAgICAnJmRiPXtkYl9uYW1lfScuXAorICAgICAgICAgICAgZm9ybWF0KHRyYW5zX2lkPXRyYW5z X2lkLCBzZ2lkPXNlbGYuc2dpZCwgc2lkPXNlbGYuc2lkLAorICAgICAgICAgICAgICAgICAgIGRi X25hbWU9c2VsZi5kYl9uYW1lKQorCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9z dCgKKyAgICAgICAgICAgIHVybCwgZGF0YT17InRpdGxlIjogInBhbmVsX3RpdGxlIn0sCisgICAg ICAgICAgICBjb250ZW50X3R5cGU9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKwor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9k Yl9jb25uZWN0aW9uKHNlbGYuc2VydmVyWydkYiddLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dv cmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLnNlcnZlclsncG9ydCddKQorICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNv bm5lY3Rpb24sIHNlbGYuZGJfbmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Bz cWwvdGVzdHMvdGVzdF9wc3FsX2Rpc2FibGVkLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90 ZXN0cy90ZXN0X3BzcWxfZGlzYWJsZWQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAuLjMyZWFhNjIzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNx bC90ZXN0cy90ZXN0X3BzcWxfZGlzYWJsZWQucHkKQEAgLTAsMCArMSwzNiBAQAoraW1wb3J0IHV1 aWQKK2ltcG9ydCBjb25maWcKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVz dF91dGlscyBhcyB1dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0 Citmcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKKyMgZnJvbSBm bGFzayBpbXBvcnQgY3VycmVudF9hcHAgYXMgYXBwCisKK2Zyb20gcGdBZG1pbjQgaW1wb3J0IGFw cAorZnJvbSAuLi4uIGltcG9ydCBzb2NrZXRpbworCisKK2NsYXNzIFBTUUxTb2NrZXREaXNhYmxl ZChCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxm LmRiX25hbWUgPSAicHNxbHRlc3RkYl97MH0iLmZvcm1hdChzdHIodXVpZC51dWlkNCgpKVsxOjhd KQorICAgICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2Vy dmVyX2lkIl0KKyAgICAgICAgc2VsZi5kaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5z ZXJ2ZXIsIHNlbGYuZGJfbmFtZSkKKyAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbInNl cnZlcl9ncm91cCJdCisgICAgICAgIGNvbmZpZy5FTkFCTEVfUFNRTCA9IEZhbHNlCisKKyAgICBk ZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi50ZXN0X2NsaWVudCA9IHNvY2tldGlvLnRl c3RfY2xpZW50KGFwcCwgbmFtZXNwYWNlPScvcHR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl KHNlbGYudGVzdF9jbGllbnQuaXNfY29ubmVjdGVkKCcvcHR5JykpCisgICAgICAgIHJlY2VpdmVk ID0gc2VsZi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorICAgICAgICBwcmludCgi cmVjZWl2ZWQ6IiwgcmVjZWl2ZWQpCisgICAgICAgIGFzc2VydCByZWNlaXZlZFswXVsnbmFtZSdd ID09ICdjb25uX25vdF9hbGxvdycKKyAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5kaXNjb25uZWN0 KG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi50ZXN0X2Ns aWVudC5pc19jb25uZWN0ZWQoJy9wdHknKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAg ICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKHNlbGYuc2VydmVyWydk YiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z ZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCddKQor ICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNlbGYuZGJfbmFtZSkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9wc3FsX2lucHV0LnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X3BzcWxfaW5wdXQucHkKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhmZTBiNDdhCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X3BzcWxfaW5wdXQucHkKQEAgLTAs MCArMSwxNTkgQEAKK2ltcG9ydCB1dWlkCitpbXBvcnQgY29uZmlnCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9u X3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBp bXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0 IGNvbmZpZ19kYXRhCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBz ZXJ2ZXJfdXRpbHMKK2Zyb20gcGdBZG1pbjQgaW1wb3J0IGFwcAorZnJvbSAuIGltcG9ydCB1dGls cyBhcyBwc3FsX3V0aWxzCitmcm9tIC4uLi4gaW1wb3J0IHNvY2tldGlvCisKKworY2xhc3MgUFNR TElucHV0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICBzY2VuYXJpb3MgPSB1dGlscy5nZW5lcmF0 ZV9zY2VuYXJpb3MoJ3BzcWxfdXNlcl9pbnB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBzcWxfdXRpbHMudGVzdF9jYXNlcykKKworICAgIGRlZiBzZXRVcChz ZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gInBzcWx0ZXN0ZGJfezB9Ii5mb3JtYXQoc3Ry KHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAgICAgZGF0YWJhc2VfaW5mbyA9IHBhcmVudF9ub2Rl X2RpY3RbImRhdGFiYXNlIl1bLTFdCisgICAgICAgIHNlbGYuZGlkID0gZGF0YWJhc2VfaW5mb1si ZGJfaWQiXQorICAgICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0x XVsic2VydmVyX2lkIl0KKyAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbInNlcnZlcl9n cm91cCJdCisgICAgICAgIGNvbmZpZy5FTkFCTEVfUFNRTCA9IFRydWUKKyAgICAgICAgc2VsZi5z ZXJ2ZXJfY29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlbGYuc2lkKQor CisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisKKyAgICAgICAgIyBGZXRjaCBmbGFzayBjbGllbnQg dG8gYWNjZXNzIGN1cnJlbnQgdXNlciBhbmQgb3RoZXIgY29va2llcy4KKyAgICAgICAgZmxhc2tf Y2xpZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKKyAgICAgICAgZmxhc2tfY2xpZW50LmdldCgnL3Nl c3Npb24nKQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50ID0gc29ja2V0aW8udGVzdF9jbGllbnQo YXBwLCBuYW1lc3BhY2U9Jy9wdHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmxhc2tfdGVzdF9jbGllbnQ9Zmxhc2tfY2xpZW50KQorICAgICAgICBz ZWxmLmFzc2VydFRydWUoc2VsZi50ZXN0X2NsaWVudC5pc19jb25uZWN0ZWQoJy9wdHknKSkKKyAg ICAgICAgcmVjZWl2ZWQgPSBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNlaXZlZCgnL3B0eScpCisK KyAgICAgICAgYXNzZXJ0IHJlY2VpdmVkWzBdWyduYW1lJ10gPT0gJ2Nvbm5lY3RlZCcKKyAgICAg ICAgYXNzZXJ0IHJlY2VpdmVkWzBdWydhcmdzJ11bMF1bJ3NpZCddICE9ICcnCisKKyAgICAgICAg ZGF0YSA9IHsKKyAgICAgICAgICAgICdzaWQnOiBzZWxmLnNpZCwKKyAgICAgICAgICAgICdkYic6 ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAncHdkJzogc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3Jk J10sCisgICAgICAgICAgICAndXNlcic6IHNlbGYuc2VydmVyWyd1c2VybmFtZSddCisgICAgICAg IH0KKworICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3N0YXJ0X3Byb2Nlc3MnLCBkYXRh LCBuYW1lc3BhY2U9Jy9wdHknKQorICAgICAgICByZWNlaXZlZCA9IHNlbGYudGVzdF9jbGllbnQu Z2V0X3JlY2VpdmVkKCcvcHR5JykKKyAgICAgICAgcHJpbnQoInJlY2VpdmVkIHZhbHVlczogIiwg cmVjZWl2ZWQpCisKKyAgICAgICAgZm9yIHAgaW4gc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ106 CisgICAgICAgICAgICBpbnB1dF9kYXRhID0geworICAgICAgICAgICAgICAgICdpbnB1dCc6IHAs CisgICAgICAgICAgICAgICAgJ2tleV9uYW1lJzogJ0tleXswfScuZm9ybWF0KHApCisgICAgICAg ICAgICB9CisgICAgICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3NvY2tldF9pbnB1dCcs IGlucHV0X2RhdGEsIG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgICAgICByZWNlaXZlZCA9IHNl bGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKyAgICAgICAgICAgIHByaW50KCJ1 c2VyIEkvUDo6ICIsIHJlY2VpdmVkKQorCisgICAgICAgIGlucHV0X2RhdGEgPSB7CisgICAgICAg ICAgICAnaW5wdXQnOiAnXFxuJywKKyAgICAgICAgICAgICdrZXlfbmFtZSc6ICdFbnRlcicKKyAg ICAgICAgfQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3NvY2tldF9pbnB1dCcsIGlu cHV0X2RhdGEsIG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgIHJlY2VpdmVkID0gc2VsZi50ZXN0 X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisgICAgICAgIGZvciBpcCBpbiBzZWxmLmlu cHV0X2NtZDoKKyAgICAgICAgICAgIGlucHV0X2RhdGEgPSB7CisgICAgICAgICAgICAgICAgJ2lu cHV0JzogaXAsCisgICAgICAgICAgICAgICAgJ2tleV9uYW1lJzogJ0tleXswfScuZm9ybWF0KGlw KQorICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5lbWl0KCdzb2Nr ZXRfaW5wdXQnLCBpbnB1dF9kYXRhLCBuYW1lc3BhY2U9Jy9wdHknKQorICAgICAgICAgICAgc2Vs Zi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisgICAgICAgIGlmIGhhc2F0dHIo c2VsZiwgJ2lzX2JhY2tzcGFjZScpIGFuZCBzZWxmLmlzX2JhY2tzcGFjZToKKyAgICAgICAgICAg IGlmIGhhc2F0dHIoc2VsZiwgJ21vdmVfY3Vyc29yX3VwJykgYW5kIHNlbGYubW92ZV9jdXJzb3Jf dXA6CisgICAgICAgICAgICAgICAgaW5wdXRfZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAgICAg J2lucHV0JzogJycsCisgICAgICAgICAgICAgICAgICAgICdrZXlfbmFtZSc6ICdBcnJvd1VwJwor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQo J3NvY2tldF9pbnB1dCcsIGlucHV0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG5hbWVzcGFjZT0nL3B0eScpCisKKyAgICAgICAgICAgIGZvciBpcCBpbiBzZWxm LmlucHV0X2NtZDoKKyAgICAgICAgICAgICAgICBpbnB1dF9kYXRhID0geworICAgICAgICAgICAg ICAgICAgICAnaW5wdXQnOiBpcCwKKyAgICAgICAgICAgICAgICAgICAgJ2tleV9uYW1lJzogJ0Jh Y2tzcGFjZScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2Ns aWVudC5lbWl0KCdzb2NrZXRfaW5wdXQnLCBpbnB1dF9kYXRhLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U9Jy9wdHknKQorICAgICAgICAgICAgICAgIHNl bGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKworICAgICAgICBpZiBoYXNhdHRy KHNlbGYsICdpc19hcnJvd1VwJykgYW5kIHNlbGYuaXNfYXJyb3dVcDoKKyAgICAgICAgICAgIGlm IGhhc2F0dHIoc2VsZiwgJ2lzX2hpc3RvcnknKSBhbmQgc2VsZi5pc19oaXN0b3J5OgorICAgICAg ICAgICAgICAgIGZvciBpcCBpbiBzZWxmLmlucHV0X2NtZDoKKyAgICAgICAgICAgICAgICAgICAg aW5wdXRfZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dCc6IGlwLAorICAg ICAgICAgICAgICAgICAgICAgICAgJ2tleV9uYW1lJzogJ0tleXswfScuZm9ybWF0KGlwKQorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdF9jbGllbnQu ZW1pdCgnc29ja2V0X2lucHV0JywgaW5wdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgICAgICAgICAgICAg IHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKworICAgICAgICAgICAgaW5w dXRfZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAnaW5wdXQnOiAnJywKKyAgICAgICAgICAgICAg ICAna2V5X25hbWUnOiAnQXJyb3dVcCcKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbGYu dGVzdF9jbGllbnQuZW1pdCgnc29ja2V0X2lucHV0JywgaW5wdXRfZGF0YSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U9Jy9wdHknKQorICAgICAgICAgICAgc2Vs Zi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisgICAgICAgIGlmIGhhc2F0dHIo c2VsZiwgJ2lzX2Fycm93TGVmdCcpIGFuZCBzZWxmLmlzX2Fycm93TGVmdDoKKyAgICAgICAgICAg IGZvciBpcCBpbiBzZWxmLmlucHV0X2NtZDoKKyAgICAgICAgICAgICAgICBpbnB1dF9kYXRhID0g eworICAgICAgICAgICAgICAgICAgICAnaW5wdXQnOiBpcCwKKyAgICAgICAgICAgICAgICAgICAg J2tleV9uYW1lJzogJ0Fycm93TGVmdCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgc2VsZi50ZXN0X2NsaWVudC5lbWl0KCdzb2NrZXRfaW5wdXQnLCBpbnB1dF9kYXRhLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U9Jy9wdHknKQorICAg ICAgICAgICAgICAgIHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKworICAg ICAgICBpZiBoYXNhdHRyKHNlbGYsICdpc19hcnJvd1JpZ2h0JykgYW5kIHNlbGYuaXNfYXJyb3dS aWdodDoKKyAgICAgICAgICAgIGZvciBpcCBpbiBzZWxmLmlucHV0X2NtZDoKKyAgICAgICAgICAg ICAgICBpbnB1dF9kYXRhID0geworICAgICAgICAgICAgICAgICAgICAnaW5wdXQnOiBpcCwKKyAg ICAgICAgICAgICAgICAgICAgJ2tleV9uYW1lJzogJ0Fycm93UmlnaHQnCisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgICAgIHNlbGYudGVzdF9jbGllbnQuZW1pdCgnc29ja2V0X2lucHV0 JywgaW5wdXRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFt ZXNwYWNlPScvcHR5JykKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNl aXZlZCgnL3B0eScpCisKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ21vdmVfY3Vyc29y X3JpZ2h0JykgYW5kIHNlbGYuaXNfYXJyb3dSaWdodDoKKyAgICAgICAgICAgICAgICBmb3IgaSBp biByYW5nZSgyKToKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRfZGF0YSA9IHsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpbnB1dCc6ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2tl eV9uYW1lJzogJ0Fycm93TGVmdCcKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3NvY2tldF9pbnB1dCcsIGlucHV0X2RhdGEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2U9Jy9w dHknKQorICAgICAgICAgICAgICAgIGlucHV0X2RhdGEgPSB7CisgICAgICAgICAgICAgICAgICAg ICdpbnB1dCc6ICcnLAorICAgICAgICAgICAgICAgICAgICAna2V5X25hbWUnOiAnQXJyb3dSaWdo dCcKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5l bWl0KCdzb2NrZXRfaW5wdXQnLCBpbnB1dF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBuYW1lc3BhY2U9Jy9wdHknKQorCisgICAgICAgIGlucHV0X2RhdGEgPSB7 CisgICAgICAgICAgICAnaW5wdXQnOiAnXFxuJywKKyAgICAgICAgICAgICdrZXlfbmFtZSc6ICdF bnRlcicKKyAgICAgICAgfQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3NvY2tldF9p bnB1dCcsIGlucHV0X2RhdGEsIG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgIHJlY2VpdmVkID0g c2VsZi50ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisgICAgZGVmIHRlYXJEb3du KHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oc2Vs Zi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVy Wydwb3J0J10pCisgICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5k Yl9uYW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X3Jl c2l6ZV90ZXJtaW5hbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9yZXNp emVfdGVybWluYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjljZTdk MDA0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0 X3Jlc2l6ZV90ZXJtaW5hbC5weQpAQCAtMCwwICsxLDYwIEBACitpbXBvcnQgdXVpZAoraW1wb3J0 IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRv cgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFz IHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVn cmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQorZnJvbSBwZ2FkbWluLnV0aWxz IGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHBnQWRtaW40IGltcG9y dCBhcHAKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgcHNxbF91dGlscworZnJvbSAuLi4uIGltcG9y dCBzb2NrZXRpbworCisKK2NsYXNzIFBTUUxSZXNpemVUZXJtaW5hbChCYXNlVGVzdEdlbmVyYXRv cik6CisgICAgc2NlbmFyaW9zID0gdXRpbHMuZ2VuZXJhdGVfc2NlbmFyaW9zKCdyZXNpemVfdGVy bWluYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3FsX3V0 aWxzLnRlc3RfY2FzZXMpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGJf bmFtZSA9ICJwc3FsdGVzdGRiX3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCisg ICAgICAgIGRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQor ICAgICAgICBzZWxmLmRpZCA9IGRhdGFiYXNlX2luZm9bImRiX2lkIl0KKyAgICAgICAgc2VsZi5z aWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAg IHNlbGYuc2dpZCA9IGNvbmZpZ19kYXRhWyJzZXJ2ZXJfZ3JvdXAiXQorICAgICAgICBjb25maWcu RU5BQkxFX1BTUUwgPSBUcnVlCisgICAgICAgIHNlbGYuc2VydmVyX2NvbiA9IHNlcnZlcl91dGls cy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNpZCkKKworICAgIGRlZiBydW5UZXN0KHNlbGYp OgorCisgICAgICAgICMgRmV0Y2ggZmxhc2sgY2xpZW50IHRvIGFjY2VzcyBjdXJyZW50IHVzZXIg YW5kIG90aGVyIGNvb2tpZXMuCisgICAgICAgIGZsYXNrX2NsaWVudCA9IGFwcC50ZXN0X2NsaWVu dCgpCisgICAgICAgIGZsYXNrX2NsaWVudC5nZXQoJy9zZXNzaW9uJykKKyAgICAgICAgc2VsZi50 ZXN0X2NsaWVudCA9IHNvY2tldGlvLnRlc3RfY2xpZW50KGFwcCwgbmFtZXNwYWNlPScvcHR5JywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXNrX3Rl c3RfY2xpZW50PWZsYXNrX2NsaWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGVz dF9jbGllbnQuaXNfY29ubmVjdGVkKCcvcHR5JykpCisgICAgICAgIHJlY2VpdmVkID0gc2VsZi50 ZXN0X2NsaWVudC5nZXRfcmVjZWl2ZWQoJy9wdHknKQorCisgICAgICAgIGFzc2VydCByZWNlaXZl ZFswXVsnbmFtZSddID09ICdjb25uZWN0ZWQnCisgICAgICAgIGFzc2VydCByZWNlaXZlZFswXVsn YXJncyddWzBdWydzaWQnXSAhPSAnJworCisgICAgICAgIGRhdGEgPSB7CisgICAgICAgICAgICAn c2lkJzogc2VsZi5zaWQsCisgICAgICAgICAgICAnZGInOiAncG9zdGdyZXMnLAorICAgICAgICAg ICAgJ3B3ZCc6IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgJ3VzZXIn OiBzZWxmLnNlcnZlclsndXNlcm5hbWUnXQorICAgICAgICB9CisKKyAgICAgICAgc2VsZi50ZXN0 X2NsaWVudC5lbWl0KCdzdGFydF9wcm9jZXNzJywgZGF0YSwgbmFtZXNwYWNlPScvcHR5JykKKyAg ICAgICAgcmVjZWl2ZWQgPSBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNlaXZlZCgnL3B0eScpCisK KyAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5lbWl0KCdyZXNpemUnLCBzZWxmLmlucHV0X2RhdGEs IG5hbWVzcGFjZT0nL3B0eScpCisKKyAgICAgICAgIyBzZWxmLnRlc3RfY2xpZW50LmRpc2Nvbm5l Y3QobmFtZXNwYWNlPScvcHR5JykKKyAgICAgICAgIyBzZWxmLmFzc2VydEZhbHNlKHNlbGYudGVz dF9jbGllbnQuaXNfY29ubmVjdGVkKCcvcHR5JykpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgIGNvbm5lY3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZl clsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQn XSkKKyAgICAgICAgdXRpbHMuZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCBzZWxmLmRiX25hbWUp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rlc3RzL3Rlc3Rfc29ja2V0X2Nv bm5lY3QucHkgYi93ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rlc3RzL3Rlc3Rfc29ja2V0X2Nvbm5l Y3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjdiODAzMWJkCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy90ZXN0X3NvY2tldF9j b25uZWN0LnB5CkBAIC0wLDAgKzEsMzYgQEAKK2ltcG9ydCB1dWlkCitpbXBvcnQgY29uZmlnCitm cm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJl Z3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zy b20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnRl c3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhCisjIGZyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRf YXBwIGFzIGFwcAorZnJvbSBwZ0FkbWluNCBpbXBvcnQgYXBwCitmcm9tIC4uLi4gaW1wb3J0IHNv Y2tldGlvCisKKworY2xhc3MgUFNRTFNvY2tldENvbm5lY3QoQmFzZVRlc3RHZW5lcmF0b3IpOgor ICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kYl9uYW1lID0gInBzcWx0ZXN0ZGJf ezB9Ii5mb3JtYXQoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKKyAgICAgICAgc2VsZi5zaWQgPSBw YXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYu ZGlkID0gdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUpCisg ICAgICAgIHNlbGYuc2dpZCA9IGNvbmZpZ19kYXRhWyJzZXJ2ZXJfZ3JvdXAiXQorICAgICAgICBj b25maWcuRU5BQkxFX1BTUUwgPSBUcnVlCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAg ICAgc2VsZi50ZXN0X2NsaWVudCA9IHNvY2tldGlvLnRlc3RfY2xpZW50KGFwcCwgbmFtZXNwYWNl PScvcHR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGVzdF9jbGllbnQuaXNfY29u bmVjdGVkKCcvcHR5JykpCisgICAgICAgIHJlY2VpdmVkID0gc2VsZi50ZXN0X2NsaWVudC5nZXRf cmVjZWl2ZWQoJy9wdHknKQorICAgICAgICBwcmludCgicmVjZWl2ZWQ6IiwgcmVjZWl2ZWQpCisg ICAgICAgIGFzc2VydCByZWNlaXZlZFswXVsnbmFtZSddID09ICdjb25uZWN0ZWQnCisgICAgICAg IGFzc2VydCByZWNlaXZlZFswXVsnYXJncyddWzBdWydzaWQnXSAhPSAnJworICAgICAgICBzZWxm LnRlc3RfY2xpZW50LmRpc2Nvbm5lY3QobmFtZXNwYWNlPScvcHR5JykKKyAgICAgICAgc2VsZi5h c3NlcnRGYWxzZShzZWxmLnRlc3RfY2xpZW50LmlzX2Nvbm5lY3RlZCgnL3B0eScpKQorCisgICAg ZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nv bm5lY3Rpb24oc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyWydwb3J0J10pCisgICAgICAgIHV0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVj dGlvbiwgc2VsZi5kYl9uYW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90 ZXN0cy90ZXN0X3NvY2tldF9kaXNjb25uZWN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90 ZXN0cy90ZXN0X3NvY2tldF9kaXNjb25uZWN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5jZDJjZjVhYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L3BzcWwvdGVzdHMvdGVzdF9zb2NrZXRfZGlzY29ubmVjdC5weQpAQCAtMCwwICsxLDM1IEBACitp bXBvcnQgdXVpZAoraW1wb3J0IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGlt cG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9u b2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQor IyBmcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcCBhcyBhcHAKK2Zyb20gcGdBZG1pbjQgaW1w b3J0IGFwcAorZnJvbSAuLi4uIGltcG9ydCBzb2NrZXRpbworCisKK2NsYXNzIFBTUUxTb2NrZXRE aXNjb25uZWN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg ICAgIHNlbGYuZGJfbmFtZSA9ICJwc3FsdGVzdGRiX3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0 KCkpWzE6OF0pCisgICAgICAgIHNlbGYuc2lkID0gcGFyZW50X25vZGVfZGljdFsic2VydmVyIl1b LTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRpZCA9IHV0aWxzLmNyZWF0ZV9kYXRhYmFz ZShzZWxmLnNlcnZlciwgc2VsZi5kYl9uYW1lKQorICAgICAgICBzZWxmLnNnaWQgPSBjb25maWdf ZGF0YVsic2VydmVyX2dyb3VwIl0KKyAgICAgICAgY29uZmlnLkVOQUJMRV9QU1FMID0gVHJ1ZQor CisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF9jbGllbnQgPSBzb2Nr ZXRpby50ZXN0X2NsaWVudChhcHAsIG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShzZWxmLnRlc3RfY2xpZW50LmlzX2Nvbm5lY3RlZCgnL3B0eScpKQorICAgICAgICBy ZWNlaXZlZCA9IHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKyAgICAgICAg cHJpbnQoInJlY2VpdmVkOiIsIHJlY2VpdmVkKQorICAgICAgICBhc3NlcnQgcmVjZWl2ZWRbMF1b J25hbWUnXSA9PSAnY29ubmVjdGVkJworICAgICAgICBhc3NlcnQgcmVjZWl2ZWRbMF1bJ2FyZ3Mn XVswXVsnc2lkJ10gIT0gJycKKyAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5kaXNjb25uZWN0KG5h bWVzcGFjZT0nL3B0eScpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGNvbm5l Y3Rpb24gPSB1dGlscy5nZXRfZGJfY29ubmVjdGlvbihzZWxmLnNlcnZlclsnZGInXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyd1c2Vy bmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgdXRp bHMuZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCBzZWxmLmRiX25hbWUpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rlc3RzL3Rlc3Rfc3RhcnRfcHJvY2Vzcy5weSBiL3dlYi9w Z2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9zdGFydF9wcm9jZXNzLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4wNTVmN2NlMwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9zdGFydF9wcm9jZXNzLnB5CkBAIC0wLDAg KzEsNjMgQEAKK2ltcG9ydCB1dWlkCitpbXBvcnQgY29uZmlnCitmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rl c3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgcGFyZW50X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGNv bmZpZ19kYXRhCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBhcyBzZXJ2 ZXJfdXRpbHMKK2Zyb20gcGdBZG1pbjQgaW1wb3J0IGFwcAorZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAor ICAgIGRhdGFiYXNlX3V0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRf ZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gLi4uLiBp bXBvcnQgc29ja2V0aW8KKworCitjbGFzcyBQU1FMU3RhcnRQcm9jZXNzKEJhc2VUZXN0R2VuZXJh dG9yKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGJfbmFtZSA9ICJwc3Fs dGVzdGRiX3swfSIuZm9ybWF0KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCisgICAgICAgIGRhdGFi YXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQorICAgICAgICBzZWxm LmRpZCA9IGRhdGFiYXNlX2luZm9bImRiX2lkIl0KKyAgICAgICAgc2VsZi5zaWQgPSBwYXJlbnRf bm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYuc2dpZCA9 IGNvbmZpZ19kYXRhWyJzZXJ2ZXJfZ3JvdXAiXQorICAgICAgICBjb25maWcuRU5BQkxFX1BTUUwg PSBUcnVlCisKKyAgICAgICAgc2VsZi5zZXJ2ZXJfY29uID0gc2VydmVyX3V0aWxzLmNvbm5lY3Rf c2VydmVyKHNlbGYsIHNlbGYuc2lkKQorICAgICAgICBwcmludChzZWxmLnNlcnZlcl9jb24pCisK KyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIyBGZXRjaCBmbGFzayBjbGllbnQgdG8g YWNjZXNzIGN1cnJlbnQgdXNlciBhbmQgb3RoZXIgY29va2llcy4KKyAgICAgICAgZmxhc2tfY2xp ZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKKyAgICAgICAgZmxhc2tfY2xpZW50LmdldCgnL3Nlc3Np b24nKQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50ID0gc29ja2V0aW8udGVzdF9jbGllbnQoYXBw LCBuYW1lc3BhY2U9Jy9wdHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmxhc2tfdGVzdF9jbGllbnQ9Zmxhc2tfY2xpZW50KQorICAgICAgICBzZWxm LmFzc2VydFRydWUoc2VsZi50ZXN0X2NsaWVudC5pc19jb25uZWN0ZWQoJy9wdHknKSkKKyAgICAg ICAgcmVjZWl2ZWQgPSBzZWxmLnRlc3RfY2xpZW50LmdldF9yZWNlaXZlZCgnL3B0eScpCisKKyAg ICAgICAgYXNzZXJ0IHJlY2VpdmVkWzBdWyduYW1lJ10gPT0gJ2Nvbm5lY3RlZCcKKyAgICAgICAg YXNzZXJ0IHJlY2VpdmVkWzBdWydhcmdzJ11bMF1bJ3NpZCddICE9ICcnCisKKyAgICAgICAgaW1w b3J0IHJhbmRvbQorICAgICAgICB0cmFuc19pZCA9IHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkp CisKKyAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICdzaWQnOiBzZWxmLnNpZCwKKyAgICAg ICAgICAgICdkYic6ICdwb3N0Z3JlcycsCisgICAgICAgICAgICAncHdkJzogc2VsZi5zZXJ2ZXJb J2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAndXNlcic6IHNlbGYuc2VydmVyWyd1c2VybmFt ZSddCisgICAgICAgIH0KKworICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3N0YXJ0X3By b2Nlc3MnLCBkYXRhLCBuYW1lc3BhY2U9Jy9wdHknKQorICAgICAgICByZWNlaXZlZCA9IHNlbGYu dGVzdF9jbGllbnQuZ2V0X3JlY2VpdmVkKCcvcHR5JykKKyAgICAgICAgcHJpbnQoInJlY2VpdmVk IHZhbHVlczogIiwgcmVjZWl2ZWQpCisKKyAgICAgICAgc2VsZi50ZXN0X2NsaWVudC5kaXNjb25u ZWN0KG5hbWVzcGFjZT0nL3B0eScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi50ZXN0 X2NsaWVudC5pc19jb25uZWN0ZWQoJy9wdHknKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToK KyAgICAgICAgY29ubmVjdGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKHNlbGYuc2VydmVy WydkYiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9ydCdd KQorICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIHNlbGYuZGJfbmFtZSkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9zdGFydF9wcm9j ZXNzX2ZhaWwucHkgYi93ZWIvcGdhZG1pbi90b29scy9wc3FsL3Rlc3RzL3Rlc3Rfc3RhcnRfcHJv Y2Vzc19mYWlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44OTVmYzUz MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvdGVzdHMvdGVzdF9z dGFydF9wcm9jZXNzX2ZhaWwucHkKQEAgLTAsMCArMSw2MCBAQAoraW1wb3J0IHV1aWQKK2ltcG9y dCBjb25maWcKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBh cyB1dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJl Z3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKK2Zyb20gcGdhZG1pbi51dGls cyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ0FkbWluNCBpbXBv cnQgYXBwCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJh c2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKK2Zyb20gLi4u LiBpbXBvcnQgc29ja2V0aW8KKworCitjbGFzcyBQU1FMU3RhcnRQcm9jZXNzRmFpbChCYXNlVGVz dEdlbmVyYXRvcik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmRiX25hbWUg PSAicHNxbHRlc3RkYl97MH0iLmZvcm1hdChzdHIodXVpZC51dWlkNCgpKVsxOjhdKQorICAgICAg ICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0K KyAgICAgICAgc2VsZi5kaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIsIHNl bGYuZGJfbmFtZSkKKyAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbInNlcnZlcl9ncm91 cCJdCisgICAgICAgIGNvbmZpZy5FTkFCTEVfUFNRTCA9IFRydWUKKworICAgICAgICBkYl9jb24g PSBkYXRhYmFzZV91dGlscy5jb25uZWN0X2RhdGFiYXNlKHNlbGYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZ2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlkKQorICAgICAg ICBwcmludCgiREIgY29ubmVjdGlvbiIpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAg ICAgIyBGZXRjaCBmbGFzayBjbGllbnQgdG8gYWNjZXNzIGN1cnJlbnQgdXNlciBhbmQgb3RoZXIg Y29va2llcy4KKyAgICAgICAgZmxhc2tfY2xpZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKKyAgICAg ICAgZmxhc2tfY2xpZW50LmdldCgnL3Nlc3Npb24nKQorICAgICAgICBzZWxmLnRlc3RfY2xpZW50 ID0gc29ja2V0aW8udGVzdF9jbGllbnQoYXBwLCBuYW1lc3BhY2U9Jy9wdHknLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhc2tfdGVzdF9jbGllbnQ9 Zmxhc2tfY2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi50ZXN0X2NsaWVudC5p c19jb25uZWN0ZWQoJy9wdHknKSkKKyAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLnRlc3RfY2xpZW50 LmdldF9yZWNlaXZlZCgnL3B0eScpCisgICAgICAgIHByaW50KCJyZWNlaXZlZDoiLCByZWNlaXZl ZCkKKyAgICAgICAgYXNzZXJ0IHJlY2VpdmVkWzBdWyduYW1lJ10gPT0gJ2Nvbm5lY3RlZCcKKyAg ICAgICAgYXNzZXJ0IHJlY2VpdmVkWzBdWydhcmdzJ11bMF1bJ3NpZCddICE9ICcnCisgICAgICAg IGltcG9ydCByYW5kb20KKyAgICAgICAgdHJhbnNfaWQgPSByYW5kb20ucmFuZGludCgxLCA5OTk5 OTk5KQorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgJ3NpZCc6IHNlbGYuc2lkLAorICAg ICAgICAgICAgJ2RiJzogJ3Bvc3RncmVzJywKKyAgICAgICAgICAgICdwd2QnOiBzZWxmLnNlcnZl clsnZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICd1c2VyJzogc2VsZi5zZXJ2ZXJbJ3VzZXJu YW1lJ10KKyAgICAgICAgfQorICAgICAgICBjb25maWcuRU5BQkxFX1BTUUwgPSBGYWxzZQorICAg ICAgICBzZWxmLnRlc3RfY2xpZW50LmVtaXQoJ3N0YXJ0X3Byb2Nlc3MnLCBkYXRhLCBuYW1lc3Bh Y2U9Jy9wdHknKQorICAgICAgICByZWNlaXZlZCA9IHNlbGYudGVzdF9jbGllbnQuZ2V0X3JlY2Vp dmVkKCcvcHR5JykKKyAgICAgICAgYXNzZXJ0IHJlY2VpdmVkWzBdWyduYW1lJ10gPT0gJ2Nvbm5f bm90X2FsbG93JworICAgICAgICBzZWxmLnRlc3RfY2xpZW50LmRpc2Nvbm5lY3QobmFtZXNwYWNl PScvcHR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnRlc3RfY2xpZW50LmlzX2Nv bm5lY3RlZCgnL3B0eScpKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBjb25u ZWN0aW9uID0gdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rpb24oc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNl cm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10pCisgICAgICAgIHV0 aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgc2VsZi5kYl9uYW1lKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xz L3BzcWwvdGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu Ljg1YmQ1MzczCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC90ZXN0 cy91dGlscy5weQpAQCAtMCwwICsxLDYgQEAKK2ltcG9ydCBvcworaW1wb3J0IGpzb24KKworQ1VS UkVOVF9QQVRIID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQor d2l0aCBvcGVuKENVUlJFTlRfUEFUSCArICIvcHNxbF90ZXN0X2RhdGEuanNvbiIpIGFzIGRhdGFf ZmlsZToKKyAgICB0ZXN0X2Nhc2VzID0ganNvbi5sb2FkKGRhdGFfZmlsZSkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9fc3FsZWRpdG9yLnNjc3Mg Yi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX3NxbGVkaXRvci5zY3Nz CmluZGV4IDBiYjQwODAyLi41ZmZjODI0MSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcworKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX3NxbGVkaXRvci5zY3NzCkBAIC0zNzQsMyArMzc0 LDkgQEAgZGl2LnN0cmlrZW91dDphZnRlciB7CiAvKiBTZXR0aW5nIGl0IHRvIGhhcmRjb2RlZCB3 aGl0ZSBhcyB0aGUgU1ZHIGdlbmVyYXRlZCBpcyBoYXZpbmcgd2hpdGUgYmcKICAqIE5lZWQgdG8g Y2hlY2sgd2hhdCBjYW4gYmUgZG9uZS4KICAqLworCisvKiBDc3MgZm9yIHBzcWwgKi8KKy5wc3Fs X3Rlcm1pbmFsIC50ZXJtaW5hbCB7CisgIHBhZGRpbmctdG9wOiAxJTsKKyAgcGFkZGluZy1sZWZ0 OiAwLjUlOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvY3NyZi5weSBiL3dlYi9w Z2FkbWluL3V0aWxzL2NzcmYucHkKaW5kZXggMjNhYmZmZmEuLjcxYWU4MmVhIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi91dGlscy9jc3JmLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL2NzcmYu cHkKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgX1BHQ1NSRlByb3RlY3QoQ1NSRlByb3RlY3QpOgog ICAgICAgICAgICAgJ3BnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYuZGRsX2NvbXBhcmUnLAogICAg ICAgICAgICAgJ3BnYWRtaW4uYXV0aGVudGljYXRlLmxvZ2luJywKICAgICAgICAgICAgICdwZ2Fk bWluLnRvb2xzLmVyZC5wYW5lbCcsCisgICAgICAgICAgICAncGdhZG1pbi50b29scy5wc3FsLnBh bmVsJywKICAgICAgICAgXQogCiAgICAgICAgIGZvciBleGVtcHQgaW4gZXhlbXB0X3ZpZXdzOgpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvcHJlZmVyZW5jZXMucHkgYi93ZWIvcGdhZG1p bi91dGlscy9wcmVmZXJlbmNlcy5weQppbmRleCAxNWNlZWIxYS4uZTllZmU0NzkgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL3V0aWxzL3ByZWZlcmVuY2VzLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0 aWxzL3ByZWZlcmVuY2VzLnB5CkBAIC03Miw2ICs3Miw3IEBAIGNsYXNzIF9QcmVmZXJlbmNlKG9i amVjdCk6CiAgICAgICAgIHNlbGYuc2VsZWN0MiA9IGt3YXJncy5nZXQoJ3NlbGVjdDInLCBOb25l KQogICAgICAgICBzZWxmLmZpZWxkcyA9IGt3YXJncy5nZXQoJ2ZpZWxkcycsIE5vbmUpCiAgICAg ICAgIHNlbGYuYWxsb3dfYmxhbmtzID0ga3dhcmdzLmdldCgnYWxsb3dfYmxhbmtzJywgTm9uZSkK KyAgICAgICAgc2VsZi5kaXNhYmxlZCA9IGt3YXJncy5nZXQoJ2Rpc2FibGVkJywgRmFsc2UpCiAK ICAgICAgICAgIyBMb29rIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gdGFibGUgdG8gZmluZCBvdXQg dGhlIGlkIG9mIHRoZSBzcGVjaWZpYwogICAgICAgICAjIHByZWZlcmVuY2UuCkBAIC0yNTIsNiAr MjUzLDcgQEAgY2xhc3MgX1ByZWZlcmVuY2Uob2JqZWN0KToKICAgICAgICAgICAgICdzZWxlY3Qy Jzogc2VsZi5zZWxlY3QyLAogICAgICAgICAgICAgJ3ZhbHVlJzogc2VsZi5nZXQoKSwKICAgICAg ICAgICAgICdmaWVsZHMnOiBzZWxmLmZpZWxkcywKKyAgICAgICAgICAgICdkaXNhYmxlZCc6IHNl bGYuZGlzYWJsZWQsCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlcwogCkBAIC00MTQsNiAr NDE2LDcgQEAgY2xhc3MgUHJlZmVyZW5jZXMob2JqZWN0KToKICAgICAgICAgOnBhcmFtIGZpZWxk czogZmllbGQgc2NoZW1hIChpZiBwcmVmZXJlbmNlIGhhcyBtb3JlIHRoYW4gb25lIGZpZWxkIHRv CiAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlIGlucHV0IGZyb20gdXNlciBlLmcuIGtleWJv YXJkc2hvcnRjdXQgcHJlZmVyZW5jZSkKICAgICAgICAgOnBhcmFtIGFsbG93X2JsYW5rczogRmxh ZyBzcGVjaWZ5IHdoZXRoZXIgdG8gYWxsb3cgYmxhbmsgdmFsdWUuCisgICAgICAgIDpwYXJhbSBk aXNhYmxlZDogRmxhZyBzcGVjaWZ5IHdoZXRoZXIgdG8gZGlzYWJsZSB0aGUgc2V0dGluZyBvciBu b3QuCiAgICAgICAgICIiIgogICAgICAgICBtaW5fdmFsID0ga3dhcmdzLmdldCgnbWluX3ZhbCcs IE5vbmUpCiAgICAgICAgIG1heF92YWwgPSBrd2FyZ3MuZ2V0KCdtYXhfdmFsJywgTm9uZSkKQEAg LTQyMyw2ICs0MjYsNyBAQCBjbGFzcyBQcmVmZXJlbmNlcyhvYmplY3QpOgogICAgICAgICBzZWxl Y3QyID0ga3dhcmdzLmdldCgnc2VsZWN0MicsIE5vbmUpCiAgICAgICAgIGZpZWxkcyA9IGt3YXJn cy5nZXQoJ2ZpZWxkcycsIE5vbmUpCiAgICAgICAgIGFsbG93X2JsYW5rcyA9IGt3YXJncy5nZXQo J2FsbG93X2JsYW5rcycsIE5vbmUpCisgICAgICAgIGRpc2FibGVkID0ga3dhcmdzLmdldCgnZGlz YWJsZWQnLCBGYWxzZSkKIAogICAgICAgICBjYXQgPSBzZWxmLl9fY2F0ZWdvcnkoY2F0ZWdvcnks IGNhdGVnb3J5X2xhYmVsKQogICAgICAgICBpZiBuYW1lIGluIGNhdFsncHJlZmVyZW5jZXMnXToK QEAgLTQzOSw3ICs0NDMsOCBAQCBjbGFzcyBQcmVmZXJlbmNlcyhvYmplY3QpOgogICAgICAgICAo Y2F0WydwcmVmZXJlbmNlcyddKVtuYW1lXSA9IHJlcyA9IF9QcmVmZXJlbmNlKAogICAgICAgICAg ICAgY2F0WydpZCddLCBuYW1lLCBsYWJlbCwgX3R5cGUsIGRlZmF1bHQsIGhlbHBfc3RyPWhlbHBf c3RyLAogICAgICAgICAgICAgbWluX3ZhbD1taW5fdmFsLCBtYXhfdmFsPW1heF92YWwsIG9wdGlv bnM9b3B0aW9ucywKLSAgICAgICAgICAgIHNlbGVjdDI9c2VsZWN0MiwgZmllbGRzPWZpZWxkcywg YWxsb3dfYmxhbmtzPWFsbG93X2JsYW5rcworICAgICAgICAgICAgc2VsZWN0Mj1zZWxlY3QyLCBm aWVsZHM9ZmllbGRzLCBhbGxvd19ibGFua3M9YWxsb3dfYmxhbmtzLAorICAgICAgICAgICAgZGlz YWJsZWQ9ZGlzYWJsZWQKICAgICAgICAgKQogCiAgICAgICAgIHJldHVybiByZXMKZGlmZiAtLWdp dCBhL3dlYi93ZWJwYWNrLmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLmNvbmZpZy5qcwppbmRleCBl OTA2YTU2Ny4uMTA0YTNiMjAgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJwYWNrLmNvbmZpZy5qcworKysg Yi93ZWIvd2VicGFjay5jb25maWcuanMKQEAgLTM1NSw2ICszNTUsNyBAQCBtb2R1bGUuZXhwb3J0 cyA9IFt7CiAgICAgZGVidWdnZXJfZGlyZWN0OiAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0 YXRpYy9qcy9kaXJlY3QuanMnLAogICAgIHNjaGVtYV9kaWZmOiAnLi9wZ2FkbWluL3Rvb2xzL3Nj aGVtYV9kaWZmL3N0YXRpYy9qcy9zY2hlbWFfZGlmZl9ob29rLmpzJywKICAgICBlcmRfdG9vbDog Jy4vcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sX2hvb2suanMnLAorICAgIHBz cWxfdG9vbDogJy4vcGdhZG1pbi90b29scy9wc3FsL3N0YXRpYy9qcy9pbmRleC5qcycsCiAgICAg ZmlsZV91dGlsczogJy4vcGdhZG1pbi9taXNjL2ZpbGVfbWFuYWdlci9zdGF0aWMvanMvdXRpbGl0 eS5qcycsCiAgICAgJ3BnYWRtaW4uc3R5bGUnOiBwZ2FkbWluQ3NzU3R5bGVzLAogICAgIHBnYWRt aW46IHBnYWRtaW5TY3NzU3R5bGVzLApAQCAtNDkzLDcgKzQ5NCw3IEBAIG1vZHVsZS5leHBvcnRz ID0gW3sKICAgICAgICAgICBdLAogICAgICAgICB9LAogICAgICAgfSwKLSAgICB9LCB7CisgICAg fSx7CiAgICAgICB0ZXN0OiByZXF1aXJlLnJlc29sdmUoJy4vbm9kZV9tb2R1bGVzL2FjaXRyZWUv anMvanF1ZXJ5LmFjaVRyZWUubWluJyksCiAgICAgICB1c2U6IHsKICAgICAgICAgbG9hZGVyOiAn aW1wb3J0cy1sb2FkZXInLApAQCAtNTMyLDYgKzUzMyw3IEBAIG1vZHVsZS5leHBvcnRzID0gW3sK ICAgICAgICAgICAgICdwdXJlfHBnYWRtaW4udG9vbHMuc3RvcmFnZV9tYW5hZ2VyJywKICAgICAg ICAgICAgICdwdXJlfHBnYWRtaW4udG9vbHMuc2VhcmNoX29iamVjdHMnLAogICAgICAgICAgICAg J3B1cmV8cGdhZG1pbi50b29scy5lcmRfbW9kdWxlJywKKyAgICAgICAgICAgICdwdXJlfHBnYWRt aW4udG9vbHMucHNxbF9tb2R1bGUnLAogICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICB9 LApkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2suc2hpbS5qcyBiL3dlYi93ZWJwYWNrLnNoaW0uanMK aW5kZXggMDc0YjI1ODAuLmUwYjI4MDkxIDEwMDY0NAotLS0gYS93ZWIvd2VicGFjay5zaGltLmpz CisrKyBiL3dlYi93ZWJwYWNrLnNoaW0uanMKQEAgLTE1OSw2ICsxNTksMTUgQEAgdmFyIHdlYnBh Y2tTaGltQ29uZmlnID0gewogICAgICdqcXVlcnkuYWNpc29ydGFibGUnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvYWNpdHJlZS9qcy9qcXVlcnkuYWNpU29ydGFibGUubWlu JyksCiAgICAgJ2pxdWVyeS5hY2lmcmFnbWVudCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL25v ZGVfbW9kdWxlcy9hY2l0cmVlL2pzL2pxdWVyeS5hY2lGcmFnbWVudC5taW4nKSwKIAorICAgIC8v eHRlcm0KKyAgICAneHRlcm0nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMv eHRlcm0vbGliL3h0ZXJtLmpzJyksCisgICAgJ3h0ZXJtLWFkZG9uLWZpdCc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy94dGVybS1hZGRvbi1maXQvbGliL3h0ZXJtLWFkZG9u LWZpdC5qcycpLAorICAgICd4dGVybS1hZGRvbi13ZWItbGlua3MnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9ub2RlX21vZHVsZXMveHRlcm0tYWRkb24td2ViLWxpbmtzL2xpYi94dGVybS1hZGRv bi13ZWItbGlua3MuanMnKSwKKyAgICAneHRlcm0tYWRkb24tc2VhcmNoJzogcGF0aC5qb2luKF9f ZGlybmFtZSwgJy4vbm9kZV9tb2R1bGVzL3h0ZXJtLWFkZG9uLXNlYXJjaC9saWIveHRlcm0tYWRk b24tc2VhcmNoLmpzJyksCisKKyAgICAvL3NvY2tldAorICAgICdzb2NrZXRpbyc6IHBhdGguam9p bihfX2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy9zb2NrZXQuaW8tY2xpZW50L2Rpc3Qvc29ja2V0 LmlvLmpzJyksCisKICAgICAvLyBCYWNrYm9uZSBhbmQgQmFja2dyaWQKICAgICAnYmFja2JvbmUn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvYmFja2JvbmUvYmFja2JvbmUn KSwKICAgICAnYmFja2JvbmUudW5kbyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL25vZGVfbW9k dWxlcy9iYWNrYm9uZS11bmRvL0JhY2tib25lLlVuZG8nKSwKQEAgLTI4OCw2ICsyOTcsOCBAQCB2 YXIgd2VicGFja1NoaW1Db25maWcgPSB7CiAgICAgJ3BnYWRtaW4udG9vbHMuc3RvcmFnZV9tYW5h Z2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9zdG9yYWdlX21hbmFn ZXIvc3RhdGljL2pzL3N0b3JhZ2VfbWFuYWdlcicpLAogICAgICdwZ2FkbWluLnRvb2xzLmVyZF9t b2R1bGUnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMv anMvZXJkX21vZHVsZScpLAogICAgICdwZ2FkbWluLnRvb2xzLmVyZCc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcycpLAorICAgICdwZ2FkbWluLnRv b2xzLnBzcWxfbW9kdWxlJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9w c3FsL3N0YXRpYy9qcy9wc3FsX21vZHVsZScpLAorICAgICdwZ2FkbWluLnRvb2xzLnBzcWwnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3BzcWwvc3RhdGljL2pzJyksCiAg ICAgJ3BnYWRtaW4uc2VhcmNoX29iamVjdHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL3Rvb2xzL3NlYXJjaF9vYmplY3RzL3N0YXRpYy9qcycpLAogICAgICdwZ2FkbWluLnRvb2xz LnVzZXJfbWFuYWdlbWVudCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMv dXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1lbnQnKSwKICAgICAncGdhZG1p bi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJzogJy91c2VyX21hbmFnZW1lbnQvY3VycmVu dF91c2VyJywKZGlmZiAtLWdpdCBhL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpzIGIvd2ViL3dl YnBhY2sudGVzdC5jb25maWcuanMKaW5kZXggZTBiNmZkNjkuLjNjYzA3OWY5IDEwMDY0NAotLS0g YS93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcworKysgYi93ZWIvd2VicGFjay50ZXN0LmNvbmZp Zy5qcwpAQCAtMTc3LDYgKzE3Nyw3IEBAIG1vZHVsZS5leHBvcnRzID0gewogICAgICAgJ3BnYWRt aW4uYnJvd3Nlci5wcmVmZXJlbmNlcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4v YnJvd3Nlci9zdGF0aWMvanMvcHJlZmVyZW5jZXMnKSwKICAgICAgICdwZ2FkbWluLmJyb3dzZXIu YWN0aXZpdHknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL2FjdGl2aXR5JyksCiAgICAgICAncGdhZG1pbi50b29scy5lcmQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMnKSwKKyAgICAgICdwZ2FkbWlu LnRvb2xzLnBzcWwnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3BzcWwv c3RhdGljL2pzJyksCiAgICAgICAnYnVuZGxlZF9jb2RlbWlycm9yJzogcGF0aC5qb2luKF9fZGly bmFtZSwgJy4vcGdhZG1pbi9zdGF0aWMvYnVuZGxlL2NvZGVtaXJyb3InKSwKICAgICAgICd0b29s cyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvJyksCiAgICAgICAncGdh ZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2VyJzogcmVncmVzc2lvbkRpciArICcvamF2 YXNjcmlwdC9mYWtlX2N1cnJlbnRfdXNlcicsCg== --000000000000906a8605c1fa3889--